feat: port all template categories to JSON format

- Ported Minimalist templates to JSON (Swiss Grid, Brutalist, etc.)
- Ported Tech templates to JSON (SaaS, Terminal, Cyberpunk, etc.)
- Ported Creative templates to JSON (Art Gallery, Zine, Pop Art, etc.)
- Ported Industrial templates to JSON (Blueprint, Factory, Schematic, etc.)
- Ported Nature templates to JSON (Botanical, Ocean, Mountain, etc.)
- Ported Lifestyle templates to JSON (Cookbook, Travel, Coffee House, etc.)
- Ported Vintage templates to JSON (Art Deco, Medieval, Retro 80s, etc.)
- Updated README.md to reflect the new JSON-based style system (example configuration and contribution workflow)
- Completed migration of over 150 styles to the new architecture
This commit is contained in:
TypoGenie
2026-02-01 18:51:43 +02:00
parent da335734d3
commit a6f664088c
405 changed files with 69134 additions and 5936 deletions

View File

@@ -0,0 +1,153 @@
import { StyleOption } from '../../../types';
export const academicJournal: StyleOption = {
id: 'academic-journal',
name: 'Academic Journal',
category: 'Academic',
description: 'Scholarly and rigorous design for academic papers and research publications. Traditional serif typography optimized for extended reading.',
vibe: 'Scholarly, Serious, Traditional',
googleFontsImport: 'https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&family=Source+Sans+3:wght@400;600&display=swap',
typography: {
fonts: {
heading: 'Libre Baskerville',
body: 'Libre Baskerville',
code: 'Source Sans 3'
},
colors: {
text: '1A1A1A',
textSecondary: '333333',
background: 'FFFFFF',
accent: '800000',
border: '800000',
codeBg: 'F5F5F5',
blockquoteBorder: '333333'
}
},
elements: {
h1: {
font: 'heading',
size: 18,
color: '000000',
bold: true,
align: 'center',
spacing: { before: 18, after: 12, line: 1.2 }
},
h2: {
font: 'heading',
size: 13,
color: '000000',
bold: true,
align: 'left',
spacing: { before: 14, after: 7, line: 1.2 }
},
h3: {
font: 'heading',
size: 12,
color: '000000',
bold: true,
italic: true,
align: 'left',
spacing: { before: 12, after: 6, line: 1.2 }
},
h4: {
font: 'heading',
size: 11,
color: '333333',
bold: true,
align: 'left',
spacing: { before: 10, after: 5, line: 1.2 }
},
h5: {
font: 'heading',
size: 10,
color: '333333',
bold: true,
italic: true,
align: 'left',
spacing: { before: 8, after: 4, line: 1.2 }
},
h6: {
font: 'heading',
size: 10,
color: '333333',
bold: true,
align: 'left',
spacing: { before: 6, after: 3, line: 1.2 }
},
p: {
font: 'body',
size: 10,
color: '1A1A1A',
align: 'both',
spacing: { before: 0, after: 7, line: 1.7 }
},
blockquote: {
font: 'body',
size: 9,
color: '333333',
spacing: { before: 10, after: 10, line: 1.5 },
padding: 10,
borderLeft: { color: '800000', width: 3, style: 'solid' }
},
code: {
font: 'code',
size: 9,
color: '333333',
background: 'F5F5F5'
},
pre: {
font: 'code',
size: 9,
color: '333333',
background: 'F5F5F5',
spacing: { before: 12, after: 12, line: 1.4 },
padding: 12
},
ul: {
spacing: { before: 8, after: 8, line: 1.5 }
},
ol: {
spacing: { before: 8, after: 8, line: 1.5 }
},
li: {
font: 'body',
size: 10,
color: '1A1A1A',
spacing: { before: 4, after: 4, line: 1.5 }
},
strong: {
bold: true
},
em: {
italic: true
},
a: {
color: '800000',
underline: true
},
table: {
spacing: { before: 12, after: 12, line: 1.4 }
},
th: {
font: 'heading',
size: 10,
color: '000000',
bold: true,
spacing: { before: 6, after: 6, line: 1.4 }
},
td: {
font: 'body',
size: 10,
color: '1A1A1A',
spacing: { before: 6, after: 6, line: 1.4 }
},
hr: {
border: { color: '800000', width: 1, style: 'single' },
spacing: { before: 12, after: 12, line: 1 }
},
img: {
align: 'center',
spacing: { before: 12, after: 12, line: 1 }
}
}
};