Defaul stylesheet print → new defaults.js (nique source of truth) + automatic generation of the default stylesheet for paged.js

This commit is contained in:
Julie Blanc 2026-03-08 09:24:53 +01:00
parent ccdd9bda05
commit 47bf70bb36
7 changed files with 115 additions and 49 deletions

48
src/utils/defaults.js Normal file
View file

@ -0,0 +1,48 @@
/**
* Default values for the application.
* Single source of truth imported by components, composables, and stores.
* These are static launch values, NOT user-configured defaults.
*/
export const PAGE_DEFAULTS = Object.freeze({
format: 'A5',
formats: Object.freeze({
A4: Object.freeze({ width: 210, height: 297 }),
A5: Object.freeze({ width: 148, height: 210 }),
}),
margins: Object.freeze({
top: Object.freeze({ value: 16, unit: 'mm' }),
bottom: Object.freeze({ value: 16, unit: 'mm' }),
left: Object.freeze({ value: 16, unit: 'mm' }),
right: Object.freeze({ value: 16, unit: 'mm' }),
}),
background: '',
});
export const TEXT_DEFAULTS = Object.freeze({
fontFamily: 'sans-serif',
fontSize: Object.freeze({ value: 14, unit: 'px' }),
lineHeight: Object.freeze({ value: 18, unit: 'px' }),
color: 'rgb(0, 0, 0)',
});
export const ELEMENT_DEFAULTS = Object.freeze({
fontFamily: 'sans-serif',
italic: false,
bold: false,
textAlign: 'left',
color: 'rgb(0, 0, 0)',
background: 'transparent',
fontSize: Object.freeze({ value: 14, unit: 'px' }),
lineHeight: Object.freeze({ value: 18, unit: 'px' }),
borderWidth: Object.freeze({ value: 1, unit: 'px' }),
borderStyle: 'solid',
borderColor: '#000000',
});
export const INLINE_DEFAULTS = Object.freeze({
em: Object.freeze({ fontStyle: 'italic' }),
i: Object.freeze({ fontStyle: 'italic' }),
strong: Object.freeze({ fontWeight: 'bold' }),
b: Object.freeze({ fontWeight: 'bold' }),
});