diff options
Diffstat (limited to 'gui/src/styles')
| -rw-r--r-- | gui/src/styles/ErrorPage.css | 156 | ||||
| -rw-r--r-- | gui/src/styles/Profile.css | 17 | ||||
| -rw-r--r-- | gui/src/styles/UserModal.css | 46 | ||||
| -rw-r--r-- | gui/src/styles/styles.css | 1 |
4 files changed, 215 insertions, 5 deletions
diff --git a/gui/src/styles/ErrorPage.css b/gui/src/styles/ErrorPage.css new file mode 100644 index 0000000..0d04810 --- /dev/null +++ b/gui/src/styles/ErrorPage.css @@ -0,0 +1,156 @@ +/* Error Page Styles */ + +.error-page { + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; + width: 100%; + padding: 40px 20px; + background: var(--color-background); +} + +.error-content { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + max-width: 600px; + width: 100%; + padding: 60px 40px; + background: var(--color-surface); + border-radius: 16px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + animation: fadeInUp 0.5s ease-out; +} + +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.error-icon-wrapper { + margin-bottom: 32px; + opacity: 0.6; + animation: float 3s ease-in-out infinite; +} + +@keyframes float { + 0%, 100% { + transform: translateY(0px); + } + 50% { + transform: translateY(-10px); + } +} + +.error-title { + margin: 0 0 16px 0; + font-size: 72px; + font-weight: 700; + color: var(--color-primary); + line-height: 1; + letter-spacing: -2px; +} + +.error-subtitle { + margin: 0 0 16px 0; + font-size: 28px; + font-weight: 600; + color: var(--color-text); +} + +.error-message { + margin: 0 0 40px 0; + font-size: 16px; + line-height: 1.6; + color: var(--color-text-secondary); + max-width: 400px; +} + +.error-actions { + display: flex; + gap: 16px; + flex-wrap: wrap; + justify-content: center; +} + +.error-actions a { + text-decoration: none; +} + +.error-btn { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 14px 28px; + border: none; + border-radius: 8px; + font-size: 16px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease; + white-space: nowrap; +} + +.error-btn.primary { + background: var(--color-primary); + color: white; +} + +.error-btn.primary:hover { + background: var(--color-primary-hover); + transform: translateY(-2px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); +} + +.error-btn.secondary { + background: transparent; + color: var(--color-text); + border: 2px solid var(--color-border); +} + +.error-btn.secondary:hover { + background: var(--color-surface-hover); + border-color: var(--color-text-secondary); + transform: translateY(-2px); +} + +.error-btn:active { + transform: translateY(0); +} + +/* Responsive adjustments */ +@media (max-width: 480px) { + .error-content { + padding: 40px 24px; + } + + .error-title { + font-size: 56px; + } + + .error-subtitle { + font-size: 22px; + } + + .error-message { + font-size: 14px; + } + + .error-actions { + flex-direction: column; + width: 100%; + } + + .error-btn { + width: 100%; + justify-content: center; + } +} diff --git a/gui/src/styles/Profile.css b/gui/src/styles/Profile.css index 624cb12..58aefb8 100644 --- a/gui/src/styles/Profile.css +++ b/gui/src/styles/Profile.css @@ -322,4 +322,21 @@ color: var(--color-text-secondary); line-height: 1.5; max-width: 400px; +} + + +/* Banner Image */ +.user-banner { + width: 100%; + height: 160px; + overflow: hidden; + margin: 0; + flex-shrink: 0; +} + +.user-banner img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; }
\ No newline at end of file diff --git a/gui/src/styles/UserModal.css b/gui/src/styles/UserModal.css index bf4ff56..e976b38 100644 --- a/gui/src/styles/UserModal.css +++ b/gui/src/styles/UserModal.css @@ -6,7 +6,8 @@ gap: 20px; min-width: 400px; max-width: 500px; - padding: 24px; + padding: 0; + overflow: hidden; } .user-modal-error { @@ -25,6 +26,17 @@ display: flex; gap: 16px; align-items: flex-start; + padding: 24px 24px 0 24px; + margin-top: -40px; + /* Pull avatar up over banner */ + position: relative; + z-index: 1; +} + +/* Reset margin if no banner */ +.user-modal>.user-modal-header:first-child { + margin-top: 0; + padding: 24px; } .user-modal-avatar-wrapper { @@ -36,8 +48,10 @@ height: 80px; border-radius: 50%; overflow: hidden; - border: 3px solid var(--color-border); + border: 4px solid var(--color-background); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); transition: transform 0.2s ease, border-color 0.2s ease; + background: var(--color-background); } .user-modal-avatar-wrapper .avatar:hover { @@ -135,6 +149,7 @@ /* About Section */ .user-modal-about { padding: 16px; + margin: 0 24px; background: var(--color-surface); border-radius: 8px; border-left: 3px solid var(--color-primary); @@ -153,6 +168,7 @@ display: flex; gap: 24px; padding: 16px; + margin: 0 24px; background: var(--color-surface); border-radius: 8px; } @@ -180,6 +196,7 @@ /* Custom Fields */ .user-modal-custom-fields { padding: 16px; + margin: 0 24px; background: var(--color-surface); border-radius: 8px; } @@ -216,11 +233,32 @@ flex: 1; } +.custom-field-item .field-link { + color: var(--color-primary); + text-decoration: none; + display: inline-flex; + align-items: center; + gap: 4px; + transition: all 0.2s ease; + word-break: break-all; +} + +.custom-field-item .field-link:hover { + color: var(--color-primary-hover); + text-decoration: underline; +} + +.external-link-icon { + flex-shrink: 0; + opacity: 0.7; +} + /* Action Buttons */ .user-modal-actions { display: flex; gap: 12px; - padding-top: 8px; + padding: 16px 24px 24px 24px; + margin-top: 8px; border-top: 1px solid var(--color-border); } @@ -313,4 +351,4 @@ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); max-height: 90vh; overflow-y: auto; -} +}
\ No newline at end of file diff --git a/gui/src/styles/styles.css b/gui/src/styles/styles.css index 5772c40..41b3c4d 100644 --- a/gui/src/styles/styles.css +++ b/gui/src/styles/styles.css @@ -1,5 +1,4 @@ @import "tailwindcss"; -@import "./UserModal.css"; /* assets */ /* fonts */ |
