fix(ui): polish linked catalog cards
This commit is contained in:
@@ -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.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/authz",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/cli",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/compiler",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/core",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/csr",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/db",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/dev-server",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/encryption",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/i18n",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/jwt",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/mobile",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/native",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/oauth",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/pubsub",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/queue",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/reactive",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/router",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ssr",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/styles",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/test",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/tracking",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/ui",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.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", () => {
|
||||
|
||||
+70
-2
@@ -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);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/uploader",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@wrnexus/validation",
|
||||
"version": "0.2.62",
|
||||
"version": "0.2.63",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
|
||||
Reference in New Issue
Block a user