From b393eca960c2bc3209d4d40fe0081517dd454be3 Mon Sep 17 00:00:00 2001 From: Zac Gaetano Date: Mon, 6 Apr 2026 20:26:51 -0400 Subject: [PATCH] Redesign folder UI, VPM branding, and auto theme - Replace chip-pill folder selector with clean vertical tree list - VPM text wordmark replaces vpm-logo.png in login + header (no PNG/invert hack) - Wild Dragon logo/icon retained only on favicon and splash animation - Auto-detect prefers-color-scheme on first load (no longer defaults to dark) - System theme changes update UI if user hasn't manually toggled - Remove dragon icon from login card and app header Co-Authored-By: Claude Sonnet 4.6 --- public/index.html | 142 +++++++++++++++++++++------------------------- 1 file changed, 64 insertions(+), 78 deletions(-) diff --git a/public/index.html b/public/index.html index 2ac4a06..0455dda 100644 --- a/public/index.html +++ b/public/index.html @@ -163,10 +163,10 @@ body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellips /* Dragon icon in login */ .login-icon-wrap{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-bottom:1.5rem} -.login-dragon-icon{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 4px 16px rgba(30,75,216,.4));animation:dragonFloat 4s ease-in-out infinite} +.login-dragon-icon{display:none} .login-wordmark{display:none} -.login-vpm-logo{height:22px;object-fit:contain;opacity:.55;margin-top:.15rem} -[data-theme="light"] .login-vpm-logo{filter:invert(1)} +.login-vpm-text{font-family:'Outfit',sans-serif;font-size:2.4rem;font-weight:800;letter-spacing:-.04em;color:var(--text-primary);line-height:1} +.login-vpm-sub{font-size:.62rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.18em;margin-top:.3rem} .login-product{font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.18em;margin-top:.25rem} .login-field{width:100%;padding:.75rem 1rem;font-family:'Outfit',sans-serif;font-size:.9rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;color:var(--text-primary);outline:none;transition:all .2s;margin-bottom:.75rem} @@ -186,12 +186,10 @@ body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellips /* HEADER */ .header{display:flex;align-items:center;justify-content:space-between;padding:.8rem 2rem;border-bottom:1px solid var(--border);background:rgba(6,8,14,.9);backdrop-filter:blur(20px);position:sticky;top:0;z-index:100} .header-left{display:flex;align-items:center;gap:.85rem;min-width:0;flex:1} -.header-dragon{width:40px;height:40px;object-fit:contain;filter:drop-shadow(0 2px 8px rgba(30,75,216,.5));flex-shrink:0} +.header-dragon{display:none} .header-wordmark{display:none} -.header-vpm-logo{height:20px;object-fit:contain;opacity:.5;flex-shrink:0;border-left:1px solid var(--border);padding-left:.85rem;margin-left:.1rem} -[data-theme="light"] .header-vpm-logo{filter:invert(1)} +.header-vpm-text{font-family:'Outfit',sans-serif;font-size:1.25rem;font-weight:800;letter-spacing:-.03em;color:var(--text-primary);flex-shrink:0} [data-theme="light"] .header{background:rgba(240,242,247,.9)} -[data-theme="light"] .header-dragon{filter:none} .header-product-tag{font-family:'JetBrains Mono',monospace;font-size:.58rem;color:var(--dragon-bright);text-transform:uppercase;letter-spacing:.15em;background:var(--dragon-glow);border:1px solid rgba(224,92,26,.25);border-radius:4px;padding:.15rem .45rem;flex-shrink:0} .header-right{display:flex;align-items:center;gap:.85rem;flex-shrink:0} .header-user{font-size:.75rem;color:var(--text-secondary);font-family:'JetBrains Mono',monospace} @@ -230,15 +228,20 @@ body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellips .mode-badge{font-size:.62rem;padding:.12rem .4rem;border-radius:4px;font-weight:700;text-transform:uppercase;background:rgba(255,255,255,.06)} .mode-desc{font-size:.78rem;color:var(--text-dim);margin-bottom:1.5rem;padding:.65rem .9rem;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;line-height:1.5} -/* FOLDER CHIPS */ -.tree-root-bar{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem} -.tree-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.38rem .8rem;font-family:'JetBrains Mono',monospace;font-size:.76rem;border-radius:20px;cursor:pointer;transition:all .15s;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);user-select:none} -.tree-chip:hover{border-color:var(--border-bright);background:var(--bg-card)} -.tree-chip.active{border-color:var(--blue-bright);background:var(--accent-glow);color:var(--blue-bright)} -.tree-chip .rm{font-size:.6rem;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;border:none;color:inherit;cursor:pointer;opacity:.5;transition:all .15s} -.tree-chip .rm:hover{opacity:1;background:var(--error-bg);color:var(--error)} -.tree-chip-none{display:inline-flex;align-items:center;padding:.38rem .8rem;font-family:'JetBrains Mono',monospace;font-size:.76rem;border-radius:20px;cursor:pointer;transition:all .15s;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-dim);user-select:none;font-style:italic} -.tree-chip-none.active{border-color:var(--blue-bright);background:var(--accent-glow);color:var(--blue-bright);font-style:normal} +/* FOLDER TREE SELECTOR */ +.folder-tree-box{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;overflow:hidden;margin-bottom:.55rem} +.folder-tree-row{display:flex;align-items:center;gap:.5rem;padding:.42rem .75rem;cursor:pointer;transition:background .12s;user-select:none;border-bottom:1px solid var(--border)} +.folder-tree-row:last-child{border-bottom:none} +.folder-tree-row:hover{background:var(--bg-card-hover)} +.folder-tree-row.active{background:var(--accent-glow);border-left:3px solid var(--blue-bright)} +.folder-tree-row.active .ftr-name{color:var(--blue-bright)} +.folder-tree-row .ftr-icon{font-size:.78rem;flex-shrink:0;width:16px;text-align:center} +.folder-tree-row .ftr-name{font-family:'JetBrains Mono',monospace;font-size:.76rem;color:var(--text-secondary);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.folder-tree-row .ftr-rm{font-size:.6rem;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;border:none;color:inherit;cursor:pointer;opacity:.4;transition:all .15s;flex-shrink:0} +.folder-tree-row .ftr-rm:hover{opacity:1;background:var(--error-bg);color:var(--error)} +.folder-tree-children{padding-left:1.2rem} +/* keep add-row / chip styles for admin panel reuse */ +.tree-chip{display:none}.tree-chip-none{display:none}.tree-root-bar{display:none} .add-row{display:flex;gap:.4rem;align-items:center} .add-input{flex:1;padding:.38rem .7rem;font-family:'JetBrains Mono',monospace;font-size:.76rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text-primary);outline:none;transition:all .2s} .add-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(30,75,216,.12)} @@ -420,10 +423,8 @@ body::before{content:'';position:fixed;inset:0;background:radial-gradient(ellips