diff --git a/README.md b/README.md index 2622739..d6eb8ed 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ Vesper targets **WCAG 2.2 AAA** compliance across the entire interface. | 🔗 Skip Link | "Skip to content" link as first focusable element for screen reader users | | 🎯 Focus Management | Visible `:focus-visible` outlines on all interactive elements; focus traps in modals with restore on close | | 🌗 High Contrast Themes | Dark and light themes both meet AAA contrast ratios (7:1+ for normal text) | -| 🎞️ Reduced Motion | Respects `prefers-reduced-motion` OS setting — all animations disabled when active | +| 🎞️ Reduced Motion | Respects `prefers-reduced-motion` OS setting - all animations disabled when active | | 📋 Active Heading Tracking | Current section highlighted in sidebar TOC via IntersectionObserver | | 🔲 Target Sizes | All interactive targets meet 24x24px minimum (WCAG 2.5.8) | | 📢 Status Messages | Search results counter uses `aria-live="polite"` for screen reader announcements | diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index e3cb705..455a83b 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -77,7 +77,7 @@ pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, args, _cwd| { - // Second instance launched with a file — send it to the existing window + // Second instance launched with a file - send it to the existing window if let Some(file_arg) = args.get(1) { if let Some(cli_file) = read_md_file(file_arg) { let _ = app.emit("open-file", cli_file); diff --git a/src/App.tsx b/src/App.tsx index f8e824d..cc81685 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -40,7 +40,7 @@ const md: MarkdownIt = new MarkdownIt({ const materialEase = [0.4, 0, 0.2, 1] as const; -// Saved selection range — set in mousedown (before browser clears it), read in contextmenu handler +// Saved selection range - set in mousedown (before browser clears it), read in contextmenu handler let _savedSelectionRange: Range | null = null; // Reusable kinetic scroll + iOS overscroll setup for any scrollable area @@ -500,7 +500,7 @@ function App() { setHeadings(parsed); }, []); - // Render markdown to HTML — memoized so it only re-runs when content changes + // Render markdown to HTML - memoized so it only re-runs when content changes const renderedHtml = useMemo(() => { if (!activeTab) return ''; return md.render(activeTab.content); diff --git a/src/styles.css b/src/styles.css index d817cce..d78f016 100644 --- a/src/styles.css +++ b/src/styles.css @@ -56,7 +56,7 @@ --color-text-primary: #E4E6EB; --color-text-secondary: #BCC1C8; /* was #ABB0B8, now ~7.5:1 */ --color-text-tertiary: #8B919A; /* was #6B7280, now ~4.8:1 */ - --color-text-disabled: #6B7280; /* was #4A5260, now ~2.9:1 (exempt — inactive UI) */ + --color-text-disabled: #6B7280; /* was #4A5260, now ~2.9:1 (exempt - inactive UI) */ /* Accent */ --color-accent: #6B8AFF; @@ -153,7 +153,7 @@ html, body, #root { overflow: visible; } -/* Skip link — WCAG 2.4.1 */ +/* Skip link - WCAG 2.4.1 */ .skip-link { position: fixed; top: -100%; @@ -318,7 +318,7 @@ html, body, #root { color: var(--color-text-primary); } -/* Menu backdrop — invisible overlay to catch outside clicks */ +/* Menu backdrop - invisible overlay to catch outside clicks */ .menu-backdrop { position: fixed; top: 0; @@ -939,7 +939,7 @@ html, body, #root { z-index: 10003 !important; } -/* Shortcuts dialog — uses its own class to avoid DaisyUI .modal conflicts */ +/* Shortcuts dialog - uses its own class to avoid DaisyUI .modal conflicts */ .shortcuts-dialog { background-color: var(--color-bg-elevated); border: 1px solid var(--color-border); @@ -1191,7 +1191,7 @@ html, body, #root { text-spacing-trim: trim-both; } -/* Refined heading hierarchy — progressive color cascade */ +/* Refined heading hierarchy - progressive color cascade */ .markdown-content h1, .markdown-content h2, .markdown-content h3, @@ -1547,7 +1547,7 @@ html, body, #root { background-color: var(--color-md-table-hover); } -/* Horizontal rule — gradient fade */ +/* Horizontal rule - gradient fade */ .markdown-content hr { border: none; height: 1px; @@ -1625,7 +1625,7 @@ html, body, #root { border-radius: 8px; } -/* Search highlights — high specificity to override Tailwind reset */ +/* Search highlights - high specificity to override Tailwind reset */ span.search-highlight { background-color: var(--color-md-highlight-bg) !important; color: inherit !important; @@ -1663,7 +1663,7 @@ span.search-highlight.search-highlight-active { transition: background-color 0.2s ease, opacity 0.2s ease; } -/* Global focus indicator — WCAG 2.4.7, 2.4.13 */ +/* Global focus indicator - WCAG 2.4.7, 2.4.13 */ button:focus-visible, a:focus-visible, input:focus-visible, @@ -1677,7 +1677,7 @@ input:focus-visible, } /* ============================================ - Light theme overrides — WCAG 1.4.8 + Light theme overrides - WCAG 1.4.8 ============================================ */ .theme-light { --color-bg-base: #F5F6F8; @@ -1702,7 +1702,7 @@ input:focus-visible, --color-border: rgba(0, 0, 0, 0.10); --color-border-strong: rgba(0, 0, 0, 0.16); - /* Markdown typography — light variants */ + /* Markdown typography - light variants */ --color-md-h1: #111318; --color-md-h2: #1A1D24; --color-md-h3: #252A31; @@ -1739,26 +1739,26 @@ input:focus-visible, --color-md-welcome-btn: #3B66E0; } -/* Light theme — noise overlay should be darker */ +/* Light theme - noise overlay should be darker */ .theme-light.app-container::before { opacity: 0.025; mix-blend-mode: multiply; } -/* Light theme — title bar close button */ +/* Light theme - title bar close button */ .theme-light .title-bar-button.close:hover { background-color: #DC2626; color: white; } -/* Light theme — scrollbar colors */ +/* Light theme - scrollbar colors */ .theme-light .os-theme-dark { --os-handle-bg: rgba(0, 0, 0, 0.15); --os-handle-bg-hover: var(--color-accent); --os-handle-bg-active: var(--color-accent-hover); } -/* Light theme — sidebar resize handle */ +/* Light theme - sidebar resize handle */ .theme-light .sidebar-resize-handle { background: rgba(0, 0, 0, 0.06); }