feat: improve responsive admin experience

This commit is contained in:
2026-08-04 16:47:14 +08:00
parent c71b1351d6
commit 631a362501
20 changed files with 522 additions and 801 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+121
View File
@@ -184,6 +184,107 @@
border-color: rgba(0, 94, 184, .22);
border-top-color: #005EB8;
}
/* Authentication-specific controls, compiled with the shared Tailwind bundle. */
.password-toggle {
position: absolute;
top: 50%;
right: .75rem;
display: inline-flex;
width: 32px;
height: 32px;
align-items: center;
justify-content: center;
transform: translateY(-50%);
border: 0;
border-radius: .5rem;
background: transparent;
color: #64748b;
padding: 0;
transition: background-color .15s ease, color .15s ease;
}
.password-toggle:hover {
background: rgba(148, 163, 184, .16);
color: #005EB8;
}
.password-toggle:focus-visible {
outline: 2px solid #005EB8;
outline-offset: 2px;
}
.password-toggle:disabled {
cursor: not-allowed;
opacity: .45;
}
.password-toggle .material-symbols-outlined {
font-size: 20px;
line-height: 1;
}
.auth-input-error {
border-color: #dc2626 !important;
background: #fff7f7 !important;
box-shadow: 0 0 0 3px rgba(220, 38, 38, .12) !important;
}
.captcha-token {
-webkit-user-select: none;
user-select: none;
}
.dot-grid {
background-image: radial-gradient(circle at 1px 1px, rgba(148, 163, 184, .30) 1.2px, transparent 0);
background-size: 42px 42px;
}
.panel-frame {
border: none;
box-shadow: none;
}
.gradient-board {
background: linear-gradient(180deg, #2455a3 0%, #123e7d 100%);
}
.auth-alert {
pointer-events: none;
top: max(1rem, env(safe-area-inset-top));
right: auto;
left: 50%;
width: calc(100vw - 2rem);
max-width: 26rem;
max-height: calc(100dvh - 2rem);
overflow-y: auto;
opacity: 0;
transform: translate(-50%, .5rem);
}
.auth-alert::before {
position: absolute;
top: -7px;
left: 24px;
width: 14px;
height: 14px;
transform: rotate(45deg);
border-top: 1px solid currentColor;
border-left: 1px solid currentColor;
background: #fff;
color: #bfdbfe;
content: '';
}
.auth-alert.is-error::before {
color: #fecaca;
}
.auth-alert.is-visible {
pointer-events: auto;
opacity: 1;
transform: translate(-50%, 0);
}
}
@keyframes spin {
@@ -191,3 +292,23 @@
transform: rotate(360deg);
}
}
@media (min-width: 1280px) {
.auth-alert {
width: 320px;
max-width: calc(100vw - 2rem);
transform: translateX(.75rem);
}
.auth-alert::before {
top: var(--auth-alert-arrow-top, 44px);
left: -7px;
border: 0;
border-bottom: 1px solid currentColor;
border-left: 1px solid currentColor;
}
.auth-alert.is-visible {
transform: translateX(0);
}
}
+5
View File
@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<rect width="64" height="64" rx="14" fill="#005EB8"/>
<path d="M32 10C25.5 19.1 18 27.3 18 37a14 14 0 1 0 28 0c0-9.7-7.5-17.9-14-27Z" fill="#fff"/>
<path d="M24.5 39.5c0 4.1 3.4 7.5 7.5 7.5" fill="none" stroke="#005EB8" stroke-linecap="round" stroke-width="3.5"/>
</svg>

After

Width:  |  Height:  |  Size: 338 B