diff --git a/src/features/prafrot/components/PrafrotSidebar.css b/src/features/prafrot/components/PrafrotSidebar.css index bf9d887..185b6ac 100644 --- a/src/features/prafrot/components/PrafrotSidebar.css +++ b/src/features/prafrot/components/PrafrotSidebar.css @@ -1,250 +1,367 @@ -/* PrafrotSidebar CSS - Emerald Theme */ +/* PrafrotSidebar CSS - Reproduced / Angular Style */ .pfs-container { width: 260px; - height: 100vh; - background: #141414; + height: calc(100vh - 84px); /* Adjusted for layout padding/offset */ + background: #1a1a1a; color: #ffffff; display: flex; flex-direction: column; position: fixed; + top: 10px; + left: 10px; + z-index: 100; + border-radius: 16px; + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); + overflow: hidden; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); + border: 1px solid rgba(255, 255, 255, 0.03); +} + +/* Subtle Top Glow - Emerald */ +.pfs-container::before { + content: ''; + position: absolute; top: 0; left: 0; - z-index: 50; - border-right: 1px solid #2a2a2a; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - overflow: hidden; + right: 0; + height: 2px; + background: linear-gradient(90deg, transparent, #10b981, transparent); + opacity: 0.3; } .pfs-container.collapsed { width: 80px; } -/* Header/Logo Area */ -.pfs-header { - height: 64px; +/* Toggle Area */ +.pfs-toggle-container { + padding: 1rem; display: flex; + justify-content: flex-end; + min-height: 56px; align-items: center; - padding: 0 1.5rem; - border-bottom: 1px solid #2a2a2a; - gap: 0.75rem; } -.pfs-logo-box { - width: 32px; - height: 32px; - border-radius: 8px; - background: #10b981; +.collapsed .pfs-toggle-container { + justify-content: center; +} + +.pfs-toggle-btn { + width: 28px; + height: 28px; + border-radius: 6px; + background: #262626; + border: 1px solid #333; + color: #666; display: flex; align-items: center; justify-content: center; + cursor: pointer; + transition: all 0.2s ease; +} + +.pfs-toggle-btn:hover { + background: #333; + color: #10b981; + border-color: #10b981; + transform: scale(1.05); +} + +/* Search Box */ +.pfs-search-wrapper { + padding: 0.5rem 1.25rem 1.5rem; + transition: all 0.3s ease; +} + +.collapsed .pfs-search-wrapper { + opacity: 0; + pointer-events: none; + height: 0; + padding: 0; +} + +.pfs-search-input { + width: 100%; + padding: 0.75rem 1rem 0.75rem 2.5rem; + background: #252525; + border: 1px solid #333; + border-radius: 12px; + color: #fff; + font-size: 0.85rem; + outline: none; + transition: all 0.2s ease; +} + +.pfs-search-input:focus { + border-color: #10b981; + background: #2a2a2a; + box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.1); +} + +/* Navigation Content */ +.pfs-nav-content { + flex: 1; + padding: 0.5rem 1rem; + overflow-y: auto; + overflow-x: hidden; +} + +.pfs-nav-content::-webkit-scrollbar { + width: 3px; +} + +.pfs-nav-content::-webkit-scrollbar-thumb { + background: #333; + border-radius: 10px; +} + +/* Menu Item Wrapper */ +.pfs-item-wrapper { + margin-bottom: 6px; +} + +/* Links & Tree Structure */ +.pfs-link { + display: flex; + align-items: center; + padding: 0.75rem 1rem; + border-radius: 12px; + color: #a0a0a0; + text-decoration: none; + transition: all 0.2s ease; + cursor: pointer; + position: relative; + gap: 14px; +} + +.pfs-link:hover:not(.active) { + background: rgba(255, 255, 255, 0.03); + color: #fff; +} + +.pfs-link.active { + background: #10b981 !important; + color: #141414 !important; + font-weight: 700; + box-shadow: 0 4px 15px rgba(16, 185, 129, 0.25); +} + +.pfs-icon { + flex-shrink: 0; + transition: transform 0.2s ease; +} + +.pfs-link:hover .pfs-icon:not(.active) { + transform: scale(1.1); +} + +.pfs-label { + flex: 1; + font-size: 0.9rem; + white-space: nowrap; + letter-spacing: -0.01em; +} + +.collapsed .pfs-label, +.collapsed .pfs-chevron { + display: none; +} + +.pfs-chevron { + transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); + color: #666; +} + +.pfs-chevron.expanded { + transform: rotate(180deg); +} + +/* Submenu & Tree Lines */ +.pfs-submenu { + margin-left: 0.5rem; + padding-left: 1.25rem; + border-left: 2px solid #262626; + margin-top: 4px; + margin-bottom: 8px; +} + +.pfs-sublink { + display: flex; + align-items: center; + padding: 0.65rem 1rem; + border-radius: 10px; + color: #888; + font-size: 0.85rem; + transition: all 0.2s ease; + text-decoration: none; + margin-bottom: 2px; + position: relative; + gap: 12px; +} + +.pfs-sublink::before { + content: ''; + position: absolute; + left: -1.25rem; + top: 50%; + width: 0.75rem; + height: 2px; + background: #262626; +} + +.pfs-sublink:hover { + color: #fff; + background: rgba(255, 255, 255, 0.03); +} + +.pfs-sublink.active { + color: #10b981; + font-weight: 700; +} + +/* Icons in sublink */ +.pfs-sublink .pfs-icon { + opacity: 0.7; +} + +.pfs-sublink.active .pfs-icon { + opacity: 1; + color: #10b981; +} + +/* Footer Section */ +.pfs-footer { + padding: 1.25rem; + border-top: 1px solid #262626; + background: #181818; + display: flex; + flex-direction: column; + gap: 1rem; +} + +.collapsed .pfs-footer { + padding: 1.25rem 0.5rem; + align-items: center; +} + +/* Brand Area in Footer */ +.pfs-brand { + display: flex; + align-items: center; + gap: 12px; +} + +.pfs-brand-logo { + width: 36px; + height: 36px; + background: #10b981; color: #141414; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; font-weight: 900; + box-shadow: 0 0 15px rgba(16, 185, 129, 0.2); flex-shrink: 0; } .pfs-brand-info { display: flex; flex-direction: column; - transition: opacity 0.2s ease; } .pfs-brand-name { - font-weight: 900; - font-size: 1.125rem; - letter-spacing: -0.025em; - line-height: 1; + font-weight: 800; + font-size: 0.95rem; + letter-spacing: 0.5px; + text-transform: uppercase; + color: #f8fafc; } .pfs-brand-name span { color: #10b981; } -.pfs-brand-sub { - font-size: 10px; - color: #94a3b8; - font-weight: 500; - text-transform: uppercase; - letter-spacing: 0.1em; -} - -/* Navigation */ -.pfs-nav { - flex: 1; - padding: 1.5rem 0.75rem; - overflow-y: auto; - display: flex; - flex-direction: column; - gap: 0.25rem; -} - -.pfs-nav::-webkit-scrollbar { - width: 4px; -} - -.pfs-nav::-webkit-scrollbar-thumb { - background: #334155; - border-radius: 10px; -} - -/* Group Label */ -.pfs-group-label { - padding: 1.25rem 0.75rem 0.5rem; - font-size: 11px; - font-weight: 700; - color: #64748b; - text-transform: uppercase; - letter-spacing: 0.05em; - transition: opacity 0.2s ease; -} - -.collapsed .pfs-group-label { - opacity: 0; - padding: 0.5rem 0; - height: 0; - overflow: hidden; -} - -/* Nav Item */ -.pfs-item { - display: flex; - align-items: center; - gap: 0.75rem; - padding: 0.625rem 0.75rem; - border-radius: 0.5rem; - color: #94a3b8; - text-decoration: none; - transition: all 0.2s ease; - position: relative; - cursor: pointer; -} - -.pfs-item:hover:not(.active) { - background: rgba(16, 185, 129, 0.05); - color: #f8fafc; -} - -.pfs-item.active { - background: rgba(16, 185, 129, 0.1); - color: #10b981; +.pfs-app-sub { + font-size: 0.7rem; + color: #666; font-weight: 600; } -.pfs-item.active::before { - content: ''; - position: absolute; - left: 0; - top: 50%; - transform: translateY(-50%); - width: 3px; - height: 20px; - background: #10b981; - border-radius: 0 4px 4px 0; -} - -.pfs-icon { - flex-shrink: 0; -} - -.pfs-label { - font-size: 0.875rem; - white-space: nowrap; -} - -.collapsed .pfs-label { - display: none; -} - -/* Disabled Item */ -.pfs-item.disabled { - opacity: 0.4; - cursor: not-allowed; -} - -/* Footer / User Profile */ -.pfs-footer { - padding: 1rem; - border-top: 1px solid #2a2a2a; -} - +/* User Card */ .pfs-user-card { display: flex; align-items: center; - gap: 0.75rem; - padding: 0.5rem; - border-radius: 0.75rem; - background: #1c1c1c; - border: 1px solid #2a2a2a; + gap: 12px; + padding: 0.625rem; + background: rgba(255, 255, 255, 0.02); + border-radius: 12px; + border: 1px solid rgba(255, 255, 255, 0.03); } -.collapsed .pfs-user-card { - justify-content: center; - padding: 0.5rem 0; -} - -.pfs-user-info { - flex: 1; +.pfs-user-data { + display: flex; + flex-direction: column; min-width: 0; } .pfs-user-name { + font-size: 0.85rem; + font-weight: 700; + color: #e2e8f0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.pfs-logout-btn { +.pfs-logout-link { font-size: 0.75rem; color: #64748b; + display: flex; + align-items: center; + gap: 4px; + transition: color 0.2s; background: none; border: none; padding: 0; cursor: pointer; - display: flex; - align-items: center; - gap: 0.25rem; - transition: color 0.2s; + width: fit-content; } -.pfs-logout-btn:hover { +.pfs-logout-link:hover { color: #ef4444; } -.collapsed .pfs-user-info { - display: none; -} - -/* Theme Toggle in Header */ -.pfs-toggle-btn { - margin-left: auto; - width: 32px; - height: 32px; - display: flex; - align-items: center; - justify-content: center; - color: #64748b; - border-radius: 6px; - border: 1px solid #2a2a2a; - background: #1c1c1c; - cursor: pointer; - transition: all 0.2s; -} - -.pfs-toggle-btn:hover { - color: #10b981; - border-color: #10b981; -} - -.collapsed .pfs-toggle-btn { - display: none; -} - -/* Submenu/Children items (if needed in future) */ -.pfs-submenu { - margin-left: 1.5rem; - border-left: 1px solid #2a2a2a; - padding-left: 0.5rem; +/* Legal & Version */ +.pfs-legal { display: flex; flex-direction: column; - gap: 0.125rem; + gap: 6px; + padding-top: 0.75rem; + border-top: 1px solid #262626; +} + +.pfs-legal-item, .pfs-version { + display: flex; + align-items: center; + gap: 8px; + font-size: 0.7rem; + color: #475569; +} + +.pfs-legal-item svg, .pfs-version svg { + color: #10b981; + opacity: 0.6; +} + +/* Locks */ +.pfs-locked { + opacity: 0.4; + cursor: not-allowed !important; +} + +.pfs-lock-icon { + margin-left: auto; + color: #10b981 !important; }