-
+
I agree to the Cozsweet {" "}
@@ -44,7 +44,7 @@ export function AuthLegalText() {
and{" "}
diff --git a/src/app/auth/components/auth-social-button.module.css b/src/app/auth/components/auth-social-button.module.css
deleted file mode 100644
index 31b5f41a..00000000
--- a/src/app/auth/components/auth-social-button.module.css
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *
- * 视觉规格(与 Dart 弹层按钮对齐):
- * - 40px 高
- * - 白底 + 1px 边框 `--color-auth-border` (#d5d7db)
- * - 半径 20
- * - 无阴影
- * - 图标 20×20 + 标签
- * - 14px 文字深色
- */
-.button {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: var(--spacing-md);
- width: 100%;
- min-height: var(--auth-social-button-height);
- padding: 0 var(--spacing-lg);
- border: 1px solid var(--color-auth-border);
- border-radius: var(--radius-full, 999px);
- background: var(--color-auth-surface);
- color: var(--color-auth-text-primary);
- font-size: var(--responsive-body, var(--font-size-md));
- font-weight: 500;
- cursor: pointer;
- transition: background 0.15s ease, opacity 0.15s ease;
-}
-
-.button:hover:not(:disabled) {
- background: rgba(0, 0, 0, 0.02);
-}
-
-.button:disabled {
- opacity: 0.5;
- cursor: not-allowed;
-}
-
-.icon {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- width: 20px;
- height: 20px;
- flex: 0 0 auto;
-}
-
-.label {
- flex: 0 0 auto;
- text-align: center;
-}
diff --git a/src/app/auth/components/auth-social-button.tsx b/src/app/auth/components/auth-social-button.tsx
index 1e3cddcd..a0821b72 100644
--- a/src/app/auth/components/auth-social-button.tsx
+++ b/src/app/auth/components/auth-social-button.tsx
@@ -17,8 +17,6 @@ import {
type ReactNode,
} from "react";
-import styles from "./auth-social-button.module.css";
-
export interface AuthSocialButtonProps
extends Omit, "children"> {
icon?: ReactNode;
@@ -37,11 +35,20 @@ export function AuthSocialButton({
);
}
diff --git a/src/app/auth/components/auth-text-field.module.css b/src/app/auth/components/auth-text-field.module.css
deleted file mode 100644
index f18cca77..00000000
--- a/src/app/auth/components/auth-text-field.module.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- *
- * 视觉规格(与 Dart 对齐):
- * - 46px 高
- * - 白底胶囊(半径 24)
- * - 无边框
- * - 10% 粉色阴影(accent #f759a8 @ 10%)
- * - padding: 0 16 0 24
- * - 文字深色 #333,占位符 #999
- */
-.wrapper {
- display: flex;
- flex-direction: column;
- gap: var(--spacing-xs);
- width: 100%;
-}
-
-.label {
- font-size: var(--responsive-caption, var(--font-size-sm));
- color: var(--color-text-secondary);
-}
-
-.input {
- width: 100%;
- min-height: var(--auth-field-height);
- padding: 0 var(--spacing-lg) 0 var(--spacing-xxl);
- border: none;
- border-radius: var(--radius-full, 999px);
- background: var(--color-auth-surface);
- color: var(--color-auth-text-primary);
- font-size: var(--responsive-body, var(--font-size-md));
- box-shadow: 0 3px 5px var(--color-auth-input-shadow);
- outline: none;
- transition: box-shadow 0.15s ease;
-}
-
-.input::placeholder {
- color: var(--color-auth-input-placeholder);
-}
-
-.input:focus {
- box-shadow: 0 3px 5px var(--color-auth-input-shadow),
- 0 0 0 2px var(--color-accent);
-}
-
-.invalid {
- box-shadow: 0 3px 5px rgba(255, 77, 79, 0.18),
- 0 0 0 1px var(--color-error);
-}
-
-.invalid:focus {
- box-shadow: 0 3px 5px rgba(255, 77, 79, 0.18),
- 0 0 0 2px var(--color-error);
-}
-
-.error {
- font-size: var(--responsive-caption, var(--font-size-sm));
- color: var(--color-error);
-}
diff --git a/src/app/auth/components/auth-text-field.tsx b/src/app/auth/components/auth-text-field.tsx
index 372fb7a1..45792655 100644
--- a/src/app/auth/components/auth-text-field.tsx
+++ b/src/app/auth/components/auth-text-field.tsx
@@ -11,8 +11,6 @@ import {
forwardRef,
} from "react";
-import styles from "./auth-text-field.module.css";
-
export interface AuthTextFieldProps {
value: string;
onChange: (value: string) => void;
@@ -44,14 +42,25 @@ export const AuthTextField = forwardRef(
},
ref,
) {
+ const inputClassName = [
+ "min-h-[var(--auth-field-height)] w-full rounded-full border-0 bg-auth-surface py-0 pl-xxl pr-lg text-[var(--responsive-body)] text-auth-text-primary shadow-[0_3px_5px_var(--color-auth-input-shadow)] outline-none transition-shadow duration-150 placeholder:text-auth-input-placeholder focus:shadow-[0_3px_5px_var(--color-auth-input-shadow),0_0_0_2px_var(--color-accent)] disabled:cursor-not-allowed disabled:opacity-70",
+ errorMessage
+ ? "shadow-[0_3px_5px_rgba(255,77,79,0.18),0_0_0_1px_var(--color-error)] focus:shadow-[0_3px_5px_rgba(255,77,79,0.18),0_0_0_2px_var(--color-error)]"
+ : "",
+ ]
+ .filter(Boolean)
+ .join(" ");
+
return (
-