From 5da1e33ee1958fa0bb387155ad89e7d081b6b157 Mon Sep 17 00:00:00 2001 From: Ajay Ghanwat Date: Mon, 19 Oct 2026 17:45:42 +0530 Subject: [PATCH] fix(studio): deploy complete interactive gallery and rounded switches --- README.md | 8 ++++-- bun.lock | 18 +++++++------ package-lock.json | 51 +++++++++++++++++++++--------------- package.json | 8 +++--- scripts/verify-deployment.ts | 17 ++++++++++-- 5 files changed, 65 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 735751c..568975c 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ The complete check includes mocked provider contract/error/lock tests and a compiled-server deployment check. A real APIMart completion requires your key and model access; it is not claimed by the mocked tests. -Studio 0.1.3 offers 13 presets and comparison choices: Square, Soft, Angular, +Studio 0.1.4 offers 13 presets and comparison choices: Square, Soft, Angular, Swiss, Forest, Ocean, Rose, Violet, Ember, Editorial, Terminal, Brutalist and Contrast. Each supports light and dark mode. The first valid generated proposal appears in the large preview automatically; Review switches alternatives without @@ -179,10 +179,14 @@ load failures instead of leaving the editor permanently at Checking. ### Linux component previews -Studio is pinned to 0.1.3, which resolves component files through the UI registry +Studio is pinned to 0.1.4, which resolves component files through the UI registry instead of assuming a filename from the public component name. This fixes Linux lookups such as Input -> input.wrn. Install the committed lockfile before rebuilding and restarting; restarting a deployment still using Studio 0.1.0 cannot fix this error. Tests enforce exact casing for the installed package on all platforms, and the production check renders the composed preview plus every component gallery page. + +### Interactive Studio gallery + +Choose Component gallery in the preview Content menu, then select pages 1–7. Each of the 104 entries has populated sample data and local icons. Controls use their shipped browser functions; charts and workflow graphs include their real runtimes. Sample events appear below each example. Preview links stay in the demo; forms and uploads do not submit data. Switch tracks stay rounded across presets and existing drafts. The editor reports when the preview is rendering, ready or unable to load. diff --git a/bun.lock b/bun.lock index ad09d9e..34ef10e 100644 --- a/bun.lock +++ b/bun.lock @@ -6,14 +6,14 @@ "name": "component-showcase", "dependencies": { "@wrnexus/core": "0.8.25", - "@wrnexus/design-studio": "0.1.3", - "@wrnexus/design-system": "0.1.0", + "@wrnexus/design-studio": "0.1.4", + "@wrnexus/design-system": "0.1.1", "@wrnexus/dev-server": "0.8.83", "@wrnexus/helpers": "0.8.10", "@wrnexus/plugin": "0.8.10", "@wrnexus/styles": "0.8.27", "@wrnexus/syntax": "0.8.20", - "@wrnexus/ui": "0.8.118", + "@wrnexus/ui": "0.8.120", }, "devDependencies": { "@iconify-json/lucide": "^1.2.123", @@ -21,7 +21,7 @@ "@tailwindcss/cli": "^4.3.3", "@types/bun": "^1.3.14", "@wrnexus/cli": "0.8.77", - "@wrnexus/compiler": "0.8.44", + "@wrnexus/compiler": "0.8.45", "happy-dom": "^20.11.6", "prettier": "^3.6.2", "tailwindcss": "^4.3.3", @@ -156,7 +156,7 @@ "@wrnexus/cli": ["@wrnexus/cli@0.8.77", "https://registry.workroot.in/repository/npm/@wrnexus/cli/-/cli-0.8.77.tgz", { "dependencies": { "@wrnexus/authz": "^0.8.16", "@wrnexus/compiler": "^0.8.44", "@wrnexus/core": "^0.8.25", "@wrnexus/csr": "^0.8.74", "@wrnexus/db": "^0.8.24", "@wrnexus/design-system": "^0.1.0", "@wrnexus/dev-server": "^0.8.83", "@wrnexus/i18n": "^0.8.13", "@wrnexus/mcp": "^0.8.9", "@wrnexus/playground": "^0.8.9", "@wrnexus/plugin": "^0.8.10", "@wrnexus/react": "^0.8.10", "@wrnexus/router": "^0.8.11", "@wrnexus/security": "^0.8.10", "@wrnexus/styles": "^0.8.27", "@wrnexus/syntax": "^0.8.20", "@wrnexus/typecheck": "^0.8.18", "@wrnexus/ui": "^0.8.118", "@wrnexus/validation": "^0.8.14", "selfsigned": "^5.5.0" }, "bin": { "wrnexus": "dist/index.js" } }, "sha512-zFkifdFVwkcja9H8ctEZMPD5khBqmhp32yqSGjBvJnfuFCBdaRB9U5uCkqBbPCQUELrqTvCG2lafvQaptBo8xQ=="], - "@wrnexus/compiler": ["@wrnexus/compiler@0.8.44", "https://registry.workroot.in/repository/npm/@wrnexus/compiler/-/compiler-0.8.44.tgz", { "dependencies": { "@wrnexus/csr": "^0.8.74", "@wrnexus/store": "^0.8.13", "@wrnexus/syntax": "^0.8.20", "@wrnexus/validation": "^0.8.14" } }, "sha512-TJ3qPfD+2VsmpuVXgA6CUIlv2fqU2tW8xrIvHUFkGYJpVzF5jbSBUsoHNDfCT9/t5gw3CGazJnPqgzdcIm5XCg=="], + "@wrnexus/compiler": ["@wrnexus/compiler@0.8.45", "https://registry.workroot.in/repository/npm/@wrnexus/compiler/-/compiler-0.8.45.tgz", { "dependencies": { "@wrnexus/csr": "^0.8.74", "@wrnexus/store": "^0.8.13", "@wrnexus/syntax": "^0.8.20", "@wrnexus/validation": "^0.8.14" } }, "sha512-+VU+9XZibx1+vEUXCk//dacHloQq55MQsh+AZ9KnXVQjpC9Xa4bLHI7AEOTCLvJcNezaU+4k6mRbdEmmvT2Kdw=="], "@wrnexus/core": ["@wrnexus/core@0.8.25", "https://registry.workroot.in/repository/npm/@wrnexus/core/-/core-0.8.25.tgz", {}, "sha512-od4TyDIKoX0RhjTDq+1HJ5fGQPID04Ao+BvWEkJU0beWRbXLZ6u5iRsh58+h/T2so8NSI9sW4rorC4N+BSMaqQ=="], @@ -164,9 +164,9 @@ "@wrnexus/db": ["@wrnexus/db@0.8.24", "https://registry.workroot.in/repository/npm/@wrnexus/db/-/db-0.8.24.tgz", {}, "sha512-zLT7e+C1nWhYs3BnqEjEO0QSli0JNl5sSnSHObjSX0C+wty30ASWD1WyBnfu9xFjOFn1eucZGthzo1xdGGQ1TQ=="], - "@wrnexus/design-studio": ["@wrnexus/design-studio@0.1.3", "https://registry.workroot.in/repository/npm/@wrnexus/design-studio/-/design-studio-0.1.3.tgz", { "dependencies": { "@wrnexus/ai": "^0.8.10", "@wrnexus/compiler": "^0.8.44", "@wrnexus/core": "^0.8.25", "@wrnexus/csr": "^0.8.74", "@wrnexus/design-system": "^0.1.0", "@wrnexus/ssr": "^0.8.20", "@wrnexus/styles": "^0.8.27", "@wrnexus/ui": "^0.8.118" }, "bin": { "wrnexus-design-studio": "dist/cli.js" } }, "sha512-egL4uYsRxiVotuq63cakjSbay4z/uDfQr0rhPDoQa+SriIJHlkRFvPbNxv2p4d4Fy/9uMnGmmgqA6VsgeuFKaA=="], + "@wrnexus/design-studio": ["@wrnexus/design-studio@0.1.4", "https://registry.workroot.in/repository/npm/@wrnexus/design-studio/-/design-studio-0.1.4.tgz", { "dependencies": { "@iconify-json/lucide": "1.2.123", "@wrnexus/ai": "^0.8.10", "@wrnexus/compiler": "^0.8.45", "@wrnexus/core": "^0.8.25", "@wrnexus/csr": "^0.8.74", "@wrnexus/design-system": "^0.1.1", "@wrnexus/ssr": "^0.8.20", "@wrnexus/styles": "^0.8.27", "@wrnexus/ui": "^0.8.120" }, "bin": { "wrnexus-design-studio": "dist/cli.js" } }, "sha512-LWCyd/oe3IxR1HCr8T3mXgIGFc9uQiaZdAiNVikUk7IAIzPNK7v3ygFw2tcW01ZPqvtvonewWkeDzKRUI1tMiA=="], - "@wrnexus/design-system": ["@wrnexus/design-system@0.1.0", "https://registry.workroot.in/repository/npm/@wrnexus/design-system/-/design-system-0.1.0.tgz", {}, "sha512-gNH/B+kYYZy+Pvlvl3gXoQZlTS6iP/teXct2MoClmsGp6M1vKa8IEptVXKs7po3E83zj5kSh3FIXwcBJHtZqLg=="], + "@wrnexus/design-system": ["@wrnexus/design-system@0.1.1", "https://registry.workroot.in/repository/npm/@wrnexus/design-system/-/design-system-0.1.1.tgz", {}, "sha512-Vq1jq9x4ZBBGizE4r/ZiVyi5GnrejIezIFM3lLp21ES0DymaN8jMQawp1V2WdfgELhT/5PHqyK6iW9ZhiurLxg=="], "@wrnexus/dev-server": ["@wrnexus/dev-server@0.8.83", "https://registry.workroot.in/repository/npm/@wrnexus/dev-server/-/dev-server-0.8.83.tgz", { "dependencies": { "@wrnexus/authz": "^0.8.16", "@wrnexus/cache": "^0.8.9", "@wrnexus/compiler": "^0.8.44", "@wrnexus/core": "^0.8.25", "@wrnexus/csr": "^0.8.74", "@wrnexus/db": "^0.8.24", "@wrnexus/dev-toolbar": "^0.8.19", "@wrnexus/i18n": "^0.8.13", "@wrnexus/observability": "^0.8.9", "@wrnexus/plugin": "^0.8.10", "@wrnexus/pubsub": "^0.8.10", "@wrnexus/pwa": "^0.8.13", "@wrnexus/queue": "^0.8.15", "@wrnexus/react": "^0.8.10", "@wrnexus/router": "^0.8.11", "@wrnexus/rpc": "^0.8.11", "@wrnexus/security": "^0.8.10", "@wrnexus/ssr": "^0.8.20", "@wrnexus/store": "^0.8.13", "@wrnexus/styles": "^0.8.27", "@wrnexus/ui": "^0.8.118", "@wrnexus/uploader": "^0.8.14", "@wrnexus/validation": "^0.8.14" } }, "sha512-Ue6Q2KF7nZycvghRvWQBC9PA0DZ2aE+8fC3FaIFMkbID9HLK64Xe+MgMnLDJvQ7mlBJlC+9Ztj8yOYqSavtq1g=="], @@ -210,7 +210,7 @@ "@wrnexus/typecheck": ["@wrnexus/typecheck@0.8.18", "https://registry.workroot.in/repository/npm/@wrnexus/typecheck/-/typecheck-0.8.18.tgz", { "dependencies": { "@wrnexus/syntax": "^0.8.20", "typescript": "^6.0.3" } }, "sha512-oS5x6hUs6VUNEupDARzFTzXvvdRAV6l8nO3wi+5rdfeDIDSz/5QNeQfVwzJg7SDGVkuTVOHH8lqyiMtSW+8Nbg=="], - "@wrnexus/ui": ["@wrnexus/ui@0.8.118", "https://registry.workroot.in/repository/npm/@wrnexus/ui/-/ui-0.8.118.tgz", { "dependencies": { "@wrnexus/core": "^0.8.25", "@wrnexus/design-system": "^0.1.0", "@wrnexus/plugin": "^0.8.10", "chart.js": "^4.5.1", "drawflow": "0.0.60" } }, "sha512-a0RWv3P+Z0f19Pqvaq+mHcBrAYni1k8iXQKMf9r83rYp3m6V4e00Fahg661VcF4Y6o3SAn151YVTH3zrRwsaWw=="], + "@wrnexus/ui": ["@wrnexus/ui@0.8.120", "https://registry.workroot.in/repository/npm/@wrnexus/ui/-/ui-0.8.120.tgz", { "dependencies": { "@wrnexus/core": "^0.8.25", "@wrnexus/design-system": "^0.1.1", "@wrnexus/plugin": "^0.8.10", "chart.js": "^4.5.1", "drawflow": "0.0.60" } }, "sha512-4bzaxzv3mE2NnzdLmZnxUxvvMAlr64kLEmkw29ZpRBBDT9CpVGXQQwkBMBvlKCp9sR2y4Yk5+KwfzQMEUk7mOQ=="], "@wrnexus/uploader": ["@wrnexus/uploader@0.8.14", "https://registry.workroot.in/repository/npm/@wrnexus/uploader/-/uploader-0.8.14.tgz", { "dependencies": { "@wrnexus/core": "^0.8.25", "@wrnexus/plugin": "^0.8.10", "@wrnexus/ui": "^0.8.118" } }, "sha512-LticgG17uYu65IYRNDGagtvjfdUNrVHR2drbv6r/J4pycNX6CcGGn0hbjZFPA1uSHfH/hp//hA+KTOcoE14aMQ=="], @@ -370,6 +370,8 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@wrnexus/design-studio/@iconify-json/lucide": ["@iconify-json/lucide@1.2.123", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-0CozmpKXEOEEhltrfT2zt+/t1hez67Y+hM2VJWoIcBKdBrb83VYuKf+b5A0QU9HfQm+RNn2GjFWlTOwi+Ss6IA=="], + "@wrnexus/typecheck/typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], diff --git a/package-lock.json b/package-lock.json index 60b017d..4d9e62a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,14 +9,14 @@ "version": "0.8.8", "dependencies": { "@wrnexus/core": "0.8.25", - "@wrnexus/design-studio": "0.1.3", - "@wrnexus/design-system": "0.1.0", + "@wrnexus/design-studio": "0.1.4", + "@wrnexus/design-system": "0.1.1", "@wrnexus/dev-server": "0.8.83", "@wrnexus/helpers": "0.8.10", "@wrnexus/plugin": "0.8.10", "@wrnexus/styles": "0.8.27", "@wrnexus/syntax": "0.8.20", - "@wrnexus/ui": "0.8.118" + "@wrnexus/ui": "0.8.120" }, "devDependencies": { "@iconify-json/lucide": "^1.2.123", @@ -24,7 +24,7 @@ "@tailwindcss/cli": "^4.3.3", "@types/bun": "^1.3.14", "@wrnexus/cli": "0.8.77", - "@wrnexus/compiler": "0.8.44", + "@wrnexus/compiler": "0.8.45", "happy-dom": "^20.11.6", "prettier": "^3.6.2", "tailwindcss": "^4.3.3", @@ -93,7 +93,6 @@ }, "node_modules/@iconify/types": { "version": "2.0.0", - "dev": true, "license": "MIT" }, "node_modules/@iconify/utils": { @@ -1141,9 +1140,9 @@ } }, "node_modules/@wrnexus/compiler": { - "version": "0.8.44", - "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/compiler/-/compiler-0.8.44.tgz", - "integrity": "sha512-TJ3qPfD+2VsmpuVXgA6CUIlv2fqU2tW8xrIvHUFkGYJpVzF5jbSBUsoHNDfCT9/t5gw3CGazJnPqgzdcIm5XCg==", + "version": "0.8.45", + "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/compiler/-/compiler-0.8.45.tgz", + "integrity": "sha512-+VU+9XZibx1+vEUXCk//dacHloQq55MQsh+AZ9KnXVQjpC9Xa4bLHI7AEOTCLvJcNezaU+4k6mRbdEmmvT2Kdw==", "license": "MIT", "dependencies": { "@wrnexus/csr": "^0.8.74", @@ -1186,19 +1185,20 @@ } }, "node_modules/@wrnexus/design-studio": { - "version": "0.1.3", - "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/design-studio/-/design-studio-0.1.3.tgz", - "integrity": "sha512-egL4uYsRxiVotuq63cakjSbay4z/uDfQr0rhPDoQa+SriIJHlkRFvPbNxv2p4d4Fy/9uMnGmmgqA6VsgeuFKaA==", + "version": "0.1.4", + "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/design-studio/-/design-studio-0.1.4.tgz", + "integrity": "sha512-LWCyd/oe3IxR1HCr8T3mXgIGFc9uQiaZdAiNVikUk7IAIzPNK7v3ygFw2tcW01ZPqvtvonewWkeDzKRUI1tMiA==", "license": "MIT", "dependencies": { + "@iconify-json/lucide": "1.2.123", "@wrnexus/ai": "^0.8.10", - "@wrnexus/compiler": "^0.8.44", + "@wrnexus/compiler": "^0.8.45", "@wrnexus/core": "^0.8.25", "@wrnexus/csr": "^0.8.74", - "@wrnexus/design-system": "^0.1.0", + "@wrnexus/design-system": "^0.1.1", "@wrnexus/ssr": "^0.8.20", "@wrnexus/styles": "^0.8.27", - "@wrnexus/ui": "^0.8.118" + "@wrnexus/ui": "^0.8.120" }, "bin": { "wrnexus-design-studio": "dist/cli.js" @@ -1207,10 +1207,19 @@ "bun": ">=1.3.0" } }, + "node_modules/@wrnexus/design-studio/node_modules/@iconify-json/lucide": { + "version": "1.2.123", + "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.123.tgz", + "integrity": "sha512-0CozmpKXEOEEhltrfT2zt+/t1hez67Y+hM2VJWoIcBKdBrb83VYuKf+b5A0QU9HfQm+RNn2GjFWlTOwi+Ss6IA==", + "license": "ISC", + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@wrnexus/design-system": { - "version": "0.1.0", - "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/design-system/-/design-system-0.1.0.tgz", - "integrity": "sha512-gNH/B+kYYZy+Pvlvl3gXoQZlTS6iP/teXct2MoClmsGp6M1vKa8IEptVXKs7po3E83zj5kSh3FIXwcBJHtZqLg==", + "version": "0.1.1", + "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/design-system/-/design-system-0.1.1.tgz", + "integrity": "sha512-Vq1jq9x4ZBBGizE4r/ZiVyi5GnrejIezIFM3lLp21ES0DymaN8jMQawp1V2WdfgELhT/5PHqyK6iW9ZhiurLxg==", "license": "MIT", "engines": { "bun": ">=1.3.0" @@ -1534,13 +1543,13 @@ } }, "node_modules/@wrnexus/ui": { - "version": "0.8.118", - "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/ui/-/ui-0.8.118.tgz", - "integrity": "sha512-a0RWv3P+Z0f19Pqvaq+mHcBrAYni1k8iXQKMf9r83rYp3m6V4e00Fahg661VcF4Y6o3SAn151YVTH3zrRwsaWw==", + "version": "0.8.120", + "resolved": "https://registry.workroot.in/repository/npm/@wrnexus/ui/-/ui-0.8.120.tgz", + "integrity": "sha512-4bzaxzv3mE2NnzdLmZnxUxvvMAlr64kLEmkw29ZpRBBDT9CpVGXQQwkBMBvlKCp9sR2y4Yk5+KwfzQMEUk7mOQ==", "license": "MIT", "dependencies": { "@wrnexus/core": "^0.8.25", - "@wrnexus/design-system": "^0.1.0", + "@wrnexus/design-system": "^0.1.1", "@wrnexus/plugin": "^0.8.10", "chart.js": "^4.5.1", "drawflow": "0.0.60" diff --git a/package.json b/package.json index 58e02d8..7609f0d 100644 --- a/package.json +++ b/package.json @@ -27,9 +27,9 @@ "@wrnexus/plugin": "0.8.10", "@wrnexus/styles": "0.8.27", "@wrnexus/syntax": "0.8.20", - "@wrnexus/ui": "0.8.118", - "@wrnexus/design-studio": "0.1.3", - "@wrnexus/design-system": "0.1.0" + "@wrnexus/ui": "0.8.120", + "@wrnexus/design-studio": "0.1.4", + "@wrnexus/design-system": "0.1.1" }, "devDependencies": { "@iconify-json/lucide": "^1.2.123", @@ -37,7 +37,7 @@ "@tailwindcss/cli": "^4.3.3", "@types/bun": "^1.3.14", "@wrnexus/cli": "0.8.77", - "@wrnexus/compiler": "0.8.44", + "@wrnexus/compiler": "0.8.45", "happy-dom": "^20.11.6", "prettier": "^3.6.2", "tailwindcss": "^4.3.3", diff --git a/scripts/verify-deployment.ts b/scripts/verify-deployment.ts index f86c1df..7142adb 100644 --- a/scripts/verify-deployment.ts +++ b/scripts/verify-deployment.ts @@ -134,8 +134,21 @@ try { `Component gallery page ${page + 1} failed: ${await gallery.text()}`, ); const artifact = await gallery.json(); - if (!(await fetch(origin + artifact.url)).ok) - throw Error(`Gallery page ${page + 1} did not render.`); + const rendered = await fetch(origin + artifact.url); + if (!rendered.ok) throw Error(`Gallery page ${page + 1} did not render.`); + const html = await rendered.text(); + const count = ( + html.match(/
]*data-component=/.test(html) || + !html.includes("data:image/svg+xml,") + ) + throw Error( + `Gallery page ${page + 1} is missing samples, icons or browser behavior.`, + ); } console.log( "Compiled server serves component pages, Studio assets, export-only APIs and previews on one port.",