@synopackageland/ui 0.20.7 → 0.20.9

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.
@@ -65,6 +65,41 @@ for a viewport change. `ensureDeviceViewport()` therefore fires one `resize`
65
65
  on the next frame after it changes the viewport (and after it restores it), so
66
66
  the window narrows to the phone's width.
67
67
 
68
+ ### Full-page type scale
69
+
70
+ A full page reads at a web console's sizes, one step above a DSM window. The
71
+ tokens are set on the web layout (`data-ui-layout-mode="web"`) and on an app
72
+ root that holds one or is a `full-page` root, so dialogs teleported into the
73
+ root follow. A DSM window keeps DSM's sizes and a phone its own scale
74
+ ([mobile-native.md](mobile-native.md)).
75
+
76
+ | Token | DSM window | Full page |
77
+ |---|---|---|
78
+ | `--ui-font-size` (body, navigation, buttons, fields) | 13px | 14px |
79
+ | `--ui-font-size-control` (checkbox, select, form and settings labels) | 13px | 14px |
80
+ | `--ui-font-size-sm` (secondary text, group labels) | 12px | 13px |
81
+ | `--ui-font-size-lg` (a main label) | 14px | 15px |
82
+ | `--ui-font-size-tab` / `--ui-font-size-section` | 12px / 15px | 13px / 16px |
83
+ | `--ui-font-size-h1` / `-h2` / `-h3` | 20 / 16 / 14px | 22 / 18 / 16px |
84
+ | `--ui-grid-font-size` | 13px | 14px |
85
+ | `--ui-control-sm` / `-md` / `-lg` | 24 / 28 / 34px | 28 / 32 / 36px |
86
+ | `--ui-grid-row-height` / `--ui-grid-header-height` | 28px | 32px |
87
+ | `--ui-list-row-height` | 32px | 36px |
88
+ | `--ui-nav-row-height-default` | 42px | 36px |
89
+ | `--ui-label-offset` (a label beside a field) | 4px | 6px |
90
+
91
+ The web page header's title is `--ui-font-size-title` (16px) over a
92
+ `--ui-font-size-sm` description. The smallest text (`--ui-font-size-xs`) stays
93
+ 12px and a dialog's title 16px. Control and grid sizes apply under a mouse
94
+ only: a touch tablet keeps its touch sizes, and an explicit `data-ui-density`
95
+ keeps what the app chose.
96
+
97
+ A page without a `PageHeader` that starts with a `PageToolbar` starts on the
98
+ page padding: its toolbar is a control-height row, not a 48px chrome row, so
99
+ there is no empty band over it. Under a header, and inside a card or pane, a
100
+ toolbar stays one chrome row. An App that adds its own top padding to an
101
+ untitled page doubles the page padding the shell already gives it.
102
+
68
103
  ## Viewport, keyboard and Back on a phone
69
104
 
70
105
  A full-page `AppRoot` is the page: it is `100dvh` tall, `html` and `body`
@@ -32,7 +32,7 @@ here stay implementation details and can change in any release.
32
32
  | `data-ui-app` | `AppRoot`'s root and its floating hosts (portals) | present |
33
33
  | `data-ui-theme`, `data-ui-density`, `data-ui-accent` | the app root (mirrored on floating hosts) | theme name, `compact`/`comfortable`, present |
34
34
  | `data-ui-color-scheme` | the app root (AppRoot `color-scheme`, mirrored on floating hosts) or `<html>` | `dark` |
35
- | `data-ui-presentation` | `AppRoot` root | `mobile`, `window`, `web` |
35
+ | `data-ui-presentation` | `AppRoot` root | `mobile` (640px or narrower), else `web` for a `full-page` root or one holding an `AppLayout` with `wide-layout="web"` from 960px, else `window` (a DSM window at any width) |
36
36
  | `data-ui-floating` | a floating host (dialog, menu, popover) | present |
37
37
  | `data-ui-layout-mode` | `AppLayout` root | `mobile`, `window`, `web` |
38
38
  | `data-ui-navigation` | `AppLayout` root, and `AppSidebar`'s `<nav>`, while the navigation is a top bar | `top` (absent for the sidebar and on a phone) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/ui",
3
- "version": "0.20.7",
3
+ "version": "0.20.9",
4
4
  "description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -60,6 +60,59 @@
60
60
  "./themes/dsm7-embedded-reset.css": "./dist/themes/dsm7-embedded-reset.css",
61
61
  "./themes/dsm7-embedded-theme.css": "./dist/themes/dsm7-embedded-theme.css"
62
62
  },
63
+ "scripts": {
64
+ "check:docs": "node --test scripts/check-doc-versions.test.mjs && node scripts/check-doc-versions.mjs",
65
+ "dev": "vite build --watch",
66
+ "build": "vite build && vite build --mode json && vite build --mode rich-text && vite build --mode grid && vite build --mode cli && vite build --mode preview && vite build --mode embedded && node scripts/postbuild.mjs",
67
+ "lint": "eslint .",
68
+ "typecheck": "vue-tsc --noEmit -p tsconfig.json",
69
+ "test": "vitest run",
70
+ "test:watch": "vitest",
71
+ "test:changed": "echo \"test:changed skips the tests the changes since ${SYNOPKGLAND_GATE_BASE:-origin/master} do not reach (vitest --changed); pnpm check runs them all\" && vitest run --changed ${SYNOPKGLAND_GATE_BASE:-origin/master}",
72
+ "story": "histoire dev",
73
+ "story:build": "histoire build",
74
+ "check:host": "node scripts/dsm-host-shots.mjs",
75
+ "check:switch": "node scripts/check-switch.mjs",
76
+ "check:tabs": "node scripts/check-tabs.mjs",
77
+ "check:mobile": "node scripts/check-mobile-overflow.mjs",
78
+ "check:ui-patch": "node scripts/check-ui-patch.mjs",
79
+ "check:narrow": "node scripts/check-narrow-controls.mjs",
80
+ "check:drawer-form": "node scripts/check-drawer-form.mjs",
81
+ "check:responsive": "node scripts/check-responsive.mjs",
82
+ "check:adaptive": "node scripts/check-adaptive.mjs",
83
+ "check:sidebar-focus": "node scripts/check-sidebar-focus.mjs",
84
+ "check:json-render": "node scripts/check-json-render.mjs",
85
+ "check:motion": "node scripts/check-motion.mjs",
86
+ "check:topology": "node scripts/check-topology.mjs",
87
+ "check:wizard": "node scripts/check-wizard.mjs",
88
+ "check:edges": "node scripts/check-edges.mjs",
89
+ "check:data-grid": "node scripts/check-data-grid.mjs",
90
+ "check:truncation": "node scripts/check-truncation.mjs",
91
+ "check:link": "node scripts/check-link.mjs",
92
+ "check:text-select": "node scripts/check-text-select.mjs",
93
+ "check:date-picker": "node scripts/check-date-picker.mjs",
94
+ "check:full-page": "node scripts/check-full-page.mjs",
95
+ "check:detail-surface": "node scripts/check-detail-surface.mjs",
96
+ "check:internal": "node --test scripts/check-internal-content.test.mjs scripts/check-npm-metadata.test.mjs && node scripts/check-internal-content.mjs --repo .",
97
+ "check:npm-metadata": "node scripts/check-npm-metadata.mjs",
98
+ "check:package": "node scripts/check-package-content.mjs",
99
+ "check:public-api-consumer": "node scripts/check-public-api-consumer.mjs",
100
+ "notices:update": "node scripts/third-party-notices.mjs --write",
101
+ "notices:check": "node scripts/third-party-notices.mjs --check",
102
+ "check": "bash scripts/docker-check.sh \"npm run gates\"",
103
+ "check:fast": "bash scripts/docker-check.sh \"npm run gates\"",
104
+ "check:local-browser": "node scripts/app-local-browser.mjs",
105
+ "check:infotip": "node scripts/check-infotip.mjs",
106
+ "release:stage": "node scripts/stage-release.mjs",
107
+ "check:polish": "bash scripts/docker-check.sh --build --out .polish-shots 'node scripts/check-polish.mjs'",
108
+ "check:acceptance": "node scripts/check-acceptance.mjs",
109
+ "check:palette": "node scripts/check-palette.mjs",
110
+ "gates": "node scripts/gates.mjs",
111
+ "gates:full": "node scripts/gates.mjs --full",
112
+ "check:layout": "node scripts/check-layout.mjs",
113
+ "release:smoke": "node scripts/release-smoke.mjs",
114
+ "check:browser-install": "playwright install chromium"
115
+ },
63
116
  "peerDependencies": {
64
117
  "vue": "^3.5.0"
65
118
  },
@@ -79,9 +132,44 @@
79
132
  "@tiptap/vue-3": "3.32.1",
80
133
  "zod": "^4.6.5"
81
134
  },
135
+ "devDependencies": {
136
+ "@eslint/js": "10.0.1",
137
+ "@histoire/plugin-vue": "1.0.0-beta.1",
138
+ "@tailwindcss/vite": "4.3.3",
139
+ "@tanstack/vue-virtual": "3.13.39",
140
+ "@vitejs/plugin-vue": "6.0.9",
141
+ "@vue/test-utils": "2.5.1",
142
+ "@vueuse/core": "14.4.0",
143
+ "eslint": "10.11.0",
144
+ "eslint-plugin-vue": "10.11.1",
145
+ "flexsearch": "0.8.212",
146
+ "globals": "17.12.0",
147
+ "histoire": "1.0.0-beta.1",
148
+ "jsdom": "30.1.1",
149
+ "playwright": "1.58.2",
150
+ "reka-ui": "2.11.0",
151
+ "tailwindcss": "4.3.3",
152
+ "typescript": "5.9.3",
153
+ "typescript-eslint": "8.71.0",
154
+ "vite": "7.3.6",
155
+ "vite-plugin-dts": "5.1.1",
156
+ "vitest": "5.0.2",
157
+ "vscode-oniguruma": "2.0.1",
158
+ "vscode-textmate": "9.3.2",
159
+ "vue": "3.5.43",
160
+ "vue-eslint-parser": "10.4.1",
161
+ "vue-tsc": "3.3.11"
162
+ },
82
163
  "engines": {
83
164
  "node": ">=20"
84
165
  },
166
+ "packageManager": "pnpm@10.33.2",
167
+ "pnpm": {
168
+ "onlyBuiltDependencies": [
169
+ "esbuild",
170
+ "vue-demi"
171
+ ]
172
+ },
85
173
  "config": {
86
174
  "bundledRuntime": {
87
175
  "@tanstack/vue-virtual": "3.13.39",