11 个模板里的硬编码字号/圆角换成令牌,为之后的深色与主题一致性打底。 字号(base.css 的 --tb-fs-xs/md/lg/xl/hero = 12/14/16/24/28): - 0.70~0.88rem、0.72rem 等五六档零碎值 → --tb-fs-xs(标签/meta) / --tb-fs-md(正文、列表、按钮) - 0.95~1rem → --tb-fs-lg;1.5rem 大数字 → --tb-fs-xl;1.75rem 首页主标题 → --tb-fs-hero - 以下几处**故意改变了观感**(不是等价替换,先记下来免得以后当 regression 查): explore 的 .explore-name 1.2rem → 1rem;.hot-vote-title 0.98 → 0.875; 首页 .tb-stat-num 手机端 1.25 → 1rem;.hot-vote-action 0.82 → 0.875(变大)。 圆角: - 8/9/10px → --tb-radius-sm(8) / --tb-radius(12,对话框与气泡);3/4/5/6px → --tb-radius-xs(6) - 头像 50%、胶囊 999px 保留原样(语义值,不是视觉随意值) 其它:header 验证码输入框边框 #ccc → var(--tb-border);chat 气泡与图片的圆角走内联 var()。 仍未令牌化(留给下一轮):templates/user/profile.html 还有 16 处 font-size、base.css 自身 11 处 (0.78/0.82/0.88/0.95/1.1),邮件模板 mail/* 保持 px 不动(邮件客户端不保证 var())。
69 lines
3.1 KiB
HTML
69 lines
3.1 KiB
HTML
{{template "base/header" .}}
|
||
<style>
|
||
.tb-domain-sep {
|
||
background-color: #ffe0e0;
|
||
color: #c0392b;
|
||
padding: 0 4px;
|
||
border-radius: var(--tb-radius-xs);
|
||
font-weight: 600;
|
||
}
|
||
html[data-theme="dark"] .tb-domain-sep {
|
||
background-color: rgba(231, 76, 60, 0.25);
|
||
color: #ff8a80;
|
||
}
|
||
</style>
|
||
<form method="post" id="form">
|
||
{{ .CSRFTokenHTML }}
|
||
<fieldset class="uk-fieldset">
|
||
<legend class="uk-legend">{{t .LangCode "auth.register.title"}}</legend>
|
||
{{template "base/alert" .}}
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="email">{{t .LangCode "auth.register.email"}}</label>
|
||
<input name="email" id="email" class="uk-input" type="text" value="{{.email}}">
|
||
</div>
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="domain">{{t .LangCode "auth.register.domain.prefix" .ExternalURL}}<span class="tb-domain-sep">/_/</span>{{t .LangCode "auth.register.domain.suffix"}}</label>
|
||
<input name="domain" id="domain" class="uk-input" type="text" value="{{.domain}}">
|
||
</div>
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="name">{{t .LangCode "auth.register.name"}}</label>
|
||
<input name="name" id="name" class="uk-input" type="text" value="{{.name}}">
|
||
</div>
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="password">{{t .LangCode "auth.register.password"}}</label>
|
||
<input type="password" name="password" id="password" class="uk-input">
|
||
</div>
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="repeat_password">{{t .LangCode "auth.register.confirm"}}</label>
|
||
<input type="password" name="repeat_password" id="repeat_password" class="uk-input">
|
||
</div>
|
||
<div class="uk-margin">
|
||
<label class="uk-form-label" for="language">{{t .LangCode "auth.register.language"}}</label>
|
||
<select name="language" id="language" class="uk-select">
|
||
<option value="">{{t .LangCode "auth.register.languageDefault"}}</option>
|
||
{{ range .SupportedLangs }}
|
||
<option value="{{ .Code }}" {{ if eq .Code $.LangCode }}selected{{ end }}>{{ .Name }}</option>
|
||
{{ end }}
|
||
</select>
|
||
</div>
|
||
<!-- 规则同意:前端 required 只是第一道,服务端同样校验(form.Register.AgreeRules) -->
|
||
<div class="uk-margin">
|
||
<label class="uk-text-small">
|
||
<input type="checkbox" name="agree_rules" value="1" class="uk-checkbox" required>
|
||
{{t .LangCode "auth.register.agreePrefix"}}<a href="/rules" target="_blank" rel="noopener">{{t .LangCode "auth.register.agreeLink"}}</a>
|
||
</label>
|
||
</div>
|
||
<div class="uk-margin">
|
||
{{ if eq .CaptchaType "math" }}
|
||
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="">
|
||
<button type="button" class="uk-button uk-button-primary math-captcha-trigger">{{t .LangCode "auth.register.submit"}}</button>
|
||
{{ else }}
|
||
<button type="submit" class="uk-button uk-button-primary g-recaptcha" data-sitekey="{{.RecaptchaSiteKey}}"
|
||
data-callback="onSubmit">{{t .LangCode "auth.register.submit"}}
|
||
</button>
|
||
{{ end }}
|
||
</div>
|
||
</fieldset>
|
||
</form>
|
||
{{template "base/footer" .}}
|