diff --git a/.publish/ai/package.json b/.publish/ai/package.json index 42d30efa..5675a469 100644 --- a/.publish/ai/package.json +++ b/.publish/ai/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ai", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.", "license": "MIT", diff --git a/.publish/authz/package.json b/.publish/authz/package.json index 5b90005b..0fced98f 100644 --- a/.publish/authz/package.json +++ b/.publish/authz/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/authz", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/authz — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/cli/package.json b/.publish/cli/package.json index a504c868..baf52689 100644 --- a/.publish/cli/package.json +++ b/.publish/cli/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/cli", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/cli — part of the WrNexus framework.", "license": "MIT", @@ -28,16 +28,16 @@ "wrnexus": "./dist/index.js" }, "dependencies": { - "@wrnexus/core": "^0.2.62", - "@wrnexus/router": "^0.2.62", - "@wrnexus/csr": "^0.2.62", - "@wrnexus/compiler": "^0.2.62", - "@wrnexus/styles": "^0.2.62", - "@wrnexus/dev-server": "^0.2.62", - "@wrnexus/ui": "^0.2.62", - "@wrnexus/validation": "^0.2.62", - "@wrnexus/i18n": "^0.2.62", - "@wrnexus/db": "^0.2.62" + "@wrnexus/core": "^0.2.63", + "@wrnexus/router": "^0.2.63", + "@wrnexus/csr": "^0.2.63", + "@wrnexus/compiler": "^0.2.63", + "@wrnexus/styles": "^0.2.63", + "@wrnexus/dev-server": "^0.2.63", + "@wrnexus/ui": "^0.2.63", + "@wrnexus/validation": "^0.2.63", + "@wrnexus/i18n": "^0.2.63", + "@wrnexus/db": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/compiler/package.json b/.publish/compiler/package.json index 81614ae2..420febf1 100644 --- a/.publish/compiler/package.json +++ b/.publish/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/compiler", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/compiler — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/core/package.json b/.publish/core/package.json index f1dec1da..bd7256b5 100644 --- a/.publish/core/package.json +++ b/.publish/core/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/core", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/core — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/csr/package.json b/.publish/csr/package.json index 2bc980ba..cabf4ceb 100644 --- a/.publish/csr/package.json +++ b/.publish/csr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/csr", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/csr — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/db/package.json b/.publish/db/package.json index b1b44e16..2725a8c8 100644 --- a/.publish/db/package.json +++ b/.publish/db/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/db", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/db — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/dev-server/package.json b/.publish/dev-server/package.json index 9c5d9360..72778121 100644 --- a/.publish/dev-server/package.json +++ b/.publish/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-server", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/dev-server — part of the WrNexus framework.", "license": "MIT", @@ -25,18 +25,18 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62", - "@wrnexus/router": "^0.2.62", - "@wrnexus/ssr": "^0.2.62", - "@wrnexus/csr": "^0.2.62", - "@wrnexus/compiler": "^0.2.62", - "@wrnexus/styles": "^0.2.62", - "@wrnexus/ui": "^0.2.62", - "@wrnexus/validation": "^0.2.62", - "@wrnexus/i18n": "^0.2.62", - "@wrnexus/db": "^0.2.62", - "@wrnexus/pubsub": "^0.2.62", - "@wrnexus/uploader": "^0.2.62" + "@wrnexus/core": "^0.2.63", + "@wrnexus/router": "^0.2.63", + "@wrnexus/ssr": "^0.2.63", + "@wrnexus/csr": "^0.2.63", + "@wrnexus/compiler": "^0.2.63", + "@wrnexus/styles": "^0.2.63", + "@wrnexus/ui": "^0.2.63", + "@wrnexus/validation": "^0.2.63", + "@wrnexus/i18n": "^0.2.63", + "@wrnexus/db": "^0.2.63", + "@wrnexus/pubsub": "^0.2.63", + "@wrnexus/uploader": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/encryption/package.json b/.publish/encryption/package.json index 11ef2509..76cf5fd6 100644 --- a/.publish/encryption/package.json +++ b/.publish/encryption/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/encryption", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/encryption — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/helpers/package.json b/.publish/helpers/package.json index 94e62ed0..ca14cbbe 100644 --- a/.publish/helpers/package.json +++ b/.publish/helpers/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/helpers", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "Safe convenience helpers for WrNexus request contexts and common application flows.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/i18n/package.json b/.publish/i18n/package.json index c77f3f51..5548efdb 100644 --- a/.publish/i18n/package.json +++ b/.publish/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/i18n", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/i18n — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/jwt/package.json b/.publish/jwt/package.json index 10ee3351..46e6a653 100644 --- a/.publish/jwt/package.json +++ b/.publish/jwt/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/jwt", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/jwt — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/mobile/package.json b/.publish/mobile/package.json index 562d6834..3e80487a 100644 --- a/.publish/mobile/package.json +++ b/.publish/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/mobile", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/mobile — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/native": "^0.2.62" + "@wrnexus/native": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/native/package.json b/.publish/native/package.json index 4f0f71f5..5ff7d955 100644 --- a/.publish/native/package.json +++ b/.publish/native/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/native", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/native — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/oauth/package.json b/.publish/oauth/package.json index 44a8b4f8..79dbbc2e 100644 --- a/.publish/oauth/package.json +++ b/.publish/oauth/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/oauth", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/oauth — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/pubsub/package.json b/.publish/pubsub/package.json index ffcc0968..fe0cc4df 100644 --- a/.publish/pubsub/package.json +++ b/.publish/pubsub/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/pubsub", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/pubsub — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/queue/package.json b/.publish/queue/package.json index f1fab8d2..3dcf5c6a 100644 --- a/.publish/queue/package.json +++ b/.publish/queue/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/queue", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/queue — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/reactive/package.json b/.publish/reactive/package.json index a7045bf6..37eaa221 100644 --- a/.publish/reactive/package.json +++ b/.publish/reactive/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/reactive", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/reactive — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/router/package.json b/.publish/router/package.json index 1154a9c1..3a87b756 100644 --- a/.publish/router/package.json +++ b/.publish/router/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/router", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/router — part of the WrNexus framework.", "license": "MIT", @@ -21,8 +21,8 @@ } }, "dependencies": { - "@wrnexus/compiler": "^0.2.62", - "@wrnexus/core": "^0.2.62" + "@wrnexus/compiler": "^0.2.63", + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/ssr/package.json b/.publish/ssr/package.json index c6ee1a34..016d2287 100644 --- a/.publish/ssr/package.json +++ b/.publish/ssr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ssr", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/ssr — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/styles/package.json b/.publish/styles/package.json index 8cc940dd..f29bfcec 100644 --- a/.publish/styles/package.json +++ b/.publish/styles/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/styles", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/styles — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/uploader": "^0.2.62" + "@wrnexus/uploader": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/test/package.json b/.publish/test/package.json index 986ffc9a..c1fff68c 100644 --- a/.publish/test/package.json +++ b/.publish/test/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/test", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/test — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/tracking/package.json b/.publish/tracking/package.json index 5f79e124..9cbfb26e 100644 --- a/.publish/tracking/package.json +++ b/.publish/tracking/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/tracking", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/tracking — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/ui/package.json b/.publish/ui/package.json index b09d3573..71daffd8 100644 --- a/.publish/ui/package.json +++ b/.publish/ui/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ui", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/ui — part of the WrNexus framework.", "license": "MIT", @@ -25,7 +25,7 @@ "./ui.css": "./ui.css" }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist", diff --git a/.publish/ui/ui.css b/.publish/ui/ui.css index 44455d5d..6ac0b917 100644 --- a/.publish/ui/ui.css +++ b/.publish/ui/ui.css @@ -1338,30 +1338,98 @@ .wire-muted { color: var(--wire-color-muted); } +.wire-visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} .wire-catalog-card { position: relative; display: grid; - gap: 0.75rem; + align-content: start; + gap: 0.85rem; min-width: 0; - padding: clamp(1rem, 3vw, 1.5rem); + min-height: 13rem; + overflow: hidden; + padding: clamp(1.25rem, 3vw, 1.75rem); + isolation: isolate; + transition: + border-color var(--wire-motion-base) var(--wire-ease-standard), + box-shadow var(--wire-motion-base) var(--wire-ease-standard), + transform var(--wire-motion-base) var(--wire-ease-emphasized); +} +.wire-catalog-card::before { + display: grid; + width: 2.75rem; + height: 2.75rem; + place-items: center; + margin-bottom: 0.35rem; + color: var(--wire-color-primary); + font-size: 1.15rem; + font-weight: 800; + border: 1px solid color-mix(in srgb, var(--wire-color-primary) 28%, transparent); + border-radius: calc(var(--wire-radius) * 0.8); + background: color-mix(in srgb, var(--wire-color-primary) 12%, transparent); +} +.wire-catalog-card--channel::before { + content: "◉"; +} +.wire-catalog-card--integration::before { + content: "⌘"; +} +.wire-catalog-card--campaign::before { + content: "↗"; } .wire-catalog-card h3, .wire-catalog-card p { margin: 0; } +.wire-catalog-card h3 { + color: var(--wire-color-text); + font-size: clamp(1.05rem, 2vw, 1.25rem); + line-height: 1.25; +} .wire-catalog-card p { color: var(--wire-color-muted); line-height: 1.6; } +.wire-catalog-card:has(.wire-catalog-card__link)::after { + content: "→"; + position: absolute; + right: 1.25rem; + bottom: 1.1rem; + z-index: 1; + color: var(--wire-color-primary); + font-size: 1.2rem; + font-weight: 800; + transition: transform var(--wire-motion-base) var(--wire-ease-emphasized); +} .wire-catalog-card__link { position: absolute; inset: 0; + z-index: 2; border-radius: inherit; } .wire-catalog-card__link:focus-visible { outline: 2px solid var(--wire-color-primary); outline-offset: 3px; } +@media (hover: hover) and (pointer: fine) { + .wire-catalog-card:has(.wire-catalog-card__link):hover { + border-color: color-mix(in srgb, var(--wire-color-primary) 48%, var(--wire-color-border)); + box-shadow: 0 1rem 2.5rem color-mix(in srgb, var(--wire-color-primary) 12%, transparent); + transform: translateY(-3px); + } + .wire-catalog-card:has(.wire-catalog-card__link):hover::after { + transform: translateX(0.25rem); + } +} .wire-catalog-card--glass { background: color-mix(in srgb, var(--wire-color-surface) 80%, transparent); backdrop-filter: blur(12px); diff --git a/.publish/uploader/package.json b/.publish/uploader/package.json index ae1f05d2..95062406 100644 --- a/.publish/uploader/package.json +++ b/.publish/uploader/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/uploader", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/uploader — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.2.62" + "@wrnexus/core": "^0.2.63" }, "files": [ "dist" diff --git a/.publish/validation/package.json b/.publish/validation/package.json index aaa950f6..10a652ec 100644 --- a/.publish/validation/package.json +++ b/.publish/validation/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/validation", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "description": "@wrnexus/validation — part of the WrNexus framework.", "license": "MIT", diff --git a/packages/ai/package.json b/packages/ai/package.json index 188d86ac..35a562ea 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ai", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.", diff --git a/packages/authz/package.json b/packages/authz/package.json index 540aac43..f800d18e 100644 --- a/packages/authz/package.json +++ b/packages/authz/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/authz", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/cli/package.json b/packages/cli/package.json index 4d240732..1fd54117 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/cli", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/cli/src/update.ts b/packages/cli/src/update.ts index 941d018a..d42a5d51 100644 --- a/packages/cli/src/update.ts +++ b/packages/cli/src/update.ts @@ -628,6 +628,15 @@ const MIGRATIONS: Migration[] = [ // Package auto-discovery and the root-level theme aliases apply automatically. }, }, + { + version: "0.2.63", + id: "polished-linked-catalog-cards", + description: + "Fixes visually hidden full-card links and improves channel, integration, and campaign card hierarchy and interaction.", + apply() { + // The shared UI stylesheet update applies automatically. + }, + }, ]; /** Release tooling uses this to require an explicit migration entry per version. */ diff --git a/packages/compiler/package.json b/packages/compiler/package.json index a7f6056d..27d8739d 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/compiler", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/core/package.json b/packages/core/package.json index 8d6095aa..561ed378 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/core", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/csr/package.json b/packages/csr/package.json index d4df2f17..c6fa3ffd 100644 --- a/packages/csr/package.json +++ b/packages/csr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/csr", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/db/package.json b/packages/db/package.json index 756de956..ce644be7 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/db", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index fc9b83ee..5270407f 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-server", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/encryption/package.json b/packages/encryption/package.json index c7ceaae8..73ae7b93 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/encryption", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 0975e09b..976e5f31 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/helpers", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "description": "Safe convenience helpers for WrNexus request contexts and common application flows.", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 1fd9d258..64aa934b 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/i18n", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/jwt/package.json b/packages/jwt/package.json index 2976c82a..f9f55d89 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/jwt", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 9965a27b..34122d05 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/mobile", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/native/package.json b/packages/native/package.json index c1c6d9e8..cbd40b34 100644 --- a/packages/native/package.json +++ b/packages/native/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/native", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/oauth/package.json b/packages/oauth/package.json index 9f79fc5f..a8a51562 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/oauth", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/pubsub/package.json b/packages/pubsub/package.json index dfbf93a7..f65135b8 100644 --- a/packages/pubsub/package.json +++ b/packages/pubsub/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/pubsub", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/queue/package.json b/packages/queue/package.json index 8e6d0a0d..ba228a18 100644 --- a/packages/queue/package.json +++ b/packages/queue/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/queue", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/reactive/package.json b/packages/reactive/package.json index 435490da..e486b905 100644 --- a/packages/reactive/package.json +++ b/packages/reactive/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/reactive", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/router/package.json b/packages/router/package.json index 880821e5..91825497 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/router", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/ssr/package.json b/packages/ssr/package.json index a1a33d9b..ea4e234f 100644 --- a/packages/ssr/package.json +++ b/packages/ssr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ssr", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/styles/package.json b/packages/styles/package.json index 33475b42..79a0dd5f 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/styles", - "version": "0.2.62", + "version": "0.2.63", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/test/package.json b/packages/test/package.json index 6ea4b480..57a108a6 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/test", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/tracking/package.json b/packages/tracking/package.json index 7b1621f9..ebd64e5c 100644 --- a/packages/tracking/package.json +++ b/packages/tracking/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/tracking", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/ui/package.json b/packages/ui/package.json index 8af0addc..e4e305df 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ui", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/ui/test/ui.test.ts b/packages/ui/test/ui.test.ts index 0fada5d0..0810520a 100644 --- a/packages/ui/test/ui.test.ts +++ b/packages/ui/test/ui.test.ts @@ -82,6 +82,9 @@ test("component-system CSS includes responsive, theme-token, focus, and reduced- expect(css).toMatch(/:root\s*\{[^}]*--color-violet-600: var\(--wire-color-primary\)/s); expect(css).toContain(".wire-bg-primary"); expect(css).toContain(".wire-text-muted"); + expect(css).toContain(".wire-visually-hidden"); + expect(css).toContain(".wire-catalog-card--channel::before"); + expect(css).toContain(".wire-catalog-card--integration::before"); }); test("page shells leave background ownership to the page", () => { diff --git a/packages/ui/ui.css b/packages/ui/ui.css index 44455d5d..6ac0b917 100644 --- a/packages/ui/ui.css +++ b/packages/ui/ui.css @@ -1338,30 +1338,98 @@ .wire-muted { color: var(--wire-color-muted); } +.wire-visually-hidden { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} .wire-catalog-card { position: relative; display: grid; - gap: 0.75rem; + align-content: start; + gap: 0.85rem; min-width: 0; - padding: clamp(1rem, 3vw, 1.5rem); + min-height: 13rem; + overflow: hidden; + padding: clamp(1.25rem, 3vw, 1.75rem); + isolation: isolate; + transition: + border-color var(--wire-motion-base) var(--wire-ease-standard), + box-shadow var(--wire-motion-base) var(--wire-ease-standard), + transform var(--wire-motion-base) var(--wire-ease-emphasized); +} +.wire-catalog-card::before { + display: grid; + width: 2.75rem; + height: 2.75rem; + place-items: center; + margin-bottom: 0.35rem; + color: var(--wire-color-primary); + font-size: 1.15rem; + font-weight: 800; + border: 1px solid color-mix(in srgb, var(--wire-color-primary) 28%, transparent); + border-radius: calc(var(--wire-radius) * 0.8); + background: color-mix(in srgb, var(--wire-color-primary) 12%, transparent); +} +.wire-catalog-card--channel::before { + content: "◉"; +} +.wire-catalog-card--integration::before { + content: "⌘"; +} +.wire-catalog-card--campaign::before { + content: "↗"; } .wire-catalog-card h3, .wire-catalog-card p { margin: 0; } +.wire-catalog-card h3 { + color: var(--wire-color-text); + font-size: clamp(1.05rem, 2vw, 1.25rem); + line-height: 1.25; +} .wire-catalog-card p { color: var(--wire-color-muted); line-height: 1.6; } +.wire-catalog-card:has(.wire-catalog-card__link)::after { + content: "→"; + position: absolute; + right: 1.25rem; + bottom: 1.1rem; + z-index: 1; + color: var(--wire-color-primary); + font-size: 1.2rem; + font-weight: 800; + transition: transform var(--wire-motion-base) var(--wire-ease-emphasized); +} .wire-catalog-card__link { position: absolute; inset: 0; + z-index: 2; border-radius: inherit; } .wire-catalog-card__link:focus-visible { outline: 2px solid var(--wire-color-primary); outline-offset: 3px; } +@media (hover: hover) and (pointer: fine) { + .wire-catalog-card:has(.wire-catalog-card__link):hover { + border-color: color-mix(in srgb, var(--wire-color-primary) 48%, var(--wire-color-border)); + box-shadow: 0 1rem 2.5rem color-mix(in srgb, var(--wire-color-primary) 12%, transparent); + transform: translateY(-3px); + } + .wire-catalog-card:has(.wire-catalog-card__link):hover::after { + transform: translateX(0.25rem); + } +} .wire-catalog-card--glass { background: color-mix(in srgb, var(--wire-color-surface) 80%, transparent); backdrop-filter: blur(12px); diff --git a/packages/uploader/package.json b/packages/uploader/package.json index c5a11412..46f37ad2 100644 --- a/packages/uploader/package.json +++ b/packages/uploader/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/uploader", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/validation/package.json b/packages/validation/package.json index 0d312a27..b081cab5 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/validation", - "version": "0.2.62", + "version": "0.2.63", "private": true, "type": "module", "main": "src/index.ts",