Skip to content

Commit 5a41f97

Browse files
committed
feat: complete Phase 1.3 - Enhanced converters with themes and testing
PPTX Converter Enhancements: - Add multiple layout support (TitleOnly, TitleAndContent, TwoColumn, Blank) - Implement transition effects (Fade, Slide, Push, Wipe, Zoom, Split, Reveal) - Add speaker notes support - Implement inline formatting (bold, italic, code) - Fix TypeScript type errors Theme System Expansion: - Add 6 new themes (dark, minimal, vibrant, ocean, forest, sunset) - Total of 10 professional themes now available - Apply consistent themes across PDF, DOCX, XLSX, PPTX converters - Enhanced PDF themes with better styling Comprehensive Test Suite: - Add 50+ tests for all converters (PDF, DOCX, XLSX, PPTX) - Test theme application - Test all layout types - Test formula handling - Test inline formatting - Add vitest configuration - Set 30s timeout for Puppeteer tests Build & Quality: - Fix all TypeScript compilation errors - Add proper type annotations - Install all dependencies - Successful build verification Phase 1 (Package Maturity & Publishing) is now 100% complete!
1 parent e5b2dc2 commit 5a41f97

File tree

7 files changed

+1304
-18
lines changed

7 files changed

+1304
-18
lines changed

src/pdf.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,12 +317,70 @@ export class PDFConverter implements Converter {
317317
.document-title { color: #1a365d; }
318318
.slide-title { border-bottom-color: #2b6cb0; }
319319
.slide-block { border-color: #2b6cb0; }
320+
.sheet-table th { background-color: #ebf4ff; }
320321
`;
321322
case 'academic':
322323
return baseStyles + `
323324
body { font-family: 'Times New Roman', serif; }
324325
.document-title { color: #2d3748; }
325326
.slide-title { border-bottom-color: #4a5568; }
327+
.sheet-table th { background-color: #f7fafc; }
328+
`;
329+
case 'modern':
330+
return baseStyles + `
331+
body { font-family: 'Segoe UI', system-ui, sans-serif; }
332+
.document-title { color: #6366f1; }
333+
.slide-title { border-bottom-color: #06b6d4; }
334+
.slide-block { border-color: #8b5cf6; }
335+
.sheet-table th { background-color: #f9fafb; }
336+
`;
337+
case 'dark':
338+
return baseStyles + `
339+
body { background-color: #1f2937; color: #e5e7eb; }
340+
.document-title { color: #f59e0b; }
341+
.document-author, .document-date { color: #fcd34d; }
342+
.slide-title { border-bottom-color: #10b981; color: #f59e0b; }
343+
.slide-block { border-color: #4b5563; background-color: #374151; }
344+
h1, h2, h3 { color: #fcd34d; }
345+
.sheet-table { border-color: #4b5563; }
346+
.sheet-table th { background-color: #374151; color: #f59e0b; }
347+
`;
348+
case 'minimal':
349+
return baseStyles + `
350+
body { font-family: 'Helvetica', 'Arial', sans-serif; }
351+
.document-title { color: #000; }
352+
.slide-title { border-bottom-color: #000; }
353+
.slide-block { border-color: #ccc; }
354+
.sheet-table th { background-color: #fafafa; }
355+
`;
356+
case 'vibrant':
357+
return baseStyles + `
358+
.document-title { color: #ec4899; }
359+
.slide-title { border-bottom-color: #8b5cf6; }
360+
.slide-block { border-color: #f472b6; }
361+
.sheet-table th { background-color: #fdf4ff; }
362+
`;
363+
case 'ocean':
364+
return baseStyles + `
365+
.document-title { color: #0ea5e9; }
366+
.slide-title { border-bottom-color: #3b82f6; }
367+
.slide-block { border-color: #06b6d4; }
368+
.sheet-table th { background-color: #f0f9ff; }
369+
`;
370+
case 'forest':
371+
return baseStyles + `
372+
body { font-family: 'Georgia', serif; }
373+
.document-title { color: #059669; }
374+
.slide-title { border-bottom-color: #14b8a6; }
375+
.slide-block { border-color: #10b981; }
376+
.sheet-table th { background-color: #f0fdf4; }
377+
`;
378+
case 'sunset':
379+
return baseStyles + `
380+
.document-title { color: #dc2626; }
381+
.slide-title { border-bottom-color: #fbbf24; }
382+
.slide-block { border-color: #f97316; }
383+
.sheet-table th { background-color: #fff7ed; }
326384
`;
327385
default:
328386
return baseStyles;

0 commit comments

Comments
 (0)