release: WRNexusJS 0.2.49

This commit is contained in:
2026-07-18 19:33:57 +05:30
parent aa6badbd31
commit 9ca1cc6b0f
61 changed files with 252 additions and 93 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ai",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/authz",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/authz — part of the WrNexus framework.",
"license": "MIT",
+11 -11
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/cli",
"version": "0.2.48",
"version": "0.2.49",
"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.48",
"@wrnexus/router": "^0.2.48",
"@wrnexus/csr": "^0.2.48",
"@wrnexus/compiler": "^0.2.48",
"@wrnexus/styles": "^0.2.48",
"@wrnexus/dev-server": "^0.2.48",
"@wrnexus/ui": "^0.2.48",
"@wrnexus/validation": "^0.2.48",
"@wrnexus/i18n": "^0.2.48",
"@wrnexus/db": "^0.2.48"
"@wrnexus/core": "^0.2.49",
"@wrnexus/router": "^0.2.49",
"@wrnexus/csr": "^0.2.49",
"@wrnexus/compiler": "^0.2.49",
"@wrnexus/styles": "^0.2.49",
"@wrnexus/dev-server": "^0.2.49",
"@wrnexus/ui": "^0.2.49",
"@wrnexus/validation": "^0.2.49",
"@wrnexus/i18n": "^0.2.49",
"@wrnexus/db": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/compiler",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/compiler — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/core",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/core — part of the WrNexus framework.",
"license": "MIT",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/csr",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/csr — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/core": "^0.2.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/db",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/db — part of the WrNexus framework.",
"license": "MIT",
+13 -13
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/dev-server",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/dev-server — part of the WrNexus framework.",
"license": "MIT",
@@ -25,18 +25,18 @@
}
},
"dependencies": {
"@wrnexus/core": "^0.2.48",
"@wrnexus/router": "^0.2.48",
"@wrnexus/ssr": "^0.2.48",
"@wrnexus/csr": "^0.2.48",
"@wrnexus/compiler": "^0.2.48",
"@wrnexus/styles": "^0.2.48",
"@wrnexus/ui": "^0.2.48",
"@wrnexus/validation": "^0.2.48",
"@wrnexus/i18n": "^0.2.48",
"@wrnexus/db": "^0.2.48",
"@wrnexus/pubsub": "^0.2.48",
"@wrnexus/uploader": "^0.2.48"
"@wrnexus/core": "^0.2.49",
"@wrnexus/router": "^0.2.49",
"@wrnexus/ssr": "^0.2.49",
"@wrnexus/csr": "^0.2.49",
"@wrnexus/compiler": "^0.2.49",
"@wrnexus/styles": "^0.2.49",
"@wrnexus/ui": "^0.2.49",
"@wrnexus/validation": "^0.2.49",
"@wrnexus/i18n": "^0.2.49",
"@wrnexus/db": "^0.2.49",
"@wrnexus/pubsub": "^0.2.49",
"@wrnexus/uploader": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/encryption",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/encryption — part of the WrNexus framework.",
"license": "MIT",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/helpers",
"version": "0.2.48",
"version": "0.2.49",
"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.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/i18n",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/i18n — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/core": "^0.2.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/jwt",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/jwt — part of the WrNexus framework.",
"license": "MIT",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/mobile",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/mobile — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/native": "^0.2.48"
"@wrnexus/native": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/native",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/native — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/oauth",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/oauth — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/pubsub",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/pubsub — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/queue",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/queue — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/reactive",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/reactive — part of the WrNexus framework.",
"license": "MIT",
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/router",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/router — part of the WrNexus framework.",
"license": "MIT",
@@ -21,8 +21,8 @@
}
},
"dependencies": {
"@wrnexus/compiler": "^0.2.48",
"@wrnexus/core": "^0.2.48"
"@wrnexus/compiler": "^0.2.49",
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ssr",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/ssr — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/core": "^0.2.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/styles",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/styles — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/uploader": "^0.2.48"
"@wrnexus/uploader": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/test",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/test — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/tracking",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/tracking — part of the WrNexus framework.",
"license": "MIT",
+30 -1
View File
@@ -1 +1,30 @@
component Accordion { props { title = "Question" open = false } state expanded = open view { <div class="border-b border-slate-200 dark:border-slate-800"><button type="button" class="flex w-full items-center justify-between gap-4 py-5 text-left font-semibold" aria-expanded="{expanded}" @click="expanded = !expanded"><span>{title}</span><span class="text-xl transition-transform {expanded ? 'rotate-45' : ''}">+</span></button><div data-show="expanded" class="pb-5 text-slate-600 dark:text-slate-300"><slot /></div></div> } }
component Accordion {
props {
title = "Question"
open = false
}
state expanded = open
view {
<div class="border-b border-slate-200 dark:border-slate-800" >
<button
type="button"
class="flex w-full items-center justify-between gap-4 py-5 text-left font-semibold"
aria-expanded="{expanded}"
@click="expanded = !expanded"
>
<span >
{title}
</span>
<span class="text-xl transition-transform {expanded ? 'rotate-45' : ''}">+</span>
</button>
<div
data-show="expanded"
class="pb-5 text-slate-600 dark:text-slate-300"
>
<slot />
</div>
</div>
}
}
+42 -1
View File
@@ -1 +1,42 @@
component Alert { props { title = "Notice" description = "" variant = "info" dismissible = false } state visible = true view { <div data-show="visible" role="alert" class="flex items-start gap-3 rounded-2xl border p-4 {variant === 'success' ? 'border-emerald-200 bg-emerald-50 text-emerald-900 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-200' : variant === 'warning' ? 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200' : variant === 'danger' ? 'border-red-200 bg-red-50 text-red-900 dark:border-red-900 dark:bg-red-950/40 dark:text-red-200' : 'border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-200'}"><div class="min-w-0 flex-1"><h3 class="font-semibold">{title}</h3><p data-show="description" class="mt-1 text-sm opacity-80">{description}</p><div class="mt-2"><slot /></div></div><button data-show="dismissible" type="button" aria-label="Dismiss" @click="visible = false" class="rounded-lg p-1 hover:bg-black/5">×</button></div> } }
component Alert {
props {
title = "Notice"
description = ""
variant = "info"
dismissible = false
}
state visible = true
view {
<div
data-show="visible"
role="alert"
class="flex items-start gap-3 rounded-2xl border p-4 {variant === 'success' ? 'border-emerald-200 bg-emerald-50 text-emerald-900 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-200' : variant === 'warning' ? 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200' : variant === 'danger' ? 'border-red-200 bg-red-50 text-red-900 dark:border-red-900 dark:bg-red-950/40 dark:text-red-200' : 'border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-200'}"
>
<div class="min-w-0 flex-1" >
<h3 class="font-semibold" >
{title}
</h3>
<p
data-show="description"
class="mt-1 text-sm opacity-80"
>
{description}
</p>
<div class="mt-2" >
<slot />
</div>
</div>
<button
data-show="dismissible"
type="button"
aria-label="Dismiss"
@click="visible = false"
class="rounded-lg p-1 hover:bg-black/5"
>
×
</button>
</div>
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ui",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/ui — part of the WrNexus framework.",
"license": "MIT",
@@ -23,7 +23,7 @@
"./ui.css": "./ui.css"
},
"dependencies": {
"@wrnexus/core": "^0.2.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/uploader",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/uploader — part of the WrNexus framework.",
"license": "MIT",
@@ -21,7 +21,7 @@
}
},
"dependencies": {
"@wrnexus/core": "^0.2.48"
"@wrnexus/core": "^0.2.49"
},
"files": [
"dist"
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/validation",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"description": "@wrnexus/validation — part of the WrNexus framework.",
"license": "MIT",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ai",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/authz",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/cli",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+8
View File
@@ -509,6 +509,14 @@ const MIGRATIONS: Migration[] = [
// No generated application files require automatic migration.
},
},
{
version: "0.2.49",
id: "components-update",
description: "Adds reactive hydration support for server-rendered each loop locals.",
apply() {
// No generated application files require automatic migration.
},
},
];
/** Release tooling uses this to require an explicit migration entry per version. */
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/compiler",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+13 -2
View File
@@ -43,8 +43,19 @@ export function compileNativeWireFile(source: string): string {
* Compile `.wrn` source into TypeScript source. Throws `ParseError` on invalid
* input (the dev loader surfaces this as a readable error page).
*/
export function compileWireFile(source: string): string {
const ast = parse(source);
export function compileWireFile(source: string, filePath = "<inline .wrn>"): string {
let ast;
try {
ast = parse(source);
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
throw new Error(`Failed to parse ${filePath}: ${message}`, {
cause: error,
});
}
return `// compiled from .wrn\n${generate(ast)}`;
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/core",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/csr",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/db",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/dev-server",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -129,7 +129,7 @@ function compileWireToTs(file: string, version = 0): string {
/* cache missing → compile below */
}
const code = compileWireFile(readFileSync(file, "utf8"));
const code = compileWireFile(readFileSync(file, "utf8"), file);
mkdirSync(cacheDir, { recursive: true });
writeFileSync(out, code, "utf8");
return out;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/encryption",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/helpers",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/i18n",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/jwt",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/mobile",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/native",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/oauth",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/pubsub",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/queue",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/reactive",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/router",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ssr",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/styles",
"version": "0.2.48",
"version": "0.2.49",
"type": "module",
"main": "src/index.ts",
"exports": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/test",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -61,7 +61,7 @@ export async function renderComponent(
const dir = join(tmpdir(), "wrnexus-test");
mkdirSync(dir, { recursive: true });
const file = join(dir, `c${seq++}.ts`);
writeFileSync(file, compileWireFile(source), "utf8");
writeFileSync(file, compileWireFile(source, file), "utf8");
const mod = (await import(pathToFileURL(file).href)) as {
render?: (props: Record<string, unknown>) => string;
};
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/tracking",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+30 -1
View File
@@ -1 +1,30 @@
component Accordion { props { title = "Question" open = false } state expanded = open view { <div class="border-b border-slate-200 dark:border-slate-800"><button type="button" class="flex w-full items-center justify-between gap-4 py-5 text-left font-semibold" aria-expanded="{expanded}" @click="expanded = !expanded"><span>{title}</span><span class="text-xl transition-transform {expanded ? 'rotate-45' : ''}">+</span></button><div data-show="expanded" class="pb-5 text-slate-600 dark:text-slate-300"><slot /></div></div> } }
component Accordion {
props {
title = "Question"
open = false
}
state expanded = open
view {
<div class="border-b border-slate-200 dark:border-slate-800" >
<button
type="button"
class="flex w-full items-center justify-between gap-4 py-5 text-left font-semibold"
aria-expanded="{expanded}"
@click="expanded = !expanded"
>
<span >
{title}
</span>
<span class="text-xl transition-transform {expanded ? 'rotate-45' : ''}">+</span>
</button>
<div
data-show="expanded"
class="pb-5 text-slate-600 dark:text-slate-300"
>
<slot />
</div>
</div>
}
}
+42 -1
View File
@@ -1 +1,42 @@
component Alert { props { title = "Notice" description = "" variant = "info" dismissible = false } state visible = true view { <div data-show="visible" role="alert" class="flex items-start gap-3 rounded-2xl border p-4 {variant === 'success' ? 'border-emerald-200 bg-emerald-50 text-emerald-900 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-200' : variant === 'warning' ? 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200' : variant === 'danger' ? 'border-red-200 bg-red-50 text-red-900 dark:border-red-900 dark:bg-red-950/40 dark:text-red-200' : 'border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-200'}"><div class="min-w-0 flex-1"><h3 class="font-semibold">{title}</h3><p data-show="description" class="mt-1 text-sm opacity-80">{description}</p><div class="mt-2"><slot /></div></div><button data-show="dismissible" type="button" aria-label="Dismiss" @click="visible = false" class="rounded-lg p-1 hover:bg-black/5">×</button></div> } }
component Alert {
props {
title = "Notice"
description = ""
variant = "info"
dismissible = false
}
state visible = true
view {
<div
data-show="visible"
role="alert"
class="flex items-start gap-3 rounded-2xl border p-4 {variant === 'success' ? 'border-emerald-200 bg-emerald-50 text-emerald-900 dark:border-emerald-900 dark:bg-emerald-950/40 dark:text-emerald-200' : variant === 'warning' ? 'border-amber-200 bg-amber-50 text-amber-900 dark:border-amber-900 dark:bg-amber-950/40 dark:text-amber-200' : variant === 'danger' ? 'border-red-200 bg-red-50 text-red-900 dark:border-red-900 dark:bg-red-950/40 dark:text-red-200' : 'border-blue-200 bg-blue-50 text-blue-900 dark:border-blue-900 dark:bg-blue-950/40 dark:text-blue-200'}"
>
<div class="min-w-0 flex-1" >
<h3 class="font-semibold" >
{title}
</h3>
<p
data-show="description"
class="mt-1 text-sm opacity-80"
>
{description}
</p>
<div class="mt-2" >
<slot />
</div>
</div>
<button
data-show="dismissible"
type="button"
aria-label="Dismiss"
@click="visible = false"
class="rounded-lg p-1 hover:bg-black/5"
>
×
</button>
</div>
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ui",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/uploader",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/validation",
"version": "0.2.48",
"version": "0.2.49",
"private": true,
"type": "module",
"main": "src/index.ts",
+1 -1
View File
@@ -1,7 +1,7 @@
import { existsSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
import { join } from "node:path";
const version = "0.2.48";
const version = "0.2.49";
const dependencyGroups = [
"dependencies",