feat(frontend): i18n expansion, admin/profile i18n, grid/list view fix, empty state

- Add 5 new locales (hi, ar, ru, ja, ko) — now 14 total
- Admin panel: 117 i18n keys, confirm modal, animated tabs, no inline handlers
- Profile page: 58 i18n keys with data-i18n attributes
- Fix i18n safeT() shadowing bug and translationsLoaded timing
- Fix grid/list view: list header no longer shows in grid mode on login
- Fix classList.toggle hidden sync for view switching across all nav functions
- Revert .hidden important that broke login page rendering
- Add files empty state (no_files + empty_hint) with translations
- Fix language selector dropdown scroll and styling
- Fix admin panel scroll with sticky tabs
This commit is contained in:
Diocrafts
2026-03-09 00:08:34 +01:00
parent f409a9edd7
commit df336da679
43 changed files with 6645 additions and 2043 deletions
+17 -4
View File
@@ -1,5 +1,5 @@
*{box-sizing:border-box;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}
body{background:#f5f7fa;color:#1e293b;min-height:100vh;display:flex;flex-direction:column}
body{background:#f5f7fa;color:#1e293b;min-height:100vh;height:auto;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}
.hidden{display:none !important}
.show-block{display:block !important}
@@ -62,10 +62,10 @@ body{background:#f5f7fa;color:#1e293b;min-height:100vh;display:flex;flex-directi
.admin-header-right a:hover{color:#fff}
/* ── Container ── */
.admin-container{max-width:1080px;margin:0 auto;padding:28px 24px 60px;width:100%}
.admin-container{max-width:1080px;margin:0 auto;padding:28px 24px 60px;width:100%;flex:1}
/* ── Tabs ── */
.admin-tabs{display:flex;gap:6px;margin-bottom:28px;background:#fff;border-radius:14px;padding:6px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.admin-tabs{display:flex;gap:6px;margin-bottom:28px;background:#fff;border-radius:14px;padding:6px;box-shadow:0 1px 4px rgba(0,0,0,.06);position:sticky;top:64px;z-index:50}
.admin-tab{
padding:10px 22px;cursor:pointer;font-weight:600;font-size:13.5px;color:#64748b;
border:none;background:none;border-radius:10px;transition:all .2s;display:flex;align-items:center;gap:8px;
@@ -74,8 +74,12 @@ body{background:#f5f7fa;color:#1e293b;min-height:100vh;display:flex;flex-directi
.admin-tab.active{color:#fff;background:linear-gradient(135deg,#ff5e3a,#ff2d55);box-shadow:0 3px 12px rgba(255,94,58,.25)}
.admin-tab.active i{color:#fff}
.admin-tab i{font-size:14px;width:16px;text-align:center}
.tab-content{display:none}
.tab-content{display:none;animation:none}
.tab-content.active{display:block}
.tab-content.tab-fade-in{animation:tabFadeIn .22s ease-out}
.tab-content.tab-fade-out{animation:tabFadeOut .15s ease-in;display:block}
@keyframes tabFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes tabFadeOut{from{opacity:1}to{opacity:0}}
/* ── Cards ── */
.admin-card{background:#fff;border-radius:16px;box-shadow:0 1px 4px rgba(0,0,0,.06),0 0 0 1px rgba(0,0,0,.03);padding:28px;margin-bottom:22px}
@@ -296,6 +300,15 @@ details[open] summary{margin-bottom:14px;color:#ff5e3a}
[data-theme="dark"] .pagination{color:#64748b}
[data-theme="dark"] #access-denied h2{color:#fca5a5}
[data-theme="dark"] #access-denied p{color:#94a3b8}
/* ── Confirm modal ── */
.modal-confirm{max-width:420px}
.modal-confirm h3{color:#dc2626}
.modal-confirm p{margin:14px 0 22px;font-size:14px;line-height:1.55;color:#475569}
.btn-danger{background:linear-gradient(135deg,#dc2626,#b91c1c);color:#fff;border:none;padding:10px 22px;border-radius:10px;font-weight:600;cursor:pointer;transition:opacity .15s}
.btn-danger:hover{opacity:.88}
[data-theme="dark"] .modal-confirm p{color:#94a3b8}
[data-theme="dark"] .btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626)}
[data-theme="dark"] #access-denied .access-icon{background:#3b1111}
[data-theme="dark"] #loading{color:#64748b}
[data-theme="dark"] .toggle-row{border-top-color:#334155}