CI / verify (pull_request) Failing after 57s
CI / infrastructure-smoke (pull_request) Skipped
CI / migration-smoke (pull_request) Skipped
CI / package-release (pull_request) Skipped
CI / package-publication (pull_request) Skipped
CI / image-build (pull_request) Skipped
CI / deploy-smoke (same-origin) (pull_request) Skipped
CI / deploy-smoke (split) (pull_request) Skipped
The Dashboard's shell now follows DESIGN.md §4 (ADR 0058): - A collapsible left sidebar replaces the header-and-column layout. It is icons and labels when expanded and icons only when collapsed; each collapsed item keeps its name, visually hidden, and shows a tooltip on hover and on keyboard focus (WCAG 2.2 §1.4.13). The Overview comes first, then the server's groups and modules. There is no top bar. - The expanded/collapsed choice is remembered in this browser's localStorage, behind a SidebarPreference interface that a synced store can replace later. - An account menu at the bottom of the sidebar follows the WAI-ARIA menu button pattern and offers only Sign out, which now lives there rather than in the header. - On phones (below 48em) the same navigation opens in a modal drawer: the page behind it is inert and focus is trapped inside it. Escape, its close button, and the backdrop close it and return focus to the menu button. Choosing a page closes it and focuses the page. Changing layout keeps the route, the desktop mode, and the mounted module. - Lucide (lucide-react 1.48.0, shell only) is Ekklesia's icon vocabulary. Every module shows one generic icon until manifest v9 lets modules declare their own; there is no per-module icon map. - The identity slot is a neutral placeholder with no inputs, waiting for branding (#101). The tooltip, menu, and drawer stay shell-local until a second consumer needs them (ADR 0039). The deploy smoke now signs out through the account menu, and drives the drawer at phone size in a real browser. Co-Authored-By: Claude Opus 5.5 <[email protected]>
59 lines
1.5 KiB
JSON
59 lines
1.5 KiB
JSON
{
|
|
"name": "@ekklesia/shell",
|
|
"version": "0.2.5",
|
|
"license": "AGPL-3.0-or-later",
|
|
"private": true,
|
|
"type": "module",
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"import": "./dist/index.js"
|
|
},
|
|
"./dashboard-assets": {
|
|
"types": "./dist/dashboard-assets.d.ts",
|
|
"import": "./dist/dashboard-assets.js"
|
|
},
|
|
"./dashboard-routes": {
|
|
"types": "./dist/dashboard-routes.d.ts",
|
|
"import": "./dist/dashboard-routes.js"
|
|
},
|
|
"./display-assets": {
|
|
"types": "./dist/display-assets.d.ts",
|
|
"import": "./dist/display-assets.js"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"build": "tsc --project tsconfig.build.json && node scripts/build-browser.mjs",
|
|
"dev": "node scripts/build-browser.mjs --serve",
|
|
"lint": "biome lint .",
|
|
"test": "vitest run",
|
|
"typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project tsconfig.test.json"
|
|
},
|
|
"dependencies": {
|
|
"@ekklesia/design-tokens": "workspace:*",
|
|
"@ekklesia/module-ui-host": "workspace:*",
|
|
"@ekklesia/module-ui-sdk": "workspace:*",
|
|
"@ekklesia/ui": "workspace:*",
|
|
"lucide-react": "1.48.0",
|
|
"react": "19.2.8",
|
|
"react-dom": "19.2.8"
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "2.5.3",
|
|
"@ekklesia/typescript-config": "workspace:*",
|
|
"@types/node": "24.13.3",
|
|
"@types/react": "19.2.18",
|
|
"@types/react-dom": "19.2.4",
|
|
"esbuild": "0.28.1",
|
|
"happy-dom": "20.0.11",
|
|
"typescript": "7.0.2",
|
|
"vitest": "4.1.10"
|
|
},
|
|
"ekklesia": {
|
|
"layer": "surface"
|
|
}
|
|
}
|