diff --git a/bun.lock b/bun.lock
index 567db831..56b0b71c 100644
--- a/bun.lock
+++ b/bun.lock
@@ -688,7 +688,7 @@
},
"packages/ui": {
"name": "@wrnexus/ui",
- "version": "0.8.58",
+ "version": "0.8.59",
"dependencies": {
"@wrnexus/core": "workspace:*",
},
diff --git a/packages/ui/components/StrongPassword.wrn b/packages/ui/components/StrongPassword.wrn
index 0b0267d4..3cfb45e2 100644
--- a/packages/ui/components/StrongPassword.wrn
+++ b/packages/ui/components/StrongPassword.wrn
@@ -135,7 +135,7 @@ component StrongPassword {
view {
@@ -172,6 +172,9 @@ component TogglePassword {
}
style {
+ .wrn-next--toggle-password .wrn-next__validation {
+ color: var(--wrn-color-danger, #ef4444);
+ }
.wrn-next--toggle-password {
display: grid;
width: 100%;
diff --git a/packages/ui/package.json b/packages/ui/package.json
index 9457014d..975eb8cf 100644
--- a/packages/ui/package.json
+++ b/packages/ui/package.json
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/ui",
- "version": "0.8.58",
+ "version": "0.8.59",
"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 01a04430..94363545 100644
--- a/packages/ui/test/ui.test.ts
+++ b/packages/ui/test/ui.test.ts
@@ -1409,6 +1409,14 @@ test("password fields cancel native invalid popups and show inline errors", asyn
expect(dom.querySelector("[data-error='password']")?.textContent).toContain(
"Enter your password.",
);
+ expect(dom.querySelector(".wrn-next--invalid")).not.toBeNull();
+ const source = readFileSync(uiComponentPath(component), "utf8");
+ expect(source).toMatch(
+ /\.wrn-next--(?:toggle|strong)-password \.wrn-next__validation\s*\{\s*color: var\(--wrn-color-danger, #ef4444\)/,
+ );
+ input.value = "ExamplePassword123!";
+ input.dispatchEvent(new (dom.window as any).Event("input", { bubbles: true }));
+ expect(dom.querySelector(".wrn-next--invalid")).toBeNull();
}
});