feat: 四项体验修复(字号/品牌登录模板/第三方登录/免邮箱验证)
① 全局字号提升一档:body 基准 16.8px,14 个核心组件 99 处 text-xs/text-sm 放大 ② 五站五套登录模板:FormShell 品牌分栏布局(左品牌色侧栏+右表单), 每站独立 accent(近黑/橙红/纸墨棕/终端绿/紫),站点字标替换 Toolso.AI Logo; AuthLayout 简化为容器,布局职责下沉 FormShell ③ 第三方登录按钮:未配置 OAuth 凭据时显示 Google/GitHub 按钮, 走 /api/auth/mock-social 一键创建演示 session(生产配置凭据后自动 403 切真实流程); 按钮重设计为全宽方形(替换胶囊 Button) ④ 开发阶段免邮箱验证:better-auth databaseHooks 注册即 emailVerified=true, sendOnSignUp 仅生产开启;注册成功直接回跳原页面(跳过 check-email) 回归验证:字号 16.8px / 五站品牌色各异 / mock 登录闭环(投票→登录→回原页)/ 注册免验证直接进站(emailVerified=t + 跳首页)全部 PASS
This commit is contained in:
@@ -12,3 +12,9 @@ RESEND_API_KEY=""
|
||||
RESEND_FROM_EMAIL="AI Stack <noreply@localhost>"
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3001"
|
||||
NEXT_PUBLIC_APP_NAME="AI Stack"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="222 47% 11%"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="The professional AI tools directory — ranked by the community."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
NEXT_PUBLIC_DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
"githubSignIn": "Continue with GitHub",
|
||||
"orContinueWith": "or continue with",
|
||||
"loading": "Signing in...",
|
||||
"mockFailed": "Social sign-in is unavailable right now. Use email instead."
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
@@ -645,7 +648,8 @@
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"clearFilters": "Clear search & filters"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "使用 Google 继续",
|
||||
"or": "或者继续使用",
|
||||
"githubSignIn": "使用 GitHub 登录"
|
||||
"githubSignIn": "使用 GitHub 登录",
|
||||
"orContinueWith": "或使用以下方式",
|
||||
"loading": "登录中...",
|
||||
"mockFailed": "第三方登录暂不可用,请使用邮箱登录。"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "请查收您的邮件",
|
||||
@@ -653,7 +656,8 @@
|
||||
"sort": {
|
||||
"latest": "最新",
|
||||
"trending": "最热"
|
||||
}
|
||||
},
|
||||
"clearFilters": "清除搜索与筛选"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/loading.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(marketing)/loading";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:api/auth/mock-social/route.ts 的薄路由
|
||||
export { POST } from "@aidir/core/pages/api/auth/mock-social/route";
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// AI Stack —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"accent": "222 47% 11%",
|
||||
"port": 3001,
|
||||
"brand": {
|
||||
"name": "AI Stack",
|
||||
|
||||
@@ -12,3 +12,9 @@ RESEND_API_KEY=""
|
||||
RESEND_FROM_EMAIL="DevAI.tools <noreply@localhost>"
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3004"
|
||||
NEXT_PUBLIC_APP_NAME="DevAI.tools"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="150 60% 30%"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="AI tools for developers — curated, tested, ranked by the community."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
NEXT_PUBLIC_DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
"githubSignIn": "Continue with GitHub",
|
||||
"orContinueWith": "or continue with",
|
||||
"loading": "Signing in...",
|
||||
"mockFailed": "Social sign-in is unavailable right now. Use email instead."
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
@@ -645,7 +648,8 @@
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"clearFilters": "Clear search & filters"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "使用 Google 继续",
|
||||
"or": "或者继续使用",
|
||||
"githubSignIn": "使用 GitHub 登录"
|
||||
"githubSignIn": "使用 GitHub 登录",
|
||||
"orContinueWith": "或使用以下方式",
|
||||
"loading": "登录中...",
|
||||
"mockFailed": "第三方登录暂不可用,请使用邮箱登录。"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "请查收您的邮件",
|
||||
@@ -653,7 +656,8 @@
|
||||
"sort": {
|
||||
"latest": "最新",
|
||||
"trending": "最热"
|
||||
}
|
||||
},
|
||||
"clearFilters": "清除搜索与筛选"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/loading.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(marketing)/loading";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:api/auth/mock-social/route.ts 的薄路由
|
||||
export { POST } from "@aidir/core/pages/api/auth/mock-social/route";
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// DevAI.tools —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"accent": "150 60% 30%",
|
||||
"port": 3004,
|
||||
"brand": {
|
||||
"name": "DevAI.tools",
|
||||
|
||||
@@ -12,3 +12,9 @@ RESEND_API_KEY=""
|
||||
RESEND_FROM_EMAIL="findai <noreply@localhost>"
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3005"
|
||||
NEXT_PUBLIC_APP_NAME="findai"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="260 70% 52%"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="The minimal AI tool search engine."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
NEXT_PUBLIC_DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
"githubSignIn": "Continue with GitHub",
|
||||
"orContinueWith": "or continue with",
|
||||
"loading": "Signing in...",
|
||||
"mockFailed": "Social sign-in is unavailable right now. Use email instead."
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
@@ -645,7 +648,8 @@
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"clearFilters": "Clear search & filters"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "使用 Google 继续",
|
||||
"or": "或者继续使用",
|
||||
"githubSignIn": "使用 GitHub 登录"
|
||||
"githubSignIn": "使用 GitHub 登录",
|
||||
"orContinueWith": "或使用以下方式",
|
||||
"loading": "登录中...",
|
||||
"mockFailed": "第三方登录暂不可用,请使用邮箱登录。"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "请查收您的邮件",
|
||||
@@ -653,7 +656,8 @@
|
||||
"sort": {
|
||||
"latest": "最新",
|
||||
"trending": "最热"
|
||||
}
|
||||
},
|
||||
"clearFilters": "清除搜索与筛选"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/loading.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(marketing)/loading";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:api/auth/mock-social/route.ts 的薄路由
|
||||
export { POST } from "@aidir/core/pages/api/auth/mock-social/route";
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// findai —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"accent": "260 70% 52%",
|
||||
"port": 3005,
|
||||
"brand": {
|
||||
"name": "findai",
|
||||
|
||||
@@ -12,3 +12,9 @@ RESEND_API_KEY=""
|
||||
RESEND_FROM_EMAIL="LaunchAI <noreply@localhost>"
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3002"
|
||||
NEXT_PUBLIC_APP_NAME="LaunchAI"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="16 85% 55%"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="Discover and upvote today's AI products."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
NEXT_PUBLIC_DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
"githubSignIn": "Continue with GitHub",
|
||||
"orContinueWith": "or continue with",
|
||||
"loading": "Signing in...",
|
||||
"mockFailed": "Social sign-in is unavailable right now. Use email instead."
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
@@ -645,7 +648,8 @@
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"clearFilters": "Clear search & filters"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "使用 Google 继续",
|
||||
"or": "或者继续使用",
|
||||
"githubSignIn": "使用 GitHub 登录"
|
||||
"githubSignIn": "使用 GitHub 登录",
|
||||
"orContinueWith": "或使用以下方式",
|
||||
"loading": "登录中...",
|
||||
"mockFailed": "第三方登录暂不可用,请使用邮箱登录。"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "请查收您的邮件",
|
||||
@@ -653,7 +656,8 @@
|
||||
"sort": {
|
||||
"latest": "最新",
|
||||
"trending": "最热"
|
||||
}
|
||||
},
|
||||
"clearFilters": "清除搜索与筛选"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/loading.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(marketing)/loading";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:api/auth/mock-social/route.ts 的薄路由
|
||||
export { POST } from "@aidir/core/pages/api/auth/mock-social/route";
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// LaunchAI —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"accent": "16 85% 55%",
|
||||
"port": 3002,
|
||||
"brand": {
|
||||
"name": "LaunchAI",
|
||||
|
||||
@@ -12,3 +12,9 @@ RESEND_API_KEY=""
|
||||
RESEND_FROM_EMAIL="The AI Ledger <noreply@localhost>"
|
||||
NEXT_PUBLIC_APP_URL="http://localhost:3003"
|
||||
NEXT_PUBLIC_APP_NAME="The AI Ledger"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="36 70% 40%"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="Independent journalism on AI tools, with a community-ranked directory."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
NEXT_PUBLIC_DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "Continue with Google",
|
||||
"or": "Or continue with",
|
||||
"githubSignIn": "Continue with GitHub"
|
||||
"githubSignIn": "Continue with GitHub",
|
||||
"orContinueWith": "or continue with",
|
||||
"loading": "Signing in...",
|
||||
"mockFailed": "Social sign-in is unavailable right now. Use email instead."
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "Check Your Email",
|
||||
@@ -645,7 +648,8 @@
|
||||
"sort": {
|
||||
"latest": "Latest",
|
||||
"trending": "Trending"
|
||||
}
|
||||
},
|
||||
"clearFilters": "Clear search & filters"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -209,7 +209,10 @@
|
||||
"social": {
|
||||
"googleSignIn": "使用 Google 继续",
|
||||
"or": "或者继续使用",
|
||||
"githubSignIn": "使用 GitHub 登录"
|
||||
"githubSignIn": "使用 GitHub 登录",
|
||||
"orContinueWith": "或使用以下方式",
|
||||
"loading": "登录中...",
|
||||
"mockFailed": "第三方登录暂不可用,请使用邮箱登录。"
|
||||
},
|
||||
"checkEmail": {
|
||||
"title": "请查收您的邮件",
|
||||
@@ -653,7 +656,8 @@
|
||||
"sort": {
|
||||
"latest": "最新",
|
||||
"trending": "最热"
|
||||
}
|
||||
},
|
||||
"clearFilters": "清除搜索与筛选"
|
||||
},
|
||||
"seo": {
|
||||
"home": {
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:[locale]/(marketing)/loading.tsx 的薄路由
|
||||
export { default } from "@aidir/core/pages/[locale]/(marketing)/loading";
|
||||
@@ -0,0 +1,2 @@
|
||||
// 自动生成:api/auth/mock-social/route.ts 的薄路由
|
||||
export { POST } from "@aidir/core/pages/api/auth/mock-social/route";
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// The AI Ledger —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"accent": "36 70% 40%",
|
||||
"port": 3003,
|
||||
"brand": {
|
||||
"name": "The AI Ledger",
|
||||
|
||||
Reference in New Issue
Block a user