@synopackageland/ui 0.12.4 → 0.12.5
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 +9 -0
- package/README.md +18 -0
- package/dist/components/app/page-content/PageContent.vue.d.ts +3 -3
- package/dist/components/primitives/dropdown-menu/types.d.ts +3 -0
- package/dist/components/primitives/segment-control/SegmentControl.vue.d.ts +4 -0
- package/dist/components/primitives/segment-control/context.d.ts +3 -0
- package/dist/index.js +21635 -17311
- package/dist/json/catalog.d.ts +2 -0
- package/dist/json/registry.d.ts +34 -0
- package/dist/json-ai-prompt.md +1 -1
- package/dist/json-catalog.schema.json +2 -1
- package/dist/json-preview/preview.js +11791 -10685
- package/dist/json.js +223 -205
- 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 +7 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.12.5 (2026-10-20)
|
|
4
|
+
|
|
5
|
+
- `DropdownMenu` label column: a plain action menu no longer reserves an empty check-mark slot before every label, so its labels start at the left edge. The slot is kept, for every entry of that level, when any entry can show a check mark, an indicator or an icon; an unchecked checkbox or radio now keeps its slot, so its label lines up with the rest. All entries share the same 10px side padding. The menu's 11rem minimum width now holds (it resolved against a content-sized popper and collapsed short menus to their labels), still capped by the viewport.
|
|
6
|
+
- `DropdownMenuEntry.icon`: an optional leading icon component for an item or submenu entry (pencil, copy, trash). It sits in the label slot in secondary text, or the danger colour on a `danger` entry; a check mark takes precedence.
|
|
7
|
+
- `SegmentControl variant="sheet"`: joined sheet tabs on a rule, for the views and forms over a table. Unselected tabs sit on the subtle surface in secondary text; the selected tab takes the content's surface over the rule, accent text and an accent line on top. Keyboard, `aria-selected` and the `segment` default are unchanged.
|
|
8
|
+
- Fix DatePicker calendar clipping in app-local modal scope: mark the calendar as a popup so Dialog width constraints do not shrink it. Date and date-time popups stay within the app/viewport collision bounds, use the available width and height, and scroll when space is limited. Portals, calendar selection and Escape behavior are preserved.
|
|
9
|
+
- Add `PageContent surface="none"` (also JSON `Page`): no page surface or horizontal gutters at any presentation width, for full-bleed editors and standalone app content. Width limits, fill height and child spacing still work; `auto`, `card` and `flat` retain their existing behavior.
|
|
10
|
+
- Add a full-bleed Histoire example and `pnpm check:date-picker` browser regression coverage for popup geometry, clipped containers, viewport edges, nested Dialog Escape and page surfaces.
|
|
11
|
+
|
|
3
12
|
## 0.12.4 (2026-10-20)
|
|
4
13
|
|
|
5
14
|
- Full-page (`web`) layout is flush and compact: the page content sits straight beside the sidebar and under the toolbar, with the same page padding as a DSM window (16px), the DSM window section and field gaps, and the page header's bottom space. The rounded page card around `PageContent` (its border, background, shadow, outer margin and inner padding) is gone for `surface="auto"` and `surface="card"`, and content starts at the left edge instead of centring when capped by `width`. An `AppToolbar` lines up with the page content. `surface="flat"` keeps the canvas behind its own cards. DSM-window and phone layouts are unchanged.
|
package/README.md
CHANGED
|
@@ -350,6 +350,23 @@ import { AppLayout, Button, PageHeader } from '@synopackageland/ui'
|
|
|
350
350
|
|
|
351
351
|
`AppLayout` also accepts `sidebar`, `toolbar`, and `footer` slots.
|
|
352
352
|
|
|
353
|
+
For standalone content that owns its layout, use `<PageContent surface="none" height="fill">`.
|
|
354
|
+
It removes the page's horizontal gutters and adds no surface in web, DSM-window
|
|
355
|
+
or phone layouts. The default `surface="auto"` remains unchanged; `flat` keeps
|
|
356
|
+
the dashboard canvas. In 0.12.4+, `auto` already has no outer page card in web
|
|
357
|
+
mode. Child components keep their own styling and spacing. The JSON `Page`
|
|
358
|
+
component accepts the same `surface="none"` option. SDK `AppShell` is a separate
|
|
359
|
+
package: if it creates `PageContent` internally, it must expose/forward this
|
|
360
|
+
option before an application can select it through that shell.
|
|
361
|
+
|
|
362
|
+
```vue
|
|
363
|
+
<AppLayout wide-layout="web" height="fill" min-height="0">
|
|
364
|
+
<PageContent surface="none" height="fill">
|
|
365
|
+
<MyEditor />
|
|
366
|
+
</PageContent>
|
|
367
|
+
</AppLayout>
|
|
368
|
+
```
|
|
369
|
+
|
|
353
370
|
`PageContent` stacks its direct children (a search row, a toolbar, cards) at
|
|
354
371
|
`--ui-section-gap`, so a page needs no margins between them. Under a
|
|
355
372
|
`PageHeader` the space is the header's own bottom padding (12px in a DSM
|
|
@@ -611,6 +628,7 @@ pnpm check # production build, then lint, typecheck and tests in parallel,
|
|
|
611
628
|
pnpm check:fast # as check, but only the tests the changes since origin/master reach (vitest --changed)
|
|
612
629
|
pnpm story:build # build the component workbench
|
|
613
630
|
pnpm check:host # after pnpm build: DSM host simulation screenshots (Chrome)
|
|
631
|
+
pnpm check:date-picker # after pnpm build: app-local calendars, Dialog Escape and full-bleed pages (ego-browser)
|
|
614
632
|
pnpm check:switch # after pnpm build: Switch knob geometry and click toggling (Chrome)
|
|
615
633
|
pnpm check:topology # after pnpm build: ConnectionTopology motion, keyboard and narrow layout (Chrome)
|
|
616
634
|
```
|
|
@@ -4,8 +4,8 @@ type __VLS_Props = {
|
|
|
4
4
|
* `--ui-page-readable-width`; any other value is a CSS maximum width.
|
|
5
5
|
*/
|
|
6
6
|
width?: 'fill' | 'readable' | (string & {});
|
|
7
|
-
/** Web/portal
|
|
8
|
-
surface?: 'auto' | 'flat' | 'card';
|
|
7
|
+
/** Web/portal: auto/card use the white content area; flat uses the dashboard canvas. none adds no surface or horizontal gutters, for content that owns its layout at every width. */
|
|
8
|
+
surface?: 'auto' | 'flat' | 'card' | 'none';
|
|
9
9
|
/**
|
|
10
10
|
* `'fill'` takes the container's height and does not scroll: the header,
|
|
11
11
|
* tabs and toolbar stay, and the last child (a DataGrid, or a flex column
|
|
@@ -20,7 +20,7 @@ type __VLS_Slots = {} & {
|
|
|
20
20
|
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
21
21
|
height: "auto" | "fill";
|
|
22
22
|
width: "fill" | "readable" | (string & {});
|
|
23
|
-
surface: "auto" | "flat" | "card";
|
|
23
|
+
surface: "auto" | "flat" | "card" | "none";
|
|
24
24
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
25
25
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
26
26
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
1
2
|
export type DropdownMenuSubEntry = {
|
|
2
3
|
type?: 'item';
|
|
3
4
|
key: string;
|
|
@@ -6,6 +7,8 @@ export type DropdownMenuSubEntry = {
|
|
|
6
7
|
/** Legacy visual check mark. Use `type: 'checkbox'` for a real, togglable item. */
|
|
7
8
|
checked?: boolean;
|
|
8
9
|
danger?: boolean;
|
|
10
|
+
/** A small leading icon, such as a pencil for "Rename". Takes the place of the check mark. */
|
|
11
|
+
icon?: Component;
|
|
9
12
|
shortcut?: string;
|
|
10
13
|
/** @deprecated A real submenu is rendered when `children` is present. */
|
|
11
14
|
submenu?: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SegmentVariant } from './context';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
/** Selected item value. */
|
|
3
4
|
modelValue?: string;
|
|
@@ -7,6 +8,8 @@ type __VLS_Props = {
|
|
|
7
8
|
ariaLabelledby?: string;
|
|
8
9
|
/** Disables every item of the group. */
|
|
9
10
|
disabled?: boolean;
|
|
11
|
+
/** `sheet` draws joined sheet tabs on a rule, as above a table, instead of a segmented control. */
|
|
12
|
+
variant?: SegmentVariant;
|
|
10
13
|
};
|
|
11
14
|
declare var __VLS_1: {};
|
|
12
15
|
type __VLS_Slots = {} & {
|
|
@@ -19,6 +22,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
19
22
|
onChange?: ((value: string) => any) | undefined;
|
|
20
23
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
21
24
|
}>, {
|
|
25
|
+
variant: SegmentVariant;
|
|
22
26
|
disabled: boolean;
|
|
23
27
|
modelValue: string;
|
|
24
28
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -6,9 +6,12 @@ export type SegmentItemHandle = {
|
|
|
6
6
|
element: () => HTMLElement | undefined;
|
|
7
7
|
};
|
|
8
8
|
export type SegmentMove = 'previous' | 'next' | 'first' | 'last';
|
|
9
|
+
/** `segment`: a segmented control; `sheet`: joined sheet tabs on a rule, the selected one open to the content below. */
|
|
10
|
+
export type SegmentVariant = 'segment' | 'sheet';
|
|
9
11
|
export type SegmentControlContext = {
|
|
10
12
|
selected: Ref<string>;
|
|
11
13
|
groupDisabled: Ref<boolean>;
|
|
14
|
+
variant: Ref<SegmentVariant>;
|
|
12
15
|
select: (value: string) => void;
|
|
13
16
|
register: (handle: SegmentItemHandle) => void;
|
|
14
17
|
unregister: (handle: SegmentItemHandle) => void;
|