feat: 五站五种登录页设计(去 shadcn 默认味)+ 语言路由确认
- FormShell 重写为六种布局变体,五站各用一种:
· AI Stack = glass 深蓝渐变全屏 + 玻璃拟态浮动卡片
· LaunchAI = gradient 橙色渐变全屏 + 白色大圆角卡片
· The AI Ledger = editorial 报纸头版:双细线报头(日期/品牌/标语衬线居中)
+ 下划线输入 + 方角大写 tracking 黑按钮
· DevAI.tools = terminal 深色终端窗口(三色标题栏 + $ devai.tools auth --login)
+ 等宽输入 + 绿底黑字命令按钮
· findai = minimal 纯白居中 + 大圆角浅灰输入 + 紫色按钮
- 输入框/标签/社交按钮按 data-theme 形态变化(auth 路由注入 data-theme)
- 修复 FormShell 各变体根元素缺 w-full(被 auth flex 容器挤压成 1/3 宽)
- 回归:五站构建 OK / mock 登录 OK
This commit is contained in:
@@ -14,6 +14,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3001"
|
||||
NEXT_PUBLIC_APP_NAME="AI Stack"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="222 47% 11%"
|
||||
NEXT_PUBLIC_AUTH_VARIANT="glass"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="The professional AI tools directory — ranked by the community."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// AI Stack —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"authVariant": "glass",
|
||||
"themeClass": "site-ai-stack",
|
||||
"brandZh": {
|
||||
"name": "AI Stack",
|
||||
|
||||
@@ -14,6 +14,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3004"
|
||||
NEXT_PUBLIC_APP_NAME="DevAI.tools"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="150 60% 30%"
|
||||
NEXT_PUBLIC_AUTH_VARIANT="terminal"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="AI tools for developers — curated, tested, ranked by the community."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// DevAI.tools —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"authVariant": "terminal",
|
||||
"themeClass": "site-devai-tools",
|
||||
"brandZh": {
|
||||
"name": "DevAI.tools",
|
||||
|
||||
@@ -14,6 +14,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3005"
|
||||
NEXT_PUBLIC_APP_NAME="findai"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="260 70% 52%"
|
||||
NEXT_PUBLIC_AUTH_VARIANT="minimal"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="The minimal AI tool search engine."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// findai —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"authVariant": "minimal",
|
||||
"themeClass": "site-findai",
|
||||
"brandZh": {
|
||||
"name": "findai",
|
||||
|
||||
@@ -14,6 +14,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3002"
|
||||
NEXT_PUBLIC_APP_NAME="LaunchAI"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="16 85% 55%"
|
||||
NEXT_PUBLIC_AUTH_VARIANT="gradient"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="Discover and upvote today's AI products."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// LaunchAI —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"authVariant": "gradient",
|
||||
"themeClass": "site-launchai",
|
||||
"brandZh": {
|
||||
"name": "LaunchAI",
|
||||
|
||||
@@ -14,6 +14,7 @@ NEXT_PUBLIC_APP_URL="http://localhost:3003"
|
||||
NEXT_PUBLIC_APP_NAME="The AI Ledger"
|
||||
# 登录页品牌模板(分栏侧栏颜色与标语)
|
||||
NEXT_PUBLIC_AUTH_ACCENT="36 70% 40%"
|
||||
NEXT_PUBLIC_AUTH_VARIANT="editorial"
|
||||
NEXT_PUBLIC_AUTH_BRAND_TAGLINE="Independent journalism on AI tools, with a community-ranked directory."
|
||||
# 开发阶段免邮箱验证(生产置 false 发送真实验证邮件)
|
||||
DEV_SKIP_EMAIL_VERIFY="true"
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { SiteConfig } from "@/kit/types";
|
||||
|
||||
// The AI Ledger —— 独立站点的全部品牌/导航/页脚配置
|
||||
export const siteConfig: SiteConfig = {
|
||||
"authVariant": "editorial",
|
||||
"themeClass": "site-the-ai-ledger",
|
||||
"brandZh": {
|
||||
"name": "The AI Ledger",
|
||||
|
||||
@@ -64,7 +64,7 @@ async function SiteHome({ locale }: { locale: string }) {
|
||||
</div>
|
||||
|
||||
{/* Masthead */}
|
||||
<section className="border-b border-border">
|
||||
<section className="hero-mast border-b border-border">
|
||||
<div className="mx-auto max-w-4xl px-4 py-16 text-center sm:px-6 md:py-20">
|
||||
<p className="text-xs font-medium uppercase tracking-[0.3em] text-muted-foreground">
|
||||
{t("mastheadLabel")}
|
||||
|
||||
Reference in New Issue
Block a user