+
-
+
-
+
diff --git a/src/app/auth/components/auth-other-options-dialog.module.css b/src/app/auth/components/auth-other-options-dialog.module.css
deleted file mode 100644
index 9a8524e2..00000000
--- a/src/app/auth/components/auth-other-options-dialog.module.css
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *
- * 视觉规格(与 Dart 对齐):
- * - drag handle 40×4 灰胶囊
- * - 标题 24px bold 深色居中
- * - 选项按钮 40px 白胶囊
- * - Cancel 14px 深色居中文本按钮
- */
-.body {
- display: flex;
- flex-direction: column;
- align-items: stretch;
- gap: var(--spacing-md);
- padding: var(--spacing-md) var(--spacing-xxl)
- calc(var(--spacing-xxl) + var(--app-safe-bottom, 0px));
-}
-
-.handle {
- align-self: center;
- width: var(--auth-drag-handle-width);
- height: var(--auth-drag-handle-height);
- border-radius: 2px;
- background: var(--color-auth-drag-handle);
- margin-bottom: var(--spacing-sm);
-}
-
-.title {
- margin: var(--spacing-sm) 0;
- font-size: var(--responsive-page-title, var(--font-size-bottom-sheet-title));
- font-weight: 700;
- color: var(--color-auth-text-primary);
- text-align: center;
-}
-
-.googleSlot {
- width: 100%;
-}
-
-.cancel {
- align-self: center;
- background: none;
- border: none;
- padding: var(--spacing-md) 0;
- color: var(--color-auth-text-primary);
- font-size: var(--responsive-body, var(--font-size-md));
- font-weight: 500;
- cursor: pointer;
- text-decoration: none;
-}
-
-.cancel:hover {
- text-decoration: underline;
-}
diff --git a/src/app/auth/components/auth-other-options-dialog.tsx b/src/app/auth/components/auth-other-options-dialog.tsx
index 9e911936..b3e5a460 100644
--- a/src/app/auth/components/auth-other-options-dialog.tsx
+++ b/src/app/auth/components/auth-other-options-dialog.tsx
@@ -7,7 +7,6 @@ import { AppEnvUtil } from "@/utils";
import { AuthProviderIcon } from "./auth-provider-icon";
import { AuthSocialButton } from "./auth-social-button";
-import styles from "./auth-other-options-dialog.module.css";
export interface AuthOtherOptionsDialogProps {
open: boolean;
@@ -39,9 +38,17 @@ export function AuthOtherOptionsDialog({
onClose={onClose}
ariaLabel="Other sign-in options"
>
-
-
-
Other Sign-in Options
+
+
+
+ Other Sign-in Options
+
{mode === "email" ? (
{googleSlot}
+
{googleSlot}
) : (
}
@@ -81,7 +88,11 @@ export function AuthOtherOptionsDialog({
)}
-
diff --git a/src/app/auth/components/auth-primary-button.module.css b/src/app/auth/components/auth-primary-button.module.css
deleted file mode 100644
index b4bbf03a..00000000
--- a/src/app/auth/components/auth-primary-button.module.css
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *
- * 视觉规格(与 Dart 对齐):
- * - 46px 高
- * - 粉渐变(#f96ADE → #f657A0,左→右)
- * - 半径 24
- * - 20% 红阴影(#d00c41 @ 20%)
- * - 文字 16px bold 白色
- */
-.button {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: var(--spacing-sm);
- width: 100%;
- min-height: var(--auth-field-height);
- padding: 0 var(--spacing-lg);
- border: none;
- border-radius: var(--radius-full, 999px);
- background: linear-gradient(
- 90deg,
- var(--color-auth-primary-gradient-start),
- var(--color-auth-primary-gradient-end)
- );
- box-shadow: 0 3px 5px var(--color-auth-primary-button-shadow);
- color: #ffffff;
- font-size: var(--responsive-body, var(--font-size-lg));
- font-weight: 700;
- cursor: pointer;
- transition: filter 0.15s ease, transform 0.05s ease, opacity 0.15s ease;
-}
-
-.button:disabled {
- opacity: 0.7;
- cursor: not-allowed;
-}
-
-.button:not(:disabled):active {
- transform: scale(0.98);
-}
-
-.label {
- flex: 1 1 auto;
- text-align: center;
-}
-
-.spinner {
- display: inline-block;
- width: var(--responsive-spinner-size, 18px);
- height: var(--responsive-spinner-size, 18px);
- border-width: 2px;
- border-style: solid;
- border-color: #ffffff transparent transparent transparent;
- border-radius: 50%;
- animation: spin 0.8s linear infinite;
-}
-
-@keyframes spin {
- to {
- transform: rotate(360deg);
- }
-}
diff --git a/src/app/auth/components/auth-primary-button.tsx b/src/app/auth/components/auth-primary-button.tsx
index 363dcd58..290ab4ed 100644
--- a/src/app/auth/components/auth-primary-button.tsx
+++ b/src/app/auth/components/auth-primary-button.tsx
@@ -13,8 +13,6 @@
*/
import { type ButtonHTMLAttributes, type ReactNode } from "react";
-import styles from "./auth-primary-button.module.css";
-
export interface AuthPrimaryButtonProps
extends Omit
, "children"> {
isLoading?: boolean;
@@ -33,13 +31,21 @@ export function AuthPrimaryButton({
{isLoading ? (
-
+
) : null}
- {children}
+ {children}
);
}
diff --git a/src/app/auth/components/auth-social-buttons.module.css b/src/app/auth/components/auth-social-buttons.module.css
deleted file mode 100644
index e0cce484..00000000
--- a/src/app/auth/components/auth-social-buttons.module.css
+++ /dev/null
@@ -1,65 +0,0 @@
-.list {
- display: flex;
- flex-direction: column;
- gap: var(--spacing-md);
- width: 100%;
-}
-
-.button {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: var(--spacing-sm);
- width: 100%;
- min-height: var(--button-height);
- padding: 0 var(--spacing-lg);
- border: var(--border-light) solid var(--color-chat-input-border);
- border-radius: var(--radius-full);
- background: rgba(255, 255, 255, 0.04);
- color: var(--color-text-primary);
- font-size: var(--responsive-body, var(--font-size-md));
- font-weight: 500;
- cursor: pointer;
- transition: background 0.15s ease;
-}
-
-.button:hover:not(:disabled) {
- background: rgba(255, 255, 255, 0.08);
-}
-
-.button:disabled {
- opacity: 0.5;
- cursor: not-allowed;
-}
-
-.icon {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- width: 20px;
- height: 20px;
-}
-
-.facebook {
- background: var(--color-facebook-blue);
- border-color: transparent;
-}
-
-.google {
- background: #ffffff;
- color: #1f1f1f;
- border-color: transparent;
-}
-
-.apple {
- background: #000000;
- border-color: rgba(255, 255, 255, 0.2);
- color: #ffffff;
-}
-
-.googleSlot {
- display: flex;
- justify-content: center;
- width: 100%;
- min-height: var(--button-height);
-}
diff --git a/src/app/auth/components/auth-social-buttons.tsx b/src/app/auth/components/auth-social-buttons.tsx
index 54f916cb..4cef09d0 100644
--- a/src/app/auth/components/auth-social-buttons.tsx
+++ b/src/app/auth/components/auth-social-buttons.tsx
@@ -9,7 +9,6 @@
import { type ReactNode } from "react";
import { AuthProviderIcon } from "./auth-provider-icon";
-import styles from "./auth-social-buttons.module.css";
export interface AuthSocialButtonsProps {
onFacebook: () => void;
@@ -29,30 +28,36 @@ export function AuthSocialButtons({
showApple = false,
googleSlot,
}: AuthSocialButtonsProps) {
+ const buttonClassName =
+ "inline-flex min-h-[var(--button-height)] w-full cursor-pointer items-center justify-center gap-sm rounded-full border border-chat-input-border bg-[rgba(255,255,255,0.04)] px-lg text-[var(--responsive-body)] font-medium text-text-primary transition-colors duration-150 enabled:hover:bg-[rgba(255,255,255,0.08)] disabled:cursor-not-allowed disabled:opacity-50";
+ const iconClassName = "inline-flex size-5 items-center justify-center";
+
return (
-
+
-
+
Continue with Facebook
{googleSlot ? (
-
{googleSlot}
+
+ {googleSlot}
+
) : (
-
+
Continue with Google
@@ -62,11 +67,11 @@ export function AuthSocialButtons({
{showApple && onApple ? (
-
+
Continue with Apple