@meddleware/dashboard-ui 0.1.94 → 0.1.95
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 +14 -0
- package/package.json +15 -13
- package/src/views/BlockchainView.vue +9 -4
- package/src/e2e.ts +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,20 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|
|
5
5
|
[Semantic Versioning](https://semver.org/). Before 0.2.0, breaking changes ship as patch releases.
|
|
6
6
|
Releases before 0.1.85 are recorded in the git history only.
|
|
7
7
|
|
|
8
|
+
## [0.1.95] - 2026-11-05
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- The Blockchain view's tab strip sits under the header's real height and publishes its own offset (`--mw-sticky-extra`), so focus is not hidden behind the sticky header and strip (WCAG 2.4.11).
|
|
13
|
+
|
|
14
|
+
### Security
|
|
15
|
+
|
|
16
|
+
- CI and the image build scan the production bundle for the e2e harness (`check-prod-bundle` from `@meddleware/frontend-config`), and `src/e2e*.ts` is no longer in the published package.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Takes the embedded tools' 2026-11-05 releases (access-gate-ui 0.1.45, sealed-storage-ui 0.0.46, token-issuance-ui 0.0.44, treasury-ui 0.0.25, walrus-storage-ui 0.1.67) and `@meddleware/ui` ^0.1.38, `@meddleware/design-tokens` ^0.1.13, `@meddleware/web-utils` ^0.0.2, `@meddleware/frontend-config` ^0.0.2, `@meddleware/wallet-adapter` ^0.0.21.
|
|
21
|
+
|
|
8
22
|
## [0.1.94] - 2026-11-01
|
|
9
23
|
|
|
10
24
|
- Shared shell, sidebar drawer on phones, tools updated, accessibility gates
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meddleware/dashboard-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.95",
|
|
4
4
|
"homepage": "https://docs.meddleware.co.uk/",
|
|
5
5
|
"description": "Meddleware tools hub — Vue 3 SPA listing hosted services (Walrus, Access Gate) with white-label deploy options.",
|
|
6
6
|
"author": "Meddleware <dev@meddleware.co.uk>",
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
"index.html",
|
|
16
16
|
"vite.config.ts",
|
|
17
17
|
"tsconfig.json",
|
|
18
|
-
"CHANGELOG.md"
|
|
18
|
+
"CHANGELOG.md",
|
|
19
|
+
"!src/e2e*.ts"
|
|
19
20
|
],
|
|
20
21
|
"scripts": {
|
|
21
22
|
"dev": "vite",
|
|
@@ -34,28 +35,29 @@
|
|
|
34
35
|
"check:licenses": "node scripts/third-party-licenses.mjs --check",
|
|
35
36
|
"check:dist": "node scripts/check-inline-scripts.mjs",
|
|
36
37
|
"shots": "SHOTS=1 playwright test",
|
|
37
|
-
"lhci": "npm run build && lhci autorun"
|
|
38
|
+
"lhci": "npm run build && lhci autorun",
|
|
39
|
+
"check:bundle": "check-prod-bundle dist"
|
|
38
40
|
},
|
|
39
41
|
"publishConfig": {
|
|
40
42
|
"access": "public"
|
|
41
43
|
},
|
|
42
44
|
"dependencies": {
|
|
43
|
-
"@meddleware/access-gate-ui": "^0.1.
|
|
44
|
-
"@meddleware/design-tokens": "^0.1.
|
|
45
|
-
"@meddleware/sealed-storage-ui": "^0.0.
|
|
46
|
-
"@meddleware/token-issuance-ui": "^0.0.
|
|
47
|
-
"@meddleware/treasury-ui": "^0.0.
|
|
48
|
-
"@meddleware/ui": "^0.1.
|
|
49
|
-
"@meddleware/wallet-adapter": "^0.0.
|
|
50
|
-
"@meddleware/walrus-storage-ui": "^0.1.
|
|
51
|
-
"@meddleware/web-utils": "^0.0.
|
|
45
|
+
"@meddleware/access-gate-ui": "^0.1.45",
|
|
46
|
+
"@meddleware/design-tokens": "^0.1.13",
|
|
47
|
+
"@meddleware/sealed-storage-ui": "^0.0.46",
|
|
48
|
+
"@meddleware/token-issuance-ui": "^0.0.44",
|
|
49
|
+
"@meddleware/treasury-ui": "^0.0.25",
|
|
50
|
+
"@meddleware/ui": "^0.1.38",
|
|
51
|
+
"@meddleware/wallet-adapter": "^0.0.21",
|
|
52
|
+
"@meddleware/walrus-storage-ui": "^0.1.67",
|
|
53
|
+
"@meddleware/web-utils": "^0.0.2",
|
|
52
54
|
"@mysten/sui": "^2.36.0",
|
|
53
55
|
"vue": "^3.5.44",
|
|
54
56
|
"vue-router": "^5.4.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@lhci/cli": "^0.15.1",
|
|
58
|
-
"@meddleware/frontend-config": "^0.0.
|
|
60
|
+
"@meddleware/frontend-config": "^0.0.2",
|
|
59
61
|
"@playwright/test": "~1.64.1",
|
|
60
62
|
"@types/node": "~26.6.5",
|
|
61
63
|
"@vitejs/plugin-vue": "^6.0.10",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// chain is Sui; the `chain` prop is the sidebar's choice, so a second chain switches the tool set without a rewrite. Each tool view is lazy-loaded (its deps, incl. the Walrus
|
|
4
4
|
// wasm, load only when its tab is first opened) and kept alive so switching tabs preserves state.
|
|
5
5
|
import { computed, defineAsyncComponent, ref, watch } from 'vue'
|
|
6
|
-
import { AppTabNav, UiTabPanel, type AppTab } from '@meddleware/ui'
|
|
6
|
+
import { AppTabNav, UiTabPanel, useStickyOffset, type AppTab } from '@meddleware/ui'
|
|
7
7
|
|
|
8
8
|
import { CHAINS, DEFAULT_CHAIN } from '../chains.js'
|
|
9
9
|
|
|
@@ -37,12 +37,16 @@ watch(
|
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
const activeComp = computed(() => tools.value.find((t) => t.id === active.value)?.comp)
|
|
40
|
+
|
|
41
|
+
// The tab strip sticks under the header: publish its height so a focused field is never left behind either of them (WCAG 2.4.11).
|
|
42
|
+
const strip = ref<{ $el?: unknown } | null>(null)
|
|
43
|
+
useStickyOffset(strip, '--mw-sticky-extra')
|
|
40
44
|
</script>
|
|
41
45
|
|
|
42
46
|
<template>
|
|
43
47
|
<section aria-labelledby="blockchain-title" class="blockchain-view">
|
|
44
48
|
<h2 id="blockchain-title" class="mw-visually-hidden">{{ chainLabel }} tools</h2>
|
|
45
|
-
<AppTabNav v-model="active" :tabs="tabs" id-prefix="blockchain" variant="raised" size="lg" flush class="tabs" :aria-label="`${chainLabel} tools`" />
|
|
49
|
+
<AppTabNav v-model="active" :tabs="tabs" id-prefix="blockchain" variant="raised" size="lg" flush ref="strip" class="tabs" :aria-label="`${chainLabel} tools`" />
|
|
46
50
|
|
|
47
51
|
<UiTabPanel id-prefix="blockchain" :tab="active" class="content">
|
|
48
52
|
<KeepAlive>
|
|
@@ -59,10 +63,11 @@ const activeComp = computed(() => tools.value.find((t) => t.id === active.value)
|
|
|
59
63
|
min-height: 0;
|
|
60
64
|
}
|
|
61
65
|
|
|
62
|
-
/* The tool tabs stay in view under the sticky header while the page scrolls
|
|
66
|
+
/* The tool tabs stay in view under the sticky header while the page scrolls: under its real height, which is more than its minimum when
|
|
67
|
+
the header wraps on a phone. */
|
|
63
68
|
.tabs {
|
|
64
69
|
position: sticky;
|
|
65
|
-
top: var(--mw-header-height);
|
|
70
|
+
top: var(--mw-header-offset, var(--mw-header-height));
|
|
66
71
|
z-index: var(--z-raised);
|
|
67
72
|
background: var(--bg);
|
|
68
73
|
}
|
package/src/e2e.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// End-to-end build only (`vite build --mode e2e`; main.ts loads this when MODE is `e2e` and VITE_E2E is `1`, both static, so every other
|
|
2
|
-
// build drops it). A mock wallet is registered like an extension and the chain client is a stub with nothing on it, so every embedded tool
|
|
3
|
-
// can be checked connected (each tool's own flows are covered in its own repository).
|
|
4
|
-
import { installE2eWallet } from '@meddleware/wallet-adapter/testing'
|
|
5
|
-
|
|
6
|
-
export function installE2e(): void {
|
|
7
|
-
installE2eWallet()
|
|
8
|
-
}
|