style: 设计规范新增 cursor-pointer 规则 + 代码同步

- docs: tlyq-design-system.md 新增「光标系统」章节
- dashboard: 服务卡片添加 cursor-pointer
- settings: checkbox label 添加 cursor-pointer
- roles: 权限 checkbox label 添加 cursor-pointer
This commit is contained in:
aiyimickey 2026-07-02 09:41:56 +08:00
parent 0d83bcc19f
commit ba7f181501
3 changed files with 5 additions and 5 deletions

View File

@ -107,7 +107,7 @@ export default function RolesPage() {
<span className="text-sm text-slate-400">admin {allPermissions.length} </span> <span className="text-sm text-slate-400">admin {allPermissions.length} </span>
) : editing === role.role ? ( ) : editing === role.role ? (
allPermissions.map(p => ( allPermissions.map(p => (
<label key={p} className="flex items-center gap-2 text-sm py-1"> <label key={p} className="flex items-center gap-2 text-sm py-1 cursor-pointer">
<input type="checkbox" checked={perms.includes(p)} onChange={() => togglePerm(p)} <input type="checkbox" checked={perms.includes(p)} onChange={() => togglePerm(p)}
className="rounded border-slate-300 text-indigo-600" /> className="rounded border-slate-300 text-indigo-600" />
{permLabels[p] || p} {permLabels[p] || p}

View File

@ -70,7 +70,7 @@ export default function DashboardPage() {
{services.map((s) => { {services.map((s) => {
const isAbnormal = s.current_status === 'abnormal' const isAbnormal = s.current_status === 'abnormal'
return ( return (
<div key={String(s.id)} className={`rounded-xl p-5 border transition-all ${isAbnormal ? 'bg-red-50 dark:bg-red-500/10 border-red-600 dark:border-red-400' : 'bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 hover:shadow-sm'}`}> <div key={String(s.id)} className={`rounded-xl p-5 border transition-all cursor-pointer ${isAbnormal ? 'bg-red-50 dark:bg-red-500/10 border-red-600 dark:border-red-400' : 'bg-white dark:bg-slate-900 border-slate-200 dark:border-slate-800 hover:shadow-sm'}`}>
<div className="flex items-center justify-between mb-2"> <div className="flex items-center justify-between mb-2">
<span className="flex items-center gap-2 text-sm font-semibold"> <span className="flex items-center gap-2 text-sm font-semibold">
<span className={`w-2.5 h-2.5 rounded-full ${isAbnormal ? 'bg-red-600 shadow-[0_0_8px_var(--danger)]' : 'bg-emerald-600'}`} /> <span className={`w-2.5 h-2.5 rounded-full ${isAbnormal ? 'bg-red-600 shadow-[0_0_8px_var(--danger)]' : 'bg-emerald-600'}`} />

View File

@ -173,7 +173,7 @@ export default function SettingsPage() {
{ key: 'level_warning', label: 'Warning' }, { key: 'level_warning', label: 'Warning' },
{ key: 'level_info', label: 'Info' }, { key: 'level_info', label: 'Info' },
].map(l => ( ].map(l => (
<label key={l.key} className="flex items-center gap-2 text-sm"> <label key={l.key} className="flex items-center gap-2 text-sm cursor-pointer">
<input type="checkbox" checked={!!(editing as Record<string, unknown>)[l.key]} onChange={e => updateField(l.key, e.target.checked ? 1 : 0)} <input type="checkbox" checked={!!(editing as Record<string, unknown>)[l.key]} onChange={e => updateField(l.key, e.target.checked ? 1 : 0)}
className="rounded border-slate-300 text-indigo-600 focus:ring-indigo-500" /> className="rounded border-slate-300 text-indigo-600 focus:ring-indigo-500" />
{l.label} {l.label}
@ -182,7 +182,7 @@ export default function SettingsPage() {
</div> </div>
</div> </div>
<div> <div>
<label className="flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300"> <label className="flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300 cursor-pointer">
<input type="checkbox" checked={!!editing.quiet_start} onChange={e => { <input type="checkbox" checked={!!editing.quiet_start} onChange={e => {
if (e.target.checked) { if (e.target.checked) {
updateField('quiet_start', '23:00') updateField('quiet_start', '23:00')
@ -210,7 +210,7 @@ export default function SettingsPage() {
</div> </div>
</div> </div>
)} )}
<label className="flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300"> <label className="flex items-center gap-2 text-sm text-slate-700 dark:text-slate-300 cursor-pointer">
<input type="checkbox" checked={editing.enabled === 1} onChange={e => updateField('enabled', e.target.checked ? 1 : 0)} <input type="checkbox" checked={editing.enabled === 1} onChange={e => updateField('enabled', e.target.checked ? 1 : 0)}
className="rounded border-slate-300 text-indigo-600 focus:ring-indigo-500" /> className="rounded border-slate-300 text-indigo-600 focus:ring-indigo-500" />