teamp tou uu giao dien
All checks were successful
Deploy on Master Change / deploy (push) Successful in 49s

This commit is contained in:
2026-07-03 22:35:36 +07:00
parent ea53136068
commit e8c9edb998
2 changed files with 45 additions and 72 deletions

View File

@@ -125,7 +125,7 @@ function App() {
try { try {
const stored = localStorage.getItem('sc_my_classes_details'); const stored = localStorage.getItem('sc_my_classes_details');
setMyClasses(stored ? JSON.parse(stored) : []); setMyClasses(stored ? JSON.parse(stored) : []);
} catch (e) {} } catch (e) { }
}; };
window.addEventListener('my-classes-updated', handleUpdate); window.addEventListener('my-classes-updated', handleUpdate);
return () => window.removeEventListener('my-classes-updated', handleUpdate); return () => window.removeEventListener('my-classes-updated', handleUpdate);
@@ -202,30 +202,6 @@ function App() {
<span className="brand-name">Simple Care</span> <span className="brand-name">Simple Care</span>
<span className="brand-sub">Rikkei Education</span> <span className="brand-sub">Rikkei Education</span>
</div> </div>
<button
type="button"
className="sidebar-collapse-toggle-pc"
onClick={toggleSidebarCollapse}
title="Thu gọn menu"
style={{
background: 'none',
border: 'none',
color: 'var(--text-muted)',
cursor: 'pointer',
padding: '4px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
marginLeft: 'auto',
borderRadius: '4px',
transition: 'var(--transition)',
}}
>
<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
<line x1="19" y1="12" x2="5" y2="12" />
<polyline points="12 19 5 12 12 5" />
</svg>
</button>
</div> </div>
<nav> <nav>
@@ -365,37 +341,21 @@ function App() {
</div> </div>
</aside> </aside>
<button
type="button"
className={`sidebar-edge-toggle${sidebarCollapsed ? ' sidebar-edge-toggle--collapsed' : ''}`}
onClick={toggleSidebarCollapse}
title={sidebarCollapsed ? 'Mở rộng menu' : 'Thu gọn menu'}
>
<svg viewBox="0 0 10 18" width="10" height="18" fill="currentColor">
{sidebarCollapsed
? <path d="M1 1 L9 9 L1 17" />
: <path d="M9 1 L1 9 L9 17" />
}
</svg>
</button>
<main className={`main-content${sidebarCollapsed ? ' main-content--full' : ''}`}> <main className={`main-content${sidebarCollapsed ? ' main-content--full' : ''}`}>
{sidebarCollapsed && (
<button
type="button"
className="sidebar-expand-btn-pc"
onClick={toggleSidebarCollapse}
title="Mở rộng menu"
style={{
position: 'fixed',
left: '12px',
top: '12px',
zIndex: 99,
background: '#fff',
border: '1px solid var(--border-color)',
borderRadius: '50%',
width: '32px',
height: '32px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
cursor: 'pointer',
boxShadow: 'var(--shadow-sm)',
transition: 'var(--transition)',
}}
>
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
<line x1="5" y1="12" x2="19" y2="12" />
<polyline points="12 5 19 12 12 19" />
</svg>
</button>
)}
<div className="page-viewport"> <div className="page-viewport">
{route.classId ? ( {route.classId ? (
<ClassWorkspace <ClassWorkspace

View File

@@ -95,13 +95,36 @@ body {
pointer-events: none; pointer-events: none;
} }
.sidebar-collapse-toggle-pc { /* ── Sidebar Edge Toggle (triangle tab at mid-right edge) ── */
opacity: 0.5; .sidebar-edge-toggle {
transition: opacity 0.15s; position: fixed;
left: 272px;
top: 50%;
transform: translateY(-50%);
z-index: 11;
width: 16px;
height: 48px;
background: var(--bg-sidebar);
border: 1px solid var(--border-color);
border-left: none;
border-radius: 0 6px 6px 0;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: var(--text-muted);
padding: 0;
transition: left 0.28s cubic-bezier(.4,0,.2,1), background 0.15s, color 0.15s;
box-shadow: 2px 0 6px rgba(0,0,0,0.06);
} }
.sidebar-collapse-toggle-pc:hover {
opacity: 1; .sidebar-edge-toggle:hover {
color: var(--accent) !important; background: var(--accent-light);
color: var(--accent);
}
.sidebar-edge-toggle--collapsed {
left: 0;
} }
.sidebar > nav { .sidebar > nav {
@@ -339,12 +362,6 @@ body {
margin-left: 0; margin-left: 0;
} }
.sidebar-expand-btn-pc:hover {
background: var(--accent-light) !important;
border-color: var(--accent) !important;
color: var(--accent) !important;
}
.page-viewport { .page-viewport {
flex: 1; flex: 1;
min-height: 0; min-height: 0;
@@ -4681,11 +4698,7 @@ input:checked + .slider:before {
transform: translateX(0); transform: translateX(0);
} }
.sidebar-collapse-toggle-pc { .sidebar-edge-toggle {
display: none !important;
}
.sidebar-expand-btn-pc {
display: none !important; display: none !important;
} }