From ff37877491c7d953c2a9c5245c353035839c36bb Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:20:06 -0700 Subject: [PATCH 01/27] Add hover transitions to YouTube video cards, now shows properly which video is being hovered by the user. --- frontend/src/App.css | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 33b6b21..57feed6 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3172,4 +3172,14 @@ three - column responsive .save-status.saved { color: #16a34a; +} + +/* video card hover transitions */ +.video-card-sm { + transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast); +} + +.video-card-sm:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-md); } \ No newline at end of file From 265b5aa8ed977e2d3514cda330ee1ced731f0f65 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:23:33 -0700 Subject: [PATCH 02/27] Added smoother transitions for showing/hiding the side panels to make it look cleaner. --- frontend/src/App.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 57feed6..4e68238 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3182,4 +3182,16 @@ three - column responsive .video-card-sm:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); +} + +/* smooth panel show/hide transitions */ +.left-panel { + transition: width var(--transition-slow), opacity var(--transition-slow); +} +.right-panel { + transition: width var(--transition-slow), opacity var(--transition-slow); +} +.left-panel, +.right-panel { + will-change: width; } \ No newline at end of file From bb89c081f05163ceda532af2effdd4ea139ba932 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:32:39 -0700 Subject: [PATCH 03/27] Improved responsiveness on mobile devices for screens under 768px. --- frontend/src/App.css | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 4e68238..6d15c6c 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3194,4 +3194,44 @@ three - column responsive .left-panel, .right-panel { will-change: width; +} + +/* mobile responsiveness improvement */ +@media (max-width: 768px) { + .app-body { + grid-template-columns: 1fr !important; + grid-template-rows: auto; + overflow-y: auto; + } + .left-panel, + .right-panel { + max-height: 300px; + border: none; + border-bottom: 1px solid var(--border); + } + .center-panel { + min-height: 60vh; + } + .pdf-container { + padding: var(--space-sm); + } + .workspace-topbar { + flex-wrap: wrap; + gap: var(--space-sm); + } + .left-panel-footer { + padding: var(--space-sm); + } + .btn-compile { + font-size: 0.8rem; + padding: 0.5rem; + + } + .modal-box { + width: 95%; + padding: var(--space-md); + } + .modal-box iframe { + height: 220px; + } } \ No newline at end of file From 7bb0b8d589b5e1687b29f94bd5538fd9d17803c7 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:37:05 -0700 Subject: [PATCH 04/27] added focus ring styles to help with users navigating the application using their keyboard. --- frontend/src/App.css | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 6d15c6c..324b680 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3234,4 +3234,28 @@ three - column responsive .modal-box iframe { height: 220px; } +} + +/* focus ring styles for keyboard navigation */ +:focus-visible { + outline: 2px solid var(--primary); + outline-offset: 2px; + border-radius: var(--radius-sm); +} + +button:focus-visible, +input:focus-visible, +select:focus-visible, +textarea:focus-visible, +a:focus-visible { + outline: 2px solid var(--primary); + outline-offset: 2px; + box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15); +} + +/* Remove default outline since we handle it above */ +button:focus:not(:focus-visible), +input:focus:not(:focus-visible), +select:focus:not(:focus-visible) { + outline: none; } \ No newline at end of file From 30bc70d3962a5811be31ae242fe5bb984a45ac78 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:43:16 -0700 Subject: [PATCH 05/27] replaced default browser scrollbars with thin themed scrollbars across the right panel, left panel, PDF viwer, and formular reorder panels. --- frontend/src/App.css | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/frontend/src/App.css b/frontend/src/App.css index 324b680..913df6e 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3258,4 +3258,44 @@ button:focus:not(:focus-visible), input:focus:not(:focus-visible), select:focus:not(:focus-visible) { outline: none; -} \ No newline at end of file +} + +/*scrollbar styling */ +.left-panel-scroll, +.right-panel-scroll, +.pdf-preview-scroll, +.formula-reorder-panel { + scrollbar-width: thin; + scrollbar-color: var(--border) transparent; +} + +.left-panel-scroll::-webkit-scrollbar, +.right-panel-scroll::-webkit-scrollbar, +.pdf-preview-scroll::-webkit-scrollbar, +.formula-reorder-panel::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +.left-panel-scroll::-webkit-scrollbar-track, +.right-panel-scroll::-webkit-scrollbar-track, +.pdf-preview-scroll::-webkit-scrollbar-track, +.formula-reorder-panel::-webkit-scrollbar-track { + background: transparent; +} + +.left-panel-scroll::-webkit-scrollbar-thumb, +.right-panel-scroll::-webkit-scrollbar-thumb, +.pdf-preview-scroll::-webkit-scrollbar-thumb, +.formula-reorder-panel::-webkit-scrollbar-thumb { + background: var(--border); + border-radius: var(--radius-full); +} + +.left-panel-scroll::-webkit-scrollbar-thumb:hover, +.right-panel-scroll::-webkit-scrollbar-thumb:hover, +.pdf-preview-scroll::-webkit-scrollbar-thumb:hover, +.formula-reorder-panel::-webkit-scrollbar-thumb:hover { + background: var(--text-muted); +} + From 1c62db95416ef080c381737ee1baec10b448fc22 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 12:51:04 -0700 Subject: [PATCH 06/27] Improve muted text contrast across the panels to meet the WCAG standards. --- frontend/src/App.css | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/frontend/src/App.css b/frontend/src/App.css index 913df6e..46217c3 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3299,3 +3299,26 @@ select:focus:not(:focus-visible) { background: var(--text-muted); } +/* Muted text contrast improvement */ +.text-muted, +.v-channel, +.right-panel-empty, +.reorder-instructions, +.subtle-copy, +.pdf-toolbar-note, +.snapshot-card-meta, +.inline-video-status { + color: var(--text-muted); + opacity: 1; + +} +[data-theme="dark"] .text-muted, +[data-theme="dark"] .v-channel, +[data-theme="dark"] .right-panel-empty { + color: #a1a1aa; +} +[data-theme="light"] .text-muted, +[data-theme="light"] .v-channel, +[data-theme="light"] .right-panel-empty { + color: #52525b; +} \ No newline at end of file From 3b12a74897271e4a5e64654e9b3e25745963aa54 Mon Sep 17 00:00:00 2001 From: impxcts Date: Wed, 6 May 2026 13:00:17 -0700 Subject: [PATCH 07/27] Added tooltip to compile button and empty state illustration in the right panel. --- frontend/src/App.css | 35 ++++++++++++++++++-- frontend/src/components/CreateCheatSheet.jsx | 12 +++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/frontend/src/App.css b/frontend/src/App.css index 46217c3..442858f 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -3293,7 +3293,7 @@ select:focus:not(:focus-visible) { } .left-panel-scroll::-webkit-scrollbar-thumb:hover, -.right-panel-scroll::-webkit-scrollbar-thumb:hover, +right-panel-scroll::-webkit-scrollbar-thumb:hover, .pdf-preview-scroll::-webkit-scrollbar-thumb:hover, .formula-reorder-panel::-webkit-scrollbar-thumb:hover { background: var(--text-muted); @@ -3321,4 +3321,35 @@ select:focus:not(:focus-visible) { [data-theme="light"] .v-channel, [data-theme="light"] .right-panel-empty { color: #52525b; -} \ No newline at end of file +} + +/* Right Panel Empty State */ +.right-panel-empty-state { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + padding: var(--space-xl) var(--space-md); + gap: var(--space-sm); +} + +.right-panel-empty-icon { + font-size: 2.5rem; + line-height: 1; + opacity: 0.6; +} + +.right-panel-empty-title { + font-size: 0.85rem; + font-weight: 600; + color: var(--text); + margin: 0; +} + +.right-panel-empty-hint { + font-size: 0.75rem; + color: var(--text-muted); + margin: 0; + line-height: 1.5; +} + diff --git a/frontend/src/components/CreateCheatSheet.jsx b/frontend/src/components/CreateCheatSheet.jsx index 830ca93..3d0ff24 100644 --- a/frontend/src/components/CreateCheatSheet.jsx +++ b/frontend/src/components/CreateCheatSheet.jsx @@ -1475,9 +1475,10 @@ const CreateCheatSheet = ({ onSave, onReset, onRestoreSnapshot, initialData, isS ref={compileBtnRef} type="button" onClick={handleCompileClick} - className="btn-compile" + className={`btn-compile ${isCompiling ? 'is-compiling' : ''}`} disabled={isCompiling} aria-label="Compile PDF" + title="Generate LaTeX and compile to PDF. First compile will auto-generate from your current selected subjects." > {isCompiling ? '↻' : '⚡'} @@ -1686,10 +1687,17 @@ const CreateCheatSheet = ({ onSave, onReset, onRestoreSnapshot, initialData, isS