diff --git a/.publish/ai/package.json b/.publish/ai/package.json index 0e740363..dcdbc935 100644 --- a/.publish/ai/package.json +++ b/.publish/ai/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ai", - "version": "0.3.2", + "version": "0.3.3", "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 c9cee6f5..304d41a8 100644 --- a/.publish/authz/package.json +++ b/.publish/authz/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/authz", - "version": "0.3.2", + "version": "0.3.3", "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 5b78e238..53b06814 100644 --- a/.publish/cli/package.json +++ b/.publish/cli/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/cli", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/cli — part of the WrNexus framework.", "license": "MIT", @@ -28,18 +28,18 @@ "wrnexus": "./dist/index.js" }, "dependencies": { - "@wrnexus/core": "^0.3.2", - "@wrnexus/router": "^0.3.2", - "@wrnexus/csr": "^0.3.2", - "@wrnexus/compiler": "^0.3.2", - "@wrnexus/styles": "^0.3.2", - "@wrnexus/dev-server": "^0.3.2", - "@wrnexus/ui": "^0.3.2", - "@wrnexus/validation": "^0.3.2", - "@wrnexus/i18n": "^0.3.2", - "@wrnexus/db": "^0.3.2", - "@wrnexus/plugin": "^0.3.2", - "@wrnexus/syntax": "^0.3.2" + "@wrnexus/core": "^0.3.3", + "@wrnexus/router": "^0.3.3", + "@wrnexus/csr": "^0.3.3", + "@wrnexus/compiler": "^0.3.3", + "@wrnexus/styles": "^0.3.3", + "@wrnexus/dev-server": "^0.3.3", + "@wrnexus/ui": "^0.3.3", + "@wrnexus/validation": "^0.3.3", + "@wrnexus/i18n": "^0.3.3", + "@wrnexus/db": "^0.3.3", + "@wrnexus/plugin": "^0.3.3", + "@wrnexus/syntax": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/compiler/package.json b/.publish/compiler/package.json index 7e399b9b..907bd150 100644 --- a/.publish/compiler/package.json +++ b/.publish/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/compiler", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/compiler — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/syntax": "^0.3.2" + "@wrnexus/syntax": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/core/package.json b/.publish/core/package.json index 14ceec83..d71fe40c 100644 --- a/.publish/core/package.json +++ b/.publish/core/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/core", - "version": "0.3.2", + "version": "0.3.3", "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 be1b3f62..8adabfe3 100644 --- a/.publish/csr/package.json +++ b/.publish/csr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/csr", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/csr — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/db/package.json b/.publish/db/package.json index e923e530..275d7206 100644 --- a/.publish/db/package.json +++ b/.publish/db/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/db", - "version": "0.3.2", + "version": "0.3.3", "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 62ea29ee..3fc56209 100644 --- a/.publish/dev-server/package.json +++ b/.publish/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-server", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/dev-server — part of the WrNexus framework.", "license": "MIT", @@ -25,20 +25,20 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2", - "@wrnexus/dev-toolbar": "^0.3.2", - "@wrnexus/router": "^0.3.2", - "@wrnexus/ssr": "^0.3.2", - "@wrnexus/csr": "^0.3.2", - "@wrnexus/compiler": "^0.3.2", - "@wrnexus/styles": "^0.3.2", - "@wrnexus/ui": "^0.3.2", - "@wrnexus/validation": "^0.3.2", - "@wrnexus/i18n": "^0.3.2", - "@wrnexus/db": "^0.3.2", - "@wrnexus/pubsub": "^0.3.2", - "@wrnexus/uploader": "^0.3.2", - "@wrnexus/plugin": "^0.3.2" + "@wrnexus/core": "^0.3.3", + "@wrnexus/dev-toolbar": "^0.3.3", + "@wrnexus/router": "^0.3.3", + "@wrnexus/ssr": "^0.3.3", + "@wrnexus/csr": "^0.3.3", + "@wrnexus/compiler": "^0.3.3", + "@wrnexus/styles": "^0.3.3", + "@wrnexus/ui": "^0.3.3", + "@wrnexus/validation": "^0.3.3", + "@wrnexus/i18n": "^0.3.3", + "@wrnexus/db": "^0.3.3", + "@wrnexus/pubsub": "^0.3.3", + "@wrnexus/uploader": "^0.3.3", + "@wrnexus/plugin": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/dev-toolbar/package.json b/.publish/dev-toolbar/package.json index 47417b07..8debb5ff 100644 --- a/.publish/dev-toolbar/package.json +++ b/.publish/dev-toolbar/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-toolbar", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/dev-toolbar — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/encryption/package.json b/.publish/encryption/package.json index 0ded4bd6..79870d23 100644 --- a/.publish/encryption/package.json +++ b/.publish/encryption/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/encryption", - "version": "0.3.2", + "version": "0.3.3", "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 29668556..4976ddbb 100644 --- a/.publish/helpers/package.json +++ b/.publish/helpers/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/helpers", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "Safe convenience helpers for WrNexus request contexts and common application flows.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/i18n/package.json b/.publish/i18n/package.json index 6578ee00..d1a35553 100644 --- a/.publish/i18n/package.json +++ b/.publish/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/i18n", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/i18n — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/jwt/package.json b/.publish/jwt/package.json index 9a43e657..e19095f8 100644 --- a/.publish/jwt/package.json +++ b/.publish/jwt/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/jwt", - "version": "0.3.2", + "version": "0.3.3", "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 6563b82e..8a86f743 100644 --- a/.publish/mobile/package.json +++ b/.publish/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/mobile", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/mobile — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/native": "^0.3.2" + "@wrnexus/native": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/native/package.json b/.publish/native/package.json index 33fb2199..1b583a08 100644 --- a/.publish/native/package.json +++ b/.publish/native/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/native", - "version": "0.3.2", + "version": "0.3.3", "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 65078a05..f682b0cd 100644 --- a/.publish/oauth/package.json +++ b/.publish/oauth/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/oauth", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/oauth — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/plugin/package.json b/.publish/plugin/package.json index 962679ba..c8ba135a 100644 --- a/.publish/plugin/package.json +++ b/.publish/plugin/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/plugin", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/plugin — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/syntax": "^0.3.2" + "@wrnexus/syntax": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/pubsub/package.json b/.publish/pubsub/package.json index a3ddba3e..fe4c636f 100644 --- a/.publish/pubsub/package.json +++ b/.publish/pubsub/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/pubsub", - "version": "0.3.2", + "version": "0.3.3", "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 aa28e9eb..61e83fdf 100644 --- a/.publish/queue/package.json +++ b/.publish/queue/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/queue", - "version": "0.3.2", + "version": "0.3.3", "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 a60bf804..97892da0 100644 --- a/.publish/reactive/package.json +++ b/.publish/reactive/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/reactive", - "version": "0.3.2", + "version": "0.3.3", "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 0971030c..65d732c5 100644 --- a/.publish/router/package.json +++ b/.publish/router/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/router", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/router — part of the WrNexus framework.", "license": "MIT", @@ -21,8 +21,8 @@ } }, "dependencies": { - "@wrnexus/compiler": "^0.3.2", - "@wrnexus/core": "^0.3.2" + "@wrnexus/compiler": "^0.3.3", + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/ssr/package.json b/.publish/ssr/package.json index 77f280bb..96613eb3 100644 --- a/.publish/ssr/package.json +++ b/.publish/ssr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ssr", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/ssr — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/styles/package.json b/.publish/styles/package.json index 69499203..1e3f7676 100644 --- a/.publish/styles/package.json +++ b/.publish/styles/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/styles", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/styles — part of the WrNexus framework.", "license": "MIT", @@ -21,9 +21,9 @@ } }, "dependencies": { - "@wrnexus/uploader": "^0.3.2", - "@wrnexus/core": "^0.3.2", - "@wrnexus/plugin": "^0.3.2" + "@wrnexus/uploader": "^0.3.3", + "@wrnexus/core": "^0.3.3", + "@wrnexus/plugin": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/syntax/package.json b/.publish/syntax/package.json index 7fdeecd4..7e20c376 100644 --- a/.publish/syntax/package.json +++ b/.publish/syntax/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/syntax", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/syntax — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/test/package.json b/.publish/test/package.json index 0d196dfc..fd832e23 100644 --- a/.publish/test/package.json +++ b/.publish/test/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/test", - "version": "0.3.2", + "version": "0.3.3", "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 960ef664..6a20aacc 100644 --- a/.publish/tracking/package.json +++ b/.publish/tracking/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/tracking", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/tracking — part of the WrNexus framework.", "license": "MIT", diff --git a/.publish/ui/components/ChannelCard.wrn b/.publish/ui/components/ChannelCard.wrn index 32aab3a0..6e9b4ce7 100644 --- a/.publish/ui/components/ChannelCard.wrn +++ b/.publish/ui/components/ChannelCard.wrn @@ -4,31 +4,50 @@ component ChannelCard { description = "" href = "" icon = "" + actionLabel = "" class = "" } view {
{#if icon} - + {/if} -
+ +
+ +
- {#if title}

{title}

{/if} - {#if description}

{description}

{/if} + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} {#if href} - - Explore {title} - + + {actionLabel || "Explore " + title} + + {/if}
} diff --git a/.publish/ui/components/PricingComparisonTable.wrn b/.publish/ui/components/PricingComparisonTable.wrn index 39b53112..a54f0b54 100644 --- a/.publish/ui/components/PricingComparisonTable.wrn +++ b/.publish/ui/components/PricingComparisonTable.wrn @@ -3,7 +3,33 @@ component PricingComparisonTable { caption = "Plan comparison" plans = [] features = [] + featuredPlan = "" class = "" } - view {
{#each plans as plan}{/each}{#each features as feature}{#each feature.values as value}{/each}{/each}
{caption}
Feature{plan.name}
{feature.label}{value}
} + + view { +
+ + + + + + {#each plans as plan} + + {/each} + + + + {#each features as feature} + + + {#each feature.values as value} + + {/each} + + {/each} + +
{caption}
Feature{plan.name}
{feature.label}{value}
+
+ } } diff --git a/.publish/ui/components/PricingHero.wrn b/.publish/ui/components/PricingHero.wrn index 2abd536a..f7aaaac0 100644 --- a/.publish/ui/components/PricingHero.wrn +++ b/.publish/ui/components/PricingHero.wrn @@ -6,5 +6,61 @@ component PricingHero { align = "start" class = "" } - view {
{eyebrow}

{title}

{description}

} + + view { +
+ + +
+ {#if align === "center"} +
+ {#if eyebrow} +

+ {eyebrow} +

+ {/if} + + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} +
+ {:else} +
+ {#if eyebrow} +

+ {eyebrow} +

+ {/if} + + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} +
+ {/if} + + +
+
+ } } diff --git a/.publish/ui/components/PricingPlanCard.wrn b/.publish/ui/components/PricingPlanCard.wrn index 390ab051..529e7a5e 100644 --- a/.publish/ui/components/PricingPlanCard.wrn +++ b/.publish/ui/components/PricingPlanCard.wrn @@ -6,10 +6,59 @@ component PricingPlanCard { price = "₹0" period = "/month" featured = false + badgeLabel = "Most popular" ctaLabel = "Choose plan" ctaHref = "#" } + view { -

{name}

{description}

{price}{period}
{ctaLabel}
+
+ {#if featured} +
+ +
+ {/if} + +

+ {name} +

+ + {#if description} +

+ {description} +

+ {/if} + +
+ + {price} + + {#if period} + + {period} + + {/if} +
+ +
+ +
+ + {#if featured} + + {ctaLabel} + + {:else} + + {ctaLabel} + + {/if} +
} } diff --git a/.publish/ui/components/badge.wrn b/.publish/ui/components/badge.wrn index 875f9362..889cfdf4 100644 --- a/.publish/ui/components/badge.wrn +++ b/.publish/ui/components/badge.wrn @@ -3,8 +3,25 @@ component Badge { class = "" label = "" variant = "neutral" + size = "md" } + view { - {label} + + {#if variant === "success"} + + {/if} + {#if variant === "warning"} + + {/if} + {#if variant === "danger"} + + {/if} + {#if variant === "brand"} + + {/if} + {label} + + } } diff --git a/.publish/ui/components/button.wrn b/.publish/ui/components/button.wrn index 3f6b857c..f722001e 100644 --- a/.publish/ui/components/button.wrn +++ b/.publish/ui/components/button.wrn @@ -7,6 +7,8 @@ component Button { disabled = false loading = false icon = "" + iconPosition = "start" + fullWidth = false className = "" } @@ -16,16 +18,23 @@ component Button { disabled="{disabled || loading}" aria-busy="{loading}" class="wire-btn wire-btn--{variant} wire-btn--{size} {className}" + class:w-full='{fullWidth}' > {#if loading} {/if} - {#if icon && !loading} - + {#if icon && !loading && iconPosition === "start"} + {/if} {label} + + {#if icon && !loading && iconPosition === "end"} + + {/if} + + } -} \ No newline at end of file +} diff --git a/.publish/ui/components/table.wrn b/.publish/ui/components/table.wrn index d276601d..517cfcec 100644 --- a/.publish/ui/components/table.wrn +++ b/.publish/ui/components/table.wrn @@ -3,8 +3,22 @@ component Table { class = "" caption = "Data table" responsive = true + striped = false + hoverable = true + compact = false } + view { -
{caption}
+
+ + + +
{caption}
+
} } diff --git a/.publish/ui/package.json b/.publish/ui/package.json index 60af84b9..8c2b8a02 100644 --- a/.publish/ui/package.json +++ b/.publish/ui/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ui", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/ui — part of the WrNexus framework.", "license": "MIT", @@ -25,7 +25,7 @@ "./ui.css": "./ui.css" }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist", diff --git a/.publish/ui/ui.css b/.publish/ui/ui.css index 67bc7356..44950f06 100644 --- a/.publish/ui/ui.css +++ b/.publish/ui/ui.css @@ -1819,3 +1819,368 @@ position: static; } } + +/* --- Theme-safe pricing, action, badge, table and channel refinements ------ */ +:where([data-wrn-component]) { + color: var(--wire-color-text); + font-family: var(--wire-font-sans); +} + +.wire-page-shell { + min-height: 100%; + background: var(--wire-color-bg); + color: var(--wire-color-text); +} + +.wire-section { + padding-block: var(--wire-space-section-sm, 3.5rem); +} + +@media (min-width: 1024px) { + .wire-section { + padding-block: var(--wire-space-section, 5rem); + } +} + +.wire-container { + max-width: var(--wire-container-max, 80rem); + padding-inline: clamp(1rem, 2.5vw, 2rem); +} + +.wire-btn { + min-height: 2.75rem; + border-radius: 0.75rem; + padding-inline: 1rem; + font-size: 0.875rem; + font-weight: 650; + letter-spacing: -0.01em; + box-shadow: none; +} + +.wire-btn--primary { + border-color: var(--wire-color-primary); + background: var(--wire-color-primary); + color: var(--wire-color-primary-contrast); + box-shadow: var(--wire-shadow-sm, var(--wire-shadow-1)); +} + +.wire-btn--primary:hover:not(:disabled) { + border-color: var(--wire-color-primary-hover); + background: var(--wire-color-primary-hover); + color: var(--wire-color-primary-contrast); + transform: translateY(-1px); + box-shadow: var(--wire-shadow-md, var(--wire-shadow-1)); +} + +.wire-btn--secondary, +.wire-btn--default { + border-color: var(--wire-color-border-strong, var(--wire-color-border)); + background: var(--wire-color-surface); + color: var(--wire-color-text); + box-shadow: var(--wire-shadow-sm, var(--wire-shadow-1)); +} + +.wire-btn--secondary:hover:not(:disabled), +.wire-btn--default:hover:not(:disabled) { + border-color: var(--wire-color-primary); + background: var(--wire-color-surface-2); + color: var(--wire-color-primary); + transform: translateY(-1px); +} + +.wire-btn--ghost { + border-color: transparent; + background: transparent; + color: var(--wire-color-text); +} + +.wire-btn--ghost:hover:not(:disabled) { + border-color: var(--wire-color-border); + background: var(--wire-color-surface-2); + color: var(--wire-color-primary); +} + +.wire-btn--danger { + border-color: var(--wire-color-danger); + background: var(--wire-color-danger); + color: #fff; +} + +.wire-btn--danger:hover:not(:disabled) { + filter: brightness(0.94); + transform: translateY(-1px); +} + +.wire-btn--sm { + min-height: 2.25rem; + padding: 0.45rem 0.75rem; + font-size: 0.8125rem; +} + +.wire-btn--md { + min-height: 2.75rem; + padding: 0.625rem 1rem; +} + +.wire-btn--lg { + min-height: 3rem; + padding: 0.75rem 1.25rem; + font-size: 0.9375rem; +} + +.wire-badge { + display: inline-flex; + width: fit-content; + align-items: center; + gap: 0.375rem; + border: 1px solid var(--wire-color-border); + border-radius: 9999px; + background: var(--wire-color-surface-2); + color: var(--wire-color-text-muted, var(--wire-color-muted)); + font-weight: 650; + line-height: 1; + white-space: nowrap; +} + +.wire-badge--sm { + padding: 0.25rem 0.5rem; + font-size: 0.6875rem; +} + +.wire-badge--md { + padding: 0.375rem 0.625rem; + font-size: 0.75rem; +} + +.wire-badge--lg { + padding: 0.45rem 0.75rem; + font-size: 0.8125rem; +} + +.wire-badge--neutral { + border-color: var(--wire-color-border); + background: var(--wire-color-surface-2); + color: var(--wire-color-text-muted, var(--wire-color-muted)); +} + +.wire-badge--brand { + border-color: color-mix(in srgb, var(--wire-color-primary) 30%, transparent); + background: var(--wire-color-primary-soft); + color: var(--wire-color-primary); +} + +.wire-badge--success { + border-color: color-mix(in srgb, var(--wire-color-success) 30%, transparent); + background: var( + --wire-color-success-soft, + color-mix(in srgb, var(--wire-color-success) 12%, transparent) + ); + color: var(--wire-color-success); +} + +.wire-badge--warning { + border-color: color-mix(in srgb, var(--wire-color-warning) 30%, transparent); + background: var( + --wire-color-warning-soft, + color-mix(in srgb, var(--wire-color-warning) 12%, transparent) + ); + color: var(--wire-color-warning); +} + +.wire-badge--danger { + border-color: color-mix(in srgb, var(--wire-color-danger) 30%, transparent); + background: var( + --wire-color-danger-soft, + color-mix(in srgb, var(--wire-color-danger) 12%, transparent) + ); + color: var(--wire-color-danger); +} + +.wire-table-wrap { + width: 100%; + max-width: 100%; + overflow-x: auto; + scrollbar-gutter: stable; + border: 1px solid var(--wire-color-border); + border-radius: var(--wire-radius, 1rem); + background: var(--wire-color-surface); +} + +.wire-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + background: var(--wire-color-surface); + color: var(--wire-color-text); + font-size: 0.875rem; +} + +.wire-table th, +.wire-table td { + padding: 1rem 1.25rem; + border-bottom: 1px solid var(--wire-color-border); + vertical-align: middle; +} + +.wire-table thead th { + background: var(--wire-color-surface-2); + color: var(--wire-color-text); + font-size: 0.75rem; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; + white-space: nowrap; +} + +.wire-table tbody th { + color: var(--wire-color-text); + font-weight: 650; +} + +.wire-table tbody td { + color: var(--wire-color-text-muted, var(--wire-color-muted)); +} + +.wire-table tbody tr:last-child > * { + border-bottom: 0; +} + +.wire-table--hoverable tbody tr:hover > *, +.wire-comparison-table tbody tr:hover > * { + background: var(--wire-color-surface-2); +} + +.wire-table--striped tbody tr:nth-child(even) > * { + background: color-mix(in srgb, var(--wire-color-surface-2) 72%, transparent); +} + +.wire-table--compact th, +.wire-table--compact td { + padding: 0.7rem 0.9rem; +} + +.wire-comparison-table th:not(:first-child), +.wire-comparison-table td:not(:first-child) { + text-align: center; +} + +.wire-comparison-table thead th:first-child, +.wire-comparison-table tbody th { + position: sticky; + left: 0; + z-index: 1; + background: var(--wire-color-surface); +} + +.wire-comparison-table thead th:first-child { + z-index: 2; + background: var(--wire-color-surface-2); +} + +.wire-channel-card { + isolation: isolate; +} + +.wire-channel-card__icon { + position: relative; + overflow: hidden; + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wire-color-primary) 5%, transparent); +} + +.wire-channel-card__icon::after { + content: ""; + position: absolute; + inset: auto -0.5rem -0.75rem auto; + width: 2.5rem; + height: 2.5rem; + border-radius: 999px; + background: color-mix(in srgb, var(--wire-color-primary) 14%, transparent); + pointer-events: none; +} + +.wire-channel-card__icon > span { + position: relative; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: currentColor; +} + +.wire-channel-card__icon > span::before { + display: block; + width: 100%; + height: 100%; +} + +/* --- Channel card --------------------------------------------------------- */ + +.wire-channel-card__icon { + display: grid; + width: 3rem; + height: 3rem; + flex: 0 0 3rem; + place-items: center; + overflow: hidden; + + color: color-mix(in srgb, var(--wire-color-primary) 72%, var(--wire-color-text)); + + border: 1px solid color-mix(in srgb, var(--wire-color-primary) 38%, var(--wire-color-border)); + + border-radius: 0.875rem; + + background: linear-gradient( + 145deg, + color-mix(in srgb, var(--wire-color-primary) 18%, var(--wire-color-surface)), + color-mix(in srgb, var(--wire-color-primary) 8%, var(--wire-color-surface-2)) + ); + + box-shadow: + inset 0 1px 0 color-mix(in srgb, var(--wire-color-text) 8%, transparent), + 0 0.75rem 1.75rem color-mix(in srgb, var(--wire-color-primary) 12%, transparent); +} + +.wire-channel-card__icon-glyph { + display: block; + width: 1.5rem; + height: 1.5rem; + color: inherit; + font-size: 1.5rem; + line-height: 1; +} + +.wire-channel-card__icon-glyph::before { + display: block; + width: 100%; + height: 100%; + color: inherit; +} + +/* Improve contrast when the current theme uses a dark primary color. */ +[data-theme="dark"] .wire-channel-card__icon, +.dark .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 48%, white); + + border-color: color-mix(in srgb, var(--wire-color-primary) 42%, var(--wire-color-border)); + + background: linear-gradient( + 145deg, + color-mix(in srgb, var(--wire-color-primary) 24%, var(--wire-color-surface)), + color-mix(in srgb, var(--wire-color-primary) 12%, var(--wire-color-surface-2)) + ); +} + +@media (hover: hover) and (pointer: fine) { + .wire-channel-card:hover .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 82%, var(--wire-color-text)); + + border-color: color-mix(in srgb, var(--wire-color-primary) 62%, var(--wire-color-border)); + + transform: translateY(-2px); + } + + [data-theme="dark"] .wire-channel-card:hover .wire-channel-card__icon, + .dark .wire-channel-card:hover .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 58%, white); + } +} diff --git a/.publish/uploader/package.json b/.publish/uploader/package.json index 9877b64f..2a5934e4 100644 --- a/.publish/uploader/package.json +++ b/.publish/uploader/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/uploader", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "description": "@wrnexus/uploader — part of the WrNexus framework.", "license": "MIT", @@ -21,7 +21,7 @@ } }, "dependencies": { - "@wrnexus/core": "^0.3.2" + "@wrnexus/core": "^0.3.3" }, "files": [ "dist" diff --git a/.publish/validation/package.json b/.publish/validation/package.json index 74c3159c..b47a3f80 100644 --- a/.publish/validation/package.json +++ b/.publish/validation/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/validation", - "version": "0.3.2", + "version": "0.3.3", "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 73fdab0a..323284a5 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ai", - "version": "0.3.2", + "version": "0.3.3", "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 b3f23f1a..801607b6 100644 --- a/packages/authz/package.json +++ b/packages/authz/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/authz", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/cli/package.json b/packages/cli/package.json index d70d9a88..9988ef1d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/cli", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/cli/src/update.ts b/packages/cli/src/update.ts index 9ea465b9..f8a105ce 100644 --- a/packages/cli/src/update.ts +++ b/packages/cli/src/update.ts @@ -969,6 +969,14 @@ const MIGRATIONS: Migration[] = [ // Compiler-only fix. Existing WRN source files require no migration. }, }, + { + version: "0.3.3", + id: "component-fix", + description: "UI component fixes.", + apply() { + // Compiler-only fix. Existing WRN source files require no migration. + }, + }, ]; /** 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 2756cb03..cd81581e 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/compiler", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/core/package.json b/packages/core/package.json index 66c618d8..b497aae9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/core", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/csr/package.json b/packages/csr/package.json index 77848b94..dce32785 100644 --- a/packages/csr/package.json +++ b/packages/csr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/csr", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/db/package.json b/packages/db/package.json index ae36d03b..e22f988a 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/db", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/dev-server/package.json b/packages/dev-server/package.json index 59e8c744..ff983378 100644 --- a/packages/dev-server/package.json +++ b/packages/dev-server/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-server", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/dev-toolbar/package.json b/packages/dev-toolbar/package.json index 61a7201c..738b2df5 100644 --- a/packages/dev-toolbar/package.json +++ b/packages/dev-toolbar/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/dev-toolbar", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "sideEffects": false, diff --git a/packages/encryption/package.json b/packages/encryption/package.json index 20c620ed..0b2b58e8 100644 --- a/packages/encryption/package.json +++ b/packages/encryption/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/encryption", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/helpers/package.json b/packages/helpers/package.json index 614f853b..2d016e64 100644 --- a/packages/helpers/package.json +++ b/packages/helpers/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/helpers", - "version": "0.3.2", + "version": "0.3.3", "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 66d2db1a..1714c892 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/i18n", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/jwt/package.json b/packages/jwt/package.json index 0080be30..defa874d 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/jwt", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/mobile/package.json b/packages/mobile/package.json index 8d4fd0d0..ecd7975b 100644 --- a/packages/mobile/package.json +++ b/packages/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/mobile", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/native/package.json b/packages/native/package.json index f670aa50..9122d78b 100644 --- a/packages/native/package.json +++ b/packages/native/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/native", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/oauth/package.json b/packages/oauth/package.json index bc37eb12..fe029dbb 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/oauth", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/plugin/package.json b/packages/plugin/package.json index cf673c19..60bd95c4 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/plugin", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/pubsub/package.json b/packages/pubsub/package.json index 521dfa55..b8ff1ed3 100644 --- a/packages/pubsub/package.json +++ b/packages/pubsub/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/pubsub", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/queue/package.json b/packages/queue/package.json index cb303eeb..e0187335 100644 --- a/packages/queue/package.json +++ b/packages/queue/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/queue", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/reactive/package.json b/packages/reactive/package.json index a64ddb45..269aa694 100644 --- a/packages/reactive/package.json +++ b/packages/reactive/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/reactive", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/router/package.json b/packages/router/package.json index 1a1bca6d..84909ebb 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/router", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/ssr/package.json b/packages/ssr/package.json index 639924e0..ac3347dc 100644 --- a/packages/ssr/package.json +++ b/packages/ssr/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ssr", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/styles/package.json b/packages/styles/package.json index f2c98050..9edfeb37 100644 --- a/packages/styles/package.json +++ b/packages/styles/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/styles", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/syntax/package.json b/packages/syntax/package.json index 25b8c76f..f43580c1 100644 --- a/packages/syntax/package.json +++ b/packages/syntax/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/syntax", - "version": "0.3.2", + "version": "0.3.3", "type": "module", "main": "src/index.ts", "exports": { diff --git a/packages/test/package.json b/packages/test/package.json index f57dd12a..4e9e681f 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/test", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/tracking/package.json b/packages/tracking/package.json index cf239367..d2a18dc6 100644 --- a/packages/tracking/package.json +++ b/packages/tracking/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/tracking", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/ui/components/ChannelCard.wrn b/packages/ui/components/ChannelCard.wrn index 32aab3a0..6e9b4ce7 100644 --- a/packages/ui/components/ChannelCard.wrn +++ b/packages/ui/components/ChannelCard.wrn @@ -4,31 +4,50 @@ component ChannelCard { description = "" href = "" icon = "" + actionLabel = "" class = "" } view {
{#if icon} - + {/if} -
+ +
+ +
- {#if title}

{title}

{/if} - {#if description}

{description}

{/if} + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} {#if href} - - Explore {title} - + + {actionLabel || "Explore " + title} + + {/if}
} diff --git a/packages/ui/components/PricingComparisonTable.wrn b/packages/ui/components/PricingComparisonTable.wrn index 39b53112..a54f0b54 100644 --- a/packages/ui/components/PricingComparisonTable.wrn +++ b/packages/ui/components/PricingComparisonTable.wrn @@ -3,7 +3,33 @@ component PricingComparisonTable { caption = "Plan comparison" plans = [] features = [] + featuredPlan = "" class = "" } - view {
{#each plans as plan}{/each}{#each features as feature}{#each feature.values as value}{/each}{/each}
{caption}
Feature{plan.name}
{feature.label}{value}
} + + view { +
+ + + + + + {#each plans as plan} + + {/each} + + + + {#each features as feature} + + + {#each feature.values as value} + + {/each} + + {/each} + +
{caption}
Feature{plan.name}
{feature.label}{value}
+
+ } } diff --git a/packages/ui/components/PricingHero.wrn b/packages/ui/components/PricingHero.wrn index 2abd536a..f7aaaac0 100644 --- a/packages/ui/components/PricingHero.wrn +++ b/packages/ui/components/PricingHero.wrn @@ -6,5 +6,61 @@ component PricingHero { align = "start" class = "" } - view {
{eyebrow}

{title}

{description}

} + + view { +
+ + +
+ {#if align === "center"} +
+ {#if eyebrow} +

+ {eyebrow} +

+ {/if} + + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} +
+ {:else} +
+ {#if eyebrow} +

+ {eyebrow} +

+ {/if} + + {#if title} +

+ {title} +

+ {/if} + + {#if description} +

+ {description} +

+ {/if} +
+ {/if} + + +
+
+ } } diff --git a/packages/ui/components/PricingPlanCard.wrn b/packages/ui/components/PricingPlanCard.wrn index 390ab051..529e7a5e 100644 --- a/packages/ui/components/PricingPlanCard.wrn +++ b/packages/ui/components/PricingPlanCard.wrn @@ -6,10 +6,59 @@ component PricingPlanCard { price = "₹0" period = "/month" featured = false + badgeLabel = "Most popular" ctaLabel = "Choose plan" ctaHref = "#" } + view { -

{name}

{description}

{price}{period}
{ctaLabel}
+
+ {#if featured} +
+ +
+ {/if} + +

+ {name} +

+ + {#if description} +

+ {description} +

+ {/if} + +
+ + {price} + + {#if period} + + {period} + + {/if} +
+ +
+ +
+ + {#if featured} + + {ctaLabel} + + {:else} + + {ctaLabel} + + {/if} +
} } diff --git a/packages/ui/components/badge.wrn b/packages/ui/components/badge.wrn index 875f9362..889cfdf4 100644 --- a/packages/ui/components/badge.wrn +++ b/packages/ui/components/badge.wrn @@ -3,8 +3,25 @@ component Badge { class = "" label = "" variant = "neutral" + size = "md" } + view { - {label} + + {#if variant === "success"} + + {/if} + {#if variant === "warning"} + + {/if} + {#if variant === "danger"} + + {/if} + {#if variant === "brand"} + + {/if} + {label} + + } } diff --git a/packages/ui/components/button.wrn b/packages/ui/components/button.wrn index 3f6b857c..f722001e 100644 --- a/packages/ui/components/button.wrn +++ b/packages/ui/components/button.wrn @@ -7,6 +7,8 @@ component Button { disabled = false loading = false icon = "" + iconPosition = "start" + fullWidth = false className = "" } @@ -16,16 +18,23 @@ component Button { disabled="{disabled || loading}" aria-busy="{loading}" class="wire-btn wire-btn--{variant} wire-btn--{size} {className}" + class:w-full='{fullWidth}' > {#if loading} {/if} - {#if icon && !loading} - + {#if icon && !loading && iconPosition === "start"} + {/if} {label} + + {#if icon && !loading && iconPosition === "end"} + + {/if} + + } -} \ No newline at end of file +} diff --git a/packages/ui/components/table.wrn b/packages/ui/components/table.wrn index d276601d..517cfcec 100644 --- a/packages/ui/components/table.wrn +++ b/packages/ui/components/table.wrn @@ -3,8 +3,22 @@ component Table { class = "" caption = "Data table" responsive = true + striped = false + hoverable = true + compact = false } + view { -
{caption}
+
+ + + +
{caption}
+
} } diff --git a/packages/ui/package.json b/packages/ui/package.json index 27f98fa4..750b1e84 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/ui", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/ui/ui.css b/packages/ui/ui.css index 67bc7356..44950f06 100644 --- a/packages/ui/ui.css +++ b/packages/ui/ui.css @@ -1819,3 +1819,368 @@ position: static; } } + +/* --- Theme-safe pricing, action, badge, table and channel refinements ------ */ +:where([data-wrn-component]) { + color: var(--wire-color-text); + font-family: var(--wire-font-sans); +} + +.wire-page-shell { + min-height: 100%; + background: var(--wire-color-bg); + color: var(--wire-color-text); +} + +.wire-section { + padding-block: var(--wire-space-section-sm, 3.5rem); +} + +@media (min-width: 1024px) { + .wire-section { + padding-block: var(--wire-space-section, 5rem); + } +} + +.wire-container { + max-width: var(--wire-container-max, 80rem); + padding-inline: clamp(1rem, 2.5vw, 2rem); +} + +.wire-btn { + min-height: 2.75rem; + border-radius: 0.75rem; + padding-inline: 1rem; + font-size: 0.875rem; + font-weight: 650; + letter-spacing: -0.01em; + box-shadow: none; +} + +.wire-btn--primary { + border-color: var(--wire-color-primary); + background: var(--wire-color-primary); + color: var(--wire-color-primary-contrast); + box-shadow: var(--wire-shadow-sm, var(--wire-shadow-1)); +} + +.wire-btn--primary:hover:not(:disabled) { + border-color: var(--wire-color-primary-hover); + background: var(--wire-color-primary-hover); + color: var(--wire-color-primary-contrast); + transform: translateY(-1px); + box-shadow: var(--wire-shadow-md, var(--wire-shadow-1)); +} + +.wire-btn--secondary, +.wire-btn--default { + border-color: var(--wire-color-border-strong, var(--wire-color-border)); + background: var(--wire-color-surface); + color: var(--wire-color-text); + box-shadow: var(--wire-shadow-sm, var(--wire-shadow-1)); +} + +.wire-btn--secondary:hover:not(:disabled), +.wire-btn--default:hover:not(:disabled) { + border-color: var(--wire-color-primary); + background: var(--wire-color-surface-2); + color: var(--wire-color-primary); + transform: translateY(-1px); +} + +.wire-btn--ghost { + border-color: transparent; + background: transparent; + color: var(--wire-color-text); +} + +.wire-btn--ghost:hover:not(:disabled) { + border-color: var(--wire-color-border); + background: var(--wire-color-surface-2); + color: var(--wire-color-primary); +} + +.wire-btn--danger { + border-color: var(--wire-color-danger); + background: var(--wire-color-danger); + color: #fff; +} + +.wire-btn--danger:hover:not(:disabled) { + filter: brightness(0.94); + transform: translateY(-1px); +} + +.wire-btn--sm { + min-height: 2.25rem; + padding: 0.45rem 0.75rem; + font-size: 0.8125rem; +} + +.wire-btn--md { + min-height: 2.75rem; + padding: 0.625rem 1rem; +} + +.wire-btn--lg { + min-height: 3rem; + padding: 0.75rem 1.25rem; + font-size: 0.9375rem; +} + +.wire-badge { + display: inline-flex; + width: fit-content; + align-items: center; + gap: 0.375rem; + border: 1px solid var(--wire-color-border); + border-radius: 9999px; + background: var(--wire-color-surface-2); + color: var(--wire-color-text-muted, var(--wire-color-muted)); + font-weight: 650; + line-height: 1; + white-space: nowrap; +} + +.wire-badge--sm { + padding: 0.25rem 0.5rem; + font-size: 0.6875rem; +} + +.wire-badge--md { + padding: 0.375rem 0.625rem; + font-size: 0.75rem; +} + +.wire-badge--lg { + padding: 0.45rem 0.75rem; + font-size: 0.8125rem; +} + +.wire-badge--neutral { + border-color: var(--wire-color-border); + background: var(--wire-color-surface-2); + color: var(--wire-color-text-muted, var(--wire-color-muted)); +} + +.wire-badge--brand { + border-color: color-mix(in srgb, var(--wire-color-primary) 30%, transparent); + background: var(--wire-color-primary-soft); + color: var(--wire-color-primary); +} + +.wire-badge--success { + border-color: color-mix(in srgb, var(--wire-color-success) 30%, transparent); + background: var( + --wire-color-success-soft, + color-mix(in srgb, var(--wire-color-success) 12%, transparent) + ); + color: var(--wire-color-success); +} + +.wire-badge--warning { + border-color: color-mix(in srgb, var(--wire-color-warning) 30%, transparent); + background: var( + --wire-color-warning-soft, + color-mix(in srgb, var(--wire-color-warning) 12%, transparent) + ); + color: var(--wire-color-warning); +} + +.wire-badge--danger { + border-color: color-mix(in srgb, var(--wire-color-danger) 30%, transparent); + background: var( + --wire-color-danger-soft, + color-mix(in srgb, var(--wire-color-danger) 12%, transparent) + ); + color: var(--wire-color-danger); +} + +.wire-table-wrap { + width: 100%; + max-width: 100%; + overflow-x: auto; + scrollbar-gutter: stable; + border: 1px solid var(--wire-color-border); + border-radius: var(--wire-radius, 1rem); + background: var(--wire-color-surface); +} + +.wire-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + background: var(--wire-color-surface); + color: var(--wire-color-text); + font-size: 0.875rem; +} + +.wire-table th, +.wire-table td { + padding: 1rem 1.25rem; + border-bottom: 1px solid var(--wire-color-border); + vertical-align: middle; +} + +.wire-table thead th { + background: var(--wire-color-surface-2); + color: var(--wire-color-text); + font-size: 0.75rem; + font-weight: 700; + letter-spacing: 0.06em; + text-transform: uppercase; + white-space: nowrap; +} + +.wire-table tbody th { + color: var(--wire-color-text); + font-weight: 650; +} + +.wire-table tbody td { + color: var(--wire-color-text-muted, var(--wire-color-muted)); +} + +.wire-table tbody tr:last-child > * { + border-bottom: 0; +} + +.wire-table--hoverable tbody tr:hover > *, +.wire-comparison-table tbody tr:hover > * { + background: var(--wire-color-surface-2); +} + +.wire-table--striped tbody tr:nth-child(even) > * { + background: color-mix(in srgb, var(--wire-color-surface-2) 72%, transparent); +} + +.wire-table--compact th, +.wire-table--compact td { + padding: 0.7rem 0.9rem; +} + +.wire-comparison-table th:not(:first-child), +.wire-comparison-table td:not(:first-child) { + text-align: center; +} + +.wire-comparison-table thead th:first-child, +.wire-comparison-table tbody th { + position: sticky; + left: 0; + z-index: 1; + background: var(--wire-color-surface); +} + +.wire-comparison-table thead th:first-child { + z-index: 2; + background: var(--wire-color-surface-2); +} + +.wire-channel-card { + isolation: isolate; +} + +.wire-channel-card__icon { + position: relative; + overflow: hidden; + box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--wire-color-primary) 5%, transparent); +} + +.wire-channel-card__icon::after { + content: ""; + position: absolute; + inset: auto -0.5rem -0.75rem auto; + width: 2.5rem; + height: 2.5rem; + border-radius: 999px; + background: color-mix(in srgb, var(--wire-color-primary) 14%, transparent); + pointer-events: none; +} + +.wire-channel-card__icon > span { + position: relative; + z-index: 1; + display: block; + width: 1.25rem; + height: 1.25rem; + color: currentColor; +} + +.wire-channel-card__icon > span::before { + display: block; + width: 100%; + height: 100%; +} + +/* --- Channel card --------------------------------------------------------- */ + +.wire-channel-card__icon { + display: grid; + width: 3rem; + height: 3rem; + flex: 0 0 3rem; + place-items: center; + overflow: hidden; + + color: color-mix(in srgb, var(--wire-color-primary) 72%, var(--wire-color-text)); + + border: 1px solid color-mix(in srgb, var(--wire-color-primary) 38%, var(--wire-color-border)); + + border-radius: 0.875rem; + + background: linear-gradient( + 145deg, + color-mix(in srgb, var(--wire-color-primary) 18%, var(--wire-color-surface)), + color-mix(in srgb, var(--wire-color-primary) 8%, var(--wire-color-surface-2)) + ); + + box-shadow: + inset 0 1px 0 color-mix(in srgb, var(--wire-color-text) 8%, transparent), + 0 0.75rem 1.75rem color-mix(in srgb, var(--wire-color-primary) 12%, transparent); +} + +.wire-channel-card__icon-glyph { + display: block; + width: 1.5rem; + height: 1.5rem; + color: inherit; + font-size: 1.5rem; + line-height: 1; +} + +.wire-channel-card__icon-glyph::before { + display: block; + width: 100%; + height: 100%; + color: inherit; +} + +/* Improve contrast when the current theme uses a dark primary color. */ +[data-theme="dark"] .wire-channel-card__icon, +.dark .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 48%, white); + + border-color: color-mix(in srgb, var(--wire-color-primary) 42%, var(--wire-color-border)); + + background: linear-gradient( + 145deg, + color-mix(in srgb, var(--wire-color-primary) 24%, var(--wire-color-surface)), + color-mix(in srgb, var(--wire-color-primary) 12%, var(--wire-color-surface-2)) + ); +} + +@media (hover: hover) and (pointer: fine) { + .wire-channel-card:hover .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 82%, var(--wire-color-text)); + + border-color: color-mix(in srgb, var(--wire-color-primary) 62%, var(--wire-color-border)); + + transform: translateY(-2px); + } + + [data-theme="dark"] .wire-channel-card:hover .wire-channel-card__icon, + .dark .wire-channel-card:hover .wire-channel-card__icon { + color: color-mix(in srgb, var(--wire-color-primary) 58%, white); + } +} diff --git a/packages/uploader/package.json b/packages/uploader/package.json index 2947b1b6..7b923faf 100644 --- a/packages/uploader/package.json +++ b/packages/uploader/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/uploader", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/packages/validation/package.json b/packages/validation/package.json index 3576911b..f0abd16b 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -1,6 +1,6 @@ { "name": "@wrnexus/validation", - "version": "0.3.2", + "version": "0.3.3", "private": true, "type": "module", "main": "src/index.ts", diff --git a/update-package-versions.mjs b/update-package-versions.mjs index d5a17ffd..453b5e30 100644 --- a/update-package-versions.mjs +++ b/update-package-versions.mjs @@ -1,7 +1,7 @@ import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -const version = "0.3.2"; +const version = "0.3.3"; const dependencyGroups = [ "dependencies",