|
1 | 1 | <template> |
2 | 2 | <!-- 全屏登录页面 - 飞书风格 --> |
3 | 3 | <div class="min-h-screen w-full flex font-sans"> |
4 | | - <!-- 左侧品牌区域 - 25% 宽度(左右比例1:3),渐变背景 --> |
5 | | - <div class="hidden lg:flex flex-col w-1/4 min-w-[360px] relative overflow-hidden bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-100"> |
| 4 | + <!-- 左侧品牌区域 - 25% 宽度,渐变背景 --> |
| 5 | + <div class="hidden lg:flex flex-col w-1/4 min-w-[340px] relative overflow-hidden bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-100"> |
6 | 6 | <!-- 装饰性背景元素 --> |
7 | 7 | <div class="absolute inset-0 overflow-hidden"> |
8 | 8 | <!-- 主装饰圆 --> |
|
42 | 42 | </div> |
43 | 43 |
|
44 | 44 | <!-- 中间主内容区域 --> |
45 | | - <div class="flex-1 flex flex-col justify-start items-end pt-60"> |
46 | | - <!-- 大 Logo + 名称 - 左右并排紧挨 --> |
47 | | - <div class="flex items-center gap-1 mb-4"> |
48 | | - <img src="/logo.png" alt="TinyFlow" class="h-10 w-auto flex-shrink-0" /> |
49 | | - <span class="text-[55px] font-bold text-gray-800">TinyFlow</span> |
| 45 | + <div class="flex-1 flex flex-col justify-start items-start pt-56 px-2"> |
| 46 | + <!-- 大 Logo + 名称 --> |
| 47 | + <div class="flex items-center gap-1 mb-4 w-full justify-end pr-2"> |
| 48 | + <img src="/logo.png" alt="TinyFlow" class="h-8 w-auto flex-shrink-0" /> |
| 49 | + <span class="text-[44px] font-bold text-gray-800">TinyFlow</span> |
50 | 50 | </div> |
51 | 51 |
|
52 | | - <!-- 主标语 - 上下结构,上小下大 --> |
53 | | - <div class="mb-20 text-right"> |
54 | | - <h2 class="text-[30px] font-semibold text-gray-800 leading-tight">现在注册</h2> |
55 | | - <h2 class="text-[40px] font-bold gradient-text-animated leading-tight">让分享更轻松</h2> |
| 52 | + <!-- 主标语 --> |
| 53 | + <div class="mb-12 text-right w-full pr-2"> |
| 54 | + <h2 class="text-[24px] font-semibold text-gray-800 leading-tight">现在注册</h2> |
| 55 | + <h2 class="text-[32px] font-bold gradient-text-animated leading-tight">让分享更轻松</h2> |
56 | 56 | </div> |
57 | 57 |
|
58 | 58 | <!-- 三段卖点 - 简洁线条图标 --> |
59 | 59 | <div class="space-y-6"> |
60 | | - <!-- 卖炵1 --> |
| 60 | + <!-- 卖炷1 --> |
61 | 61 | <div class="flex items-start gap-4"> |
62 | | - <svg class="w-6 h-6 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
| 62 | + <svg class="w-5 h-5 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
63 | 63 | <path stroke-linecap="round" stroke-linejoin="round" d="M13 10V3L4 14h7v7l9-11h-7z"></path> |
64 | 64 | </svg> |
65 | 65 | <div> |
66 | | - <div class="text-[16px] font-semibold text-gray-800 mb-2">毫秒级跳转</div> |
67 | | - <div class="text-[15px] text-gray-500 leading-relaxed">基于分布式架构优化,每次跳转均控制在毫秒级,高效不失可靠</div> |
| 66 | + <div class="text-[14px] font-semibold text-gray-800 mb-1">毫秒级跳转</div> |
| 67 | + <div class="text-[13px] text-gray-500 leading-relaxed">基于分布式架构优化,每次跳转均控制在毫秒级,高效不失可靠</div> |
68 | 68 | </div> |
69 | 69 | </div> |
70 | 70 |
|
71 | | - <!-- 卖炵2 --> |
| 71 | + <!-- 卖炷2 --> |
72 | 72 | <div class="flex items-start gap-4"> |
73 | | - <svg class="w-6 h-6 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
| 73 | + <svg class="w-5 h-5 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
74 | 74 | <path stroke-linecap="round" stroke-linejoin="round" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path> |
75 | 75 | </svg> |
76 | 76 | <div> |
77 | | - <div class="text-[16px] font-semibold text-gray-800 mb-2">实时数据分析</div> |
78 | | - <div class="text-[15px] text-gray-500 leading-relaxed">多维度报表展示来源、设备、地域等数据分布,精准掌握用户特征与趋势</div> |
| 77 | + <div class="text-[14px] font-semibold text-gray-800 mb-1">实时数据分析</div> |
| 78 | + <div class="text-[13px] text-gray-500 leading-relaxed">多维度报表展示来源、设备、地域等数据分布,精准掌握用户特征与趋势</div> |
79 | 79 | </div> |
80 | 80 | </div> |
81 | 81 |
|
82 | | - <!-- 卖炵3 --> |
| 82 | + <!-- 卖炷3 --> |
83 | 83 | <div class="flex items-start gap-4"> |
84 | | - <svg class="w-6 h-6 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
| 84 | + <svg class="w-5 h-5 text-blue-500 flex-shrink-0 mt-1" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"> |
85 | 85 | <path stroke-linecap="round" stroke-linejoin="round" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path> |
86 | 86 | </svg> |
87 | 87 | <div> |
88 | | - <div class="text-[16px] font-semibold text-gray-800 mb-2">安全可靠</div> |
89 | | - <div class="text-[15px] text-gray-500 leading-relaxed">企业级侵入检测与数据加密保护,灵活的权限管理体系,构建深层防御线</div> |
| 88 | + <div class="text-[14px] font-semibold text-gray-800 mb-1">安全可靠</div> |
| 89 | + <div class="text-[13px] text-gray-500 leading-relaxed">企业级侵入检测与数据加密保护,灵活的权限管理体系,构建深层防御线</div> |
90 | 90 | </div> |
91 | 91 | </div> |
92 | 92 | </div> |
|
99 | 99 | </div> |
100 | 100 | </div> |
101 | 101 |
|
102 | | - <!-- 右侧登录表单区域 - 70% 宽度,白色背景 --> |
103 | | - <div class="flex-1 flex items-center justify-center p-6 md:p-12 bg-white relative"> |
| 102 | + <!-- 右侧登录表单区域 - 75% 宽度 --> |
| 103 | + <div class="flex-1 flex items-start justify-center pt-80 bg-white relative"> |
104 | 104 | <!-- 登录表单容器 --> |
105 | | - <div class="w-full max-w-[480px]"> |
| 105 | + <div class="w-[360px]"> |
106 | 106 | <!-- 移动端 Logo --> |
107 | 107 | <div class="lg:hidden flex items-center gap-3 mb-10"> |
108 | 108 | <img src="/logo.png" alt="TinyFlow" class="h-10 w-auto" /> |
109 | 109 | <span class="text-2xl font-bold text-gray-800">TinyFlow</span> |
110 | 110 | </div> |
111 | 111 |
|
112 | 112 | <!-- 登录卡片 --> |
113 | | - <div class="bg-white rounded-2xl p-8 md:p-10 shadow-xl border border-gray-100"> |
| 113 | + <div class="bg-white rounded-2xl p-8 md:p-150 shadow-xl border border-gray-100"> |
114 | 114 | <!-- 标题 --> |
115 | | - <div class="mb-8"> |
116 | | - <h1 class="text-[22px] font-bold text-gray-900 mb-2"> |
| 115 | + <div class="mb-6"> |
| 116 | + <h1 class="text-[18px] font-bold text-gray-900 mb-1"> |
117 | 117 | {{ isLogin ? '欢迎使用 TinyFlow' : '创建新账户' }} |
118 | 118 | </h1> |
119 | | - <p class="text-[14px] text-gray-500"> |
| 119 | + <p class="text-[13px] text-gray-500"> |
120 | 120 | {{ isLogin ? '登录以管理您的短链和统计数据' : '注册后即可享受全部功能' }} |
121 | 121 | </p> |
122 | 122 | </div> |
|
125 | 125 | <form @submit.prevent="handleSubmit" class="space-y-5"> |
126 | 126 | <!-- 用户名 --> |
127 | 127 | <div> |
128 | | - <label class="block text-[13px] font-medium text-gray-700 mb-2">用户名</label> |
| 128 | + <label class="block text-[12px] font-medium text-gray-700 mb-1.5">用户名</label> |
129 | 129 | <input |
130 | 130 | v-model="formData.username" |
131 | 131 | type="text" |
132 | 132 | required |
133 | | - class="w-full h-11 px-4 rounded-lg border border-gray-200 text-[14px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
| 133 | + class="w-full h-10 px-3 rounded-lg border border-gray-200 text-[13px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
134 | 134 | :placeholder="isLogin ? '输入您的用户名' : '设置用户名'" |
135 | 135 | /> |
136 | 136 | </div> |
137 | 137 |
|
138 | 138 | <!-- 邮箱(仅注册时显示)--> |
139 | 139 | <div v-if="!isLogin"> |
140 | | - <label class="block text-[13px] font-medium text-gray-700 mb-2">邮箱地址</label> |
| 140 | + <label class="block text-[12px] font-medium text-gray-700 mb-1.5">邮箱地址</label> |
141 | 141 | <input |
142 | 142 | v-model="formData.email" |
143 | 143 | type="email" |
144 | | - class="w-full h-11 px-4 rounded-lg border border-gray-200 text-[14px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
| 144 | + class="w-full h-10 px-3 rounded-lg border border-gray-200 text-[13px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
145 | 145 | placeholder="输入您的邮箱地址(可选)" |
146 | 146 | /> |
147 | 147 | </div> |
148 | 148 |
|
149 | 149 | <!-- 密码 --> |
150 | 150 | <div> |
151 | | - <label class="block text-[13px] font-medium text-gray-700 mb-2">密码</label> |
| 151 | + <label class="block text-[12px] font-medium text-gray-700 mb-1.5">密码</label> |
152 | 152 | <input |
153 | 153 | v-model="formData.password" |
154 | 154 | type="password" |
155 | 155 | required |
156 | | - class="w-full h-11 px-4 rounded-lg border border-gray-200 text-[14px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
| 156 | + class="w-full h-10 px-3 rounded-lg border border-gray-200 text-[13px] transition-all duration-200 focus:ring-2 focus:ring-blue-500/20 focus:border-blue-500 bg-white hover:border-gray-300" |
157 | 157 | :placeholder="isLogin ? '输入您的密码' : '设置密码(至少6位)'" |
158 | 158 | :minlength="isLogin ? 1 : 6" |
159 | 159 | /> |
|
162 | 162 | <!-- 错误提示 --> |
163 | 163 | <div |
164 | 164 | v-if="error" |
165 | | - class="p-3 rounded-lg text-[13px] bg-red-50 border border-red-100 text-red-600" |
| 165 | + class="p-2.5 rounded-lg text-[12px] bg-red-50 border border-red-100 text-red-600" |
166 | 166 | > |
167 | 167 | {{ error }} |
168 | 168 | </div> |
|
171 | 171 | <button |
172 | 172 | type="submit" |
173 | 173 | :disabled="loading" |
174 | | - class="w-full h-11 rounded-lg font-semibold text-white text-[14px] transition-all duration-200 hover:opacity-90 disabled:opacity-70 disabled:cursor-not-allowed bg-blue-500 hover:bg-blue-600" |
| 174 | + class="w-full h-10 rounded-lg font-semibold text-white text-[13px] transition-all duration-200 hover:opacity-90 disabled:opacity-70 disabled:cursor-not-allowed bg-blue-500 hover:bg-blue-600" |
175 | 175 | > |
176 | 176 | {{ loading ? '处理中...' : (isLogin ? '登录' : '创建账户') }} |
177 | 177 | </button> |
178 | 178 | </form> |
179 | 179 |
|
180 | 180 | <!-- 跳过登录 --> |
181 | | - <div class="mt-5 text-center"> |
| 181 | + <div class="mt-4 text-center"> |
182 | 182 | <button |
183 | 183 | @click="skipLogin" |
184 | | - class="text-[13px] text-gray-400 hover:text-blue-500 transition-colors" |
| 184 | + class="text-[12px] text-gray-400 hover:text-blue-500 transition-colors" |
185 | 185 | > |
186 | 186 | 暂不登录,先看看 → |
187 | 187 | </button> |
188 | 188 | </div> |
189 | 189 |
|
190 | 190 | <!-- 底部切换提示 --> |
191 | | - <div class="mt-5 pt-5 border-t border-gray-100 text-center text-[13px] text-gray-500"> |
| 191 | + <div class="mt-4 pt-4 border-t border-gray-100 text-center text-[12px] text-gray-500"> |
192 | 192 | {{ isLogin ? '还没有账户?' : '已有账户?' }} |
193 | 193 | <button |
194 | 194 | @click="isLogin = !isLogin" |
|
0 commit comments