@synopackageland/ui 0.20.12 → 0.20.14
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 +10 -0
- package/dist/index.js +2374 -2349
- package/dist/json-preview/preview.js +3386 -3380
- package/dist/reka-runtime.json +1 -1
- package/dist/theme.css +1 -1
- package/dist/themes/dsm7-embedded-reset.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/mobile-native.md +31 -7
- package/package.json +1 -90
package/docs/mobile-native.md
CHANGED
|
@@ -62,13 +62,13 @@ control and grid sizes; it does not change the 16px field rule.
|
|
|
62
62
|
| `--ui-font-size-title` | 16 | 16 | **17** | header and dialog titles |
|
|
63
63
|
| `--ui-grid-font-size` (new) | 13 | 13 | **14** | grid cell text (not yet read by the canvas grid; see below) |
|
|
64
64
|
| `--ui-font-size-field` (new) | 16 | 16 | 16 | every field on a coarse pointer, to stop iOS focus zoom |
|
|
65
|
-
| `--ui-control-md` | 28 | **
|
|
65
|
+
| `--ui-control-md` | 28 | **44** | **44** | fields, selects, form and sheet buttons |
|
|
66
66
|
| `--ui-control-sm` | 24 | **32** | **36** | inline and toolbar buttons (the tap box comes from `--ui-hit-min`) |
|
|
67
67
|
| `--ui-hit-min` (new) | 0 | **44** | **44** | smallest tap box |
|
|
68
68
|
| `--ui-tap-gap` (new) | 0 | **8** | **8** | room between tap targets; `--ui-icon-button-gap` reads it on touch |
|
|
69
69
|
| `--ui-grid-row-height` / `-header-height` | 28 | **36** | **32** | canvas grid rows (docs/ux-grid.md) |
|
|
70
70
|
| `--ui-list-row-height` (new) | 32 | **44** | **48** | list rows |
|
|
71
|
-
| `--ui-menu-row-height` | 32 | **
|
|
71
|
+
| `--ui-menu-row-height` | 32 | **44** | **48** | menu, select and sheet list rows |
|
|
72
72
|
| `--ui-page-padding-x` / `-y` | 16 (narrow layout 12) | 16 | **16** | page gutter |
|
|
73
73
|
| `--ui-section-gap` | 12 | 12 | **20** | space between sections |
|
|
74
74
|
| `--ui-card-padding` | 20 (Card default) | 20 | **16** | card inset |
|
|
@@ -145,11 +145,35 @@ These controls get the hit area:
|
|
|
145
145
|
`[data-tag][role=button]` (a tappable Tag), `[data-tag-remove]`,
|
|
146
146
|
`[data-ui-password-toggle]`
|
|
147
147
|
|
|
148
|
-
A new tappable control can opt in by adding `data-ui-hit`.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
tap
|
|
148
|
+
A new tappable control can opt in by adding `data-ui-hit`. Small standalone
|
|
149
|
+
controls already do: Link, close buttons (Dialog, Sheet, Toast, Notification,
|
|
150
|
+
Callout, RecordPanel, AsidePanel), PathDisplay copy, InfoTip, the Card and
|
|
151
|
+
ExpandableItem toggles, Pagination page numbers and the TreeView toggle (when
|
|
152
|
+
the tree has no checkboxes). When two tap boxes overlap, the later control
|
|
153
|
+
wins the overlap, so a cluster spaces its controls a box apart on touch
|
|
154
|
+
(`gap-[max(4px,calc(var(--ui-hit-min,0px)-<control size>))]`, as in Pagination
|
|
155
|
+
and the AsidePanel header). The rule sits in the base layer, so a component
|
|
156
|
+
that sets its own `position` or draws its own `::before` keeps it, and loses
|
|
157
|
+
the larger tap box; a component that keeps a desktop slop writes it under
|
|
158
|
+
`[@media(pointer:fine)]`. The box is a child of the control: `overflow:
|
|
159
|
+
hidden` (or `truncate`) on the control or a scroller around it cuts the box
|
|
160
|
+
off, so truncate the label inside instead and clip a row sideways only
|
|
161
|
+
(`overflow-x-clip`).
|
|
162
|
+
|
|
163
|
+
At a page's end edge the box sticks out past the page: a 36px IconButton
|
|
164
|
+
flush with the right of a header row reaches 4px further. On touch,
|
|
165
|
+
AppLayout's column and page area and every `PageContent` clip their
|
|
166
|
+
children sideways (`overflow-x: clip`), so a page scroller never counts that
|
|
167
|
+
overhang as content and never scrolls sideways; the box keeps its full 44px
|
|
168
|
+
wherever the page has room, vertical scrolling and sticky headers are
|
|
169
|
+
unchanged, and a table or code block that scrolls sideways (a scroller of its
|
|
170
|
+
own) keeps scrolling. An App that puts small controls flush with the edge of
|
|
171
|
+
its own scroller, outside a `PageContent`, clips that content sideways the
|
|
172
|
+
same way.
|
|
173
|
+
|
|
174
|
+
`check:mobile` exempts a link set in a sentence (inline, with text beside it
|
|
175
|
+
in the same parent): WCAG 2.5.8 lets the line of text decide its size. A link
|
|
176
|
+
alone on its line still needs 44px.
|
|
153
177
|
|
|
154
178
|
### Not done in this layer
|
|
155
179
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/ui",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.14",
|
|
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,60 +60,6 @@
|
|
|
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:short-viewport": "node scripts/check-short-viewport.mjs",
|
|
96
|
-
"check:detail-surface": "node scripts/check-detail-surface.mjs",
|
|
97
|
-
"check:internal": "node --test scripts/check-internal-content.test.mjs scripts/check-npm-metadata.test.mjs && node scripts/check-internal-content.mjs --repo .",
|
|
98
|
-
"check:npm-metadata": "node scripts/check-npm-metadata.mjs",
|
|
99
|
-
"check:package": "node scripts/check-package-content.mjs",
|
|
100
|
-
"check:public-api-consumer": "node scripts/check-public-api-consumer.mjs",
|
|
101
|
-
"notices:update": "node scripts/third-party-notices.mjs --write",
|
|
102
|
-
"notices:check": "node scripts/third-party-notices.mjs --check",
|
|
103
|
-
"check": "bash scripts/docker-check.sh \"npm run gates\"",
|
|
104
|
-
"check:fast": "bash scripts/docker-check.sh \"npm run gates\"",
|
|
105
|
-
"check:local-browser": "node scripts/app-local-browser.mjs",
|
|
106
|
-
"check:infotip": "node scripts/check-infotip.mjs",
|
|
107
|
-
"release:stage": "node scripts/stage-release.mjs",
|
|
108
|
-
"check:polish": "bash scripts/docker-check.sh --build --out .polish-shots 'node scripts/check-polish.mjs'",
|
|
109
|
-
"check:acceptance": "node scripts/check-acceptance.mjs",
|
|
110
|
-
"check:palette": "node scripts/check-palette.mjs",
|
|
111
|
-
"gates": "node scripts/gates.mjs",
|
|
112
|
-
"gates:full": "node scripts/gates.mjs --full",
|
|
113
|
-
"check:layout": "node scripts/check-layout.mjs",
|
|
114
|
-
"release:smoke": "node scripts/release-smoke.mjs",
|
|
115
|
-
"check:browser-install": "playwright install chromium"
|
|
116
|
-
},
|
|
117
63
|
"peerDependencies": {
|
|
118
64
|
"vue": "^3.5.0"
|
|
119
65
|
},
|
|
@@ -133,44 +79,9 @@
|
|
|
133
79
|
"@tiptap/vue-3": "3.32.1",
|
|
134
80
|
"zod": "^4.6.5"
|
|
135
81
|
},
|
|
136
|
-
"devDependencies": {
|
|
137
|
-
"@eslint/js": "10.0.1",
|
|
138
|
-
"@histoire/plugin-vue": "1.0.0-beta.1",
|
|
139
|
-
"@tailwindcss/vite": "4.3.3",
|
|
140
|
-
"@tanstack/vue-virtual": "3.13.39",
|
|
141
|
-
"@vitejs/plugin-vue": "6.0.9",
|
|
142
|
-
"@vue/test-utils": "2.5.1",
|
|
143
|
-
"@vueuse/core": "14.4.0",
|
|
144
|
-
"eslint": "10.11.0",
|
|
145
|
-
"eslint-plugin-vue": "10.11.1",
|
|
146
|
-
"flexsearch": "0.8.212",
|
|
147
|
-
"globals": "17.12.0",
|
|
148
|
-
"histoire": "1.0.0-beta.1",
|
|
149
|
-
"jsdom": "30.1.1",
|
|
150
|
-
"playwright": "1.58.2",
|
|
151
|
-
"reka-ui": "2.11.0",
|
|
152
|
-
"tailwindcss": "4.3.3",
|
|
153
|
-
"typescript": "5.9.3",
|
|
154
|
-
"typescript-eslint": "8.71.0",
|
|
155
|
-
"vite": "7.3.6",
|
|
156
|
-
"vite-plugin-dts": "5.1.1",
|
|
157
|
-
"vitest": "5.0.2",
|
|
158
|
-
"vscode-oniguruma": "2.0.1",
|
|
159
|
-
"vscode-textmate": "9.3.2",
|
|
160
|
-
"vue": "3.5.43",
|
|
161
|
-
"vue-eslint-parser": "10.4.1",
|
|
162
|
-
"vue-tsc": "3.3.11"
|
|
163
|
-
},
|
|
164
82
|
"engines": {
|
|
165
83
|
"node": ">=20"
|
|
166
84
|
},
|
|
167
|
-
"packageManager": "pnpm@10.33.2",
|
|
168
|
-
"pnpm": {
|
|
169
|
-
"onlyBuiltDependencies": [
|
|
170
|
-
"esbuild",
|
|
171
|
-
"vue-demi"
|
|
172
|
-
]
|
|
173
|
-
},
|
|
174
85
|
"config": {
|
|
175
86
|
"bundledRuntime": {
|
|
176
87
|
"@tanstack/vue-virtual": "3.13.39",
|