mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 18:10:18 +05:30
feat(renderer): body-class monospace toggle + CSS tokens
- useMonospaceClasses hook calls electronAPI.monospace.getSettings()
and toggles body.mono-{jetbrains-mono,fira-code} and
body.mono-ligatures-{on,off} classes
- Add --font-mono-active and --font-mono-feature tokens in globals.css
- Apply to code/pre/kbd/samp so all code rendering picks up the active
monospace font + ligature settings
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
||||
import { applyMonospaceClasses } from "../../../src/renderer/hooks/use-monospace-classes";
|
||||
|
||||
describe('applyMonospaceClasses', () => {
|
||||
beforeEach(() => {
|
||||
document.body.className = '';
|
||||
});
|
||||
afterEach(() => {
|
||||
document.body.className = '';
|
||||
});
|
||||
|
||||
it('applies jetbrains-mono + ligatures-off for default settings', () => {
|
||||
applyMonospaceClasses({ monospaceFont: 'jetbrains-mono', monospaceLigatures: false });
|
||||
expect(document.body.classList.contains('mono-jetbrains-mono')).toBe(true);
|
||||
expect(document.body.classList.contains('mono-ligatures-off')).toBe(true);
|
||||
});
|
||||
|
||||
it('applies fira-code + ligatures-on when enabled', () => {
|
||||
applyMonospaceClasses({ monospaceFont: 'fira-code', monospaceLigatures: true });
|
||||
expect(document.body.classList.contains('mono-fira-code')).toBe(true);
|
||||
expect(document.body.classList.contains('mono-ligatures-on')).toBe(true);
|
||||
});
|
||||
|
||||
it('strips prior mono-* classes before applying new ones', () => {
|
||||
document.body.classList.add('mono-jetbrains-mono', 'mono-ligatures-off');
|
||||
applyMonospaceClasses({ monospaceFont: 'fira-code', monospaceLigatures: true });
|
||||
expect(document.body.classList.contains('mono-jetbrains-mono')).toBe(false);
|
||||
expect(document.body.classList.contains('mono-ligatures-off')).toBe(false);
|
||||
expect(document.body.classList.contains('mono-fira-code')).toBe(true);
|
||||
});
|
||||
|
||||
it('falls back to defaults when given null', () => {
|
||||
applyMonospaceClasses(null);
|
||||
expect(document.body.classList.contains('mono-jetbrains-mono')).toBe(true);
|
||||
expect(document.body.classList.contains('mono-ligatures-off')).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user