From 99d097aa25f45dabab07547b63a68fd2c48c9d75 Mon Sep 17 00:00:00 2001 From: TypoGenie Date: Sun, 1 Feb 2026 19:03:37 +0200 Subject: [PATCH] chore: cleanup unused files and scripts - Removed legacy TypeScript templates (replaced by JSON) - Removed unused PowerShell and CJS maintenance scripts - Removed debug logs and unused components - Files moved to local _TRASH/ directory (excluded from git) --- .gitignore | 2 + audit-templates.ps1 | 94 ------ cleanup_templates.cjs | 61 ---- debug_output.txt | Bin 8254 -> 0 bytes debug_template_load.cjs | 48 ---- fix-academic-templates.ps1 | 111 ------- fix_bom.cjs | 28 -- fix_templates.cjs | 50 ---- port-core-templates.ps1 | 208 -------------- rebuild-templates.ps1 | 39 --- remove_columns.cjs | 43 --- restore_fonts.ps1 | 60 ---- scripts/convert-templates.cjs | 81 ------ src-tauri/TEMPLATES-README.md | 186 ------------ src/components/CustomScrollbar.tsx | 272 ------------------ .../templates/academic/academic-journal.ts | 153 ---------- src/styles/templates/academic/arctic-base.ts | 157 ---------- .../templates/academic/botanical-textbook.ts | 156 ---------- .../templates/academic/chemistry-lab.ts | 153 ---------- .../templates/academic/dark-academia.ts | 156 ---------- .../templates/academic/education-friendly.ts | 156 ---------- .../templates/academic/emergency-room.ts | 155 ---------- .../templates/academic/furniture-manual.ts | 157 ---------- .../templates/academic/history-textbook.ts | 154 ---------- src/styles/templates/academic/index.ts | 36 --- .../templates/academic/kids-education.ts | 156 ---------- .../templates/academic/mathematics-paper.ts | 154 ---------- .../academic/medical-professional.ts | 153 ---------- src/styles/templates/academic/phd-thesis.ts | 154 ---------- .../templates/academic/scantron-test.ts | 156 ---------- .../templates/academic/scientific-journal.ts | 152 ---------- .../templates/academic/weather-radar.ts | 159 ---------- src/styles/templates/core/circus-sideshow.ts | 33 --- .../templates/core/environmental-green.ts | 32 --- .../templates/core/highway-interstate.ts | 37 --- src/styles/templates/core/index.ts | 26 -- src/styles/templates/core/jungle-explorer.ts | 34 --- src/styles/templates/core/public-transit.ts | 34 --- .../templates/core/silent-film-intertitle.ts | 36 --- src/styles/templates/core/sports-dynamic.ts | 32 --- .../templates/core/steampunk-inventor.ts | 37 --- src/styles/templates/core/subway-tile.ts | 38 --- src/styles/templates/core/taxi-cab.ts | 40 --- src/styles/templates/core/varsity-team.ts | 38 --- .../templates/corporate/annual-report.ts | 33 --- .../corporate/corporate-executive.ts | 32 --- .../corporate/credit-card-platinum.ts | 35 --- .../templates/corporate/currency-bill.ts | 38 --- src/styles/templates/corporate/index.ts | 30 -- .../templates/corporate/legal-contract.ts | 34 --- .../templates/corporate/legal-pleading.ts | 36 --- .../templates/corporate/passport-official.ts | 33 --- .../templates/corporate/police-blotter.ts | 34 --- .../templates/corporate/political-campaign.ts | 33 --- .../templates/corporate/stock-ticker.ts | 36 --- src/styles/templates/corporate/tech-memo.ts | 34 --- .../corporate/top-secret-redacted.ts | 39 --- .../corporate/whiteboard-strategy.ts | 34 --- .../templates/creative/bauhaus-poster.ts | 34 --- .../templates/creative/blueprint-cyanotype.ts | 36 --- src/styles/templates/creative/brick-toy.ts | 34 --- .../templates/creative/brutalist-mono.ts | 39 --- src/styles/templates/creative/glitch-art.ts | 36 --- src/styles/templates/creative/grunge-90s.ts | 34 --- src/styles/templates/creative/index.ts | 30 -- .../templates/creative/kindergarten-art.ts | 32 --- .../templates/creative/origami-paper.ts | 33 --- .../templates/creative/pop-art-comic.ts | 34 --- .../templates/creative/risograph-print.ts | 35 --- .../templates/creative/street-art-graffiti.ts | 34 --- .../templates/creative/vaporwave-aesthetic.ts | 35 --- .../templates/creative/watercolor-wash.ts | 32 --- .../editorial/art-nouveau-organic.ts | 33 --- .../editorial/arts-crafts-heritage.ts | 35 --- .../templates/editorial/baroque-splendor.ts | 32 --- .../editorial/cottagecore-journal.ts | 33 --- .../templates/editorial/dutch-golden-age.ts | 32 --- .../templates/editorial/fashion-magazine.ts | 34 --- src/styles/templates/editorial/film-script.ts | 35 --- src/styles/templates/editorial/index.ts | 38 --- src/styles/templates/editorial/indie-zine.ts | 34 --- .../templates/editorial/literary-review.ts | 33 --- .../templates/editorial/luxury-editorial.ts | 32 --- .../templates/editorial/neo-gothic-revival.ts | 36 --- .../templates/editorial/newspaper-classic.ts | 32 --- .../templates/editorial/newspaper-modern.ts | 32 --- .../templates/editorial/newspaper-tabloid.ts | 33 --- src/styles/templates/editorial/ny-editor.ts | 33 --- .../templates/editorial/rococo-romance.ts | 32 --- .../templates/editorial/victorian-ornate.ts | 33 --- .../templates/industrial/automotive-bold.ts | 32 --- .../industrial/construction-industrial.ts | 33 --- .../templates/industrial/electric-vehicle.ts | 32 --- src/styles/templates/industrial/index.ts | 18 -- .../templates/industrial/industrial-safety.ts | 35 --- .../templates/industrial/logistics-freight.ts | 32 --- .../templates/industrial/night-vision.ts | 36 --- .../templates/industrial/tactical-military.ts | 34 --- .../templates/lifestyle/aviation-classic.ts | 32 --- .../templates/lifestyle/bistro-chalkboard.ts | 36 --- .../templates/lifestyle/fine-dining-menu.ts | 34 --- .../templates/lifestyle/fire-station.ts | 36 --- src/styles/templates/lifestyle/food-recipe.ts | 32 --- .../templates/lifestyle/german-autobahn.ts | 34 --- .../templates/lifestyle/hotel-hospitality.ts | 32 --- src/styles/templates/lifestyle/index.ts | 40 --- .../templates/lifestyle/parisian-chic.ts | 33 --- .../lifestyle/real-estate-premium.ts | 32 --- src/styles/templates/lifestyle/recipe-card.ts | 37 --- .../templates/lifestyle/retro-diner-50s.ts | 6 - .../templates/lifestyle/spa-wellness.ts | 32 --- src/styles/templates/lifestyle/sticky-note.ts | 36 --- .../lifestyle/supermarket-receipt.ts | 39 --- src/styles/templates/lifestyle/surf-shop.ts | 32 --- .../templates/lifestyle/travel-adventure.ts | 32 --- .../templates/lifestyle/wedding-elegant.ts | 32 --- .../templates/lifestyle/winter-holiday.ts | 33 --- .../templates/minimalist/architecture-firm.ts | 32 --- .../minimalist/bauhaus-construction.ts | 34 --- src/styles/templates/minimalist/de-stijl.ts | 37 --- .../templates/minimalist/hipster-coffee.ts | 35 --- src/styles/templates/minimalist/index.ts | 30 -- .../templates/minimalist/japanese-zen.ts | 32 --- .../templates/minimalist/minimalist-black.ts | 36 --- .../templates/minimalist/minimalist-white.ts | 32 --- .../templates/minimalist/museum-gallery.ts | 33 --- .../templates/minimalist/muted-pastel.ts | 33 --- .../minimalist/scandinavian-clean.ts | 32 --- src/styles/templates/minimalist/swiss-grid.ts | 33 --- .../templates/minimalist/wireframe-layout.ts | 34 --- src/styles/templates/minimalist/zen-garden.ts | 32 --- src/styles/templates/tech/8-bit-arcade.ts | 35 --- src/styles/templates/tech/aerospace-modern.ts | 32 --- .../templates/tech/artificial-intelligence.ts | 32 --- src/styles/templates/tech/astronomy-space.ts | 35 --- src/styles/templates/tech/biohazard-lab.ts | 34 --- src/styles/templates/tech/biopunk-lab.ts | 34 --- .../templates/tech/blockchain-protocol.ts | 32 --- src/styles/templates/tech/bsod-blue.ts | 37 --- src/styles/templates/tech/circuit-board.ts | 34 --- src/styles/templates/tech/code-editor.ts | 35 --- src/styles/templates/tech/crypto-futurism.ts | 35 --- src/styles/templates/tech/cybersecurity.ts | 35 --- src/styles/templates/tech/data-analytics.ts | 32 --- src/styles/templates/tech/deep-sea-sub.ts | 35 --- src/styles/templates/tech/desert-sands.ts | 33 --- src/styles/templates/tech/frutiger-aero.ts | 32 --- src/styles/templates/tech/game-handheld.ts | 34 --- src/styles/templates/tech/hologram-blue.ts | 34 --- src/styles/templates/tech/index.ts | 64 ----- .../templates/tech/industrial-blueprint.ts | 33 --- src/styles/templates/tech/marine-biology.ts | 32 --- src/styles/templates/tech/mars-rover.ts | 35 --- .../templates/tech/national-park-signage.ts | 34 --- src/styles/templates/tech/neon-noir.ts | 35 --- .../templates/tech/schematic-diagram.ts | 34 --- src/styles/templates/tech/smart-home-tech.ts | 32 --- src/styles/templates/tech/solarpunk.ts | 32 --- src/styles/templates/tech/startup-saas.ts | 32 --- .../templates/tech/tech-documentation.ts | 32 --- src/styles/templates/tech/tech-startup.ts | 32 --- src/styles/templates/tech/volcanic-ash.ts | 35 --- src/styles/templates/vintage/amber-monitor.ts | 36 --- .../templates/vintage/ancient-papyrus.ts | 36 --- .../templates/vintage/art-deco-glamour.ts | 37 --- .../templates/vintage/atomic-age-1950s.ts | 35 --- src/styles/templates/vintage/atompunk-50s.ts | 33 --- .../templates/vintage/gold-rush-ledger.ts | 36 --- src/styles/templates/vintage/index.ts | 52 ---- .../templates/vintage/label-maker-emboss.ts | 36 --- .../templates/vintage/library-archive.ts | 34 --- .../templates/vintage/medieval-illuminated.ts | 38 --- .../templates/vintage/memphis-pattern.ts | 35 --- .../templates/vintage/mid-century-modern.ts | 33 --- .../templates/vintage/noir-detective.ts | 37 --- src/styles/templates/vintage/old-telegram.ts | 39 --- .../templates/vintage/psychedelic-60s.ts | 32 --- src/styles/templates/vintage/raygun-gothic.ts | 33 --- src/styles/templates/vintage/retro-80s.ts | 35 --- src/styles/templates/vintage/retro-diner.ts | 32 --- .../vintage/soviet-constructivism.ts | 38 --- .../vintage/speakeasy-prohibition.ts | 35 --- .../templates/vintage/victorian-ornate.ts | 33 --- .../templates/vintage/vintage-apothecary.ts | 33 --- src/styles/templates/vintage/vintage-radio.ts | 33 --- .../templates/vintage/vintage-typewriter.ts | 32 --- src/styles/templates/vintage/wanted-poster.ts | 33 --- surgery_templates.cjs | 49 ---- surgery_templates_final.cjs | 42 --- surgery_templates_final_v2.cjs | 47 --- validate_json.ps1 | 13 - validate_templates.cjs | 31 -- 192 files changed, 2 insertions(+), 9253 deletions(-) delete mode 100644 audit-templates.ps1 delete mode 100644 cleanup_templates.cjs delete mode 100644 debug_output.txt delete mode 100644 debug_template_load.cjs delete mode 100644 fix-academic-templates.ps1 delete mode 100644 fix_bom.cjs delete mode 100644 fix_templates.cjs delete mode 100644 port-core-templates.ps1 delete mode 100644 rebuild-templates.ps1 delete mode 100644 remove_columns.cjs delete mode 100644 restore_fonts.ps1 delete mode 100644 scripts/convert-templates.cjs delete mode 100644 src-tauri/TEMPLATES-README.md delete mode 100644 src/components/CustomScrollbar.tsx delete mode 100644 src/styles/templates/academic/academic-journal.ts delete mode 100644 src/styles/templates/academic/arctic-base.ts delete mode 100644 src/styles/templates/academic/botanical-textbook.ts delete mode 100644 src/styles/templates/academic/chemistry-lab.ts delete mode 100644 src/styles/templates/academic/dark-academia.ts delete mode 100644 src/styles/templates/academic/education-friendly.ts delete mode 100644 src/styles/templates/academic/emergency-room.ts delete mode 100644 src/styles/templates/academic/furniture-manual.ts delete mode 100644 src/styles/templates/academic/history-textbook.ts delete mode 100644 src/styles/templates/academic/index.ts delete mode 100644 src/styles/templates/academic/kids-education.ts delete mode 100644 src/styles/templates/academic/mathematics-paper.ts delete mode 100644 src/styles/templates/academic/medical-professional.ts delete mode 100644 src/styles/templates/academic/phd-thesis.ts delete mode 100644 src/styles/templates/academic/scantron-test.ts delete mode 100644 src/styles/templates/academic/scientific-journal.ts delete mode 100644 src/styles/templates/academic/weather-radar.ts delete mode 100644 src/styles/templates/core/circus-sideshow.ts delete mode 100644 src/styles/templates/core/environmental-green.ts delete mode 100644 src/styles/templates/core/highway-interstate.ts delete mode 100644 src/styles/templates/core/index.ts delete mode 100644 src/styles/templates/core/jungle-explorer.ts delete mode 100644 src/styles/templates/core/public-transit.ts delete mode 100644 src/styles/templates/core/silent-film-intertitle.ts delete mode 100644 src/styles/templates/core/sports-dynamic.ts delete mode 100644 src/styles/templates/core/steampunk-inventor.ts delete mode 100644 src/styles/templates/core/subway-tile.ts delete mode 100644 src/styles/templates/core/taxi-cab.ts delete mode 100644 src/styles/templates/core/varsity-team.ts delete mode 100644 src/styles/templates/corporate/annual-report.ts delete mode 100644 src/styles/templates/corporate/corporate-executive.ts delete mode 100644 src/styles/templates/corporate/credit-card-platinum.ts delete mode 100644 src/styles/templates/corporate/currency-bill.ts delete mode 100644 src/styles/templates/corporate/index.ts delete mode 100644 src/styles/templates/corporate/legal-contract.ts delete mode 100644 src/styles/templates/corporate/legal-pleading.ts delete mode 100644 src/styles/templates/corporate/passport-official.ts delete mode 100644 src/styles/templates/corporate/police-blotter.ts delete mode 100644 src/styles/templates/corporate/political-campaign.ts delete mode 100644 src/styles/templates/corporate/stock-ticker.ts delete mode 100644 src/styles/templates/corporate/tech-memo.ts delete mode 100644 src/styles/templates/corporate/top-secret-redacted.ts delete mode 100644 src/styles/templates/corporate/whiteboard-strategy.ts delete mode 100644 src/styles/templates/creative/bauhaus-poster.ts delete mode 100644 src/styles/templates/creative/blueprint-cyanotype.ts delete mode 100644 src/styles/templates/creative/brick-toy.ts delete mode 100644 src/styles/templates/creative/brutalist-mono.ts delete mode 100644 src/styles/templates/creative/glitch-art.ts delete mode 100644 src/styles/templates/creative/grunge-90s.ts delete mode 100644 src/styles/templates/creative/index.ts delete mode 100644 src/styles/templates/creative/kindergarten-art.ts delete mode 100644 src/styles/templates/creative/origami-paper.ts delete mode 100644 src/styles/templates/creative/pop-art-comic.ts delete mode 100644 src/styles/templates/creative/risograph-print.ts delete mode 100644 src/styles/templates/creative/street-art-graffiti.ts delete mode 100644 src/styles/templates/creative/vaporwave-aesthetic.ts delete mode 100644 src/styles/templates/creative/watercolor-wash.ts delete mode 100644 src/styles/templates/editorial/art-nouveau-organic.ts delete mode 100644 src/styles/templates/editorial/arts-crafts-heritage.ts delete mode 100644 src/styles/templates/editorial/baroque-splendor.ts delete mode 100644 src/styles/templates/editorial/cottagecore-journal.ts delete mode 100644 src/styles/templates/editorial/dutch-golden-age.ts delete mode 100644 src/styles/templates/editorial/fashion-magazine.ts delete mode 100644 src/styles/templates/editorial/film-script.ts delete mode 100644 src/styles/templates/editorial/index.ts delete mode 100644 src/styles/templates/editorial/indie-zine.ts delete mode 100644 src/styles/templates/editorial/literary-review.ts delete mode 100644 src/styles/templates/editorial/luxury-editorial.ts delete mode 100644 src/styles/templates/editorial/neo-gothic-revival.ts delete mode 100644 src/styles/templates/editorial/newspaper-classic.ts delete mode 100644 src/styles/templates/editorial/newspaper-modern.ts delete mode 100644 src/styles/templates/editorial/newspaper-tabloid.ts delete mode 100644 src/styles/templates/editorial/ny-editor.ts delete mode 100644 src/styles/templates/editorial/rococo-romance.ts delete mode 100644 src/styles/templates/editorial/victorian-ornate.ts delete mode 100644 src/styles/templates/industrial/automotive-bold.ts delete mode 100644 src/styles/templates/industrial/construction-industrial.ts delete mode 100644 src/styles/templates/industrial/electric-vehicle.ts delete mode 100644 src/styles/templates/industrial/index.ts delete mode 100644 src/styles/templates/industrial/industrial-safety.ts delete mode 100644 src/styles/templates/industrial/logistics-freight.ts delete mode 100644 src/styles/templates/industrial/night-vision.ts delete mode 100644 src/styles/templates/industrial/tactical-military.ts delete mode 100644 src/styles/templates/lifestyle/aviation-classic.ts delete mode 100644 src/styles/templates/lifestyle/bistro-chalkboard.ts delete mode 100644 src/styles/templates/lifestyle/fine-dining-menu.ts delete mode 100644 src/styles/templates/lifestyle/fire-station.ts delete mode 100644 src/styles/templates/lifestyle/food-recipe.ts delete mode 100644 src/styles/templates/lifestyle/german-autobahn.ts delete mode 100644 src/styles/templates/lifestyle/hotel-hospitality.ts delete mode 100644 src/styles/templates/lifestyle/index.ts delete mode 100644 src/styles/templates/lifestyle/parisian-chic.ts delete mode 100644 src/styles/templates/lifestyle/real-estate-premium.ts delete mode 100644 src/styles/templates/lifestyle/recipe-card.ts delete mode 100644 src/styles/templates/lifestyle/retro-diner-50s.ts delete mode 100644 src/styles/templates/lifestyle/spa-wellness.ts delete mode 100644 src/styles/templates/lifestyle/sticky-note.ts delete mode 100644 src/styles/templates/lifestyle/supermarket-receipt.ts delete mode 100644 src/styles/templates/lifestyle/surf-shop.ts delete mode 100644 src/styles/templates/lifestyle/travel-adventure.ts delete mode 100644 src/styles/templates/lifestyle/wedding-elegant.ts delete mode 100644 src/styles/templates/lifestyle/winter-holiday.ts delete mode 100644 src/styles/templates/minimalist/architecture-firm.ts delete mode 100644 src/styles/templates/minimalist/bauhaus-construction.ts delete mode 100644 src/styles/templates/minimalist/de-stijl.ts delete mode 100644 src/styles/templates/minimalist/hipster-coffee.ts delete mode 100644 src/styles/templates/minimalist/index.ts delete mode 100644 src/styles/templates/minimalist/japanese-zen.ts delete mode 100644 src/styles/templates/minimalist/minimalist-black.ts delete mode 100644 src/styles/templates/minimalist/minimalist-white.ts delete mode 100644 src/styles/templates/minimalist/museum-gallery.ts delete mode 100644 src/styles/templates/minimalist/muted-pastel.ts delete mode 100644 src/styles/templates/minimalist/scandinavian-clean.ts delete mode 100644 src/styles/templates/minimalist/swiss-grid.ts delete mode 100644 src/styles/templates/minimalist/wireframe-layout.ts delete mode 100644 src/styles/templates/minimalist/zen-garden.ts delete mode 100644 src/styles/templates/tech/8-bit-arcade.ts delete mode 100644 src/styles/templates/tech/aerospace-modern.ts delete mode 100644 src/styles/templates/tech/artificial-intelligence.ts delete mode 100644 src/styles/templates/tech/astronomy-space.ts delete mode 100644 src/styles/templates/tech/biohazard-lab.ts delete mode 100644 src/styles/templates/tech/biopunk-lab.ts delete mode 100644 src/styles/templates/tech/blockchain-protocol.ts delete mode 100644 src/styles/templates/tech/bsod-blue.ts delete mode 100644 src/styles/templates/tech/circuit-board.ts delete mode 100644 src/styles/templates/tech/code-editor.ts delete mode 100644 src/styles/templates/tech/crypto-futurism.ts delete mode 100644 src/styles/templates/tech/cybersecurity.ts delete mode 100644 src/styles/templates/tech/data-analytics.ts delete mode 100644 src/styles/templates/tech/deep-sea-sub.ts delete mode 100644 src/styles/templates/tech/desert-sands.ts delete mode 100644 src/styles/templates/tech/frutiger-aero.ts delete mode 100644 src/styles/templates/tech/game-handheld.ts delete mode 100644 src/styles/templates/tech/hologram-blue.ts delete mode 100644 src/styles/templates/tech/index.ts delete mode 100644 src/styles/templates/tech/industrial-blueprint.ts delete mode 100644 src/styles/templates/tech/marine-biology.ts delete mode 100644 src/styles/templates/tech/mars-rover.ts delete mode 100644 src/styles/templates/tech/national-park-signage.ts delete mode 100644 src/styles/templates/tech/neon-noir.ts delete mode 100644 src/styles/templates/tech/schematic-diagram.ts delete mode 100644 src/styles/templates/tech/smart-home-tech.ts delete mode 100644 src/styles/templates/tech/solarpunk.ts delete mode 100644 src/styles/templates/tech/startup-saas.ts delete mode 100644 src/styles/templates/tech/tech-documentation.ts delete mode 100644 src/styles/templates/tech/tech-startup.ts delete mode 100644 src/styles/templates/tech/volcanic-ash.ts delete mode 100644 src/styles/templates/vintage/amber-monitor.ts delete mode 100644 src/styles/templates/vintage/ancient-papyrus.ts delete mode 100644 src/styles/templates/vintage/art-deco-glamour.ts delete mode 100644 src/styles/templates/vintage/atomic-age-1950s.ts delete mode 100644 src/styles/templates/vintage/atompunk-50s.ts delete mode 100644 src/styles/templates/vintage/gold-rush-ledger.ts delete mode 100644 src/styles/templates/vintage/index.ts delete mode 100644 src/styles/templates/vintage/label-maker-emboss.ts delete mode 100644 src/styles/templates/vintage/library-archive.ts delete mode 100644 src/styles/templates/vintage/medieval-illuminated.ts delete mode 100644 src/styles/templates/vintage/memphis-pattern.ts delete mode 100644 src/styles/templates/vintage/mid-century-modern.ts delete mode 100644 src/styles/templates/vintage/noir-detective.ts delete mode 100644 src/styles/templates/vintage/old-telegram.ts delete mode 100644 src/styles/templates/vintage/psychedelic-60s.ts delete mode 100644 src/styles/templates/vintage/raygun-gothic.ts delete mode 100644 src/styles/templates/vintage/retro-80s.ts delete mode 100644 src/styles/templates/vintage/retro-diner.ts delete mode 100644 src/styles/templates/vintage/soviet-constructivism.ts delete mode 100644 src/styles/templates/vintage/speakeasy-prohibition.ts delete mode 100644 src/styles/templates/vintage/victorian-ornate.ts delete mode 100644 src/styles/templates/vintage/vintage-apothecary.ts delete mode 100644 src/styles/templates/vintage/vintage-radio.ts delete mode 100644 src/styles/templates/vintage/vintage-typewriter.ts delete mode 100644 src/styles/templates/vintage/wanted-poster.ts delete mode 100644 surgery_templates.cjs delete mode 100644 surgery_templates_final.cjs delete mode 100644 surgery_templates_final_v2.cjs delete mode 100644 validate_json.ps1 delete mode 100644 validate_templates.cjs diff --git a/.gitignore b/.gitignore index a547bf3..dd3ad3f 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ dist-ssr *.njsproj *.sln *.sw? + +_TRASH/ diff --git a/audit-templates.ps1 b/audit-templates.ps1 deleted file mode 100644 index b193565..0000000 --- a/audit-templates.ps1 +++ /dev/null @@ -1,94 +0,0 @@ -# Template Audit Script -# Analyzes all templates against research-paper.json reference - -$reference = Get-Content "src-tauri\templates\academic\research-paper.json" | ConvertFrom-Json -$templateFiles = Get-ChildItem -Path "src-tauri\templates" -Recurse -Filter "*.json" - -$requiredElements = @('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'blockquote', 'code', 'pre', - 'ul', 'ol', 'li', 'strong', 'em', 'a', 'table', 'th', 'td', - 'hr', 'img', 'del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef') - -$requiredColors = @('text', 'textSecondary', 'background', 'accent', 'border', 'codeBg', 'blockquoteBorder') -$requiredFonts = @('heading', 'body', 'code') - -Write-Host "`n=== TEMPLATE AUDIT REPORT ===" -ForegroundColor Cyan -Write-Host "Reference: research-paper.json with $($requiredElements.Count) elements`n" -ForegroundColor Green - -$issues = @() - -foreach ($file in $templateFiles) { - try { - $template = Get-Content $file.FullName | ConvertFrom-Json - $templateName = "$($template.category)/$($template.id)" - - # Check elements - $missingElements = @() - $elementKeys = if ($template.elements) { $template.elements.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() } - - foreach ($element in $requiredElements) { - if ($element -notin $elementKeys) { - $missingElements += $element - } - } - - # Check colors - $missingColors = @() - $colorKeys = if ($template.typography.colors) { $template.typography.colors.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() } - - foreach ($color in $requiredColors) { - if ($color -notin $colorKeys) { - $missingColors += $color - } - } - - # Check fonts - $missingFonts = @() - $fontKeys = if ($template.typography.fonts) { $template.typography.fonts.PSObject.Properties.Name | Where-Object { $_ -notlike "_comment*" } } else { @() } - - foreach ($font in $requiredFonts) { - if ($font -notin $fontKeys) { - $missingFonts += $font - } - } - - # Report issues - if ($missingElements.Count -gt 0 -or $missingColors.Count -gt 0 -or $missingFonts.Count -gt 0) { - $issue = [PSCustomObject]@{ - Template = $templateName - MissingElements = $missingElements.Count - MissingColors = $missingColors.Count - MissingFonts = $missingFonts.Count - ElementsList = ($missingElements -join ', ') - ColorsList = ($missingColors -join ', ') - FontsList = ($missingFonts -join ', ') - } - $issues += $issue - - Write-Host "❌ $templateName" -ForegroundColor Red - if ($missingElements.Count -gt 0) { - Write-Host " Missing $($missingElements.Count) elements: $($missingElements -join ', ')" -ForegroundColor Yellow - } - if ($missingColors.Count -gt 0) { - Write-Host " Missing $($missingColors.Count) colors: $($missingColors -join ', ')" -ForegroundColor Yellow - } - if ($missingFonts.Count -gt 0) { - Write-Host " Missing $($missingFonts.Count) fonts: $($missingFonts -join ', ')" -ForegroundColor Yellow - } - } else { - Write-Host "✅ $templateName" -ForegroundColor Green - } - - } catch { - Write-Host "❌ Error parsing $($file.Name): $_" -ForegroundColor Red - } -} - -Write-Host "`n=== SUMMARY ===" -ForegroundColor Cyan -Write-Host "Total templates: $($templateFiles.Count)" -ForegroundColor White -Write-Host "Templates with issues: $($issues.Count)" -ForegroundColor Yellow -Write-Host "Templates complete: $($templateFiles.Count - $issues.Count)" -ForegroundColor Green - -if ($issues.Count -gt 0) { - Write-Host "`nTemplates needing fixes:" -ForegroundColor Yellow - $issues | Format-Table Template, MissingElements, MissingColors, MissingFonts -AutoSize -} diff --git a/cleanup_templates.cjs b/cleanup_templates.cjs deleted file mode 100644 index 34f133d..0000000 --- a/cleanup_templates.cjs +++ /dev/null @@ -1,61 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // 1. Fix orphaned sides: "bottom": { ... } -> "borderBottom": { ... } - // Only if it looks like a border object (color, width, style) - const sides = ['top', 'bottom', 'left', 'right']; - sides.forEach(side => { - const capitalizedSide = side.charAt(0).toUpperCase() + side.slice(1); - // Look for "side": { ... } that isn't already "borderSide" - // and has border-like properties - const orphanRegex = new RegExp(`(? "borderSide": { ... } - // We repeat this several times to catch cases where multiple borders were nested - let braceChanged = true; - while (braceChanged) { - braceChanged = false; - const trailingBraceRegex = /("border(?:Top|Bottom|Left|Right)":\s*{[^}]*})\s*}/g; - if (trailingBraceRegex.test(content)) { - content = content.replace(trailingBraceRegex, '$1'); - braceChanged = true; - changed = true; - } - } - - if (changed) { - // Try to validate - try { - JSON.parse(content); - } catch (e) { - // If still broken, let's try a last ditch effort to remove any double closing braces in elements - // that follow a border side and a comma or newline - content = content.replace(/("border(?:Top|Bottom|Left|Right)":\s*{[^}]*})\s*},\s*}/g, '$1\n },'); - try { JSON.parse(content); } catch (e2) { } - } - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Deep Cleaned: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished deep template cleanup.'); diff --git a/debug_output.txt b/debug_output.txt deleted file mode 100644 index 71d2b3315c5f925a2695bff074fef893f656b8ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8254 zcmd6syK*Z<5QZnFigzG{V0i#y5{iI;5EJOK(($owXC+xaJUsA!)7nDno!(ipEthS1 zxBLHl`Zhh|fBybGt~*~>Mp9|kOV_LBJ< zd2k`jHpDK;dc>t{A~wXH_3d)p+Vr8PygR110Dp?6XIm+k%ztO$cgme6$9)-a#PS|_ zE!#WU+UWOVoE8CcEboz9#r&Ev@jDT0R1IV`8NZhOUjvRQnnSj|aII1fV#PyUj>A4= zi8Va>=AMzS@;D957EdE|AEEL( z#xy)SUb)<}l}}U$Tqiw0Uu*a?EkO&PC4Eiah&yK85egDVn0ROv!1lJb&d@c z3C}smuacxkBa`Sv)F3rm_tTh$M?dH4J17cN0`+J6#3isemM5Fg4M$DW zv)!_XEUP-LqLaU@50!H%mN(@2?UAco^R3&p@DzD*RgN?{*VskR%9CTd1u-1g@ty^5 zBX3^Sjiao1mhlMm^7m{f8Aer+Z?+$9Wqq5Ul;bo_*E7=Zw(`MEEObd`FY>yRXJF=Y znQw}wXZtMQFx%~fO2_=j6BivC#xl>ij%PTDVJUn%85K%)A9A##h>U4?bUGBa<0JN8 z{@OozjS9YGneuA>55kb08MhNY8N61!nCff}jM!q0Av&=J504!36hk(=-`5Ls#8THB zvJs~~>+l+Wjqppd9+7PQ5Kfc(bTrF(DUb3l6mp*^_EQ5sDO(mv8|qv;qveFvHm97& z^8@EEo5I)`TIGUeTzUO=UMtCazgkazWVZTmb4Mor$1 zkKDe7kzM80*R_YNOtdifbMsOb?DQ3_Et2=h)W=q<;B16PY!cy|5p}jPjWKjQL?>YN zbnCL^kLX^*qcg8ENA}s&$o|cJ(s|8mDs$BJhD=9UPxohsVJF~ZX**iP5o<)~$E@gv%GU7sxp7lW~g0My3qzBF8xE+Mbo0Hafx=t&Z+SKcx$E{}WGVH7(Dw5~g))o1qV4xMi;K zJBPa7kjZ+p`Kmv)O*{D_O*i{n+(@+_PIIal`gblk>} zhkxk_-YjQDO>4-~pFX$+AnQ(ATZCPb^@v!>2OGF&wTAqc79feQ6aBE^!LEq%0&Iurz?WSm!*q*D69`jg{ filename - -function scanDir(dir) { - if (!fs.existsSync(dir)) { - console.log(`Directory not found: ${dir}`); - return; - } - console.log(`Scanning: ${dir}`); - const files = fs.readdirSync(dir, { withFileTypes: true }); - - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - scanDir(fullPath); - } else if (dirent.name.endsWith('.json')) { - try { - const content = fs.readFileSync(fullPath, 'utf8'); - const json = JSON.parse(content); - // Handle array or object - const template = Array.isArray(json) ? json[0] : json; - - if (template.id) { - if (ids.has(template.id)) { - console.error(`[DUPLICATE ID] ${template.id} found in ${dirent.name} AND ${ids.get(template.id)}`); - } else { - ids.set(template.id, dirent.name); - console.log(`[OK] ${dirent.name} (ID: ${template.id})`); - } - } else { - console.error(`[MISSING ID] ${dirent.name}`); - } - } catch (e) { - console.error(`[FAIL] ${dirent.name}: ${e.message}`); - } - } - }); -} - -// Only scan one directory (debug) to check for uniqueness within the app load -scanDir('d:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\target\\debug\\templates'); diff --git a/fix-academic-templates.ps1 b/fix-academic-templates.ps1 deleted file mode 100644 index 2774dbc..0000000 --- a/fix-academic-templates.ps1 +++ /dev/null @@ -1,111 +0,0 @@ -# Script to add missing advanced elements to all Academic templates -# Adds: del, sup, sub, mark, footnote, footnoteRef - -$academicTemplates = @( - "academic\academic-journal.json", - "academic\arctic-base.json", - "academic\botanical-textbook.json", - "academic\chemistry-lab.json", - "academic\dark-academia.json", - "academic\education-friendly.json", - "academic\emergency-room.json", - "academic\furniture-manual.json", - "academic\history-textbook.json", - "academic\kids-education.json", - "academic\mathematics-paper.json", - "academic\medical-professional.json", - "academic\phd-thesis.json", - "academic\scantron-test.json", - "academic\scientific-journal.json", - "academic\weather-radar.json" -) - -$advancedElements = @{ - "del" = @{ - "_comment_del" = "~~strikethrough~~ - deleted text" - "del" = @{ - "font" = "body" - "strikethrough" = $true - } - } - "sup" = @{ - "_comment_sup" = "^superscript^ - superscript text" - "sup" = @{ - "font" = "body" - "size" = 8 - "superScript" = $true - } - } - "sub" = @{ - "_comment_sub" = "~subscript~ - subscript text" - "sub" = @{ - "font" = "body" - "size" = 8 - "subScript" = $true - } - } - "mark" = @{ - "_comment_mark" = "==highlighted text== - marked/highlighted text" - "mark" = @{ - "font" = "body" - "background" = "accent" - "color" = "FFFFFF" - } - } - "footnote" = @{ - "_comment_footnote" = "[^1] - footnote references" - "footnote" = @{ - "font" = "body" - "size" = 9 - "color" = "textSecondary" - "superScript" = $true - } - } - "footnoteRef" = @{ - "_comment_footnote_ref" = "Footnote content at bottom of page" - "footnoteRef" = @{ - "font" = "body" - "size" = 9 - "color" = "textSecondary" - "spacing" = @{ - "before" = 6 - "after" = 6 - "line" = 1.2 - } - } - } -} - -foreach ($templatePath in $academicTemplates) { - $fullPath = "src-tauri\templates\$templatePath" - - try { - $content = Get-Content $fullPath -Raw | ConvertFrom-Json - - # Add missing elements - $modified = $false - foreach ($elementName in @('del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef')) { - if (-not $content.elements.PSObject.Properties.Name.Contains($elementName)) { - $elementData = $advancedElements[$elementName] - foreach ($prop in $elementData.Keys) { - $content.elements | Add-Member -MemberType NoteProperty -Name $prop -Value $elementData[$prop] -Force - } - $modified = $true - } - } - - if ($modified) { - # Write back with proper formatting - $json = $content | ConvertTo-Json -Depth 10 - [System.IO.File]::WriteAllLines($fullPath, $json) - Write-Host "✅ Updated: $templatePath" -ForegroundColor Green - } else { - Write-Host "⏭️ Skipped: $templatePath (already complete)" -ForegroundColor Yellow - } - - } catch { - Write-Host "❌ Error updating $templatePath`: $_" -ForegroundColor Red - } -} - -Write-Host "`n✅ Academic templates update complete!" -ForegroundColor Green diff --git a/fix_bom.cjs b/fix_bom.cjs deleted file mode 100644 index 0f94512..0000000 --- a/fix_bom.cjs +++ /dev/null @@ -1,28 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - // Remove BOM - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - console.log(`Cleaned BOM: ${fullPath}`); - } - // Trim whitespace - content = content.trim(); - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - } - }); -} - -walk(rootDir); -console.log('Finished cleaning BOMs and trimming JSON files.'); - diff --git a/fix_templates.cjs b/fix_templates.cjs deleted file mode 100644 index a1c521f..0000000 --- a/fix_templates.cjs +++ /dev/null @@ -1,50 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // Fix invalid "white" color - if (content.includes('"color": "white"')) { - content = content.replace(/"color": "white"/g, '"color": "background"'); - changed = true; - } - if (content.includes('"background": "white"')) { - content = content.replace(/"background": "white"/g, '"background": "background"'); - changed = true; - } - - // Fix border alignment from nested "border": { "bottom": ... } to "borderBottom": ... - // This is a bit tricky with regex but let's try a simple one for the common cases - const borderSides = ['top', 'bottom', 'left', 'right']; - borderSides.forEach(side => { - const searchStr = new RegExp(`"border":\\s*{\\s*"${side}":\\s*{([^}]*)}`, 'g'); - // Capture the content inside the side object - if (searchStr.test(content)) { - content = content.replace(searchStr, (match, p1) => { - const capitalizedSide = side.charAt(0).toUpperCase() + side.slice(1); - return `"border${capitalizedSide}": {${p1}}`; - }); - changed = true; - } - }); - - if (changed) { - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Updated: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished mass-correction of templates.'); diff --git a/port-core-templates.ps1 b/port-core-templates.ps1 deleted file mode 100644 index b8bcd47..0000000 --- a/port-core-templates.ps1 +++ /dev/null @@ -1,208 +0,0 @@ -# Script to port Core templates to new JSON format -# Reconstructs all 11 core templates with full 23-element structure - -$baseTemplate = Get-Content "src-tauri\templates\core\default.json" -Raw | ConvertFrom-Json - -$coreTemplates = @( - @{ - id="circus-sideshow"; name="Circus Sideshow"; category="Entertainment"; - desc="Big top aesthetic. Ornamental fonts with red and cream stripe vibes."; vibe="Fun, Ornamental, Striped"; - fonts="https://fonts.googleapis.com/css2?family=Rye&family=Sancreek&family=Roboto+Slab&display=swap"; - heading="Sancreek"; heading2="Rye"; body="Roboto Slab"; - text="212121"; accent="D32F2F"; bg="FFF8E1"; secondary="1A237E"; - h1Size=40; h1Align="center"; h1Color="D32F2F"; - h2Size=18; h2Align="center"; h2Color="1A237E"; - bodyAlign="center" - }, - @{ - id="environmental-green"; name="Environmental Green"; category="Sustainability"; - desc="Nature-inspired design for environmental and sustainability communications. Organic feel with earthy green palette."; vibe="Natural, Sustainable, Organic"; - fonts="https://fonts.googleapis.com/css2?family=Bitter:wght@400;500;700&family=Karla:wght@400;500;700&display=swap"; - heading="Bitter"; heading2="Bitter"; body="Karla"; - text="3E4A3D"; accent="2E7D32"; bg="FFFFFF"; secondary="388E3C"; - h1Size=26; h1Align="left"; h1Color="2E7D32"; - h2Size=14; h2Align="left"; h2Color="388E3C"; - bodyAlign="left" - }, - @{ - id="highway-interstate"; name="Highway Interstate"; category="Urban"; - desc="Road signage aesthetic. Reflective white text on deep highway green backgrounds."; vibe="Functional, Travel, Signage"; - fonts="https://fonts.googleapis.com/css2?family=Overpass:wght@400;700&family=Public+Sans:wght@400;700&display=swap"; - heading="Overpass"; heading2="Public Sans"; body="Public Sans"; - text="212121"; accent="00695C"; bg="FFFFFF"; secondary="004D40"; - h1Size=36; h1Align="left"; h1Color="FFFFFF"; h1Bg="00695C"; - h2Size=18; h2Align="left"; h2Color="004D40"; - bodyAlign="left" - }, - @{ - id="jungle-explorer"; name="Jungle Explorer"; category="Adventure"; - desc="Safari expedition style. Khaki, olive drab, and canvas textures."; vibe="Adventure, Khaki, Nature"; - fonts="https://fonts.googleapis.com/css2?family=Stardos+Stencil&family=Domine:wght@400;700&display=swap"; - heading="Stardos Stencil"; heading2="Domine"; body="Domine"; - text="1B1B1B"; accent="827717"; bg="F0F4C3"; secondary="558B2F"; - h1Size=36; h1Align="left"; h1Color="33691E"; - h2Size=16; h2Align="left"; h2Color="558B2F"; - bodyAlign="left" - }, - @{ - id="public-transit"; name="Public Transit"; category="Urban"; - desc="Subway map and transit signage aesthetic. Clean, highly legible sans-serifs with color-coded lines."; vibe="Urban, Functional, Color-coded"; - fonts="https://fonts.googleapis.com/css2?family=Mukta:wght@400;700&family=Hanken+Grotesk:wght@400;700&display=swap"; - heading="Hanken Grotesk"; heading2="Mukta"; body="Mukta"; - text="212121"; accent="FFC107"; bg="FFFFFF"; secondary="000000"; - h1Size=32; h1Align="left"; h1Color="000000"; - h2Size=18; h2Align="left"; h2Color="000000"; h2Bg="EEEEEE"; - bodyAlign="left" - }, - @{ - id="silent-film-intertitle"; name="Silent Film Intertitle"; category="Cinema"; - desc="1920s cinema cards. White decorative text on black backgrounds with ornate borders."; vibe="Cinema, Vintage, Dramatic"; - fonts="https://fonts.googleapis.com/css2?family=Gye-Gye&family=Sorts+Mill+Goudy&display=swap"; - heading="Gye-Gye"; heading2="Sorts Mill Goudy"; body="Sorts Mill Goudy"; - text="000000"; accent="000000"; bg="FFFFFF"; secondary="212121"; - h1Size=32; h1Align="center"; h1Color="FFFFFF"; h1Bg="000000"; - h2Size=18; h2Align="center"; h2Color="EEEEEE"; h2Bg="212121"; - bodyAlign="center"; bodySize=14 - }, - @{ - id="sports-dynamic"; name="Sports Dynamic"; category="Sports"; - desc="Energetic and bold design for sports and athletic content. Dynamic typography with high-impact colors."; vibe="Energetic, Bold, Athletic"; - fonts="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Rubik:wght@400;500;700&display=swap"; - heading="Bebas Neue"; heading2="Rubik"; body="Rubik"; - text="333333"; accent="D32F2F"; bg="FFFFFF"; secondary="1A1A1A"; - h1Size=36; h1Align="left"; h1Color="D32F2F"; - h2Size=14; h2Align="left"; h2Color="1A1A1A"; - bodyAlign="left" - }, - @{ - id="steampunk-inventor"; name="Steampunk Inventor"; category="Fantasy"; - desc="Brass and gear aesthetic. Victorian fonts with industrial metallic colors."; vibe="Mechanical, Brass, Victorian"; - fonts="https://fonts.googleapis.com/css2?family=Rye&family=Lora:wght@400;700&display=swap"; - heading="Rye"; heading2="Lora"; body="Lora"; - text="3E2723"; accent="B8860B"; bg="EFEBE9"; secondary="8D6E63"; - h1Size=30; h1Align="left"; h1Color="5D4037"; - h2Size=16; h2Align="left"; h2Color="8D6E63"; - bodyAlign="left" - }, - @{ - id="subway-tile"; name="Subway Tile"; category="Urban"; - desc="Classic station ceramics. Clean white backgrounds, heavy black text, and tile-like framing."; vibe="Clean, Ceramic, Urban"; - fonts="https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;600&family=Lexend:wght@400;700&display=swap"; - heading="Lexend"; heading2="Work Sans"; body="Work Sans"; - text="424242"; accent="000000"; bg="FFFFFF"; secondary="212121"; - h1Size=36; h1Align="center"; h1Color="000000"; - h2Size=16; h2Align="left"; h2Color="212121"; - bodyAlign="left" - }, - @{ - id="taxi-cab"; name="Taxi Cab"; category="Urban"; - desc="Yellow cab aesthetic. Checkerboard patterns (simulated) and bold black on yellow."; vibe="Urban, Yellow, Bold"; - fonts="https://fonts.googleapis.com/css2?family=Archivo+Black&family=Roboto:wght@400;700&display=swap"; - heading="Archivo Black"; heading2="Roboto"; body="Roboto"; - text="212121"; accent="FFEB3B"; bg="212121"; secondary="000000"; - h1Size=36; h1Align="center"; h1Color="000000"; h1Bg="FFEB3B"; - h2Size=18; h2Align="center"; h2Color="000000"; h2Bg="FFFFFF"; - bodyAlign="left"; bodyColor="FFFFFF"; bodySize=12 - }, - @{ - id="varsity-team"; name="Varsity Team"; category="Sport"; - desc="College sports jersey style. Block lettering with athletic gold and navy."; vibe="Athletic, College, Bold"; - fonts="https://fonts.googleapis.com/css2?family=Graduate&family=Saira:wght@400;700&display=swap"; - heading="Graduate"; heading2="Saira"; body="Saira"; - text="212121"; accent="FDD835"; bg="FFFFFF"; secondary="1A237E"; - h1Size=36; h1Align="center"; h1Color="FDD835"; h1Bg="1A237E"; - h2Size=20; h2Align="center"; h2Color="1A237E"; - bodyAlign="center"; bodySize=12 - } -) - -foreach ($t in $coreTemplates) { - $new = $baseTemplate.PSObject.Copy() - - # Metadata - $new.id = $t.id - $new.name = $t.name - $new.category = $t.category - $new.description = $t.desc - $new.vibe = $t.vibe - $new.googleFontsImport = $t.fonts - - # Typography - $new.typography.colors.text = $t.text - $new.typography.colors.accent = $t.accent - $new.typography.colors.background = $t.bg - $new.typography.colors.textSecondary = $t.secondary - $new.typography.colors.blockquoteBorder = $t.accent - - $new.typography.fonts.heading = $t.heading - $new.typography.fonts.body = $t.body - - # Elements - H1 - $new.elements.h1.font = "heading" - $new.elements.h1.size = $t.h1Size - $new.elements.h1.align = $t.h1Align - $new.elements.h1.color = if ($t.h1Color) { $t.h1Color } else { "text" } - - if ($t.h1Bg) { - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "background" -Value $t.h1Bg -Force - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "padding" -Value 16 -Force - } - - # Elements - H2 - $new.elements.h2.font = if ($t.heading2) { $t.heading2 } else { "heading" } - $new.elements.h2.size = $t.h2Size - $new.elements.h2.align = $t.h2Align - $new.elements.h2.color = if ($t.h2Color) { $t.h2Color } else { "textSecondary" } - - if ($t.h2Bg) { - $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "background" -Value $t.h2Bg -Force - $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "padding" -Value 8 -Force - $new.elements.h2 | Add-Member -MemberType NoteProperty -Name "display" -Value "inline-block" -Force - } - - # Elements - Body - $new.elements.p.align = $t.bodyAlign - $new.elements.p.color = if ($t.bodyColor) { $t.bodyColor } else { "text" } - if ($t.bodySize) { $new.elements.p.size = $t.bodySize } - - # Special borders - if ($t.id -eq "highway-interstate") { - $borderVal = @{ top=@{color="FFFFFF"; width=2; style="single"}; bottom=@{color="FFFFFF"; width=2; style="single"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "jungle-explorer") { - $borderVal = @{ bottom=@{color="827717"; width=4; style="solid"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "public-transit") { - $borderVal = @{ bottom=@{color="FFC107"; width=6; style="solid"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "silent-film-intertitle") { - $borderVal = @{ top=@{color="FFFFFF"; width=4; style="double"}; bottom=@{color="FFFFFF"; width=4; style="double"}; left=@{color="FFFFFF"; width=4; style="double"}; right=@{color="FFFFFF"; width=4; style="double"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "steampunk-inventor") { - $borderVal = @{ bottom=@{color="B8860B"; width=6; style="double"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "subway-tile") { - $borderVal = @{ top=@{color="000000"; width=4; style="solid"}; bottom=@{color="000000"; width=4; style="solid"}; left=@{color="000000"; width=4; style="solid"}; right=@{color="000000"; width=4; style="solid"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "taxi-cab") { - $borderVal = @{ top=@{color="000000"; width=6; style="dashed"}; bottom=@{color="000000"; width=6; style="dashed"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - if ($t.id -eq "varsity-team") { - $borderVal = @{ top=@{color="FDD835"; width=4; style="solid"}; bottom=@{color="FDD835"; width=4; style="solid"} } - $new.elements.h1 | Add-Member -MemberType NoteProperty -Name "border" -Value $borderVal -Force - } - - - # Save file - $path = "src-tauri\templates\core\$($t.id).json" - $json = $new | ConvertTo-Json -Depth 10 - [System.IO.File]::WriteAllLines($path, $json) - Write-Host "✅ Created $path" -ForegroundColor Green -} diff --git a/rebuild-templates.ps1 b/rebuild-templates.ps1 deleted file mode 100644 index 0942044..0000000 --- a/rebuild-templates.ps1 +++ /dev/null @@ -1,39 +0,0 @@ -# Master script to rebuild all remaining templates with modern structure -$baseTemplate = Get-Content "src-tauri\templates\core\default.json" -Raw | ConvertFrom-Json - -$templates = @( - @{path="corporate\professional.json"; id="professional"; name="Professional Business"; category="Corporate"; desc="Professional business formatting for corporate documents, reports, and proposals. Clean sans-serif typography with authoritative presence."; vibe="Corporate, Trustworthy, Polished"; fonts="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap"; heading="Open Sans"; body="Open Sans"; text="1A202C"; accent="2C5282"}, - @{path="creative\modern-portfolio.json"; id="modern-portfolio"; name="Modern Portfolio"; category="Creative"; desc="Bold, contemporary design for creative portfolios and showcases. Geometric fonts with striking visual hierarchy."; vibe="Creative, Bold, Contemporary"; fonts="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;600;700&display=swap"; heading="Space Grotesk"; body="Space Grotesk"; text="1A1A1A"; accent="E94560"}, - @{path="editorial\classic-newspaper.json"; id="classic-newspaper"; name="Classic Newspaper"; category="Editorial"; desc="Traditional newspaper-style formatting with column layout and classic serif typography."; vibe="Editorial, Timeless, Authoritative"; fonts="https://fonts.googleapis.com/css2?family=Merriweather:ital,wght@0,400;0,700;1,400&display=swap"; heading="Merriweather"; body="Merriweather"; text="1A1A1A"; accent="8B0000"}, - @{path="industrial\brutalist.json"; id="brutalist"; name="Brutalist"; category="Industrial"; desc="Raw, bold, unapologetic design inspired by brutalist architecture. Monospace typography with aggressive spacing."; vibe="Bold, Raw, Unrefined"; fonts="https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap"; heading="Roboto Mono"; body="Roboto Mono"; text="000000"; accent="FF4500"}, - @{path="lifestyle\elegant-magazine.json"; id="elegant-magazine"; name="Elegant Magazine"; category="Lifestyle"; desc="Sophisticated magazine layout with elegant serif typography and generous whitespace."; vibe="Sophisticated, Luxurious, Refined"; fonts="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400&display=swap"; heading="Cormorant Garamond"; body="Cormorant Garamond"; text="2B2B2B"; accent="D4A574"}, - @{path="tech\tech-startup.json"; id="tech-startup"; name="Tech Startup"; category="Tech"; desc="Modern, clean design for tech companies and startups. Sans-serif typography with vibrant accents."; vibe="Innovative, Modern, Dynamic"; fonts="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;600;700&display=swap"; heading="Plus Jakarta Sans"; body="Plus Jakarta Sans"; text="0F172A"; accent="6366F1"}, - @{path="vintage\retro-typewriter.json"; id="retro-typewriter"; name="Retro Typewriter"; category="Vintage"; desc="Vintage typewriter aesthetic with monospace fonts and classic styling."; vibe="Nostalgic, Classic, Authentic"; fonts="https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,400;0,700;1,400&display=swap"; heading="Courier Prime"; body="Courier Prime"; text="2C2C2C"; accent="5C4033"} -) - -foreach ($t in $templates) { - $new = $baseTemplate.PSObject.Copy() - - # Update metadata - $new.id = $t.id - $new.name = $t.name - $new.category = $t.category - $new.description = $t.desc - $new.vibe = $t.vibe - $new.googleFontsImport = $t.fonts - - # Update typography - $new.typography.fonts.heading = $t.heading - $new.typography.fonts.body = $t.body - $new.typography.colors.text = $t.text - $new.typography.colors.accent = $t.accent - $new.typography.colors.blockquoteBorder = $t.accent - - # Write to file - $json = $new | ConvertTo-Json -Depth 10 - $fullPath = "src-tauri\templates\$($t.path)" - [System.IO.File]::WriteAllLines($fullPath, $json) - Write-Host "✅ Created $($t.path)" -ForegroundColor Green -} - -Write-Host "`n✅ All templates rebuilt successfully!" -ForegroundColor Green diff --git a/remove_columns.cjs b/remove_columns.cjs deleted file mode 100644 index 7fe747c..0000000 --- a/remove_columns.cjs +++ /dev/null @@ -1,43 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - try { - const json = JSON.parse(content); - if (json.page && json.page.columns !== 1) { - json.page.columns = 1; - // Also remove gutter if it exists - if (json.page.gutter) delete json.page.gutter; - content = JSON.stringify(json, null, 4); - changed = true; - } - } catch (e) { - console.error(`Error parsing ${fullPath}: ${e.message}`); - // Fallback to regex if JSON is slightly broken (though surgery should have fixed it) - if (content.includes('"columns":')) { - content = content.replace(/"columns":\s*\d+/g, '"columns": 1'); - changed = true; - } - } - - if (changed) { - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Removed columns from: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished removing columns from all templates.'); diff --git a/restore_fonts.ps1 b/restore_fonts.ps1 deleted file mode 100644 index cd75ca0..0000000 --- a/restore_fonts.ps1 +++ /dev/null @@ -1,60 +0,0 @@ -$templatesDir = "d:\gdfhbfgdbnbdfbdf\typogenie\src-tauri\templates" -$files = Get-ChildItem -Path $templatesDir -Recurse -Filter *.json - -foreach ($file in $files) { - try { - $content = Get-Content -Path $file.FullName -Raw - - # 1. Extract Font Names using Regex - $headingFont = "Unknown" - $bodyFont = "Unknown" - $codeFont = "Unknown" - - if ($content -match '"heading":\s*"([^"]+)"') { $headingFont = $matches[1] } - if ($content -match '"body":\s*"([^"]+)"') { $bodyFont = $matches[1] } - if ($content -match '"code":\s*"([^"]+)"') { $codeFont = $matches[1] } - - if ($headingFont -eq "Unknown" -or $bodyFont -eq "Unknown") { - Write-Host "Skipping $($file.Name) - Could not parse fonts" -ForegroundColor Yellow - continue - } - - # 2. Build Google Fonts URL - # Standard weights + italics: 300, 400, 500, 600, 700 - $weights = "ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700" - - $fonts = @($headingFont, $bodyFont, $codeFont) | Select-Object -Unique - $urlParts = @() - - foreach ($font in $fonts) { - # Handle fonts that might not be Google Fonts (e.g. system fonts)? - # Assuming all current templates use Google Fonts as per design. - $encodedFont = $font -replace ' ', '+' - $urlParts += "family=$encodedFont`:$weights" - } - - $fullUrl = "https://fonts.googleapis.com/css2?" + ($urlParts -join "&") + "&display=swap" - - # 3. Repair the broken line - # Look for "googleFontsImport": "https: OR "googleFontsImport": "https:\s* - # The previous regex stripping might have left it as `"https:` (no closing quote) or `"https:""` if there was a quote after? - # Inspecting previous output: `"googleFontsImport": "https:` - - if ($content -match '"googleFontsImport":\s*"https:') { - $newLine = '"googleFontsImport": "' + $fullUrl + '",' - $newContent = $content -replace '"googleFontsImport":\s*"https:.*', $newLine - - # Double check we didn't add double commas or break structure - # The original often had a comma after. The regex `.*` eats the rest of the line. - # My replacement adds a comma. - - Set-Content -Path $file.FullName -Value $newContent -Force - Write-Host "Restored: $($file.Name)" -ForegroundColor Green - } else { - Write-Host "No repair needed or pattern not found: $($file.Name)" -ForegroundColor Gray - } - - } catch { - Write-Host "Error processing $($file.Name): $($_.Exception.Message)" -ForegroundColor Red - } -} diff --git a/scripts/convert-templates.cjs b/scripts/convert-templates.cjs deleted file mode 100644 index 3a16515..0000000 --- a/scripts/convert-templates.cjs +++ /dev/null @@ -1,81 +0,0 @@ -// Convert TypeScript templates to JSON format for user editing -const fs = require('fs'); -const path = require('path'); - -const sourceDir = path.join(__dirname, '../src/styles/templates'); -const outputDir = path.join(__dirname, '../src-tauri/templates'); - -// Ensure output directory exists -if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir, { recursive: true }); -} - -// Get all category directories -const categories = fs.readdirSync(sourceDir, { withFileTypes: true }) - .filter(dirent => dirent.isDirectory()) - .map(dirent => dirent.name); - -console.log(`Found ${categories.length} categories: ${categories.join(', ')}\n`); - -for (const category of categories) { - const categorySourcePath = path.join(sourceDir, category); - const categoryOutputPath = path.join(outputDir, category); - - // Create category directory in output - if (!fs.existsSync(categoryOutputPath)) { - fs.mkdirSync(categoryOutputPath, { recursive: true }); - } - - // Get all template files in category - const templateFiles = fs.readdirSync(categorySourcePath) - .filter(file => file.endsWith('.ts') && file !== 'index.ts'); - - console.log(`Processing category "${category}" (${templateFiles.length} templates)...`); - - for (const file of templateFiles) { - const sourceFile = path.join(categorySourcePath, file); - const content = fs.readFileSync(sourceFile, 'utf8'); - - // Extract the template object using regex - const templateMatch = content.match(/export\s+const\s+\w+\s*:\s*StyleOption\s*=\s*(\{[\s\S]*?\});\s*$/); - - if (templateMatch) { - let templateObj = templateMatch[1]; - - // Convert template literals to regular strings - templateObj = templateObj.replace(/previewCss:\s*`[\s\S]*?`/, (match) => { - const css = match.replace(/previewCss:\s*`/, '').replace(/`$/, ''); - return `previewCss: ${JSON.stringify(css.trim())}`; - }); - - // Convert single quotes to double quotes for JSON - templateObj = templateObj.replace(/'/g, '"'); - - // Remove trailing commas - templateObj = templateObj.replace(/,(\s*[}\]])/g, '$1'); - - // Fix unquoted keys - templateObj = templateObj.replace(/([{,]\s*)(\w+):/g, '$1"$2":'); - - try { - const template = JSON.parse(templateObj); - - // Validate required fields - if (template.id && template.name && template.wordConfig) { - const outputFile = path.join(categoryOutputPath, `${template.id}.json`); - fs.writeFileSync(outputFile, JSON.stringify(template, null, 2)); - console.log(` ✓ ${template.id}.json`); - } else { - console.log(` ✗ ${file} - missing required fields`); - } - } catch (error) { - console.log(` ✗ ${file} - parse error: ${error.message}`); - } - } else { - console.log(` ✗ ${file} - could not extract template`); - } - } -} - -console.log('\nDone! Templates converted to JSON format.'); -console.log(`Output directory: ${outputDir}`); diff --git a/src-tauri/TEMPLATES-README.md b/src-tauri/TEMPLATES-README.md deleted file mode 100644 index 567aca1..0000000 --- a/src-tauri/TEMPLATES-README.md +++ /dev/null @@ -1,186 +0,0 @@ -# TypoGenie Templates - -Templates in TypoGenie are stored as JSON files in the `TypoGenie-Data/templates/` folder. - -## Folder Structure - -``` -TypoGenie-Data/ -└── templates/ - ├── minimalist/ - │ ├── swiss-grid.json - │ └── minimalist-white.json - ├── tech/ - │ ├── tech-startup.json - │ └── code-editor.json - └── my-category/ ← Create new folders for custom categories! - └── my-template.json -``` - -- Each **subfolder** in `templates/` is a category -- Each **.json file** in a category folder is a template -- Categories and templates are automatically discovered when the app loads - -## Template JSON Format - -```json -{ - "id": "my-template", - "name": "My Template Name", - "category": "My Category", - "description": "A short description of this template", - "vibe": "Keywords describing the style", - "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap", - "wordConfig": { - "heading1": { - "font": "Inter", - "size": 28, - "color": "000000", - "bold": true, - "align": "left", - "spacing": { "before": 400, "after": 200, "line": 240 } - }, - "heading2": { - "font": "Inter", - "size": 16, - "color": "333333", - "bold": true, - "align": "left", - "spacing": { "before": 320, "after": 160, "line": 240 } - }, - "body": { - "font": "Inter", - "size": 10, - "color": "444444", - "align": "left", - "spacing": { "before": 0, "after": 160, "line": 280 } - }, - "accentColor": "6366F1" - }, - "previewCss": "font-family: 'Inter', sans-serif; h1 { font-size: 28pt; font-weight: 700; } h2 { font-size: 16pt; font-weight: 700; } p { font-size: 10pt; line-height: 1.6; }" -} -``` - -## Field Reference - -### Required Fields - -- **id**: Unique identifier for the template (used in filenames, no spaces) -- **name**: Display name shown in the app -- **category**: Category name (should match the folder name) -- **description**: Brief description of the template -- **wordConfig**: Microsoft Word styling configuration - - **heading1**: Style for H1 headings - - **heading2**: Style for H2 headings - - **body**: Style for body text - - **accentColor**: Accent color for borders and highlights (hex, no #) -- **previewCss**: CSS for the live preview (single line, no line breaks) - -### Optional Fields - -- **vibe**: Descriptive keywords for the template -- **googleFontsImport**: Google Fonts URL for web preview - -## Text Configuration Options - -### Font Settings -- **font**: Font family name (must be installed on user's system for Word) -- **size**: Font size in points (pt) -- **color**: Hex color code (without #) -- **bold**: true/false -- **italic**: true/false -- **allCaps**: true/false (transform text to uppercase) -- **tracking**: Character spacing (in twips, optional) -- **align**: "left", "center", "right", or "both" (justify) - -### Spacing -- **spacing.before**: Space before paragraph (in twips) -- **spacing.after**: Space after paragraph (in twips) -- **spacing.line**: Line spacing (in twips, 240 = single, 360 = 1.5, 480 = double) - -### Borders (Optional) -```json -"border": { - "top": { "color": "000000", "space": 10, "style": "single", "size": 12 }, - "bottom": { "color": "000000", "space": 10, "style": "single", "size": 12 }, - "left": { "color": "000000", "space": 10, "style": "single", "size": 24 }, - "right": { "color": "000000", "space": 10, "style": "single", "size": 12 } -} -``` - -Border styles: `"single"`, `"double"`, `"dotted"`, `"dashed"`, `"thick"` - -### Shading/Background (Optional) -```json -"shading": { - "fill": "F0F0F0", - "color": "auto", - "style": "clear" -} -``` - -## Adding Custom Templates - -1. Create a new folder in `TypoGenie-Data/templates/` (or use existing) -2. Create a `.json` file with your template configuration -3. Click the **Refresh** button in the app, or restart the app -4. Your template will appear in the style selector! - -## Tips - -- Use Google Fonts that have good Microsoft Word equivalents -- Test your template with both A4 and Letter paper sizes -- The previewCss should match the wordConfig styling as closely as possible -- Use hex colors without the # prefix -- Keep template IDs lowercase with hyphens (e.g., `my-awesome-template`) - -## Example: Dark Theme Template - -```json -{ - "id": "dark-mode", - "name": "Dark Mode", - "category": "Modern", - "description": "Dark theme with high contrast for reduced eye strain", - "vibe": "Dark, Modern, Accessible", - "googleFontsImport": "https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap", - "wordConfig": { - "heading1": { - "font": "Inter", - "size": 32, - "color": "FFFFFF", - "bold": true, - "align": "left", - "spacing": { "before": 400, "after": 200, "line": 240 }, - "shading": { "fill": "1A1A1A", "color": "auto", "style": "clear" } - }, - "heading2": { - "font": "Inter", - "size": 18, - "color": "E0E0E0", - "bold": true, - "align": "left", - "spacing": { "before": 320, "after": 160, "line": 240 } - }, - "body": { - "font": "Inter", - "size": 11, - "color": "CCCCCC", - "align": "left", - "spacing": { "before": 0, "after": 160, "line": 280 }, - "shading": { "fill": "121212", "color": "auto", "style": "clear" } - }, - "accentColor": "6366F1" - }, - "previewCss": "font-family: 'Inter', sans-serif; background: #121212; color: #CCCCCC; h1 { font-size: 32pt; font-weight: 700; color: #FFFFFF; background: #1A1A1A; padding: 16px; margin-bottom: 24px; } h2 { font-size: 18pt; font-weight: 700; color: #E0E0E0; margin-top: 32px; margin-bottom: 16px; } p { font-size: 11pt; line-height: 1.6; color: #CCCCCC; margin-bottom: 14px; }" -} -``` - -## Troubleshooting - -- **Template not showing**: Check that the JSON is valid (use a JSON validator) -- **Fonts not working**: Ensure the font is installed on your system -- **Preview looks different from Word**: Adjust previewCss to match wordConfig -- **Category not showing**: Make sure the folder contains at least one valid .json file - -Click **Refresh** in the app to reload templates without restarting! diff --git a/src/components/CustomScrollbar.tsx b/src/components/CustomScrollbar.tsx deleted file mode 100644 index b1863a7..0000000 --- a/src/components/CustomScrollbar.tsx +++ /dev/null @@ -1,272 +0,0 @@ -import React, { useRef, useEffect, useState, useCallback } from 'react'; - -interface CustomScrollbarProps { - children: React.ReactNode; - className?: string; - horizontal?: boolean; -} - -export const CustomScrollbar: React.FC = ({ - children, - className = '', - horizontal = false -}) => { - const containerRef = useRef(null); - const thumbRef = useRef(null); - - const [isHoveringContainer, setIsHoveringContainer] = useState(false); - const [isHoveringTrack, setIsHoveringTrack] = useState(false); - const [isDragging, setIsDragging] = useState(false); - const [thumbSize, setThumbSize] = useState(40); - - // Drag state - const dragState = useRef({ - isActive: false, - startMouse: 0, - startScroll: 0, - trackSize: 0, - maxScroll: 0 - }); - - // Update thumb size - const updateMetrics = useCallback(() => { - const container = containerRef.current; - if (!container) return; - - if (horizontal) { - const ratio = container.clientWidth / Math.max(container.scrollWidth, 1); - setThumbSize(Math.max(40, ratio * container.clientWidth)); - } else { - const ratio = container.clientHeight / Math.max(container.scrollHeight, 1); - setThumbSize(Math.max(40, ratio * container.clientHeight)); - } - - updateThumbVisual(); - }, [horizontal]); - - // Update thumb position from scroll - const updateThumbVisual = useCallback(() => { - const container = containerRef.current; - const thumb = thumbRef.current; - if (!container || !thumb) return; - - if (dragState.current.isActive) return; - - if (horizontal) { - const maxScroll = container.scrollWidth - container.clientWidth; - const trackSize = container.clientWidth - thumbSize; - if (maxScroll <= 0 || trackSize <= 0) { - thumb.style.transform = 'translateX(0px)'; - return; - } - const ratio = container.scrollLeft / maxScroll; - thumb.style.transform = `translateX(${ratio * trackSize}px)`; - } else { - const maxScroll = container.scrollHeight - container.clientHeight; - const trackSize = container.clientHeight - thumbSize; - if (maxScroll <= 0 || trackSize <= 0) { - thumb.style.transform = 'translateY(0px)'; - return; - } - const ratio = container.scrollTop / maxScroll; - thumb.style.transform = `translateY(${ratio * trackSize}px)`; - } - }, [horizontal, thumbSize]); - - // Setup - useEffect(() => { - updateMetrics(); - - const handleResize = () => updateMetrics(); - window.addEventListener('resize', handleResize); - - const observer = new MutationObserver(() => updateMetrics()); - if (containerRef.current) { - observer.observe(containerRef.current, { childList: true, subtree: true }); - } - - return () => { - window.removeEventListener('resize', handleResize); - observer.disconnect(); - }; - }, [updateMetrics]); - - // Scroll listener - useEffect(() => { - const container = containerRef.current; - if (!container) return; - - const onScroll = () => { - if (!dragState.current.isActive) { - updateThumbVisual(); - } - }; - - container.addEventListener('scroll', onScroll, { passive: true }); - return () => container.removeEventListener('scroll', onScroll); - }, [updateThumbVisual]); - - // Drag handling - DIRECT synchronous updates - useEffect(() => { - if (!isDragging) { - // Restore transition when not dragging - if (thumbRef.current) { - thumbRef.current.style.transition = 'opacity 0.15s, width 0.15s, height 0.15s'; - } - return; - } - - const container = containerRef.current; - const thumb = thumbRef.current; - if (!container || !thumb) return; - - const state = dragState.current; - state.isActive = true; - - // REMOVE transition during drag for instant response - thumb.style.transition = 'none'; - - const handleMouseMove = (e: MouseEvent) => { - const mousePos = horizontal ? e.clientX : e.clientY; - const deltaMouse = mousePos - state.startMouse; - const scrollRatio = deltaMouse / state.trackSize; - const newScroll = state.startScroll + (scrollRatio * state.maxScroll); - const clampedScroll = Math.max(0, Math.min(newScroll, state.maxScroll)); - - if (horizontal) { - container.scrollLeft = clampedScroll; - const visualRatio = state.maxScroll > 0 ? clampedScroll / state.maxScroll : 0; - thumb.style.transform = `translateX(${visualRatio * state.trackSize}px)`; - } else { - container.scrollTop = clampedScroll; - const visualRatio = state.maxScroll > 0 ? clampedScroll / state.maxScroll : 0; - thumb.style.transform = `translateY(${visualRatio * state.trackSize}px)`; - } - }; - - const handleMouseUp = () => { - state.isActive = false; - setIsDragging(false); - // Transition will be restored by effect cleanup - }; - - document.addEventListener('mousemove', handleMouseMove); - document.addEventListener('mouseup', handleMouseUp); - - return () => { - document.removeEventListener('mousemove', handleMouseMove); - document.removeEventListener('mouseup', handleMouseUp); - state.isActive = false; - }; - }, [isDragging, horizontal]); - - const handleThumbMouseDown = (e: React.MouseEvent) => { - e.preventDefault(); - e.stopPropagation(); - - const container = containerRef.current; - const thumb = thumbRef.current; - if (!container || !thumb) return; - - const state = dragState.current; - - if (horizontal) { - state.startMouse = e.clientX; - state.startScroll = container.scrollLeft; - state.trackSize = container.clientWidth - thumbSize; - state.maxScroll = container.scrollWidth - container.clientWidth; - } else { - state.startMouse = e.clientY; - state.startScroll = container.scrollTop; - state.trackSize = container.clientHeight - thumbSize; - state.maxScroll = container.scrollHeight - container.clientHeight; - } - - // Remove transition immediately on mouse down - thumb.style.transition = 'none'; - setIsDragging(true); - }; - - const handleTrackClick = (e: React.MouseEvent) => { - if (e.target === thumbRef.current) return; - - const container = containerRef.current; - if (!container) return; - - const rect = container.getBoundingClientRect(); - - if (horizontal) { - const clickX = e.clientX - rect.left; - const percentage = clickX / rect.width; - container.scrollTo({ - left: percentage * (container.scrollWidth - container.clientWidth), - behavior: 'smooth' - }); - } else { - const clickY = e.clientY - rect.top; - const percentage = clickY / rect.height; - container.scrollTo({ - top: percentage * (container.scrollHeight - container.clientHeight), - behavior: 'smooth' - }); - } - }; - - const isActive = isHoveringTrack || isDragging; - const opacity = isActive ? 0.6 : (isHoveringContainer ? 0.2 : 0); - const size = isActive ? '6px' : '2px'; - - return ( -
setIsHoveringContainer(true)} - onMouseLeave={() => { - setIsHoveringContainer(false); - if (!isDragging) setIsHoveringTrack(false); - }} - > -
- {children} -
- -
setIsHoveringTrack(true)} - onMouseLeave={() => { if (!isDragging) setIsHoveringTrack(false); }} - onClick={handleTrackClick} - > -
-
- - -
- ); -}; diff --git a/src/styles/templates/academic/academic-journal.ts b/src/styles/templates/academic/academic-journal.ts deleted file mode 100644 index e09b649..0000000 --- a/src/styles/templates/academic/academic-journal.ts +++ /dev/null @@ -1,153 +0,0 @@ -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 } - } - } -}; diff --git a/src/styles/templates/academic/arctic-base.ts b/src/styles/templates/academic/arctic-base.ts deleted file mode 100644 index 637d9c6..0000000 --- a/src/styles/templates/academic/arctic-base.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const arcticBase: StyleOption = { - id: 'arctic-base', - name: 'Arctic Base', - category: 'Scientific', - description: 'Polar research station. Stark white and ice blues with minimal sterile typography.', - vibe: 'Cold, Sterile, Blue', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Iceland&family=Roboto:wght@300;400&display=swap', - typography: { - fonts: { - heading: 'Iceland', - body: 'Roboto', - code: 'Roboto' - }, - colors: { - text: '455A64', - textSecondary: '78909C', - background: 'FFFFFF', - accent: '0288D1', - border: '01579B', - codeBg: 'E3F2FD', - blockquoteBorder: '0277BD' - } - }, - elements: { - h1: { - font: 'heading', - size: 36, - color: '01579B', - bold: false, - align: 'left', - background: 'E1F5FE', - spacing: { before: 20, after: 10, line: 1.2 }, - borderLeft: { color: '01579B', width: 4, style: 'solid' }, - padding: 12 - }, - h2: { - font: 'body', - size: 18, - color: '0277BD', - bold: true, - align: 'left', - allCaps: true, - spacing: { before: 16, after: 8, line: 1.2 } - }, - h3: { - font: 'body', - size: 16, - color: '0288D1', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'body', - size: 14, - color: '0288D1', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'body', - size: 12, - color: '039BE5', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'body', - size: 11, - color: '039BE5', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '455A64', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: '0277BD', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 16, - background: 'F0F8FF', - border: { color: 'B3E5FC', width: 1, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: '01579B', - background: 'E3F2FD' - }, - pre: { - font: 'code', - size: 10, - color: '01579B', - background: 'E3F2FD', - 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: 11, - color: '455A64', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '0288D1', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '01579B', - bold: true, - background: 'E1F5FE', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '455A64', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '81D4FA', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/botanical-textbook.ts b/src/styles/templates/academic/botanical-textbook.ts deleted file mode 100644 index 04b6432..0000000 --- a/src/styles/templates/academic/botanical-textbook.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const botanicalTextbook: StyleOption = { - id: 'botanical-textbook', - name: 'Botanical Textbook', - category: 'Scientific', - description: 'Vintage science textbook aesthetic. Academic yet organic, like a 19th-century flora guide.', - vibe: 'Vintage, Scientific, Organic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Alice&family=Gentium+Book+Basic:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Alice', - body: 'Gentium Book Basic', - code: 'Gentium Book Basic' - }, - colors: { - text: '1B1B1B', - textSecondary: '33691E', - background: 'FFFFFF', - accent: '827717', - border: '827717', - codeBg: 'F9FBE7', - blockquoteBorder: '827717' - } - }, - elements: { - h1: { - font: 'heading', - size: 28, - color: '33691E', - bold: false, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 }, - border: { color: '827717', width: 2, style: 'single' } - }, - h2: { - font: 'body', - size: 14, - color: '558B2F', - bold: true, - italic: true, - align: 'left', - spacing: { before: 15, after: 7.5, line: 1.2 } - }, - h3: { - font: 'body', - size: 13, - color: '558B2F', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'body', - size: 12, - color: '689F38', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'body', - size: 11, - color: '689F38', - bold: true, - italic: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'body', - size: 11, - color: '7CB342', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '1B1B1B', - align: 'both', - spacing: { before: 0, after: 8, line: 1.7 } - }, - blockquote: { - font: 'body', - size: 10, - color: '33691E', - spacing: { before: 10, after: 10, line: 1.5 }, - padding: 16, - background: 'F9FBE7', - borderLeft: { color: '827717', width: 4, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: '33691E', - background: 'F9FBE7' - }, - pre: { - font: 'code', - size: 10, - color: '33691E', - background: 'F9FBE7', - 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: 11, - color: '1B1B1B', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '558B2F', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '33691E', - bold: true, - background: 'F0F4C3', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '1B1B1B', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '827717', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/chemistry-lab.ts b/src/styles/templates/academic/chemistry-lab.ts deleted file mode 100644 index d967752..0000000 --- a/src/styles/templates/academic/chemistry-lab.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const chemistryLab: StyleOption = { - id: 'chemistry-lab', - name: 'Chemistry Lab', - category: 'Scientific', - description: 'Clean, molecular design. Modern thin typography suitable for diagrams and formulas.', - vibe: 'Scientific, Modern, Molecular', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Advent+Pro:wght@400;600;700&family=Heebo:wght@300;400;500&display=swap', - typography: { - fonts: { - heading: 'Advent Pro', - body: 'Heebo', - code: 'Advent Pro' - }, - colors: { - text: '37474F', - textSecondary: '546E7A', - background: 'FFFFFF', - accent: '00BCD4', - border: '00BCD4', - codeBg: 'E0F7FA', - blockquoteBorder: '00BCD4' - } - }, - elements: { - h1: { - font: 'heading', - size: 32, - color: '00BCD4', - bold: true, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 } - }, - h2: { - font: 'body', - size: 16, - color: '0097A7', - bold: true, - align: 'left', - spacing: { before: 16, after: 8, line: 1.2 } - }, - h3: { - font: 'body', - size: 14, - color: '00838F', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'body', - size: 12, - color: '00838F', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'body', - size: 11, - color: '006064', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'body', - size: 10, - color: '006064', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 10, - color: '37474F', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: '0097A7', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 16, - background: 'E0F7FA', - border: { color: '00BCD4', width: 1, style: 'solid' } - }, - code: { - font: 'code', - size: 9, - color: '00838F', - background: 'E0F7FA' - }, - pre: { - font: 'code', - size: 9, - color: '00838F', - background: 'E0F7FA', - 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: '37474F', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '00BCD4', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 10, - color: '00BCD4', - bold: true, - background: 'E0F7FA', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 10, - color: '37474F', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'B2EBF2', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/dark-academia.ts b/src/styles/templates/academic/dark-academia.ts deleted file mode 100644 index a689bc7..0000000 --- a/src/styles/templates/academic/dark-academia.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const darkAcademia: StyleOption = { - id: 'dark-academia', - name: 'Dark Academia', - category: 'Academic', - description: 'Moody, literary aesthetic. Tweed textures, old libraries, and classic serif typography.', - vibe: 'Moody, Scholarly, Literary', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Alegreya:wght@400;700&family=Alegreya+SC:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Alegreya SC', - body: 'Alegreya', - code: 'Alegreya' - }, - colors: { - text: '212121', - textSecondary: '4E342E', - background: 'F5F1E8', - accent: '5D4037', - border: '5D4037', - codeBg: 'EFEBE9', - blockquoteBorder: '3E2723' - } - }, - elements: { - h1: { - font: 'heading', - size: 28, - color: '3E2723', - bold: true, - align: 'center', - spacing: { before: 24, after: 14, line: 1.2 }, - border: { color: '5D4037', width: 4, style: 'double' } - }, - h2: { - font: 'body', - size: 16, - color: '4E342E', - bold: true, - italic: true, - align: 'left', - spacing: { before: 18, after: 9, line: 1.2 } - }, - h3: { - font: 'body', - size: 14, - color: '4E342E', - bold: true, - align: 'left', - spacing: { before: 15, after: 7.5, line: 1.2 } - }, - h4: { - font: 'body', - size: 12, - color: '5D4037', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'body', - size: 11, - color: '5D4037', - bold: true, - italic: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'body', - size: 10, - color: '6D4C41', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '212121', - align: 'both', - spacing: { before: 0, after: 9, line: 1.8 } - }, - blockquote: { - font: 'body', - size: 10, - color: '4E342E', - italic: true, - spacing: { before: 14, after: 14, line: 1.6 }, - padding: 10, - borderLeft: { color: '3E2723', width: 2, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: '3E2723', - background: 'EFEBE9' - }, - pre: { - font: 'code', - size: 10, - color: '3E2723', - background: 'EFEBE9', - 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: 11, - color: '212121', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '5D4037', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '3E2723', - bold: true, - background: 'EFEBE9', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '212121', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '5D4037', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/education-friendly.ts b/src/styles/templates/academic/education-friendly.ts deleted file mode 100644 index 01c2984..0000000 --- a/src/styles/templates/academic/education-friendly.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const educationFriendly: StyleOption = { - id: 'education-friendly', - name: 'Education Friendly', - category: 'Education', - description: 'Approachable and clear design for educational materials. High readability with friendly colors suitable for learning environments.', - vibe: 'Friendly, Educational, Accessible', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap', - typography: { - fonts: { - heading: 'Nunito', - body: 'Nunito', - code: 'Nunito' - }, - colors: { - text: '424242', - textSecondary: '616161', - background: 'FFFFFF', - accent: '5E35B1', - border: '7E57C2', - codeBg: 'EDE7F6', - blockquoteBorder: '7E57C2' - } - }, - elements: { - h1: { - font: 'heading', - size: 24, - color: '5E35B1', - bold: true, - align: 'left', - background: 'EDE7F6', - spacing: { before: 20, after: 10, line: 1.2 }, - padding: 16, - border: { color: 'D1C4E9', width: 1, style: 'solid' } - }, - h2: { - font: 'heading', - size: 14, - color: '7E57C2', - bold: true, - align: 'left', - spacing: { before: 15, after: 7.5, line: 1.2 } - }, - h3: { - font: 'heading', - size: 13, - color: '7E57C2', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'heading', - size: 12, - color: '9575CD', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'heading', - size: 11, - color: '9575CD', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'heading', - size: 11, - color: 'B39DDB', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '424242', - align: 'left', - spacing: { before: 0, after: 8, line: 1.7 } - }, - blockquote: { - font: 'body', - size: 10, - color: '5E35B1', - spacing: { before: 10, after: 10, line: 1.5 }, - padding: 16, - background: 'F3E5F5', - borderLeft: { color: '7E57C2', width: 4, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: '5E35B1', - background: 'EDE7F6' - }, - pre: { - font: 'code', - size: 10, - color: '5E35B1', - background: 'EDE7F6', - 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: 11, - color: '424242', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '5E35B1', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '5E35B1', - bold: true, - background: 'EDE7F6', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '424242', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'D1C4E9', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/emergency-room.ts b/src/styles/templates/academic/emergency-room.ts deleted file mode 100644 index 344eba6..0000000 --- a/src/styles/templates/academic/emergency-room.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const emergencyRoom: StyleOption = { - id: 'emergency-room', - name: 'Emergency Room', - category: 'Medical', - description: 'Hospital signage. Sterile white, urgent red, and clean blue.', - vibe: 'Sterile, Urgent, Clean', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Assistant:wght@400;700&family=Heebo:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Assistant', - body: 'Heebo', - code: 'Heebo' - }, - colors: { - text: '424242', - textSecondary: '616161', - background: 'FFFFFF', - accent: 'D50000', - border: 'D50000', - codeBg: 'FFEBEE', - blockquoteBorder: 'D50000' - } - }, - elements: { - h1: { - font: 'heading', - size: 36, - color: 'D50000', - bold: true, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 }, - border: { color: 'D50000', width: 4, style: 'single' } - }, - h2: { - font: 'body', - size: 18, - color: '2962FF', - bold: true, - allCaps: true, - align: 'left', - spacing: { before: 16, after: 8, line: 1.2 } - }, - h3: { - font: 'body', - size: 15, - color: '2962FF', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'body', - size: 13, - color: '2979FF', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'body', - size: 12, - color: '2979FF', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'body', - size: 11, - color: '448AFF', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '424242', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: 'D50000', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 16, - background: 'FFEBEE', - borderLeft: { color: 'D50000', width: 6, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: 'D50000', - background: 'FFEBEE' - }, - pre: { - font: 'code', - size: 10, - color: 'D50000', - background: 'FFEBEE', - 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: 11, - color: '424242', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '2962FF', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: 'D50000', - bold: true, - background: 'FFEBEE', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '424242', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'EF5350', width: 3, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/furniture-manual.ts b/src/styles/templates/academic/furniture-manual.ts deleted file mode 100644 index a2f562b..0000000 --- a/src/styles/templates/academic/furniture-manual.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const furnitureManual: StyleOption = { - id: 'furniture-manual', - name: 'Furniture Manual', - category: 'Instructional', - description: 'Flat-pack assembly guide. Clean, heavy line art vibes with friendly sans-serifs.', - vibe: 'Clean, Instructional, Neutral', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Varela+Round&family=Hind:wght@300;600&display=swap', - typography: { - fonts: { - heading: 'Varela Round', - body: 'Hind', - code: 'Hind' - }, - colors: { - text: '424242', - textSecondary: '616161', - background: 'FFFFFF', - accent: '000000', - border: '000000', - codeBg: 'F5F5F5', - blockquoteBorder: '000000' - } - }, - elements: { - h1: { - font: 'heading', - size: 32, - color: '000000', - bold: false, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 } - }, - h2: { - font: 'heading', - size: 16, - color: '000000', - bold: false, - align: 'left', - background: 'F5F5F5', - spacing: { before: 16, after: 8, line: 1.2 }, - borderLeft: { color: '000000', width: 4, style: 'single' }, - border: { color: '000000', width: 2, style: 'single' }, - padding: 8 - }, - h3: { - font: 'heading', - size: 14, - color: '000000', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'heading', - size: 12, - color: '212121', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'heading', - size: 11, - color: '424242', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'heading', - size: 10, - color: '616161', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '424242', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'heading', - size: 12, - color: '212121', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 20, - background: 'F5F5F5', - border: { color: '000000', width: 2, style: 'single' } - }, - code: { - font: 'code', - size: 10, - color: '000000', - background: 'F5F5F5' - }, - pre: { - font: 'code', - size: 10, - color: '000000', - 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: 11, - color: '424242', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '000000', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '000000', - bold: true, - background: 'F5F5F5', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '424242', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '000000', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/history-textbook.ts b/src/styles/templates/academic/history-textbook.ts deleted file mode 100644 index e133555..0000000 --- a/src/styles/templates/academic/history-textbook.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const historyTextbook: StyleOption = { - id: 'history-textbook', - name: 'History Textbook', - category: 'Academic', - description: 'Classic textbook design. Sepia tones, distinct serif headers, and wide margins for notes.', - vibe: 'Classic, Educational, Historical', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Goudy+Bookletter+1911&family=Sorts+Mill+Goudy&display=swap', - typography: { - fonts: { - heading: 'Goudy Bookletter 1911', - body: 'Sorts Mill Goudy', - code: 'Sorts Mill Goudy' - }, - colors: { - text: '212121', - textSecondary: '3E2723', - background: 'FFF8E1', - accent: '8D6E63', - border: '8D6E63', - codeBg: 'FFF3E0', - blockquoteBorder: '8D6E63' - } - }, - elements: { - h1: { - font: 'heading', - size: 28, - color: '5D4037', - bold: false, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 }, - border: { color: '8D6E63', width: 2, style: 'single' } - }, - h2: { - font: 'body', - size: 16, - color: '3E2723', - bold: false, - align: 'left', - spacing: { before: 15, after: 7.5, line: 1.2 } - }, - h3: { - font: 'body', - size: 14, - color: '4E342E', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'body', - size: 12, - color: '5D4037', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'body', - size: 11, - color: '6D4C41', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'body', - size: 10, - color: '795548', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '212121', - align: 'left', - spacing: { before: 0, after: 8, line: 1.7 } - }, - blockquote: { - font: 'body', - size: 10, - color: '3E2723', - spacing: { before: 10, after: 10, line: 1.5 }, - padding: 16, - background: 'FFFFFF', - border: { color: '8D6E63', width: 1, style: 'single' } - }, - code: { - font: 'code', - size: 10, - color: '5D4037', - background: 'FFF3E0' - }, - pre: { - font: 'code', - size: 10, - color: '5D4037', - background: 'FFF3E0', - 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: 11, - color: '212121', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '5D4037', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '5D4037', - bold: true, - background: 'FFF3E0', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '212121', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '8D6E63', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/index.ts b/src/styles/templates/academic/index.ts deleted file mode 100644 index 56a2276..0000000 --- a/src/styles/templates/academic/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; -import { academicJournal } from './academic-journal'; -import { arcticBase } from './arctic-base'; -import { botanicalTextbook } from './botanical-textbook'; -import { chemistryLab } from './chemistry-lab'; -import { darkAcademia } from './dark-academia'; -import { educationFriendly } from './education-friendly'; -import { emergencyRoom } from './emergency-room'; -import { furnitureManual } from './furniture-manual'; -import { historyTextbook } from './history-textbook'; -import { kidsEducation } from './kids-education'; -import { mathematicsPaper } from './mathematics-paper'; -import { medicalProfessional } from './medical-professional'; -import { phdThesis } from './phd-thesis'; -import { scantronTest } from './scantron-test'; -import { scientificJournal } from './scientific-journal'; -import { weatherRadar } from './weather-radar'; - -export const academicStyles: StyleOption[] = [ - academicJournal, - arcticBase, - botanicalTextbook, - chemistryLab, - darkAcademia, - educationFriendly, - emergencyRoom, - furnitureManual, - historyTextbook, - kidsEducation, - mathematicsPaper, - medicalProfessional, - phdThesis, - scantronTest, - scientificJournal, - weatherRadar -]; diff --git a/src/styles/templates/academic/kids-education.ts b/src/styles/templates/academic/kids-education.ts deleted file mode 100644 index 0108e07..0000000 --- a/src/styles/templates/academic/kids-education.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const kidsEducation: StyleOption = { - id: 'kids-education', - name: 'Kids Education', - category: 'Education', - description: 'Fun and engaging design for children\'s educational content. Rounded typography with bright, cheerful colors.', - vibe: 'Educational, Fun, Engaging', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600&display=swap', - typography: { - fonts: { - heading: 'Fredoka', - body: 'Fredoka', - code: 'Fredoka' - }, - colors: { - text: '495057', - textSecondary: '6C757D', - background: 'FFFFFF', - accent: 'FF6B6B', - border: 'FF6B6B', - codeBg: 'FFF9DB', - blockquoteBorder: '4ECDC4' - } - }, - elements: { - h1: { - font: 'heading', - size: 32, - color: 'FF6B6B', - bold: true, - align: 'center', - background: 'FFF9DB', - spacing: { before: 20, after: 12, line: 1.2 }, - padding: 16, - border: { color: 'FFE066', width: 2, style: 'solid' } - }, - h2: { - font: 'heading', - size: 18, - color: '4ECDC4', - bold: true, - align: 'left', - spacing: { before: 16, after: 8, line: 1.2 } - }, - h3: { - font: 'heading', - size: 15, - color: '45B7D1', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'heading', - size: 13, - color: '45B7D1', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'heading', - size: 12, - color: '96CEB4', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'heading', - size: 11, - color: '96CEB4', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 12, - color: '495057', - align: 'left', - spacing: { before: 0, after: 9, line: 1.8 } - }, - blockquote: { - font: 'body', - size: 11, - color: '4ECDC4', - spacing: { before: 10, after: 10, line: 1.6 }, - padding: 16, - background: 'E3F9F8', - borderLeft: { color: '4ECDC4', width: 6, style: 'solid' } - }, - code: { - font: 'code', - size: 11, - color: 'FF6B6B', - background: 'FFF9DB' - }, - pre: { - font: 'code', - size: 11, - color: 'FF6B6B', - background: 'FFF9DB', - 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: 12, - color: '495057', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: 'FF6B6B', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 12, - color: 'FF6B6B', - bold: true, - background: 'FFF9DB', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 12, - color: '495057', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'FFE066', width: 3, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/mathematics-paper.ts b/src/styles/templates/academic/mathematics-paper.ts deleted file mode 100644 index 44a1e0b..0000000 --- a/src/styles/templates/academic/mathematics-paper.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const mathematicsPaper: StyleOption = { - id: 'mathematics-paper', - name: 'Mathematics Paper', - category: 'Academic', - description: 'Inspired by LaTeX and Computer Modern. Serif-heavy, precise, and highly legible for academic rigor.', - vibe: 'Academic, Rigorous, Formal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Domine:wght@400;700&family=Noticia+Text:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Domine', - body: 'Noticia Text', - code: 'Noticia Text' - }, - colors: { - text: '212121', - textSecondary: '424242', - background: 'FFFFFF', - accent: '000000', - border: '000000', - codeBg: 'F5F5F5', - blockquoteBorder: '000000' - } - }, - elements: { - h1: { - font: 'heading', - size: 24, - color: '000000', - bold: true, - align: 'center', - spacing: { before: 20, after: 12, line: 1.2 } - }, - h2: { - font: 'heading', - size: 14, - color: '000000', - bold: true, - align: 'left', - spacing: { before: 16, after: 8, line: 1.2 } - }, - h3: { - font: 'heading', - size: 12, - color: '000000', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'body', - size: 11, - color: '212121', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'body', - size: 10, - color: '424242', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'body', - size: 10, - color: '616161', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: '212121', - align: 'both', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: '212121', - italic: true, - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 10, - background: 'F5F5F5', - borderLeft: { color: '000000', width: 3, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: '000000', - background: 'F5F5F5' - }, - pre: { - font: 'code', - size: 10, - color: '000000', - 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: 11, - color: '212121', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '000000', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: '000000', - bold: true, - background: 'F5F5F5', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: '212121', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '000000', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/medical-professional.ts b/src/styles/templates/academic/medical-professional.ts deleted file mode 100644 index 5f08eca..0000000 --- a/src/styles/templates/academic/medical-professional.ts +++ /dev/null @@ -1,153 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const medicalProfessional: StyleOption = { - id: 'medical-professional', - name: 'Medical Professional', - category: 'Healthcare', - description: 'Clean, clinical design for healthcare and medical documentation. Emphasizes clarity and professionalism with calming blue accents.', - vibe: 'Clinical, Professional, Trustworthy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap', - typography: { - fonts: { - heading: 'Open Sans', - body: 'Open Sans', - code: 'Open Sans' - }, - colors: { - text: '37474F', - textSecondary: '546E7A', - background: 'FFFFFF', - accent: '1565C0', - border: '0D47A1', - codeBg: 'E3F2FD', - blockquoteBorder: '1565C0' - } - }, - elements: { - h1: { - font: 'heading', - size: 20, - color: '1565C0', - bold: true, - align: 'left', - spacing: { before: 18, after: 10, line: 1.2 } - }, - h2: { - font: 'heading', - size: 13, - color: '0D47A1', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h3: { - font: 'heading', - size: 12, - color: '1565C0', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'heading', - size: 11, - color: '1976D2', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'heading', - size: 10, - color: '1976D2', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'heading', - size: 10, - color: '2196F3', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 10, - color: '37474F', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: '1565C0', - spacing: { before: 10, after: 10, line: 1.5 }, - padding: 16, - background: 'E3F2FD', - borderLeft: { color: '1565C0', width: 4, style: 'solid' } - }, - code: { - font: 'code', - size: 9, - color: '0D47A1', - background: 'E3F2FD' - }, - pre: { - font: 'code', - size: 9, - color: '0D47A1', - background: 'E3F2FD', - 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: '37474F', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '1565C0', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 10, - color: '1565C0', - bold: true, - background: 'E3F2FD', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 10, - color: '37474F', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '90CAF9', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/phd-thesis.ts b/src/styles/templates/academic/phd-thesis.ts deleted file mode 100644 index 9369b91..0000000 --- a/src/styles/templates/academic/phd-thesis.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const phdThesis: StyleOption = { - id: 'phd-thesis', - name: 'PhD Thesis', - category: 'Academic', - description: 'The pinnacle of academic formatting. Extremely legible serif body, double spacing, and rigorous margin structure.', - vibe: 'Formal, Scholarly, Prestigious', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Tinos:wght@400;700&family=Crimson+Text:wght@400;600&display=swap', - typography: { - fonts: { - heading: 'Tinos', - body: 'Crimson Text', - code: 'Crimson Text' - }, - colors: { - text: '000000', - textSecondary: '424242', - background: 'FFFFFF', - accent: '000000', - border: '000000', - codeBg: 'F5F5F5', - blockquoteBorder: '000000' - } - }, - elements: { - h1: { - font: 'heading', - size: 24, - color: '000000', - bold: true, - allCaps: true, - align: 'center', - spacing: { before: 24, after: 12, line: 1.2 } - }, - h2: { - font: 'heading', - size: 14, - color: '000000', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h3: { - font: 'heading', - size: 12, - color: '000000', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'body', - size: 11, - color: '212121', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'body', - size: 10, - color: '424242', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'body', - size: 10, - color: '616161', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 12, - color: '000000', - align: 'both', - spacing: { before: 0, after: 0, line: 2.0 } - }, - blockquote: { - font: 'body', - size: 11, - color: '000000', - italic: true, - spacing: { before: 12, after: 12, line: 2.0 }, - padding: 10, - indent: 40 - }, - code: { - font: 'code', - size: 11, - color: '000000', - background: 'F5F5F5' - }, - pre: { - font: 'code', - size: 11, - color: '000000', - background: 'F5F5F5', - spacing: { before: 12, after: 12, line: 1.4 }, - padding: 12 - }, - ul: { - spacing: { before: 8, after: 8, line: 2.0 } - }, - ol: { - spacing: { before: 8, after: 8, line: 2.0 } - }, - li: { - font: 'body', - size: 12, - color: '000000', - spacing: { before: 4, after: 4, line: 2.0 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '000000', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 12, - color: '000000', - bold: true, - background: 'F5F5F5', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 12, - color: '000000', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '000000', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/scantron-test.ts b/src/styles/templates/academic/scantron-test.ts deleted file mode 100644 index 50f1d55..0000000 --- a/src/styles/templates/academic/scantron-test.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const scantronTest: StyleOption = { - id: 'scantron-test', - name: 'Scantron Test', - category: 'Academic', - description: 'Standardized testing sheet. Salmon pinks and greens with bubble-filling aesthetics.', - vibe: 'Academic, Retro, Bureaucratic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Roboto Mono', - body: 'Roboto Mono', - code: 'Roboto Mono' - }, - colors: { - text: '212121', - textSecondary: '424242', - background: 'FFF3E0', - accent: 'EF5350', - border: 'B71C1C', - codeBg: 'FFEBEE', - blockquoteBorder: 'B71C1C' - } - }, - elements: { - h1: { - font: 'heading', - size: 28, - color: 'B71C1C', - bold: true, - align: 'left', - spacing: { before: 20, after: 10, line: 1.2 }, - border: { color: 'EF5350', width: 2, style: 'single' } - }, - h2: { - font: 'heading', - size: 14, - color: '1B5E20', - bold: true, - align: 'left', - background: 'C8E6C9', - spacing: { before: 16, after: 8, line: 1.2 }, - padding: 4 - }, - h3: { - font: 'heading', - size: 12, - color: '2E7D32', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'heading', - size: 11, - color: '388E3C', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'heading', - size: 10, - color: '43A047', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'heading', - size: 10, - color: '4CAF50', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 10, - color: '212121', - align: 'left', - spacing: { before: 0, after: 8, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 10, - color: 'B71C1C', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 16, - background: 'FFEBEE', - border: { color: 'B71C1C', width: 1, style: 'solid' } - }, - code: { - font: 'code', - size: 9, - color: 'B71C1C', - background: 'FFEBEE' - }, - pre: { - font: 'code', - size: 9, - color: 'B71C1C', - background: 'FFEBEE', - 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: '212121', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: 'B71C1C', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 10, - color: 'B71C1C', - bold: true, - background: 'FFEBEE', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 10, - color: '212121', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'EF5350', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/scientific-journal.ts b/src/styles/templates/academic/scientific-journal.ts deleted file mode 100644 index ce1ed85..0000000 --- a/src/styles/templates/academic/scientific-journal.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const scientificJournal: StyleOption = { - id: 'scientific-journal', - name: 'Scientific Journal', - category: 'Academic', - description: 'Precise design for scientific publications. Clear hierarchy optimized for data-heavy content and citations.', - vibe: 'Scientific, Precise, Academic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Literata:wght@400;500;700&family=Fira+Sans:wght@400;500;600&display=swap', - typography: { - fonts: { - heading: 'Literata', - body: 'Literata', - code: 'Fira Sans' - }, - colors: { - text: '262626', - textSecondary: '4A4A4A', - background: 'FFFFFF', - accent: '0066CC', - border: '0066CC', - codeBg: 'F5F5F5', - blockquoteBorder: '0066CC' - } - }, - elements: { - h1: { - font: 'heading', - size: 18, - color: '1A1A1A', - bold: true, - align: 'left', - spacing: { before: 18, after: 10, line: 1.3 } - }, - h2: { - font: 'code', - size: 12, - color: '1A1A1A', - bold: true, - align: 'left', - spacing: { before: 14, after: 6, line: 1.2 } - }, - h3: { - font: 'code', - size: 11, - color: '262626', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h4: { - font: 'code', - size: 10, - color: '333333', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h5: { - font: 'code', - size: 10, - color: '424242', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - h6: { - font: 'code', - size: 9, - color: '4A4A4A', - bold: true, - align: 'left', - spacing: { before: 6, after: 3, line: 1.2 } - }, - p: { - font: 'body', - size: 10, - color: '262626', - align: 'both', - spacing: { before: 0, after: 7, line: 1.6 } - }, - blockquote: { - font: 'body', - size: 9, - color: '4A4A4A', - spacing: { before: 8, after: 8, line: 1.4 }, - padding: 10, - borderLeft: { color: '0066CC', width: 2, style: 'solid' } - }, - code: { - font: 'code', - size: 9, - color: '0066CC', - background: 'F5F5F5' - }, - pre: { - font: 'code', - size: 9, - color: '0066CC', - 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: '262626', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: '0066CC', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 10, - color: '1A1A1A', - bold: true, - background: 'F5F5F5', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 10, - color: '262626', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: '0066CC', width: 1, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/academic/weather-radar.ts b/src/styles/templates/academic/weather-radar.ts deleted file mode 100644 index 87bcf18..0000000 --- a/src/styles/templates/academic/weather-radar.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const weatherRadar: StyleOption = { - id: 'weather-radar', - name: 'Weather Radar', - category: 'Scientific', - description: 'Meteorological map aesthetic. Deep map green backgrounds with rainbow radar text colors.', - vibe: 'Scientific, Map, Storm', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@400;700&family=Sarpanch:wght@400;700&display=swap', - typography: { - fonts: { - heading: 'Chakra Petch', - body: 'Chakra Petch', - code: 'Sarpanch' - }, - colors: { - text: 'E0F2F1', - textSecondary: 'B2DFDB', - background: '455A64', - accent: 'FF1744', - border: 'FF1744', - codeBg: '37474F', - blockquoteBorder: 'FFEA00' - } - }, - elements: { - h1: { - font: 'heading', - size: 32, - color: 'FF1744', - bold: true, - align: 'left', - background: '263238', - spacing: { before: 20, after: 10, line: 1.2 }, - borderLeft: { color: 'FF1744', width: 8, style: 'solid' }, - padding: 16 - }, - h2: { - font: 'code', - size: 16, - color: '00E676', - bold: true, - align: 'left', - background: '37474F', - spacing: { before: 16, after: 8, line: 1.2 }, - padding: 8 - }, - h3: { - font: 'code', - size: 14, - color: '69F0AE', - bold: true, - align: 'left', - spacing: { before: 14, after: 7, line: 1.2 } - }, - h4: { - font: 'code', - size: 12, - color: '69F0AE', - bold: true, - align: 'left', - spacing: { before: 12, after: 6, line: 1.2 } - }, - h5: { - font: 'code', - size: 11, - color: 'B9F6CA', - bold: true, - align: 'left', - spacing: { before: 10, after: 5, line: 1.2 } - }, - h6: { - font: 'code', - size: 10, - color: 'B9F6CA', - bold: true, - align: 'left', - spacing: { before: 8, after: 4, line: 1.2 } - }, - p: { - font: 'body', - size: 11, - color: 'E0F2F1', - align: 'left', - spacing: { before: 0, after: 8, line: 1.5 } - }, - blockquote: { - font: 'body', - size: 10, - color: 'FFEA00', - spacing: { before: 12, after: 12, line: 1.5 }, - padding: 16, - background: '263238', - border: { color: 'FFEA00', width: 2, style: 'solid' } - }, - code: { - font: 'code', - size: 10, - color: 'FFEA00', - background: '37474F' - }, - pre: { - font: 'code', - size: 10, - color: 'FFEA00', - background: '37474F', - 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: 11, - color: 'E0F2F1', - spacing: { before: 4, after: 4, line: 1.5 } - }, - strong: { - bold: true - }, - em: { - italic: true - }, - a: { - color: 'FFEA00', - underline: true - }, - table: { - spacing: { before: 12, after: 12, line: 1.4 } - }, - th: { - font: 'heading', - size: 11, - color: 'FF1744', - bold: true, - background: '263238', - spacing: { before: 6, after: 6, line: 1.4 } - }, - td: { - font: 'body', - size: 11, - color: 'E0F2F1', - background: '37474F', - spacing: { before: 6, after: 6, line: 1.4 } - }, - hr: { - border: { color: 'FFEA00', width: 2, style: 'single' }, - spacing: { before: 12, after: 12, line: 1 } - }, - img: { - align: 'center', - spacing: { before: 12, after: 12, line: 1 } - } - } -}; diff --git a/src/styles/templates/core/circus-sideshow.ts b/src/styles/templates/core/circus-sideshow.ts deleted file mode 100644 index 60c6ed1..0000000 --- a/src/styles/templates/core/circus-sideshow.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const circusSideshow: StyleOption = { - id: 'circus-sideshow', - name: 'Circus Sideshow', - category: 'Entertainment', - description: 'Big top aesthetic. Ornamental fonts with red and cream stripe vibes.', - vibe: 'Fun, Ornamental, Striped', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Rye&family=Sancreek&family=Roboto+Slab&display=swap', - wordConfig: { - heading1: { - font: "Sancreek", size: 40, color: "D32F2F", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Rye", size: 18, color: "1A237E", bold: false, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Roboto Slab", size: 11, color: "212121", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Roboto Slab', serif; - background: #FFF8E1; - h1 { font-family: 'Sancreek', cursive; font-size: 40pt; color: #D32F2F; text-align: center; margin-bottom: 24px; text-shadow: 2px 2px 0px #FBC02D; } - h2 { font-family: 'Rye', serif; font-size: 18pt; color: #1A237E; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; text-align: center; } - blockquote { border: 4px double #D32F2F; padding: 20px; margin: 24px auto; background: #FFF; border-radius: 16px; font-family: 'Sancreek', cursive; font-size: 14pt; color: #1A237E; text-align: center; max-width: 80%; } - ` - }; diff --git a/src/styles/templates/core/environmental-green.ts b/src/styles/templates/core/environmental-green.ts deleted file mode 100644 index 808ce9b..0000000 --- a/src/styles/templates/core/environmental-green.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const environmentalGreen: StyleOption = { - id: 'environmental-green', - name: 'Environmental Green', - category: 'Sustainability', - description: 'Nature-inspired design for environmental and sustainability communications. Organic feel with earthy green palette.', - vibe: 'Natural, Sustainable, Organic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bitter:wght@400;500;700&family=Karla:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "Bitter", size: 26, color: "2E7D32", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Bitter", size: 14, color: "388E3C", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Karla", size: 10, color: "3E4A3D", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "2E7D32" - }, - previewCss: ` - font-family: 'Karla', sans-serif; - h1 { font-family: 'Bitter', serif; font-size: 26pt; font-weight: 700; color: #2E7D32; margin-bottom: 24px; } - h2 { font-family: 'Bitter', serif; font-size: 14pt; font-weight: 700; color: #388E3C; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.6; color: #3E4A3D; margin-bottom: 14px; } - blockquote { background: #E8F5E9; padding: 16px; border-left: 4px solid #2E7D32; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/core/highway-interstate.ts b/src/styles/templates/core/highway-interstate.ts deleted file mode 100644 index be44c14..0000000 --- a/src/styles/templates/core/highway-interstate.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const highwayInterstate: StyleOption = { - id: 'highway-interstate', - name: 'Highway Interstate', - category: 'Urban', - description: 'Road signage aesthetic. Reflective white text on deep highway green backgrounds.', - vibe: 'Functional, Travel, Signage', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Overpass:wght@400;700&family=Public+Sans:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Overpass", size: 36, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "00695C", color: "auto", style: "clear" }, - border: { - bottom: { color: "FFFFFF", space: 4, style: "single", size: 12 }, - top: { color: "FFFFFF", space: 4, style: "single", size: 12 } - } - }, - heading2: { - font: "Public Sans", size: 18, color: "004D40", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Public Sans", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "00695C" - }, - previewCss: ` - font-family: 'Public Sans', sans-serif; - h1 { font-family: 'Overpass', sans-serif; font-size: 36pt; font-weight: 700; color: #FFFFFF; background: #00695C; padding: 16px; border-top: 2px solid #FFF; border-bottom: 2px solid #FFF; margin-bottom: 24px; border-radius: 8px; } - h2 { font-size: 18pt; font-weight: 700; color: #004D40; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { background: #FFEB3B; color: #000; padding: 16px; margin: 24px 0; border: 4px solid #000; transform: skewX(-10deg); width: fit-content; } - ` - }; diff --git a/src/styles/templates/core/index.ts b/src/styles/templates/core/index.ts deleted file mode 100644 index 28d9ecd..0000000 --- a/src/styles/templates/core/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { StyleOption } from '../../../types'; -import { circusSideshow } from './circus-sideshow'; -import { environmentalGreen } from './environmental-green'; -import { highwayInterstate } from './highway-interstate'; -import { jungleExplorer } from './jungle-explorer'; -import { publicTransit } from './public-transit'; -import { silentFilmIntertitle } from './silent-film-intertitle'; -import { sportsDynamic } from './sports-dynamic'; -import { steampunkInventor } from './steampunk-inventor'; -import { subwayTile } from './subway-tile'; -import { taxiCab } from './taxi-cab'; -import { varsityTeam } from './varsity-team'; - -export const coreStyles: StyleOption[] = [ - circusSideshow, - environmentalGreen, - highwayInterstate, - jungleExplorer, - publicTransit, - silentFilmIntertitle, - sportsDynamic, - steampunkInventor, - subwayTile, - taxiCab, - varsityTeam -]; diff --git a/src/styles/templates/core/jungle-explorer.ts b/src/styles/templates/core/jungle-explorer.ts deleted file mode 100644 index ab4fe7c..0000000 --- a/src/styles/templates/core/jungle-explorer.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const jungleExplorer: StyleOption = { - id: 'jungle-explorer', - name: 'Jungle Explorer', - category: 'Adventure', - description: 'Safari expedition style. Khaki, olive drab, and canvas textures.', - vibe: 'Adventure, Khaki, Nature', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Stardos+Stencil&family=Domine:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Stardos Stencil", size: 36, color: "33691E", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "827717", space: 6, style: "thick", size: 18 } } - }, - heading2: { - font: "Domine", size: 16, color: "558B2F", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Domine", size: 11, color: "1B1B1B", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "827717" - }, - previewCss: ` - font-family: 'Domine', serif; - background: #F0F4C3; /* Khaki tint */ - h1 { font-family: 'Stardos Stencil', cursive; font-size: 36pt; font-weight: 700; color: #33691E; border-bottom: 4px solid #827717; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #558B2F; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #1B1B1B; margin-bottom: 14px; } - blockquote { background: #DCEDC8; padding: 20px; border-left: 6px solid #33691E; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/core/public-transit.ts b/src/styles/templates/core/public-transit.ts deleted file mode 100644 index 383ee3c..0000000 --- a/src/styles/templates/core/public-transit.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const publicTransit: StyleOption = { - id: 'public-transit', - name: 'Public Transit', - category: 'Urban', - description: 'Subway map and transit signage aesthetic. Clean, highly legible sans-serifs with color-coded lines.', - vibe: 'Urban, Functional, Color-coded', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Mukta:wght@400;700&family=Hanken+Grotesk:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Hanken Grotesk", size: 32, color: "000000", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "FFC107", space: 8, style: "single", size: 24 } } - }, - heading2: { - font: "Mukta", size: 18, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "EEEEEE", color: "auto", style: "clear" } - }, - body: { - font: "Mukta", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFC107" - }, - previewCss: ` - font-family: 'Mukta', sans-serif; - h1 { font-family: 'Hanken Grotesk', sans-serif; font-size: 32pt; font-weight: 700; color: #000000; border-bottom: 6px solid #FFC107; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-size: 18pt; font-weight: 700; color: #000000; background: #EEEEEE; padding: 4px 12px; margin-top: 32px; margin-bottom: 16px; display: inline-block; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 6px solid #F44336; padding-left: 16px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/core/silent-film-intertitle.ts b/src/styles/templates/core/silent-film-intertitle.ts deleted file mode 100644 index 1096a2a..0000000 --- a/src/styles/templates/core/silent-film-intertitle.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const silentFilmIntertitle: StyleOption = { - id: 'silent-film-intertitle', - name: 'Silent Film Intertitle', - category: 'Cinema', - description: '1920s cinema cards. White decorative text on black backgrounds with ornate borders.', - vibe: 'Cinema, Vintage, Dramatic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Gye-Gye&family=Sorts+Mill+Goudy&display=swap', - - wordConfig: { - heading1: { - font: "Gye-Gye", size: 32, color: "FFFFFF", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - heading2: { - font: "Sorts Mill Goudy", size: 18, color: "EEEEEE", bold: false, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - body: { - font: "Sorts Mill Goudy", size: 14, color: "000000", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - - previewCss: ` - font-family: 'Sorts Mill Goudy', serif; - h1 { font-family: 'Gye-Gye', sans-serif; font-size: 32pt; color: #FFFFFF; background: #000000; padding: 20px; text-align: center; margin-bottom: 24px; border: 4px double #FFF; } - h2 { font-size: 18pt; color: #EEEEEE; background: #212121; display: inline-block; padding: 10px 20px; margin-top: 30px; margin-bottom: 16px; border-radius: 8px; } - p { font-size: 14pt; line-height: 1.6; color: #000000; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px solid #000; padding: 20px; margin: 24px 0; font-style: italic; text-align: center; } - ` - }; diff --git a/src/styles/templates/core/sports-dynamic.ts b/src/styles/templates/core/sports-dynamic.ts deleted file mode 100644 index e9049b8..0000000 --- a/src/styles/templates/core/sports-dynamic.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const sportsDynamic: StyleOption = { - id: 'sports-dynamic', - name: 'Sports Dynamic', - category: 'Sports', - description: 'Energetic and bold design for sports and athletic content. Dynamic typography with high-impact colors.', - vibe: 'Energetic, Bold, Athletic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Rubik:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "Bebas Neue", size: 36, color: "D32F2F", bold: false, align: 'left', - spacing: { before: 360, after: 200, line: 220 } - }, - heading2: { - font: "Rubik", size: 14, color: "1A1A1A", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 240 } - }, - body: { - font: "Rubik", size: 10, color: "333333", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Rubik', sans-serif; - h1 { font-family: 'Bebas Neue', sans-serif; font-size: 36pt; color: #D32F2F; margin-bottom: 24px; letter-spacing: 2px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 700; color: #1A1A1A; margin-top: 28px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #333333; margin-bottom: 14px; } - blockquote { background: #FFEBEE; padding: 16px; border-left: 6px solid #D32F2F; margin: 20px 0; font-weight: 500; } - ` - }; diff --git a/src/styles/templates/core/steampunk-inventor.ts b/src/styles/templates/core/steampunk-inventor.ts deleted file mode 100644 index 7583ff4..0000000 --- a/src/styles/templates/core/steampunk-inventor.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const steampunkInventor: StyleOption = { - id: 'steampunk-inventor', - name: 'Steampunk Inventor', - category: 'Fantasy', - description: 'Brass and gear aesthetic. Victorian fonts with industrial metallic colors.', - vibe: 'Mechanical, Brass, Victorian', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Rye&family=Lora:wght@400;700&display=swap', - - wordConfig: { - heading1: { - font: "Rye", size: 30, color: "5D4037", bold: false, align: 'left', - spacing: { before: 400, after: 240, line: 240 }, - border: { bottom: { color: "B8860B", space: 8, style: "single", size: 24 } } - }, - heading2: { - font: "Lora", size: 16, color: "8D6E63", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Lora", size: 11, color: "3E2723", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "B8860B" - }, - - previewCss: ` - font-family: 'Lora', serif; - background: #EFEBE9; - h1 { font-family: 'Rye', serif; font-size: 30pt; color: #5D4037; border-bottom: 6px double #B8860B; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #8D6E63; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 1px; } - p { font-size: 11pt; line-height: 1.6; color: #3E2723; margin-bottom: 14px; } - blockquote { background: #D7CCC8; padding: 16px; border: 2px solid #5D4037; border-radius: 4px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/core/subway-tile.ts b/src/styles/templates/core/subway-tile.ts deleted file mode 100644 index 6d68400..0000000 --- a/src/styles/templates/core/subway-tile.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const subwayTile: StyleOption = { - id: 'subway-tile', - name: 'Subway Tile', - category: 'Urban', - description: 'Classic station ceramics. Clean white backgrounds, heavy black text, and tile-like framing.', - vibe: 'Clean, Ceramic, Urban', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;600&family=Lexend:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Lexend", size: 36, color: "000000", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { - top: { color: "000000", space: 12, style: "single", size: 4 }, - bottom: { color: "000000", space: 12, style: "single", size: 4 }, - left: { color: "000000", space: 12, style: "single", size: 4 }, - right: { color: "000000", space: 12, style: "single", size: 4 } - } - }, - heading2: { - font: "Work Sans", size: 16, color: "212121", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Work Sans", size: 11, color: "424242", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Work Sans', sans-serif; - h1 { font-family: 'Lexend', sans-serif; font-size: 36pt; font-weight: 700; color: #000000; border: 4px solid #000000; padding: 16px; margin-bottom: 24px; text-align: center; background: #FFFFFF; } - h2 { font-size: 16pt; font-weight: 700; color: #212121; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #424242; margin-bottom: 14px; } - blockquote { border-left: 8px solid #000; padding-left: 16px; margin: 24px 0; background: #F5F5F5; } - ` - }; diff --git a/src/styles/templates/core/taxi-cab.ts b/src/styles/templates/core/taxi-cab.ts deleted file mode 100644 index df30acf..0000000 --- a/src/styles/templates/core/taxi-cab.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const taxiCab: StyleOption = { - id: 'taxi-cab', - name: 'Taxi Cab', - category: 'Urban', - description: 'Yellow cab aesthetic. Checkerboard patterns (simulated) and bold black on yellow.', - vibe: 'Urban, Yellow, Bold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Archivo+Black&family=Roboto:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Archivo Black", size: 36, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFEB3B", color: "auto", style: "clear" }, - border: { - top: { color: "000000", space: 4, style: "dashed", size: 24 }, // Simulates checkers - bottom: { color: "000000", space: 4, style: "dashed", size: 24 } - } - }, - heading2: { - font: "Roboto", size: 18, color: "000000", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "FFFFFF", color: "auto", style: "clear" } - }, - body: { - font: "Roboto", size: 12, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFEB3B" - }, - previewCss: ` - font-family: 'Roboto', sans-serif; - background: #212121; - padding: 20px; - h1 { font-family: 'Archivo Black', sans-serif; font-size: 36pt; color: #000000; background: #FFEB3B; padding: 16px; margin-bottom: 24px; text-align: center; border-top: 6px dashed #000; border-bottom: 6px dashed #000; } - h2 { font-size: 18pt; font-weight: 700; color: #000000; background: #FFFFFF; padding: 8px; margin-top: 32px; margin-bottom: 16px; text-align: center; display: inline-block; } - p { font-size: 12pt; line-height: 1.5; color: #FFFFFF; margin-bottom: 14px; } - blockquote { background: #FFEB3B; color: #000; padding: 16px; margin: 24px 0; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/core/varsity-team.ts b/src/styles/templates/core/varsity-team.ts deleted file mode 100644 index fb372aa..0000000 --- a/src/styles/templates/core/varsity-team.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const varsityTeam: StyleOption = { - id: 'varsity-team', - name: 'Varsity Team', - category: 'Sport', - description: 'College sports jersey style. Block lettering with athletic gold and navy.', - vibe: 'Athletic, College, Bold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Graduate&family=Saira:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Graduate", size: 36, color: "FDD835", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "1A237E", color: "auto", style: "clear" }, - border: { - top: { color: "FDD835", space: 8, style: "single", size: 24 }, - bottom: { color: "FDD835", space: 8, style: "single", size: 24 } - } - }, - heading2: { - font: "Saira", size: 20, color: "1A237E", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Saira", size: 12, color: "212121", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FDD835" - }, - previewCss: ` - font-family: 'Saira', sans-serif; - h1 { font-family: 'Graduate', serif; font-size: 36pt; color: #FDD835; background: #1A237E; border-top: 4px solid #FDD835; border-bottom: 4px solid #FDD835; padding: 20px; text-align: center; margin-bottom: 24px; } - h2 { font-size: 20pt; font-weight: 700; color: #1A237E; text-align: center; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 12pt; line-height: 1.5; color: #212121; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px dashed #1A237E; padding: 16px; margin: 24px 0; background: #E8EAF6; } - ` - }; diff --git a/src/styles/templates/corporate/annual-report.ts b/src/styles/templates/corporate/annual-report.ts deleted file mode 100644 index 455beaa..0000000 --- a/src/styles/templates/corporate/annual-report.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const annualReport: StyleOption = { - id: 'annual-report', - name: 'Annual Report', - category: 'Corporate', - description: 'Trustworthy and substantial. Deep navy blues, clean sans-serifs, and grid-like precision.', - vibe: 'Financial, Serious, Trust', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Libre+Franklin:wght@400;700;900&family=Merriweather:wght@300;400&display=swap', - wordConfig: { - heading1: { - font: "Libre Franklin", size: 32, color: "0D2B46", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Libre Franklin", size: 16, color: "A0A0A0", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Merriweather", size: 10, color: "333333", align: 'both', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "0D2B46" - }, - previewCss: ` - font-family: 'Merriweather', serif; - h1 { font-family: 'Libre Franklin', sans-serif; font-size: 32pt; font-weight: 900; color: #0D2B46; margin-bottom: 24px; } - h2 { font-family: 'Libre Franklin', sans-serif; font-size: 16pt; font-weight: 700; color: #A0A0A0; text-transform: uppercase; margin-top: 32px; margin-bottom: 16px; border-bottom: 1px solid #CCC; padding-bottom: 4px; } - p { font-size: 10pt; line-height: 1.8; color: #333333; margin-bottom: 14px; text-align: justify; } - blockquote { border-left: 4px solid #0D2B46; padding-left: 16px; margin: 24px 0; color: #0D2B46; font-style: italic; } - ` -}; diff --git a/src/styles/templates/corporate/corporate-executive.ts b/src/styles/templates/corporate/corporate-executive.ts deleted file mode 100644 index 9b9c39f..0000000 --- a/src/styles/templates/corporate/corporate-executive.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const corporateExecutive: StyleOption = { - id: 'corporate-executive', - name: 'Corporate Executive', - category: 'Corporate', - description: 'Authoritative and professional. Designed for board reports, executive summaries, and high-stakes business communications.', - vibe: 'Executive, Formal, Trustworthy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Source+Serif+4:wght@400;600;700&family=Source+Sans+3:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Source Serif 4", size: 24, color: "1A237E", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Source Sans 3", size: 14, color: "303F9F", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Source Sans 3", size: 10, color: "333333", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "1A237E" - }, - previewCss: ` - font-family: 'Source Sans 3', sans-serif; - h1 { font-family: 'Source Serif 4', serif; font-size: 24pt; font-weight: 700; color: #1A237E; margin-bottom: 24px; border-bottom: 2px solid #1A237E; padding-bottom: 8px; } - h2 { font-size: 14pt; font-weight: 600; color: #303F9F; margin-top: 30px; margin-bottom: 12px; } - p { font-size: 10pt; line-height: 1.6; color: #333333; margin-bottom: 14px; } - blockquote { border-left: 4px solid #1A237E; padding-left: 16px; color: #1A237E; margin: 20px 0; font-style: italic; } - ` -}; diff --git a/src/styles/templates/corporate/credit-card-platinum.ts b/src/styles/templates/corporate/credit-card-platinum.ts deleted file mode 100644 index 6af81c3..0000000 --- a/src/styles/templates/corporate/credit-card-platinum.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const creditCardPlatinum: StyleOption = { - id: 'credit-card-platinum', - name: 'Credit Card Platinum', - category: 'Financial', - description: 'Premium card aesthetic. Silver/gradient shading with OCR-style raised numbering fonts.', - vibe: 'Premium, Silver, Metallic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Krub:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Krub", size: 32, color: "E0E0E0", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "424242", color: "auto", style: "clear" } - }, - heading2: { - font: "Share Tech Mono", size: 18, color: "C0C0C0", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true, - tracking: 100 - }, - body: { - font: "Krub", size: 11, color: "616161", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "C0C0C0" - }, - previewCss: ` - font-family: 'Krub', sans-serif; - h1 { font-size: 32pt; font-weight: 700; color: #E0E0E0; background: linear-gradient(135deg, #616161, #212121); padding: 16px; margin-bottom: 24px; border-radius: 12px; } - h2 { font-family: 'Share Tech Mono', monospace; font-size: 18pt; color: #757575; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; letter-spacing: 3px; text-shadow: 1px 1px 0 #FFF; } - p { font-size: 11pt; line-height: 1.6; color: #616161; margin-bottom: 14px; } - blockquote { border-left: 4px solid #C0C0C0; padding-left: 16px; margin: 24px 0; background: #F5F5F5; } - ` -}; diff --git a/src/styles/templates/corporate/currency-bill.ts b/src/styles/templates/corporate/currency-bill.ts deleted file mode 100644 index 8581d7a..0000000 --- a/src/styles/templates/corporate/currency-bill.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const currencyBill: StyleOption = { - id: 'currency-bill', - name: 'Currency Bill', - category: 'Official', - description: 'Banknote aesthetic. Intricate guilloche-style borders and emerald green serif fonts.', - vibe: 'Financial, Secure, Green', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display+SC:wght@700&family=Noto+Serif:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display SC", size: 36, color: "1B5E20", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { - top: { color: "2E7D32", space: 6, style: "double", size: 12 }, - bottom: { color: "2E7D32", space: 6, style: "double", size: 12 } - } - }, - heading2: { - font: "Noto Serif", size: 16, color: "388E3C", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Noto Serif", size: 11, color: "1B5E20", align: 'both', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "2E7D32" - }, - previewCss: ` - font-family: 'Noto Serif', serif; - background: #E8F5E9; - h1 { font-family: 'Playfair Display SC', serif; font-size: 36pt; font-weight: 700; color: #1B5E20; text-align: center; border-top: 4px double #2E7D32; border-bottom: 4px double #2E7D32; padding: 12px 0; margin-bottom: 24px; letter-spacing: 2px; } - h2 { font-size: 16pt; font-weight: 700; color: #388E3C; text-align: center; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.6; color: #1B5E20; margin-bottom: 14px; text-align: justify; } - blockquote { border: 1px solid #2E7D32; padding: 20px; margin: 24px 0; background: #C8E6C9; text-align: center; border-radius: 50%; width: 200px; height: 200px; display: flex; align-items: center; justify-content: center; margin: 0 auto; } - ` -}; diff --git a/src/styles/templates/corporate/index.ts b/src/styles/templates/corporate/index.ts deleted file mode 100644 index ce0ff52..0000000 --- a/src/styles/templates/corporate/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { StyleOption } from '../../../types'; -import { annualReport } from './annual-report'; -import { corporateExecutive } from './corporate-executive'; -import { creditCardPlatinum } from './credit-card-platinum'; -import { currencyBill } from './currency-bill'; -import { legalContract } from './legal-contract'; -import { legalPleading } from './legal-pleading'; -import { passportOfficial } from './passport-official'; -import { policeBlotter } from './police-blotter'; -import { politicalCampaign } from './political-campaign'; -import { stockTicker } from './stock-ticker'; -import { techMemo } from './tech-memo'; -import { topSecretRedacted } from './top-secret-redacted'; -import { whiteboardStrategy } from './whiteboard-strategy'; - -export const corporateStyles: StyleOption[] = [ - annualReport, - corporateExecutive, - creditCardPlatinum, - currencyBill, - legalContract, - legalPleading, - passportOfficial, - policeBlotter, - politicalCampaign, - stockTicker, - techMemo, - topSecretRedacted, - whiteboardStrategy -]; diff --git a/src/styles/templates/corporate/legal-contract.ts b/src/styles/templates/corporate/legal-contract.ts deleted file mode 100644 index ebef2f7..0000000 --- a/src/styles/templates/corporate/legal-contract.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const legalContract: StyleOption = { - id: 'legal-contract', - name: 'Legal Contract', - category: 'Corporate', - description: 'Binding agreement style. Serif fonts, justified text, and numbered section aesthetics.', - vibe: 'Legal, Binding, Formal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Tinos:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Tinos", size: 14, color: "000000", bold: true, align: 'center', - spacing: { before: 240, after: 240, line: 240 }, - allCaps: true - }, - heading2: { - font: "Tinos", size: 12, color: "000000", bold: true, align: 'left', - spacing: { before: 240, after: 120, line: 240 }, - underline: true - }, - body: { - font: "Tinos", size: 11, color: "000000", align: 'both', - spacing: { before: 0, after: 120, line: 240 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Tinos', serif; - h1 { font-size: 14pt; font-weight: 700; color: #000000; text-align: center; text-transform: uppercase; margin-bottom: 16px; } - h2 { font-size: 12pt; font-weight: 700; color: #000000; text-decoration: underline; margin-top: 24px; margin-bottom: 12px; } - p { font-size: 11pt; line-height: 1.4; color: #000000; margin-bottom: 12px; text-align: justify; } - blockquote { margin: 20px 40px; border: 1px solid #000; padding: 10px; } - ` -}; diff --git a/src/styles/templates/corporate/legal-pleading.ts b/src/styles/templates/corporate/legal-pleading.ts deleted file mode 100644 index a78f213..0000000 --- a/src/styles/templates/corporate/legal-pleading.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const legalPleading: StyleOption = { - id: 'legal-pleading', - name: 'Legal Pleading', - category: 'Professional', - description: 'Courtroom document style. Rigid framing, double spacing, and traditional serif fonts.', - vibe: 'Legal, Strict, Formal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=EB+Garamond:wght@400;700&family=Courier+Prime&display=swap', - wordConfig: { - heading1: { - font: "EB Garamond", size: 14, color: "000000", bold: true, align: 'center', - spacing: { before: 240, after: 240, line: 240 }, - allCaps: true, - border: { bottom: { color: "000000", space: 4, style: "single", size: 4 } } - }, - heading2: { - font: "EB Garamond", size: 12, color: "000000", bold: true, align: 'left', - spacing: { before: 240, after: 120, line: 240 } - }, - body: { - font: "Courier Prime", size: 12, color: "000000", align: 'both', - spacing: { before: 0, after: 0, line: 480 }, - border: { left: { color: "BDBDBD", space: 12, style: "single", size: 4 } } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - line-height: 2.0; - h1 { font-family: 'EB Garamond', serif; font-size: 14pt; font-weight: 700; color: #000000; text-align: center; text-decoration: underline; text-transform: uppercase; margin-bottom: 24px; } - h2 { font-family: 'EB Garamond', serif; font-size: 12pt; font-weight: 700; color: #000000; margin-top: 24px; margin-bottom: 12px; } - p { font-size: 12pt; color: #000000; margin-bottom: 0px; text-align: justify; border-left: 1px solid #BDBDBD; padding-left: 15px; } - blockquote { margin-left: 40px; border-left: 1px solid #BDBDBD; padding-left: 15px; } - ` -}; diff --git a/src/styles/templates/corporate/passport-official.ts b/src/styles/templates/corporate/passport-official.ts deleted file mode 100644 index f8b2d34..0000000 --- a/src/styles/templates/corporate/passport-official.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const passportOfficial: StyleOption = { - id: 'passport-official', - name: 'Passport Official', - category: 'Government', - description: 'International travel document aesthetic. Machine-readable fonts with secure, bureaucratic vibes.', - vibe: 'Official, Secure, Monospace', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Martian+Mono:wght@400;700&family=Courier+Prime&display=swap', - wordConfig: { - heading1: { - font: "Martian Mono", size: 22, color: "1A237E", bold: true, align: 'left', - spacing: { before: 360, after: 200, line: 240 } - }, - heading2: { - font: "Martian Mono", size: 12, color: "B71C1C", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 240 }, - allCaps: true - }, - body: { - font: "Courier Prime", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 140, line: 260 } - }, - accentColor: "B71C1C" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - h1 { font-family: 'Martian Mono', monospace; font-size: 22pt; font-weight: 700; color: #1A237E; margin-bottom: 24px; letter-spacing: -1px; } - h2 { font-family: 'Martian Mono', monospace; font-size: 12pt; font-weight: 700; color: #B71C1C; margin-top: 28px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.5; color: #212121; margin-bottom: 12px; } - blockquote { border: 1px dashed #1A237E; padding: 16px; margin: 20px 0; background: #E8EAF6; } - ` -}; diff --git a/src/styles/templates/corporate/police-blotter.ts b/src/styles/templates/corporate/police-blotter.ts deleted file mode 100644 index 13b21f8..0000000 --- a/src/styles/templates/corporate/police-blotter.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const policeBlotter: StyleOption = { - id: 'police-blotter', - name: 'Police Blotter', - category: 'Official', - description: 'Law enforcement paperwork. Carbon copy blue fonts on stark white forms.', - vibe: 'Official, Blue, Bureaucratic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Courier+Prime&family=Special+Elite&display=swap', - wordConfig: { - heading1: { - font: "Special Elite", size: 26, color: "0D47A1", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - allCaps: true - }, - heading2: { - font: "Courier Prime", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "E3F2FD", color: "auto", style: "clear" } - }, - body: { - font: "Courier Prime", size: 11, color: "1A237E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0D47A1" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - h1 { font-family: 'Special Elite', cursive; font-size: 26pt; color: #0D47A1; margin-bottom: 24px; text-transform: uppercase; text-decoration: underline; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; background: #E3F2FD; display: block; padding: 4px; margin-top: 32px; margin-bottom: 16px; border: 1px solid #0D47A1; } - p { font-size: 11pt; line-height: 1.5; color: #1A237E; margin-bottom: 14px; } - blockquote { border: 1px solid #000; padding: 16px; margin: 24px 0; background: #FAFAFA; } - ` -}; diff --git a/src/styles/templates/corporate/political-campaign.ts b/src/styles/templates/corporate/political-campaign.ts deleted file mode 100644 index 4a3eabc..0000000 --- a/src/styles/templates/corporate/political-campaign.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const politicalCampaign: StyleOption = { - id: 'political-campaign', - name: 'Political Campaign', - category: 'Professional', - description: 'Bold, patriotic design for campaigns. Strong headers with red, white, and blue motifs.', - vibe: 'Patriotic, Bold, Official', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Francois+One&family=Cabin:wght@400;600;700&display=swap', - wordConfig: { - heading1: { - font: "Francois One", size: 36, color: "0D47A1", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "D32F2F", space: 8, style: "single", size: 12 } } - }, - heading2: { - font: "Cabin", size: 16, color: "D32F2F", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Cabin", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Cabin', sans-serif; - h1 { font-family: 'Francois One', sans-serif; font-size: 36pt; color: #0D47A1; border-bottom: 4px solid #D32F2F; padding-bottom: 12px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 16pt; font-weight: 700; color: #D32F2F; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { background: #E3F2FD; padding: 20px; border-left: 8px solid #0D47A1; margin: 24px 0; } - ` -}; diff --git a/src/styles/templates/corporate/stock-ticker.ts b/src/styles/templates/corporate/stock-ticker.ts deleted file mode 100644 index 738fc0d..0000000 --- a/src/styles/templates/corporate/stock-ticker.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const stockTicker: StyleOption = { - id: 'stock-ticker', - name: 'Stock Ticker', - category: 'Financial', - description: 'LED moving message sign. Dot matrix fonts with bright green/red on black.', - vibe: 'Financial, Digital, LED', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=DotGothic16&display=swap', - wordConfig: { - heading1: { - font: "DotGothic16", size: 32, color: "00E676", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - heading2: { - font: "DotGothic16", size: 18, color: "FF1744", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - body: { - font: "DotGothic16", size: 12, color: "E0E0E0", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - accentColor: "00E676" - }, - previewCss: ` - font-family: 'DotGothic16', sans-serif; - background: #212121; - h1 { font-size: 32pt; color: #00E676; background: #000000; padding: 12px; margin-bottom: 24px; border-bottom: 2px solid #333; } - h2 { font-size: 18pt; color: #FF1744; background: #000000; padding: 8px; margin-top: 32px; margin-bottom: 16px; display: inline-block; } - p { font-size: 12pt; line-height: 1.5; color: #E0E0E0; margin-bottom: 14px; } - blockquote { border-left: 4px solid #00E676; padding-left: 16px; margin: 24px 0; color: #B9F6CA; } - ` -}; diff --git a/src/styles/templates/corporate/tech-memo.ts b/src/styles/templates/corporate/tech-memo.ts deleted file mode 100644 index 49495ec..0000000 --- a/src/styles/templates/corporate/tech-memo.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const techMemo: StyleOption = { - id: 'tech-memo', - name: 'Tech Memorandum', - category: 'Corporate', - description: 'Modern, functional, and authoritative. Uses shading for headers to create distinct sections.', - vibe: 'Corporate, Tech, Strategy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "Roboto", size: 24, color: "0F172A", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "F1F5F9", color: "auto", style: "clear" }, - border: { left: { color: "2563EB", space: 10, style: "single", size: 48 } } - }, - heading2: { - font: "Roboto", size: 14, color: "2563EB", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Roboto", size: 10, color: "334155", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "2563EB" - }, - previewCss: ` - font-family: 'Roboto', sans-serif; - h1 { font-size: 24pt; font-weight: 700; background: #F1F5F9; color: #0F172A; padding: 12px 16px; border-left: 8px solid #2563EB; margin-bottom: 20px; } - h2 { font-size: 14pt; font-weight: 700; color: #2563EB; margin-top: 30px; margin-bottom: 12px; } - p { font-size: 10pt; line-height: 1.6; color: #334155; margin-bottom: 14px; } - blockquote { background: #EFF6FF; padding: 16px; border-radius: 4px; color: #1E40AF; border-left: 4px solid #2563EB; margin: 20px 0; } - ` -}; diff --git a/src/styles/templates/corporate/top-secret-redacted.ts b/src/styles/templates/corporate/top-secret-redacted.ts deleted file mode 100644 index a390ad7..0000000 --- a/src/styles/templates/corporate/top-secret-redacted.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const topSecretRedacted: StyleOption = { - id: 'top-secret-redacted', - name: 'Top Secret Redacted', - category: 'Government', - description: 'Declassified document style. Typewriter fonts with "blacked out" highlight effects.', - vibe: 'Secret, Classified, Rough', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Special+Elite&family=Courier+Prime:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Special Elite", size: 28, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - border: { - top: { color: "000000", space: 6, style: "single", size: 24 }, - bottom: { color: "000000", space: 6, style: "single", size: 24 } - } - }, - heading2: { - font: "Courier Prime", size: 14, color: "B71C1C", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - body: { - font: "Courier Prime", size: 11, color: "000000", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - background: #F5F5F5; - h1 { font-family: 'Special Elite', cursive; font-size: 28pt; color: #000000; border-top: 4px solid #000; border-bottom: 4px solid #000; padding: 16px 0; text-align: center; margin-bottom: 28px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 700; color: #B71C1C; background: #000000; display: inline-block; padding: 4px 12px; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #000000; margin-bottom: 14px; } - blockquote { background: #000; color: #000; padding: 10px; margin: 20px 0; user-select: none; } - blockquote:hover { color: #FFF; } - ` -}; diff --git a/src/styles/templates/corporate/whiteboard-strategy.ts b/src/styles/templates/corporate/whiteboard-strategy.ts deleted file mode 100644 index c4df2a0..0000000 --- a/src/styles/templates/corporate/whiteboard-strategy.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const whiteboardStrategy: StyleOption = { - id: 'whiteboard-strategy', - name: 'Whiteboard Strategy', - category: 'Business', - description: 'Brainstorming session. Dry-erase marker fonts in standard office colors (Black, Blue, Red).', - vibe: 'Corporate, Brainstorm, Sketch', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Architects+Daughter&family=Patrick+Hand&display=swap', - wordConfig: { - heading1: { - font: "Architects Daughter", size: 36, color: "D32F2F", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "1976D2", space: 4, style: "single", size: 12 } } - }, - heading2: { - font: "Patrick Hand", size: 20, color: "1976D2", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Patrick Hand", size: 14, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Patrick Hand', cursive; - background: #FFFFFF; - h1 { font-family: 'Architects Daughter', cursive; font-size: 36pt; font-weight: 700; color: #D32F2F; border-bottom: 3px solid #1976D2; padding-bottom: 10px; margin-bottom: 24px; text-align: center; } - h2 { font-size: 20pt; font-weight: 700; color: #1976D2; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 14pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px solid #388E3C; padding: 16px; margin: 24px 0; border-radius: 16px; color: #388E3C; } - ` -}; diff --git a/src/styles/templates/creative/bauhaus-poster.ts b/src/styles/templates/creative/bauhaus-poster.ts deleted file mode 100644 index 623cde3..0000000 --- a/src/styles/templates/creative/bauhaus-poster.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const bauhausPoster: StyleOption = { - id: 'bauhaus-poster', - name: 'Bauhaus Poster', - category: 'Creative', - description: 'Geometric minimalism. Primary colors, angled text, and strong diagonal compositions.', - vibe: 'Artistic, Geometric, Modernist', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Josefin+Sans:wght@400;700&family=Jost:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Josefin Sans", size: 36, color: "D50000", bold: true, align: 'right', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "000000", space: 8, style: "single", size: 36 } } - }, - heading2: { - font: "Jost", size: 16, color: "2962FF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "FFEB3B", color: "auto", style: "clear" } - }, - body: { - font: "Jost", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D50000" - }, - previewCss: ` - font-family: 'Jost', sans-serif; - h1 { font-family: 'Josefin Sans', sans-serif; font-size: 36pt; font-weight: 700; color: #D50000; text-align: right; border-bottom: 8px solid #000; padding-bottom: 10px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 16pt; font-weight: 700; color: #2962FF; background: #FFEB3B; padding: 8px 16px; margin-top: 32px; margin-bottom: 16px; display: inline-block; transform: rotate(-1deg); } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 10px solid #D50000; padding-left: 20px; margin: 24px 0; font-style: italic; } - ` - }; diff --git a/src/styles/templates/creative/blueprint-cyanotype.ts b/src/styles/templates/creative/blueprint-cyanotype.ts deleted file mode 100644 index 7e71986..0000000 --- a/src/styles/templates/creative/blueprint-cyanotype.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const blueprintCyanotype: StyleOption = { - id: 'blueprint-cyanotype', - name: 'Blueprint Cyanotype', - category: 'Creative', - description: 'Architectural blueprint style. White lines on a deep cyan blue background.', - vibe: 'Technical, Blue, Schematic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Architects+Daughter&family=Roboto+Mono:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Architects Daughter", size: 32, color: "FFFFFF", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "FFFFFF", space: 4, style: "single", size: 12 } } - }, - heading2: { - font: "Roboto Mono", size: 14, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Roboto Mono", size: 10, color: "E0F7FA", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFFFFF" - }, - previewCss: ` - font-family: 'Roboto Mono', monospace; - background: #0047AB; /* Cobalt/Blueprint Blue */ - color: #FFFFFF; - h1 { font-family: 'Architects Daughter', cursive; font-size: 32pt; font-weight: 700; color: #FFFFFF; text-align: center; border-bottom: 2px solid #FFFFFF; margin-bottom: 24px; padding-bottom: 8px; } - h2 { font-size: 14pt; font-weight: 700; color: #FFFFFF; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; border: 1px solid #FFF; display: inline-block; padding: 4px; } - p { font-size: 10pt; line-height: 1.6; color: #E0F7FA; margin-bottom: 14px; } - blockquote { border: 1px dashed #FFFFFF; padding: 16px; margin: 24px 0; background: #003380; } - ` - }; diff --git a/src/styles/templates/creative/brick-toy.ts b/src/styles/templates/creative/brick-toy.ts deleted file mode 100644 index 76135a1..0000000 --- a/src/styles/templates/creative/brick-toy.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const brickToy: StyleOption = { - id: 'brick-toy', - name: 'Brick Toy', - category: 'Playful', - description: 'Plastic building block aesthetic. Primary red, blue, and yellow with chunky text.', - vibe: 'Playful, Primary, Chunky', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Titan+One&family=Nunito:wght@400;800&display=swap', - wordConfig: { - heading1: { - font: "Titan One", size: 36, color: "D32F2F", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFEB3B", color: "auto", style: "clear" } // Yellow background - }, - heading2: { - font: "Nunito", size: 18, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "1976D2", color: "auto", style: "clear" } // Blue background - }, - body: { - font: "Nunito", size: 12, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Nunito', sans-serif; - h1 { font-family: 'Titan One', cursive; font-size: 36pt; color: #D32F2F; background: #FFEB3B; padding: 16px; border-radius: 8px; text-align: center; margin-bottom: 24px; border: 4px solid #D32F2F; } - h2 { font-size: 18pt; font-weight: 800; color: #FFFFFF; background: #1976D2; padding: 8px 16px; border-radius: 4px; display: inline-block; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 4px dotted #D32F2F; padding: 16px; margin: 24px 0; background: #E3F2FD; } - ` - }; diff --git a/src/styles/templates/creative/brutalist-mono.ts b/src/styles/templates/creative/brutalist-mono.ts deleted file mode 100644 index 145141d..0000000 --- a/src/styles/templates/creative/brutalist-mono.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const brutalistMono: StyleOption = { - id: 'brutalist-mono', - name: 'Brutalist Lab', - category: 'Creative', - description: 'Raw, monospaced aesthetic. Boxes, thick outlines, and typewriter vibes.', - vibe: 'Code, Industrial, Raw', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Space Mono", size: 24, color: "000000", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { - top: { color: "000000", space: 12, style: "single", size: 24 }, - bottom: { color: "000000", space: 12, style: "single", size: 24 }, - left: { color: "000000", space: 12, style: "single", size: 24 }, - right: { color: "000000", space: 12, style: "single", size: 24 } - } - }, - heading2: { - font: "Space Mono", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "E0E0E0", color: "auto", style: "clear" } - }, - body: { - font: "Space Mono", size: 10, color: "111111", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Space Mono', monospace; - h1 { font-size: 24pt; font-weight: 700; color: #000000; border: 4px solid #000; padding: 16px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; background: #E0E0E0; padding: 8px; margin-top: 32px; margin-bottom: 16px; display: inline-block; } - p { font-size: 10pt; line-height: 1.6; color: #111111; margin-bottom: 14px; } - blockquote { border-left: 6px solid #000; padding-left: 16px; margin: 24px 0; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/creative/glitch-art.ts b/src/styles/templates/creative/glitch-art.ts deleted file mode 100644 index e05cf6a..0000000 --- a/src/styles/templates/creative/glitch-art.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const glitchArt: StyleOption = { - id: 'glitch-art', - name: 'Glitch Art', - category: 'Creative', - description: 'Digital distortion aesthetic. Monospaced fonts with neon colors and "broken" styling.', - vibe: 'Digital, Glitch, Cyber', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Rubik+Glitch&family=Share+Tech+Mono&display=swap', - wordConfig: { - heading1: { - font: "Rubik Glitch", size: 40, color: "D500F9", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "121212", color: "auto", style: "clear" } - }, - heading2: { - font: "Share Tech Mono", size: 18, color: "00E5FF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Share Tech Mono", size: 11, color: "BDBDBD", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - accentColor: "00E5FF" - }, - previewCss: ` - font-family: 'Share Tech Mono', monospace; - background: #000000; - color: #BDBDBD; - h1 { font-family: 'Rubik Glitch', cursive; font-size: 40pt; color: #D500F9; background: #121212; padding: 10px; margin-bottom: 24px; text-shadow: 2px 0 #00E5FF; } - h2 { font-size: 18pt; font-weight: 700; color: #00E5FF; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 11pt; line-height: 1.5; color: #BDBDBD; margin-bottom: 14px; } - blockquote { border: 1px solid #D500F9; padding: 16px; margin: 24px 0; color: #D500F9; box-shadow: 4px 4px 0 #00E5FF; } - ` - }; diff --git a/src/styles/templates/creative/grunge-90s.ts b/src/styles/templates/creative/grunge-90s.ts deleted file mode 100644 index 4f2ee38..0000000 --- a/src/styles/templates/creative/grunge-90s.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const grunge90s: StyleOption = { - id: 'grunge-90s', - name: 'Grunge 90s', - category: 'Creative', - description: 'Distressed and edgy. David Carson inspired typography with overlapping elements and grit.', - vibe: 'Dirty, Edgy, Chaotic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Special+Elite&display=swap', - wordConfig: { - heading1: { - font: "Permanent Marker", size: 36, color: "333333", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Special Elite", size: 18, color: "8B0000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "dashed", size: 12 } } - }, - body: { - font: "Special Elite", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "8B0000" - }, - previewCss: ` - font-family: 'Special Elite', cursive; - background-color: #F0F0F0; - h1 { font-family: 'Permanent Marker', cursive; font-size: 36pt; color: #333333; text-align: center; margin-bottom: 24px; transform: rotate(1deg); opacity: 0.9; } - h2 { font-size: 18pt; font-weight: 700; color: #8B0000; margin-top: 32px; margin-bottom: 16px; border-bottom: 2px dashed #000; display: inline-block; transform: skewX(-5deg); } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 3px solid #000; padding: 16px; margin: 24px 0; background: #D3D3D3; transform: rotate(-1deg); } - ` - }; diff --git a/src/styles/templates/creative/index.ts b/src/styles/templates/creative/index.ts deleted file mode 100644 index 08fc104..0000000 --- a/src/styles/templates/creative/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { StyleOption } from '../../../types'; -import { bauhausPoster } from './bauhaus-poster'; -import { blueprintCyanotype } from './blueprint-cyanotype'; -import { brickToy } from './brick-toy'; -import { brutalistMono } from './brutalist-mono'; -import { glitchArt } from './glitch-art'; -import { grunge90s } from './grunge-90s'; -import { kindergartenArt } from './kindergarten-art'; -import { origamiPaper } from './origami-paper'; -import { popArtComic } from './pop-art-comic'; -import { risographPrint } from './risograph-print'; -import { streetArtGraffiti } from './street-art-graffiti'; -import { vaporwaveAesthetic } from './vaporwave-aesthetic'; -import { watercolorWash } from './watercolor-wash'; - -export const creativeStyles: StyleOption[] = [ - bauhausPoster, - blueprintCyanotype, - brickToy, - brutalistMono, - glitchArt, - grunge90s, - kindergartenArt, - origamiPaper, - popArtComic, - risographPrint, - streetArtGraffiti, - vaporwaveAesthetic, - watercolorWash -]; diff --git a/src/styles/templates/creative/kindergarten-art.ts b/src/styles/templates/creative/kindergarten-art.ts deleted file mode 100644 index 75b2d39..0000000 --- a/src/styles/templates/creative/kindergarten-art.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const kindergartenArt: StyleOption = { - id: 'kindergarten-art', - name: 'Kindergarten Art', - category: 'Playful', - description: 'Child-like crayon aesthetic. Primary colors, rounded fonts, and large friendly text.', - vibe: 'Childish, Fun, Primary', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Chewy&family=Balsamiq+Sans:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Chewy", size: 40, color: "2962FF", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Balsamiq Sans", size: 18, color: "D50000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Balsamiq Sans", size: 14, color: "111111", align: 'left', - spacing: { before: 0, after: 160, line: 320 } - }, - accentColor: "FFD600" - }, - previewCss: ` - font-family: 'Balsamiq Sans', cursive; - h1 { font-family: 'Chewy', cursive; font-size: 40pt; color: #2962FF; text-align: center; margin-bottom: 24px; transform: rotate(-2deg); } - h2 { font-size: 18pt; font-weight: 700; color: #D50000; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 14pt; line-height: 1.6; color: #111111; margin-bottom: 14px; } - blockquote { border: 4px dashed #FFD600; padding: 20px; margin: 24px 0; border-radius: 20px; background: #FFFDE7; } - ` - }; diff --git a/src/styles/templates/creative/origami-paper.ts b/src/styles/templates/creative/origami-paper.ts deleted file mode 100644 index e02c9e8..0000000 --- a/src/styles/templates/creative/origami-paper.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const origamiPaper: StyleOption = { - id: 'origami-paper', - name: 'Origami Paper', - category: 'Creative', - description: 'Folded paper aesthetic. Sharp angles, subtle shadows, and crisp typography.', - vibe: 'Delicate, Sharp, Paper', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cormorant+Unicase:wght@400;700&family=Muli:wght@300;400&display=swap', - wordConfig: { - heading1: { - font: "Cormorant Unicase", size: 32, color: "37474F", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Cormorant Unicase", size: 16, color: "546E7A", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Muli", size: 10, color: "455A64", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "37474F" - }, - previewCss: ` - font-family: 'Muli', sans-serif; - background: #FAFAFA; - h1 { font-family: 'Cormorant Unicase', serif; font-size: 32pt; font-weight: 700; color: #37474F; text-align: center; margin-bottom: 24px; text-shadow: 1px 1px 0 #CCC; } - h2 { font-family: 'Cormorant Unicase', serif; font-size: 16pt; color: #546E7A; margin-top: 32px; margin-bottom: 16px; border-bottom: 1px solid #CFD8DC; display: inline-block; padding-bottom: 4px; } - p { font-size: 10pt; line-height: 1.7; color: #455A64; margin-bottom: 14px; } - blockquote { background: #FFF; padding: 20px; border: 1px solid #ECEFF1; box-shadow: 2px 2px 5px rgba(0,0,0,0.05); margin: 24px 0; transform: rotate(1deg); } - ` - }; diff --git a/src/styles/templates/creative/pop-art-comic.ts b/src/styles/templates/creative/pop-art-comic.ts deleted file mode 100644 index 9ead45f..0000000 --- a/src/styles/templates/creative/pop-art-comic.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const popArtComic: StyleOption = { - id: 'pop-art-comic', - name: 'Pop Art Comic', - category: 'Creative', - description: 'Roy Lichtenstein inspired. Bold black outlines, halftone vibes, and primary colors.', - vibe: 'Comic, Bold, Pop', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bangers&family=Comic+Neue:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Bangers", size: 42, color: "000000", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFFF00", color: "auto", style: "clear" } // Yellow back - }, - heading2: { - font: "Bangers", size: 24, color: "FFFFFF", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "FF0000", color: "auto", style: "clear" } // Red back - }, - body: { - font: "Comic Neue", size: 12, color: "000000", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Comic Neue', sans-serif; - h1 { font-family: 'Bangers', cursive; font-size: 42pt; color: #000000; background: #FFFF00; padding: 10px; border: 4px solid #000; box-shadow: 5px 5px 0 #000; margin-bottom: 24px; display: inline-block; } - h2 { font-family: 'Bangers', cursive; font-size: 24pt; color: #FFFFFF; background: #FF0000; padding: 5px 15px; border: 3px solid #000; margin-top: 32px; margin-bottom: 16px; display: inline-block; transform: rotate(-2deg); } - p { font-size: 12pt; line-height: 1.5; color: #000000; margin-bottom: 14px; font-weight: 700; } - blockquote { background: #FFFFFF; border: 3px solid #000; padding: 20px; border-radius: 50% / 20%; margin: 24px 0; text-align: center; } - ` - }; diff --git a/src/styles/templates/creative/risograph-print.ts b/src/styles/templates/creative/risograph-print.ts deleted file mode 100644 index 23a2cfa..0000000 --- a/src/styles/templates/creative/risograph-print.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const risographPrint: StyleOption = { - id: 'risograph-print', - name: 'Risograph Print', - category: 'Creative', - description: 'Independent publishing style. Grainy textures, misalignment, and vibrant spot colors (Pink/Teal).', - vibe: 'Artistic, Indie, Textured', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Eb+Garamond:ital,wght@0,400;0,700;1,400&family=Karla:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Eb Garamond", size: 42, color: "FF007F", bold: true, align: 'left', // Riso Pink - spacing: { before: 400, after: 200, line: 200 }, - italic: true - }, - heading2: { - font: "Karla", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "00A9FF", color: "auto", style: "clear" } // Riso Blue background - }, - body: { - font: "Karla", size: 10, color: "1A1A1A", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF007F" - }, - previewCss: ` - font-family: 'Karla', sans-serif; - background: #FFFEF0; - h1 { font-family: 'Eb Garamond', serif; font-size: 42pt; font-weight: 700; font-style: italic; color: #FF007F; margin-bottom: 24px; mix-blend-mode: multiply; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; background: #00A9FF; display: inline-block; padding: 4px 10px; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #1A1A1A; margin-bottom: 14px; } - blockquote { border-left: 6px solid #FF007F; padding-left: 16px; margin: 24px 0; color: #555; font-style: italic; } - ` - }; diff --git a/src/styles/templates/creative/street-art-graffiti.ts b/src/styles/templates/creative/street-art-graffiti.ts deleted file mode 100644 index 6d02465..0000000 --- a/src/styles/templates/creative/street-art-graffiti.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const streetArtGraffiti: StyleOption = { - id: 'street-art-graffiti', - name: 'Street Art Graffiti', - category: 'Creative', - description: 'Urban street style. Spray paint fonts, dripping effects, and concrete vibes.', - vibe: 'Urban, Rebel, Spray', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Rock+Salt&display=swap', - wordConfig: { - heading1: { - font: "Permanent Marker", size: 48, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFFF00", color: "auto", style: "clear" } // Hazard Yellow - }, - heading2: { - font: "Rock Salt", size: 18, color: "FF0000", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Permanent Marker", size: 12, color: "333333", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Permanent Marker', cursive; - background: #F0F0F0; - h1 { font-size: 48pt; color: #000000; text-align: center; background: #FFFF00; padding: 10px; transform: rotate(-2deg); margin-bottom: 24px; box-shadow: 4px 4px 0 #000; } - h2 { font-family: 'Rock Salt', cursive; font-size: 18pt; color: #FF0000; margin-top: 32px; margin-bottom: 16px; transform: rotate(1deg); } - p { font-size: 12pt; line-height: 1.6; color: #333333; margin-bottom: 14px; } - blockquote { border-left: 5px solid #000; padding-left: 16px; margin: 24px 0; font-family: 'Rock Salt', cursive; font-size: 10pt; } - ` - }; diff --git a/src/styles/templates/creative/vaporwave-aesthetic.ts b/src/styles/templates/creative/vaporwave-aesthetic.ts deleted file mode 100644 index fcd2490..0000000 --- a/src/styles/templates/creative/vaporwave-aesthetic.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const vaporwaveAesthetic: StyleOption = { - id: 'vaporwave-aesthetic', - name: 'Vaporwave Aesthetic', - category: 'Creative', - description: 'Nostalgic 80s/90s internet culture. Pink and cyan gradients, wide tracking, and ironic luxury.', - vibe: 'Nostalgic, Digital, Surreal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Varela+Round&family=Montserrat:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Montserrat", size: 32, color: "FF71CE", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - allCaps: true, - tracking: 100 // Wide spacing - }, - heading2: { - font: "Varela Round", size: 16, color: "01CDFE", bold: false, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Montserrat", size: 10, color: "B967FF", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "01CDFE" - }, - previewCss: ` - font-family: 'Montserrat', sans-serif; - background: #F0F0FF; - h1 { font-size: 32pt; font-weight: 700; color: #FF71CE; text-align: center; margin-bottom: 24px; letter-spacing: 4px; text-shadow: 2px 2px #01CDFE; text-transform: uppercase; } - h2 { font-family: 'Varela Round', sans-serif; font-size: 16pt; color: #01CDFE; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #B967FF; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px solid #FF71CE; padding: 16px; margin: 24px 0; background: #E0FFFF; color: #01CDFE; } - ` - }; diff --git a/src/styles/templates/creative/watercolor-wash.ts b/src/styles/templates/creative/watercolor-wash.ts deleted file mode 100644 index f3a9bc4..0000000 --- a/src/styles/templates/creative/watercolor-wash.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const watercolorWash: StyleOption = { - id: 'watercolor-wash', - name: 'Watercolor Wash', - category: 'Creative', - description: 'Artistic and fluid. Soft blended colors and painterly fonts.', - vibe: 'Artistic, Soft, Fluid', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Kalam:wght@400;700&family=Amatic+SC:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Kalam", size: 36, color: "7986CB", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Amatic SC", size: 24, color: "4DB6AC", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Kalam", size: 12, color: "616161", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "7986CB" - }, - previewCss: ` - font-family: 'Kalam', cursive; - h1 { font-size: 36pt; font-weight: 700; color: #7986CB; text-align: center; margin-bottom: 24px; text-shadow: 2px 2px 4px rgba(121, 134, 203, 0.3); } - h2 { font-family: 'Amatic SC', cursive; font-size: 24pt; font-weight: 700; color: #4DB6AC; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.6; color: #616161; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px solid #E0F2F1; background: #E8EAF6; padding: 20px; border-radius: 50% 20% / 10% 40%; margin: 24px 0; text-align: center; } - ` - }; diff --git a/src/styles/templates/editorial/art-nouveau-organic.ts b/src/styles/templates/editorial/art-nouveau-organic.ts deleted file mode 100644 index 4cb5087..0000000 --- a/src/styles/templates/editorial/art-nouveau-organic.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const artNouveauOrganic: StyleOption = { - id: 'art-nouveau-organic', - name: 'Art Nouveau Organic', - category: 'Classic', - description: 'Inspired by the Art Nouveau movement (1890-1910). Flowing organic lines with nature-inspired elegance and whiplash curves.', - vibe: 'Organic, Flowing, Decorative', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Sorts+Mill+Goudy:wght@400&family=Fanwood+Text:wght@400&display=swap', - wordConfig: { - heading1: { - font: "Sorts Mill Goudy", size: 32, color: "4A5D23", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 }, - border: { bottom: { color: "8FA876", space: 10, style: "single", size: 8 } } - }, - heading2: { - font: "Sorts Mill Goudy", size: 16, color: "6B7F4A", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Fanwood Text", size: 11, color: "3D4A2D", align: 'both', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "8FA876" - }, - previewCss: ` - font-family: 'Fanwood Text', serif; - h1 { font-family: 'Sorts Mill Goudy', serif; font-size: 32pt; color: #4A5D23; text-align: center; border-bottom: 2px solid #8FA876; padding-bottom: 16px; margin-bottom: 32px; } - h2 { font-family: 'Sorts Mill Goudy', serif; font-size: 16pt; color: #6B7F4A; margin-top: 36px; margin-bottom: 18px; font-style: italic; } - p { font-size: 11pt; line-height: 1.8; color: #3D4A2D; margin-bottom: 16px; text-align: justify; } - blockquote { background: #F4F7F0; padding: 20px; border-left: 3px solid #8FA876; margin: 28px 0; font-style: italic; } - ` - }; diff --git a/src/styles/templates/editorial/arts-crafts-heritage.ts b/src/styles/templates/editorial/arts-crafts-heritage.ts deleted file mode 100644 index d771669..0000000 --- a/src/styles/templates/editorial/arts-crafts-heritage.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const artsCraftsHeritage: StyleOption = { - id: 'arts-crafts-heritage', - name: 'Arts & Crafts Heritage', - category: 'Classic', - description: 'Inspired by William Morris and the Arts & Crafts movement (1880s-1900). Emphasizes craftsmanship, natural forms, and medieval aesthetics with readable typography.', - vibe: 'Artisan, Literary, Handcrafted', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600;700&family=EB+Garamond:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Cormorant Garamond", size: 28, color: "2F4F4F", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - border: { - bottom: { color: "556B2F", space: 8, style: "single", size: 8 } - } - }, - heading2: { - font: "Cormorant Garamond", size: 16, color: "556B2F", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "EB Garamond", size: 11, color: "3C3C3C", align: 'both', - spacing: { before: 0, after: 160, line: 320 } - }, - accentColor: "556B2F" - }, - previewCss: ` - font-family: 'EB Garamond', serif; - h1 { font-family: 'Cormorant Garamond', serif; font-size: 28pt; font-weight: 700; color: #2F4F4F; text-align: center; border-bottom: 2px solid #556B2F; padding-bottom: 16px; margin-bottom: 28px; } - h2 { font-family: 'Cormorant Garamond', serif; font-size: 16pt; font-weight: 700; color: #556B2F; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.8; color: #3C3C3C; margin-bottom: 14px; text-align: justify; } - blockquote { background: #F5F5DC; padding: 20px; border-left: 4px solid #556B2F; margin: 24px 0; font-style: italic; } - ` - }; diff --git a/src/styles/templates/editorial/baroque-splendor.ts b/src/styles/templates/editorial/baroque-splendor.ts deleted file mode 100644 index 9ad9e04..0000000 --- a/src/styles/templates/editorial/baroque-splendor.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const baroqueSplendor: StyleOption = { - id: 'baroque-splendor', - name: 'Baroque Splendor', - category: 'Classic', - description: 'Heavy, dramatic 17th-century luxury. Deep golds and crimsons with deeply flourished script.', - vibe: 'Luxurious, Dramatic, Heavy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Mrs+Saint+Delafield&family=Mate:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Mrs Saint Delafield", size: 48, color: "800000", bold: false, align: 'center', - spacing: { before: 520, after: 320, line: 240 } - }, - heading2: { - font: "Mate", size: 16, color: "B8860B", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - body: { - font: "Mate", size: 12, color: "3D2B1F", align: 'both', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "B8860B" - }, - previewCss: ` - font-family: 'Mate', serif; - h1 { font-family: 'Mrs Saint Delafield', cursive; font-size: 48pt; color: #800000; text-align: center; margin-bottom: 36px; } - h2 { font-size: 16pt; font-weight: 700; color: #B8860B; text-align: center; margin-top: 40px; margin-bottom: 20px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 12pt; line-height: 1.8; color: #3D2B1F; margin-bottom: 16px; text-align: justify; } - blockquote { background: #FFF8E7; border: 2px double #B8860B; padding: 24px; margin: 32px 0; text-align: center; font-style: italic; } - ` - }; diff --git a/src/styles/templates/editorial/cottagecore-journal.ts b/src/styles/templates/editorial/cottagecore-journal.ts deleted file mode 100644 index d69e9d4..0000000 --- a/src/styles/templates/editorial/cottagecore-journal.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const cottagecoreJournal: StyleOption = { - id: 'cottagecore-journal', - name: 'Cottagecore Journal', - category: 'Aesthetic', - description: 'Whimsical countryside diary. Handwritten fonts with soft sage greens and earthy browns.', - vibe: 'Whimsical, Nature, Handmade', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Patrick+Hand&display=swap', - wordConfig: { - heading1: { - font: "Amatic SC", size: 40, color: "33691E", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Patrick Hand", size: 18, color: "5D4037", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Patrick Hand", size: 14, color: "424242", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "33691E" - }, - previewCss: ` - font-family: 'Patrick Hand', cursive; - background: #F1F8E9; - h1 { font-family: 'Amatic SC', cursive; font-size: 40pt; font-weight: 700; color: #33691E; text-align: center; margin-bottom: 24px; } - h2 { font-size: 18pt; font-weight: 700; color: #5D4037; text-align: center; margin-top: 30px; margin-bottom: 14px; border-bottom: 1px dashed #8D6E63; display: inline-block; } - p { font-size: 14pt; line-height: 1.6; color: #424242; margin-bottom: 14px; } - blockquote { background: #FFF; border: 1px dotted #33691E; padding: 20px; border-radius: 10px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/editorial/dutch-golden-age.ts b/src/styles/templates/editorial/dutch-golden-age.ts deleted file mode 100644 index 46597ee..0000000 --- a/src/styles/templates/editorial/dutch-golden-age.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const dutchGoldenAge: StyleOption = { - id: 'dutch-golden-age', - name: 'Dutch Golden Age', - category: 'Classic', - description: 'Inspired by 17th century Dutch art and typography. Rich, painterly aesthetics with Rembrandt-era elegance.', - vibe: 'Classical, Rich, Painterly', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Pirata+One&family=Gentium+Book+Plus:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Pirata One", size: 32, color: "3E2723", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Gentium Book Plus", size: 14, color: "5D4037", bold: true, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Gentium Book Plus", size: 11, color: "4E342E", align: 'both', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "BF8040" - }, - previewCss: ` - font-family: 'Gentium Book Plus', serif; - h1 { font-family: 'Pirata One', cursive; font-size: 32pt; color: #3E2723; text-align: center; margin-bottom: 32px; } - h2 { font-size: 14pt; font-weight: 700; color: #5D4037; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 11pt; line-height: 1.8; color: #4E342E; margin-bottom: 16px; text-align: justify; } - blockquote { background: #EFEBE9; padding: 20px; border: 1px solid #BF8040; margin: 28px 0; } - ` - }; diff --git a/src/styles/templates/editorial/fashion-magazine.ts b/src/styles/templates/editorial/fashion-magazine.ts deleted file mode 100644 index e6483a2..0000000 --- a/src/styles/templates/editorial/fashion-magazine.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const fashionMagazine: StyleOption = { - id: 'fashion-magazine', - name: 'Fashion Magazine', - category: 'Editorial', - description: 'Trendy and bold. High-contrast typography with oversized lettering and pink accents.', - vibe: 'Trendy, Loud, Pink', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Abril+Fatface&family=Raleway:wght@300;700&display=swap', - wordConfig: { - heading1: { - font: "Abril Fatface", size: 48, color: "E91E63", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 200 } - }, - heading2: { - font: "Raleway", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true, - tracking: 200 - }, - body: { - font: "Raleway", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "E91E63" - }, - previewCss: ` - font-family: 'Raleway', sans-serif; - h1 { font-family: 'Abril Fatface', cursive; font-size: 48pt; color: #E91E63; margin-bottom: 24px; line-height: 0.9; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; text-transform: uppercase; letter-spacing: 4px; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #212121; margin-bottom: 14px; font-weight: 300; } - blockquote { border-left: 10px solid #E91E63; padding-left: 20px; margin: 24px 0; font-family: 'Abril Fatface', cursive; font-size: 18pt; } - ` -}; diff --git a/src/styles/templates/editorial/film-script.ts b/src/styles/templates/editorial/film-script.ts deleted file mode 100644 index 50a95fc..0000000 --- a/src/styles/templates/editorial/film-script.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const filmScript: StyleOption = { - id: 'film-script', - name: 'Film Script', - category: 'Editorial', - description: 'Hollywood screenplay format. Courier font, specific margins, and character name centering.', - vibe: 'Cinematic, Format, Draft', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Courier Prime", size: 12, color: "000000", bold: true, align: 'left', - spacing: { before: 240, after: 240, line: 240 }, - allCaps: true, - underline: true - }, - heading2: { - font: "Courier Prime", size: 12, color: "000000", bold: true, align: 'center', - spacing: { before: 480, after: 0, line: 240 }, - allCaps: true - }, - body: { - font: "Courier Prime", size: 12, color: "000000", align: 'left', - spacing: { before: 0, after: 0, line: 240 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - h1 { font-size: 12pt; font-weight: 700; color: #000000; text-decoration: underline; text-transform: uppercase; margin-bottom: 12px; } - h2 { font-size: 12pt; font-weight: 700; color: #000000; text-transform: uppercase; text-align: center; margin-top: 24px; margin-bottom: 0px; } - p { font-size: 12pt; line-height: 1; color: #000000; margin-bottom: 12px; } - blockquote { margin: 0 40px; text-align: center; } - ` -}; diff --git a/src/styles/templates/editorial/index.ts b/src/styles/templates/editorial/index.ts deleted file mode 100644 index 9346b49..0000000 --- a/src/styles/templates/editorial/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; -import { artNouveauOrganic } from './art-nouveau-organic'; -import { artsCraftsHeritage } from './arts-crafts-heritage'; -import { baroqueSplendor } from './baroque-splendor'; -import { cottagecoreJournal } from './cottagecore-journal'; -import { dutchGoldenAge } from './dutch-golden-age'; -import { fashionMagazine } from './fashion-magazine'; -import { filmScript } from './film-script'; -import { indieZine } from './indie-zine'; -import { literaryReview } from './literary-review'; -import { luxuryEditorial } from './luxury-editorial'; -import { neoGothicRevival } from './neo-gothic-revival'; -import { newspaperClassic } from './newspaper-classic'; -import { newspaperModern } from './newspaper-modern'; -import { newspaperTabloid } from './newspaper-tabloid'; -import { nyEditor } from './ny-editor'; -import { rococoRomance } from './rococo-romance'; -import { victorianOrnate } from './victorian-ornate'; - -export const editorialStyles: StyleOption[] = [ - artNouveauOrganic, - artsCraftsHeritage, - baroqueSplendor, - cottagecoreJournal, - dutchGoldenAge, - fashionMagazine, - filmScript, - indieZine, - literaryReview, - luxuryEditorial, - neoGothicRevival, - newspaperClassic, - newspaperModern, - newspaperTabloid, - nyEditor, - rococoRomance, - victorianOrnate -]; diff --git a/src/styles/templates/editorial/indie-zine.ts b/src/styles/templates/editorial/indie-zine.ts deleted file mode 100644 index 211102a..0000000 --- a/src/styles/templates/editorial/indie-zine.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const indieZine: StyleOption = { - id: 'indie-zine', - name: 'Indie Zine', - category: 'Editorial', - description: 'DIY photocopier aesthetic. Typewriter fonts, cut-out look, and rebellious asymmetry.', - vibe: 'DIY, Rebellious, Rough', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Special+Elite&family=Rock+Salt&display=swap', - wordConfig: { - heading1: { - font: "Rock Salt", size: 28, color: "000000", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "D1C4E9", color: "auto", style: "clear" } - }, - heading2: { - font: "Special Elite", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "single", size: 12 } } - }, - body: { - font: "Special Elite", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Special Elite', cursive; - h1 { font-family: 'Rock Salt', cursive; font-size: 28pt; color: #000000; background: #D1C4E9; padding: 10px; transform: rotate(-2deg); margin-bottom: 24px; display: inline-block; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; border-bottom: 2px solid #000; margin-top: 32px; margin-bottom: 16px; width: fit-content; } - p { font-size: 10pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px dashed #000; padding: 16px; margin: 24px 0; transform: rotate(1deg); } - ` -}; diff --git a/src/styles/templates/editorial/literary-review.ts b/src/styles/templates/editorial/literary-review.ts deleted file mode 100644 index 0e874d7..0000000 --- a/src/styles/templates/editorial/literary-review.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const literaryReview: StyleOption = { - id: 'literary-review', - name: 'Literary Review', - category: 'Editorial', - description: 'Classic bookish aesthetic. Dense serif text, elegant headers, perfect for long-form essays.', - vibe: 'Intellectual, Dense, Classic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,400;0,700;1,400&family=Sorts+Mill+Goudy&display=swap', - wordConfig: { - heading1: { - font: "Crimson Pro", size: 30, color: "4A148C", bold: true, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Crimson Pro", size: 14, color: "000000", bold: false, align: 'center', - spacing: { before: 360, after: 180, line: 240 }, - smallCaps: true - }, - body: { - font: "Sorts Mill Goudy", size: 11, color: "212121", align: 'both', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "4A148C" - }, - previewCss: ` - font-family: 'Sorts Mill Goudy', serif; - h1 { font-family: 'Crimson Pro', serif; font-size: 30pt; font-weight: 700; color: #4A148C; text-align: center; margin-bottom: 32px; } - h2 { font-family: 'Crimson Pro', serif; font-size: 14pt; color: #000000; text-align: center; margin-top: 36px; margin-bottom: 18px; font-variant: small-caps; } - p { font-size: 11pt; line-height: 1.8; color: #212121; margin-bottom: 16px; text-align: justify; } - blockquote { margin: 24px 40px; font-style: italic; color: #4A148C; } - ` -}; diff --git a/src/styles/templates/editorial/luxury-editorial.ts b/src/styles/templates/editorial/luxury-editorial.ts deleted file mode 100644 index 86b11fb..0000000 --- a/src/styles/templates/editorial/luxury-editorial.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const luxuryEditorial: StyleOption = { - id: 'luxury-editorial', - name: 'Luxury Editorial', - category: 'Editorial', - description: 'High-fashion magazine inspired design. Elegant serifs with sophisticated spacing and premium feel for upscale content.', - vibe: 'Fashion, Premium, Sophisticated', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cormorant:wght@400;500;700&family=Montserrat:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Cormorant", size: 36, color: "1C1C1C", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Montserrat", size: 11, color: "1C1C1C", bold: true, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Montserrat", size: 10, color: "3A3A3A", align: 'left', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "B8860B" - }, - previewCss: ` - font-family: 'Montserrat', sans-serif; - h1 { font-family: 'Cormorant', serif; font-size: 36pt; font-weight: 500; color: #1C1C1C; text-align: center; margin-bottom: 32px; letter-spacing: 2px; } - h2 { font-size: 11pt; font-weight: 500; color: #1C1C1C; margin-top: 36px; margin-bottom: 18px; text-transform: uppercase; letter-spacing: 3px; } - p { font-size: 10pt; line-height: 1.7; color: #3A3A3A; margin-bottom: 16px; font-weight: 300; } - blockquote { border-top: 1px solid #B8860B; border-bottom: 1px solid #B8860B; padding: 24px 0; margin: 32px 0; text-align: center; font-family: 'Cormorant', serif; font-size: 14pt; font-style: italic; } - ` -}; diff --git a/src/styles/templates/editorial/neo-gothic-revival.ts b/src/styles/templates/editorial/neo-gothic-revival.ts deleted file mode 100644 index cac17eb..0000000 --- a/src/styles/templates/editorial/neo-gothic-revival.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const neoGothicRevival: StyleOption = { - id: 'neo-gothic-revival', - name: 'Neo-Gothic Revival', - category: 'Classic', - description: 'Inspired by Gothic architecture and medieval manuscripts. Dark, dramatic typography with ecclesiastical gravitas.', - vibe: 'Medieval, Dramatic, Historic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700&family=Spectral:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Cinzel Decorative", size: 28, color: "1A1A1A", bold: true, align: 'center', - spacing: { before: 480, after: 280, line: 240 }, - border: { - top: { color: "4A0E0E", space: 12, style: "single", size: 16 }, - bottom: { color: "4A0E0E", space: 12, style: "single", size: 16 } - } - }, - heading2: { - font: "Cinzel Decorative", size: 14, color: "4A0E0E", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Spectral", size: 11, color: "2C2C2C", align: 'both', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "4A0E0E" - }, - previewCss: ` - font-family: 'Spectral', serif; - h1 { font-family: 'Cinzel Decorative', cursive; font-size: 28pt; font-weight: 700; color: #1A1A1A; text-align: center; border-top: 3px solid #4A0E0E; border-bottom: 3px solid #4A0E0E; padding: 20px 0; margin-bottom: 32px; } - h2 { font-family: 'Cinzel Decorative', cursive; font-size: 14pt; color: #4A0E0E; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 11pt; line-height: 1.8; color: #2C2C2C; margin-bottom: 16px; text-align: justify; } - blockquote { background: #F5F5EB; padding: 20px; border-left: 4px solid #4A0E0E; margin: 28px 0; font-style: italic; } - ` - }; diff --git a/src/styles/templates/editorial/newspaper-classic.ts b/src/styles/templates/editorial/newspaper-classic.ts deleted file mode 100644 index 9b3c06e..0000000 --- a/src/styles/templates/editorial/newspaper-classic.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const newspaperClassic: StyleOption = { - id: 'newspaper-classic', - name: 'Newspaper Classic', - category: 'Editorial', - description: 'Traditional newspaper layout with strong typographic hierarchy. Bold headlines, readable body text, and authoritative presence.', - vibe: 'News, Authority, Information', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=PT+Serif:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display", size: 36, color: "000000", bold: true, align: 'center', - spacing: { before: 240, after: 160, line: 220 } - }, - heading2: { - font: "Playfair Display", size: 16, color: "000000", bold: true, align: 'left', - spacing: { before: 240, after: 120, line: 240 } - }, - body: { - font: "PT Serif", size: 10, color: "1A1A1A", align: 'both', - spacing: { before: 0, after: 120, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'PT Serif', serif; - h1 { font-family: 'Playfair Display', serif; font-size: 36pt; font-weight: 900; color: #000000; text-align: center; border-bottom: 2px solid #000000; padding-bottom: 12px; margin-bottom: 20px; } - h2 { font-family: 'Playfair Display', serif; font-size: 16pt; font-weight: 700; color: #000000; margin-top: 24px; margin-bottom: 12px; } - p { font-size: 10pt; line-height: 1.6; color: #1A1A1A; margin-bottom: 10px; text-align: justify; } - blockquote { font-size: 14pt; font-style: italic; text-align: center; margin: 24px 40px; } - ` -}; diff --git a/src/styles/templates/editorial/newspaper-modern.ts b/src/styles/templates/editorial/newspaper-modern.ts deleted file mode 100644 index dbb6485..0000000 --- a/src/styles/templates/editorial/newspaper-modern.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const newspaperModern: StyleOption = { - id: 'newspaper-modern', - name: 'Newspaper Modern', - category: 'Editorial', - description: 'Contemporary newspaper design balancing tradition with modern sensibilities. Clean grid-based layout.', - vibe: 'Modern, Editorial, Informative', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "DM Serif Display", size: 36, color: "1A1A1A", bold: false, align: 'left', - spacing: { before: 320, after: 200, line: 220 } - }, - heading2: { - font: "DM Sans", size: 12, color: "1A1A1A", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 240 } - }, - body: { - font: "DM Sans", size: 10, color: "333333", align: 'both', - spacing: { before: 0, after: 140, line: 280 } - }, - accentColor: "DC2626" - }, - previewCss: ` - font-family: 'DM Sans', sans-serif; - h1 { font-family: 'DM Serif Display', serif; font-size: 36pt; color: #1A1A1A; margin-bottom: 24px; } - h2 { font-size: 12pt; font-weight: 700; color: #1A1A1A; margin-top: 28px; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 1px; } - p { font-size: 10pt; line-height: 1.6; color: #333333; margin-bottom: 12px; text-align: justify; } - blockquote { font-size: 16pt; font-style: italic; font-family: 'DM Serif Display', serif; text-align: center; margin: 28px 20px; color: #DC2626; } - ` -}; diff --git a/src/styles/templates/editorial/newspaper-tabloid.ts b/src/styles/templates/editorial/newspaper-tabloid.ts deleted file mode 100644 index 2f8bd13..0000000 --- a/src/styles/templates/editorial/newspaper-tabloid.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const newspaperTabloid: StyleOption = { - id: 'newspaper-tabloid', - name: 'Newspaper Tabloid', - category: 'Editorial', - description: 'Sensationalist news design. Condensed, heavy headers with urgent red accents.', - vibe: 'Urgent, Bold, Sensational', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Antonio:wght@700&family=Pathway+Extreme:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Antonio", size: 42, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 360, after: 200, line: 200 }, - shading: { fill: "D50000", color: "auto", style: "clear" } - }, - heading2: { - font: "Antonio", size: 20, color: "000000", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 220 } - }, - body: { - font: "Pathway Extreme", size: 10, color: "111111", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D50000" - }, - previewCss: ` - font-family: 'Pathway Extreme', sans-serif; - h1 { font-family: 'Antonio', sans-serif; font-size: 42pt; font-weight: 700; color: #FFFFFF; background: #D50000; padding: 12px 16px; margin-bottom: 24px; text-transform: uppercase; line-height: 1; } - h2 { font-family: 'Antonio', sans-serif; font-size: 20pt; font-weight: 700; color: #000000; margin-top: 28px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.5; color: #111111; margin-bottom: 14px; } - blockquote { font-size: 14pt; font-weight: 700; font-style: italic; color: #000000; border-left: 6px solid #D50000; padding-left: 16px; margin: 24px 0; } - ` -}; diff --git a/src/styles/templates/editorial/ny-editor.ts b/src/styles/templates/editorial/ny-editor.ts deleted file mode 100644 index 7081221..0000000 --- a/src/styles/templates/editorial/ny-editor.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const nyEditor: StyleOption = { - id: 'ny-editor', - name: 'The Editorial', - category: 'Editorial', - description: 'High-contrast serifs, centered headers, delicate borders. Feels like a premium magazine feature.', - vibe: 'Luxury, Fashion, Literature', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400;1,400&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display", size: 36, color: "111111", bold: true, italic: true, align: 'center', - spacing: { before: 600, after: 400, line: 240 } - }, - heading2: { - font: "Playfair Display", size: 14, color: "444444", bold: true, allCaps: true, tracking: 100, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "DDDDDD", space: 8, style: "single", size: 4 } } - }, - body: { - font: "Lora", size: 11, color: "333333", align: 'both', - spacing: { before: 0, after: 200, line: 320 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Lora', serif; - h1 { font-family: 'Playfair Display', serif; font-size: 36pt; font-weight: 700; font-style: italic; text-align: center; margin-bottom: 30px; } - h2 { font-family: 'Playfair Display', serif; font-size: 14pt; font-weight: 700; text-transform: uppercase; letter-spacing: 3px; text-align: center; border-bottom: 1px solid #ddd; padding-bottom: 10px; margin-top: 40px; color: #444; } - p { font-size: 11pt; line-height: 1.8; text-align: justify; margin-bottom: 20px; } - blockquote { font-family: 'Playfair Display', serif; font-size: 18pt; font-style: italic; text-align: center; color: #555; margin: 40px 20px; border: none; } - ` -}; diff --git a/src/styles/templates/editorial/rococo-romance.ts b/src/styles/templates/editorial/rococo-romance.ts deleted file mode 100644 index 9a01d75..0000000 --- a/src/styles/templates/editorial/rococo-romance.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const rococoRomance: StyleOption = { - id: 'rococo-romance', - name: 'Rococo Romance', - category: 'Classic', - description: 'Inspired by 18th-century Rococo. Light, playful, and intricate with pastel tones and swirling elegance.', - vibe: 'Romantic, Ornate, Pastel', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Pinyon+Script&family=Playfair+Display+SC:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Pinyon Script", size: 36, color: "D87093", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Playfair Display SC", size: 14, color: "C0A080", bold: true, align: 'center', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Playfair Display SC", size: 10, color: "555555", align: 'center', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "FFB6C1" - }, - previewCss: ` - font-family: 'Playfair Display SC', serif; - h1 { font-family: 'Pinyon Script', cursive; font-size: 36pt; color: #D87093; text-align: center; margin-bottom: 32px; } - h2 { font-size: 14pt; font-weight: 700; color: #C0A080; text-align: center; margin-top: 36px; margin-bottom: 18px; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.8; color: #555555; margin-bottom: 16px; text-align: center; } - blockquote { border: 1px solid #FFB6C1; padding: 20px; border-radius: 50% 50% 50% 50% / 10% 10% 10% 10%; margin: 28px 40px; text-align: center; } - ` - }; diff --git a/src/styles/templates/editorial/victorian-ornate.ts b/src/styles/templates/editorial/victorian-ornate.ts deleted file mode 100644 index b91bd00..0000000 --- a/src/styles/templates/editorial/victorian-ornate.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const victorianOrnate: StyleOption = { - id: 'victorian-ornate', - name: 'Victorian Ornate', - category: 'Classic', - description: 'Inspired by the decorative exuberance of the Victorian era (1837-1901). Features rich typography with ornamental borders and jewel-tone accents.', - vibe: 'Traditional, Formal, Heritage', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Crimson+Text:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display", size: 26, color: "2C1810", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "8B4513", space: 8, style: "double", size: 12 } } - }, - heading2: { - font: "Playfair Display", size: 16, color: "5D3A1A", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Crimson Text", size: 11, color: "3D2914", align: 'both', - spacing: { before: 0, after: 160, line: 320 } - }, - accentColor: "8B4513" - }, - previewCss: ` - font-family: 'Crimson Text', serif; - h1 { font-family: 'Playfair Display', serif; font-size: 26pt; font-weight: 700; color: #2C1810; text-align: center; border-bottom: 4px double #8B4513; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-family: 'Playfair Display', serif; font-size: 16pt; font-weight: 700; color: #5D3A1A; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.8; color: #3D2914; margin-bottom: 14px; text-align: justify; } - blockquote { background: #FDF5E6; padding: 20px; border: 1px solid #D4A574; color: #5D3A1A; margin: 24px 0; font-style: italic; } - ` - }; diff --git a/src/styles/templates/industrial/automotive-bold.ts b/src/styles/templates/industrial/automotive-bold.ts deleted file mode 100644 index 8845ed8..0000000 --- a/src/styles/templates/industrial/automotive-bold.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const automotiveBold: StyleOption = { - id: 'automotive-bold', - name: 'Automotive Bold', - category: 'Automotive', - description: 'Powerful design for automotive and motorsport industries. Bold typography with dynamic energy and speed.', - vibe: 'Powerful, Dynamic, Bold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Teko:wght@400;500;700&family=Barlow:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Teko", size: 40, color: "B71C1C", bold: true, align: 'left', - spacing: { before: 360, after: 200, line: 200 } - }, - heading2: { - font: "Teko", size: 20, color: "212121", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 220 } - }, - body: { - font: "Barlow", size: 10, color: "37474F", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "B71C1C" - }, - previewCss: ` - font-family: 'Barlow', sans-serif; - h1 { font-family: 'Teko', sans-serif; font-size: 40pt; font-weight: 700; color: #B71C1C; margin-bottom: 24px; text-transform: uppercase; letter-spacing: 2px; } - h2 { font-family: 'Teko', sans-serif; font-size: 20pt; font-weight: 500; color: #212121; margin-top: 28px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #37474F; margin-bottom: 14px; } - blockquote { background: #FFEBEE; padding: 16px; border-left: 6px solid #B71C1C; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/industrial/construction-industrial.ts b/src/styles/templates/industrial/construction-industrial.ts deleted file mode 100644 index df53771..0000000 --- a/src/styles/templates/industrial/construction-industrial.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const constructionIndustrial: StyleOption = { - id: 'construction-industrial', - name: 'Construction Industrial', - category: 'Industrial', - description: 'Bold and sturdy design for construction and industrial companies. Strong typography with safety-inspired colors.', - vibe: 'Strong, Industrial, Professional', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Oswald:wght@400;500;700&family=Roboto:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Oswald", size: 28, color: "212121", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFC107", color: "auto", style: "clear" } - }, - heading2: { - font: "Oswald", size: 16, color: "FF8F00", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Roboto", size: 10, color: "37474F", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF8F00" - }, - previewCss: ` - font-family: 'Roboto', sans-serif; - h1 { font-family: 'Oswald', sans-serif; font-size: 28pt; font-weight: 700; color: #212121; background: #FFC107; padding: 16px 20px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-family: 'Oswald', sans-serif; font-size: 16pt; font-weight: 700; color: #FF8F00; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #37474F; margin-bottom: 14px; } - blockquote { background: #FFF8E1; padding: 16px; border-left: 6px solid #FF8F00; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/industrial/electric-vehicle.ts b/src/styles/templates/industrial/electric-vehicle.ts deleted file mode 100644 index 0f3aed6..0000000 --- a/src/styles/templates/industrial/electric-vehicle.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const electricVehicle: StyleOption = { - id: 'electric-vehicle', - name: 'Electric Vehicle', - category: 'Automotive', - description: 'Sustainable tech design for electric vehicle and clean energy content. Eco-modern with electric accents.', - vibe: 'Sustainable, Modern, Electric', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Electrolize&family=Mulish:wght@400;600;700&display=swap', - wordConfig: { - heading1: { - font: "Electrolize", size: 28, color: "10B981", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Mulish", size: 14, color: "1E293B", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Mulish", size: 10, color: "475569", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "10B981" - }, - previewCss: ` - font-family: 'Mulish', sans-serif; - h1 { font-family: 'Electrolize', sans-serif; font-size: 28pt; color: #10B981; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #1E293B; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #475569; margin-bottom: 14px; } - blockquote { background: #ECFDF5; padding: 16px; border-left: 4px solid #10B981; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/industrial/index.ts b/src/styles/templates/industrial/index.ts deleted file mode 100644 index 315a893..0000000 --- a/src/styles/templates/industrial/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { StyleOption } from '../../../types'; -import { constructionIndustrial } from './construction-industrial'; -import { automotiveBold } from './automotive-bold'; -import { electricVehicle } from './electric-vehicle'; -import { tacticalMilitary } from './tactical-military'; -import { logisticsFreight } from './logistics-freight'; -import { industrialSafety } from './industrial-safety'; -import { nightVision } from './night-vision'; - -export const industrialStyles: StyleOption[] = [ - constructionIndustrial, - automotiveBold, - electricVehicle, - tacticalMilitary, - logisticsFreight, - industrialSafety, - nightVision -]; diff --git a/src/styles/templates/industrial/industrial-safety.ts b/src/styles/templates/industrial/industrial-safety.ts deleted file mode 100644 index 90e08d0..0000000 --- a/src/styles/templates/industrial/industrial-safety.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const industrialSafety: StyleOption = { - id: 'industrial-safety', - name: 'Industrial Safety', - category: 'Industrial', - description: 'Construction site signage. Heavy blacks and yellow caution stripes.', - vibe: 'Safety, Bold, Construction', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Anton&family=Roboto:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Anton", size: 48, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FFD600", color: "auto", style: "clear" } - }, - heading2: { - font: "Roboto", size: 16, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "thick", size: 24 } }, - allCaps: true - }, - body: { - font: "Roboto", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFD600" - }, - previewCss: ` - font-family: 'Roboto', sans-serif; - h1 { font-family: 'Anton', sans-serif; font-size: 48pt; color: #000000; background: repeating-linear-gradient(45deg, #FFD600, #FFD600 10px, #FFC400 10px, #FFC400 20px); text-align: center; padding: 20px; margin-bottom: 24px; text-transform: uppercase; border: 4px solid #000; } - h2 { font-size: 16pt; font-weight: 700; color: #000000; margin-top: 32px; margin-bottom: 16px; border-bottom: 4px solid #000; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px solid #000; background: #FFF9C4; padding: 16px; margin: 24px 0; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/industrial/logistics-freight.ts b/src/styles/templates/industrial/logistics-freight.ts deleted file mode 100644 index ce8be46..0000000 --- a/src/styles/templates/industrial/logistics-freight.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const logisticsFreight: StyleOption = { - id: 'logistics-freight', - name: 'Logistics Freight', - category: 'Industrial', - description: 'Shipping and cargo aesthetic. Stenciled, heavy typography with industrial orange and slate blue.', - vibe: 'Industrial, Heavy, Shipping', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Saira+Stencil+One&family=Saira:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Saira Stencil One", size: 36, color: "E65100", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Saira", size: 16, color: "263238", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Saira", size: 10, color: "455A64", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "E65100" - }, - previewCss: ` - font-family: 'Saira', sans-serif; - h1 { font-family: 'Saira Stencil One', sans-serif; font-size: 36pt; color: #E65100; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 600; color: #263238; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.5; color: #455A64; margin-bottom: 14px; } - blockquote { background: #FFF3E0; padding: 16px; border-left: 8px solid #263238; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/industrial/night-vision.ts b/src/styles/templates/industrial/night-vision.ts deleted file mode 100644 index 257cae6..0000000 --- a/src/styles/templates/industrial/night-vision.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const nightVision: StyleOption = { - id: 'night-vision', - name: 'Night Vision', - category: 'Tactical', - description: 'Military optics style. Grainy bright greens on dark green background.', - vibe: 'Tactical, Green, Grainy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Wallpoet&family=Roboto+Mono:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Wallpoet", size: 32, color: "76FF03", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "1B5E20", color: "auto", style: "clear" } - }, - heading2: { - font: "Roboto Mono", size: 16, color: "CCFF90", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "76FF03", space: 4, style: "dotted", size: 12 } } - }, - body: { - font: "Roboto Mono", size: 10, color: "B2FF59", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - accentColor: "76FF03" - }, - previewCss: ` - font-family: 'Roboto Mono', monospace; - background: #000000; - h1 { font-family: 'Wallpoet', cursive; font-size: 32pt; color: #76FF03; background: #1B5E20; padding: 16px; text-align: center; margin-bottom: 24px; text-shadow: 0 0 10px #76FF03; } - h2 { font-size: 16pt; font-weight: 700; color: #CCFF90; margin-top: 32px; margin-bottom: 16px; border-bottom: 2px dotted #76FF03; } - p { font-size: 10pt; line-height: 1.6; color: #B2FF59; margin-bottom: 14px; } - blockquote { border-left: 4px solid #76FF03; padding-left: 16px; margin: 24px 0; color: #64DD17; } - ` - }; diff --git a/src/styles/templates/industrial/tactical-military.ts b/src/styles/templates/industrial/tactical-military.ts deleted file mode 100644 index a3320d1..0000000 --- a/src/styles/templates/industrial/tactical-military.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const tacticalMilitary: StyleOption = { - id: 'tactical-military', - name: 'Tactical Military', - category: 'Industrial', - description: 'Military-spec aesthetic. Stencil typography with olive drab and technical readouts.', - vibe: 'Tactical, Sturdy, Regulated', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Allerta+Stencil&family=Quantico:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Allerta Stencil", size: 28, color: "33691E", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "558B2F", space: 6, style: "single", size: 16 } } - }, - heading2: { - font: "Quantico", size: 14, color: "558B2F", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Quantico", size: 10, color: "1B1B1B", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "33691E" - }, - previewCss: ` - font-family: 'Quantico', sans-serif; - background: #F1F8E9; - h1 { font-family: 'Allerta Stencil', sans-serif; font-size: 28pt; color: #33691E; border-bottom: 4px solid #558B2F; padding-bottom: 12px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 700; color: #558B2F; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #1B1B1B; margin-bottom: 14px; } - blockquote { border: 2px solid #33691E; padding: 16px; margin: 20px 0; background: #DCEDC8; font-family: 'Quantico', sans-serif; } - ` - }; diff --git a/src/styles/templates/lifestyle/aviation-classic.ts b/src/styles/templates/lifestyle/aviation-classic.ts deleted file mode 100644 index 5c87e27..0000000 --- a/src/styles/templates/lifestyle/aviation-classic.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const aviationClassic: StyleOption = { - id: 'aviation-classic', - name: 'Aviation Classic', - category: 'Transport', - description: 'Vintage aviation inspired design. Classic military typography with heritage color palette.', - vibe: 'Heritage, Classic, Aviation', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Stencil&family=Public+Sans:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Stencil", size: 28, color: "1B4D3E", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Public Sans", size: 13, color: "8B0000", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Public Sans", size: 10, color: "363636", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "8B0000" - }, - previewCss: ` - font-family: 'Public Sans', sans-serif; - h1 { font-family: 'Stencil', sans-serif; font-size: 28pt; color: #1B4D3E; margin-bottom: 24px; letter-spacing: 3px; } - h2 { font-size: 13pt; font-weight: 600; color: #8B0000; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #363636; margin-bottom: 14px; } - blockquote { background: #F5F5DC; padding: 16px; border-left: 4px solid #1B4D3E; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/bistro-chalkboard.ts b/src/styles/templates/lifestyle/bistro-chalkboard.ts deleted file mode 100644 index c20cec5..0000000 --- a/src/styles/templates/lifestyle/bistro-chalkboard.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const bistroChalkboard: StyleOption = { - id: 'bistro-chalkboard', - name: 'Bistro Chalkboard', - category: 'Food', - description: 'French cafe menu. White chalk text on slate black.', - vibe: 'French, Food, Chalk', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Homemade+Apple&family=Caveat:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Homemade Apple", size: 32, color: "FFFFFF", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - heading2: { - font: "Caveat", size: 20, color: "E0E0E0", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Caveat", size: 14, color: "BDBDBD", align: 'center', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "263238", color: "auto", style: "clear" } - }, - accentColor: "FFFFFF" - }, - previewCss: ` - font-family: 'Caveat', cursive; - background: #212121; - color: #FFFFFF; - h1 { font-family: 'Homemade Apple', cursive; font-size: 32pt; color: #FFFFFF; text-align: center; margin-bottom: 24px; border-bottom: 1px solid #757575; padding-bottom: 12px; } - h2 { font-size: 20pt; font-weight: 700; color: #E0E0E0; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 14pt; line-height: 1.5; color: #BDBDBD; margin-bottom: 14px; text-align: center; } - blockquote { border: 1px dashed #FFFFFF; padding: 16px; margin: 24px 0; font-style: italic; text-align: center; } - ` - }; diff --git a/src/styles/templates/lifestyle/fine-dining-menu.ts b/src/styles/templates/lifestyle/fine-dining-menu.ts deleted file mode 100644 index 6589823..0000000 --- a/src/styles/templates/lifestyle/fine-dining-menu.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const fineDiningMenu: StyleOption = { - id: 'fine-dining-menu', - name: 'Fine Dining Menu', - category: 'Hospitality', - description: 'High-end restaurant aesthetic. Elegant scripts, centered layouts, and luxurious gold tones.', - vibe: 'Elegant, Expensive, Centered', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Great+Vibes&family=Cormorant+Garamond:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Great Vibes", size: 42, color: "C5A059", bold: false, align: 'center', - spacing: { before: 500, after: 300, line: 240 } - }, - heading2: { - font: "Cormorant Garamond", size: 14, color: "212121", bold: true, align: 'center', - spacing: { before: 360, after: 180, line: 240 }, - allCaps: true - }, - body: { - font: "Cormorant Garamond", size: 12, color: "424242", align: 'center', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "C5A059" - }, - previewCss: ` - font-family: 'Cormorant Garamond', serif; - background: #FFFAF0; - h1 { font-family: 'Great Vibes', cursive; font-size: 42pt; color: #C5A059; text-align: center; margin-bottom: 30px; } - h2 { font-size: 14pt; font-weight: 600; color: #212121; text-align: center; margin-top: 36px; margin-bottom: 18px; text-transform: uppercase; letter-spacing: 3px; border-bottom: 1px solid #C5A059; display: inline-block; padding-bottom: 5px; } - p { font-size: 12pt; line-height: 1.8; color: #424242; margin-bottom: 16px; text-align: center; font-style: italic; } - blockquote { border: 1px solid #C5A059; padding: 24px; margin: 30px 60px; text-align: center; } - ` - }; diff --git a/src/styles/templates/lifestyle/fire-station.ts b/src/styles/templates/lifestyle/fire-station.ts deleted file mode 100644 index f32294f..0000000 --- a/src/styles/templates/lifestyle/fire-station.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const fireStation: StyleOption = { - id: 'fire-station', - name: 'Fire Station', - category: 'Service', - description: 'Engine company aesthetic. Fire engine red, brass gold, and bold gothic numbers.', - vibe: 'Brave, Red, Gold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Anton&family=Rokkitt:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Anton", size: 40, color: "B71C1C", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { - top: { color: "FFD600", space: 6, style: "thick", size: 24 }, - bottom: { color: "FFD600", space: 6, style: "thick", size: 24 } - } - }, - heading2: { - font: "Rokkitt", size: 18, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Rokkitt", size: 12, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "B71C1C" - }, - previewCss: ` - font-family: 'Rokkitt', serif; - h1 { font-family: 'Anton', sans-serif; font-size: 40pt; color: #B71C1C; text-align: center; border-top: 6px solid #FFD600; border-bottom: 6px solid #FFD600; padding: 16px 0; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 18pt; font-weight: 700; color: #000000; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { background: #FFEBEE; border: 2px solid #B71C1C; padding: 16px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/food-recipe.ts b/src/styles/templates/lifestyle/food-recipe.ts deleted file mode 100644 index f79da26..0000000 --- a/src/styles/templates/lifestyle/food-recipe.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const foodRecipe: StyleOption = { - id: 'food-recipe', - name: 'Food & Recipe', - category: 'Lifestyle', - description: 'Warm and appetizing design for cookbooks and food content. Inviting typography with rustic charm.', - vibe: 'Warm, Appetizing, Homestyle', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&family=Lato:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display", size: 32, color: "6D4C41", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Playfair Display", size: 16, color: "8D6E63", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Lato", size: 10, color: "4E342E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D84315" - }, - previewCss: ` - font-family: 'Lato', sans-serif; - h1 { font-family: 'Playfair Display', serif; font-size: 32pt; font-weight: 600; color: #6D4C41; text-align: center; margin-bottom: 28px; } - h2 { font-family: 'Playfair Display', serif; font-size: 16pt; color: #8D6E63; margin-top: 32px; margin-bottom: 16px; font-style: italic; } - p { font-size: 10pt; line-height: 1.6; color: #4E342E; margin-bottom: 14px; } - blockquote { background: #FFF3E0; padding: 16px; border-left: 4px solid #D84315; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/german-autobahn.ts b/src/styles/templates/lifestyle/german-autobahn.ts deleted file mode 100644 index 30a88be..0000000 --- a/src/styles/templates/lifestyle/german-autobahn.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const germanAutobahn: StyleOption = { - id: 'german-autobahn', - name: 'German Autobahn', - category: 'Transport', - description: 'Precision engineering aesthetic. DIN-style fonts and strict blue/white signage.', - vibe: 'German, Precision, Transport', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Barlow:wght@400;700&family=Roboto+Condensed:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Barlow", size: 36, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "1565C0", color: "auto", style: "clear" } // Autobahn Blue - }, - heading2: { - font: "Roboto Condensed", size: 18, color: "0D47A1", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Roboto Condensed", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "1565C0" - }, - previewCss: ` - font-family: 'Roboto Condensed', sans-serif; - h1 { font-family: 'Barlow', sans-serif; font-size: 36pt; font-weight: 700; color: #FFFFFF; background: #1565C0; padding: 12px 20px; margin-bottom: 24px; border-radius: 4px; } - h2 { font-size: 18pt; font-weight: 700; color: #0D47A1; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 6px solid #1565C0; padding-left: 16px; margin: 24px 0; background: #E3F2FD; } - ` - }; diff --git a/src/styles/templates/lifestyle/hotel-hospitality.ts b/src/styles/templates/lifestyle/hotel-hospitality.ts deleted file mode 100644 index 670494d..0000000 --- a/src/styles/templates/lifestyle/hotel-hospitality.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const hotelHospitality: StyleOption = { - id: 'hotel-hospitality', - name: 'Hotel Hospitality', - category: 'Hospitality', - description: 'Welcoming design for hotels and hospitality industry. Elegant yet approachable with warm sophistication.', - vibe: 'Welcoming, Elegant, Warm', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Tenor+Sans&family=Nunito+Sans:wght@300;400;600&display=swap', - wordConfig: { - heading1: { - font: "Tenor Sans", size: 28, color: "2C3E50", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Tenor Sans", size: 14, color: "8B7355", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Nunito Sans", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "8B7355" - }, - previewCss: ` - font-family: 'Nunito Sans', sans-serif; - h1 { font-family: 'Tenor Sans', sans-serif; font-size: 28pt; color: #2C3E50; text-align: center; margin-bottom: 28px; letter-spacing: 2px; } - h2 { font-family: 'Tenor Sans', sans-serif; font-size: 14pt; color: #8B7355; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #4A4A4A; margin-bottom: 14px; font-weight: 300; } - blockquote { background: #F9F6F1; padding: 20px; border-left: 4px solid #8B7355; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/index.ts b/src/styles/templates/lifestyle/index.ts deleted file mode 100644 index 6799660..0000000 --- a/src/styles/templates/lifestyle/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { StyleOption } from '../../../types'; -import { aviationClassic } from './aviation-classic'; -import { bistroChalkboard } from './bistro-chalkboard'; -import { fineDiningMenu } from './fine-dining-menu'; -import { fireStation } from './fire-station'; -import { foodRecipe } from './food-recipe'; -import { germanAutobahn } from './german-autobahn'; -import { hotelHospitality } from './hotel-hospitality'; -import { parisianChic } from './parisian-chic'; -import { realEstatePremium } from './real-estate-premium'; -import { recipeCard } from './recipe-card'; -import { retroDiner50s } from './retro-diner-50s'; -import { spaWellness } from './spa-wellness'; -import { stickyNote } from './sticky-note'; -import { supermarketReceipt } from './supermarket-receipt'; -import { surfShop } from './surf-shop'; -import { travelAdventure } from './travel-adventure'; -import { weddingElegant } from './wedding-elegant'; -import { winterHoliday } from './winter-holiday'; - -export const lifestyleStyles: StyleOption[] = [ - aviationClassic, - bistroChalkboard, - fineDiningMenu, - fireStation, - foodRecipe, - germanAutobahn, - hotelHospitality, - parisianChic, - realEstatePremium, - recipeCard, - retroDiner50s, - spaWellness, - stickyNote, - supermarketReceipt, - surfShop, - travelAdventure, - weddingElegant, - winterHoliday -]; diff --git a/src/styles/templates/lifestyle/parisian-chic.ts b/src/styles/templates/lifestyle/parisian-chic.ts deleted file mode 100644 index 660ba17..0000000 --- a/src/styles/templates/lifestyle/parisian-chic.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const parisianChic: StyleOption = { - id: 'parisian-chic', - name: 'Parisian Chic', - category: 'Fashion', - description: 'Sophisticated French aesthetics. Elegant high-contrast serifs with plenty of white space.', - vibe: 'Sophisticated, Chic, Minimal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,opsz,wght@0,6..96,400;0,6..96,700;1,6..96,400&family=Jost:wght@300;400&display=swap', - wordConfig: { - heading1: { - font: "Bodoni Moda", size: 36, color: "000000", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Bodoni Moda", size: 16, color: "333333", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - italic: true - }, - body: { - font: "Jost", size: 10, color: "1A1A1A", align: 'center', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Jost', sans-serif; - h1 { font-family: 'Bodoni Moda', serif; font-size: 36pt; font-weight: 700; color: #000000; text-align: center; margin-bottom: 32px; } - h2 { font-family: 'Bodoni Moda', serif; font-size: 16pt; font-weight: 700; color: #333333; text-align: center; margin-top: 36px; margin-bottom: 18px; font-style: italic; } - p { font-size: 10pt; line-height: 1.8; color: #1A1A1A; margin-bottom: 16px; text-align: center; font-weight: 300; } - blockquote { border-top: 1px solid #000000; border-bottom: 1px solid #000000; padding: 24px; margin: 32px 40px; text-align: center; font-family: 'Bodoni Moda', serif; font-style: italic; } - ` - }; diff --git a/src/styles/templates/lifestyle/real-estate-premium.ts b/src/styles/templates/lifestyle/real-estate-premium.ts deleted file mode 100644 index 8e263a4..0000000 --- a/src/styles/templates/lifestyle/real-estate-premium.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const realEstatePremium: StyleOption = { - id: 'real-estate-premium', - name: 'Real Estate Premium', - category: 'Real Estate', - description: 'Sophisticated design for luxury real estate and property marketing. Elegant typography with premium golden accents.', - vibe: 'Luxury, Premium, Sophisticated', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Lato:wght@300;400;700&display=swap', - wordConfig: { - heading1: { - font: "Cinzel", size: 28, color: "1A1A1A", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Cinzel", size: 14, color: "B8860B", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Lato", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "B8860B" - }, - previewCss: ` - font-family: 'Lato', sans-serif; - h1 { font-family: 'Cinzel', serif; font-size: 28pt; font-weight: 600; color: #1A1A1A; text-align: center; margin-bottom: 32px; letter-spacing: 4px; } - h2 { font-family: 'Cinzel', serif; font-size: 14pt; color: #B8860B; margin-top: 36px; margin-bottom: 18px; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.7; color: #4A4A4A; margin-bottom: 16px; font-weight: 300; } - blockquote { border-top: 1px solid #B8860B; border-bottom: 1px solid #B8860B; padding: 24px 0; margin: 32px 0; text-align: center; } - ` - }; diff --git a/src/styles/templates/lifestyle/recipe-card.ts b/src/styles/templates/lifestyle/recipe-card.ts deleted file mode 100644 index 4f72e50..0000000 --- a/src/styles/templates/lifestyle/recipe-card.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const recipeCard: StyleOption = { - id: 'recipe-card', - name: 'Recipe Card', - category: 'Home', - description: 'Grandmas index card. Typewriter fonts with red header lines.', - vibe: 'Homey, Traditional, Cookery', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Courier+Prime&family=Homemade+Apple&display=swap', - wordConfig: { - heading1: { - font: "Courier Prime", size: 24, color: "000000", bold: true, align: 'left', - spacing: { before: 360, after: 200, line: 240 }, - border: { bottom: { color: "F44336", space: 4, style: "single", size: 12 } } - }, - heading2: { - font: "Courier Prime", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 240 }, - allCaps: true - }, - body: { - font: "Courier Prime", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "F44336" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - background: #FFF; - border: 1px solid #E0E0E0; - padding: 20px; - h1 { font-size: 24pt; font-weight: 700; color: #000000; border-bottom: 2px solid #F44336; padding-bottom: 8px; margin-bottom: 20px; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; margin-top: 24px; margin-bottom: 12px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.5; color: #212121; margin-bottom: 12px; } - blockquote { font-family: 'Homemade Apple', cursive; color: #D32F2F; font-size: 14pt; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/retro-diner-50s.ts b/src/styles/templates/lifestyle/retro-diner-50s.ts deleted file mode 100644 index 0d8887c..0000000 --- a/src/styles/templates/lifestyle/retro-diner-50s.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const retroDiner-50s: StyleOption = { - id: 'retro-diner-50s', - name: 'Retro Diner 50s', - category: 'Food', \ No newline at end of file diff --git a/src/styles/templates/lifestyle/spa-wellness.ts b/src/styles/templates/lifestyle/spa-wellness.ts deleted file mode 100644 index 8f121a8..0000000 --- a/src/styles/templates/lifestyle/spa-wellness.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const spaWellness: StyleOption = { - id: 'spa-wellness', - name: 'Spa Wellness', - category: 'Wellness', - description: 'Serene design for spa and wellness industries. Calm typography with soothing, natural colors.', - vibe: 'Serene, Calming, Natural', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Philosopher:wght@400;700&family=Questrial&display=swap', - wordConfig: { - heading1: { - font: "Philosopher", size: 28, color: "4A6741", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Philosopher", size: 14, color: "6B8E63", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Questrial", size: 10, color: "5D6D5A", align: 'left', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "6B8E63" - }, - previewCss: ` - font-family: 'Questrial', sans-serif; - h1 { font-family: 'Philosopher', serif; font-size: 28pt; color: #4A6741; text-align: center; margin-bottom: 32px; } - h2 { font-family: 'Philosopher', serif; font-size: 14pt; color: #6B8E63; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 10pt; line-height: 1.7; color: #5D6D5A; margin-bottom: 16px; } - blockquote { background: #F1F8E9; padding: 20px; border-radius: 4px; margin: 28px 0; text-align: center; } - ` - }; diff --git a/src/styles/templates/lifestyle/sticky-note.ts b/src/styles/templates/lifestyle/sticky-note.ts deleted file mode 100644 index 30b3405..0000000 --- a/src/styles/templates/lifestyle/sticky-note.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const stickyNote: StyleOption = { - id: 'sticky-note', - name: 'Sticky Note', - category: 'Casual', - description: 'Handwritten reminder aesthetic. Marker fonts on a canary yellow background.', - vibe: 'Casual, Handwritten, Yellow', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Kalam:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Permanent Marker", size: 32, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Kalam", size: 18, color: "D50000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Kalam", size: 14, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "FFF9C4", color: "auto", style: "clear" } // Yellow paper - }, - accentColor: "D50000" - }, - previewCss: ` - font-family: 'Kalam', cursive; - background: #FFF9C4; - padding: 30px; - box-shadow: 2px 2px 5px rgba(0,0,0,0.1); - h1 { font-family: 'Permanent Marker', cursive; font-size: 32pt; color: #000000; text-align: center; margin-bottom: 24px; transform: rotate(-1deg); } - h2 { font-size: 18pt; font-weight: 700; color: #D50000; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 14pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 4px solid #D50000; padding-left: 12px; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/supermarket-receipt.ts b/src/styles/templates/lifestyle/supermarket-receipt.ts deleted file mode 100644 index ab73924..0000000 --- a/src/styles/templates/lifestyle/supermarket-receipt.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const supermarketReceipt: StyleOption = { - id: 'supermarket-receipt', - name: 'Supermarket Receipt', - category: 'Everyday', - description: 'Thermal paper aesthetic. Monospaced, slightly faded grey text with narrow alignment.', - vibe: 'Disposable, Monospace, Grey', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Fira+Mono&family=Inconsolata:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Fira Mono", size: 24, color: "000000", bold: true, align: 'center', - spacing: { before: 300, after: 200, line: 240 }, - allCaps: true - }, - heading2: { - font: "Inconsolata", size: 14, color: "000000", bold: false, align: 'center', - spacing: { before: 240, after: 120, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "dashed", size: 12 } } - }, - body: { - font: "Inconsolata", size: 11, color: "424242", align: 'left', // Dark grey for thermal look - spacing: { before: 0, after: 120, line: 240 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Inconsolata', monospace; - background: #FAFAFA; - padding: 20px; - width: 400px; - margin: 0 auto; - box-shadow: 0 0 10px rgba(0,0,0,0.1); - h1 { font-family: 'Fira Mono', monospace; font-size: 24pt; font-weight: 700; color: #000000; text-align: center; margin-bottom: 20px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 400; color: #000000; text-align: center; margin-top: 24px; margin-bottom: 12px; border-bottom: 1px dashed #000; padding-bottom: 5px; } - p { font-size: 11pt; line-height: 1.4; color: #424242; margin-bottom: 10px; } - blockquote { text-align: center; margin: 20px 0; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/lifestyle/surf-shop.ts b/src/styles/templates/lifestyle/surf-shop.ts deleted file mode 100644 index 86d2a1b..0000000 --- a/src/styles/templates/lifestyle/surf-shop.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const surfShop: StyleOption = { - id: 'surf-shop', - name: 'Surf Shop', - category: 'Lifestyle', - description: 'California cool. Relaxed hand-drawn fonts with sea foam blues and sunny yellows.', - vibe: 'Relaxed, Beach, Sunny', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Kalam:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Permanent Marker", size: 36, color: "0097A7", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Kalam", size: 18, color: "FBC02D", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Kalam", size: 12, color: "424242", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0097A7" - }, - previewCss: ` - font-family: 'Kalam', cursive; - h1 { font-family: 'Permanent Marker', cursive; font-size: 36pt; color: #0097A7; text-align: center; margin-bottom: 24px; transform: rotate(-1deg); } - h2 { font-size: 18pt; font-weight: 700; color: #FBC02D; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.6; color: #424242; margin-bottom: 14px; } - blockquote { background: #E0F7FA; border-radius: 16px; padding: 20px; margin: 24px 0; border: 2px solid #0097A7; } - ` - }; diff --git a/src/styles/templates/lifestyle/travel-adventure.ts b/src/styles/templates/lifestyle/travel-adventure.ts deleted file mode 100644 index 93b8b46..0000000 --- a/src/styles/templates/lifestyle/travel-adventure.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const travelAdventure: StyleOption = { - id: 'travel-adventure', - name: 'Travel Adventure', - category: 'Travel', - description: 'Adventurous design for travel and exploration content. Bold typography with earthy, wanderlust-inspiring colors.', - vibe: 'Adventurous, Inspiring, Explorer', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&family=Josefin+Sans:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Amatic SC", size: 48, color: "3E2723", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 220 } - }, - heading2: { - font: "Josefin Sans", size: 14, color: "5D4037", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Josefin Sans", size: 10, color: "4E342E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF7043" - }, - previewCss: ` - font-family: 'Josefin Sans', sans-serif; - h1 { font-family: 'Amatic SC', cursive; font-size: 48pt; font-weight: 700; color: #3E2723; text-align: center; margin-bottom: 28px; letter-spacing: 4px; } - h2 { font-size: 14pt; font-weight: 600; color: #5D4037; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.6; color: #4E342E; margin-bottom: 14px; } - blockquote { background: #FBE9E7; padding: 16px; border-left: 4px solid #FF7043; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/lifestyle/wedding-elegant.ts b/src/styles/templates/lifestyle/wedding-elegant.ts deleted file mode 100644 index a204040..0000000 --- a/src/styles/templates/lifestyle/wedding-elegant.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const weddingElegant: StyleOption = { - id: 'wedding-elegant', - name: 'Wedding Elegant', - category: 'Events', - description: 'Romantic and elegant design for wedding stationery and formal events. Delicate typography with sophisticated flourishes.', - vibe: 'Romantic, Elegant, Celebratory', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Tangerine:wght@400;700&family=Cormorant+Garamond:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Tangerine", size: 48, color: "5D4037", bold: true, align: 'center', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Cormorant Garamond", size: 14, color: "795548", bold: false, align: 'center', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Cormorant Garamond", size: 11, color: "5D4037", align: 'center', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "D4AF37" - }, - previewCss: ` - font-family: 'Cormorant Garamond', serif; - h1 { font-family: 'Tangerine', cursive; font-size: 48pt; font-weight: 700; color: #5D4037; text-align: center; margin-bottom: 32px; } - h2 { font-size: 14pt; font-weight: 500; color: #795548; text-align: center; margin-top: 36px; margin-bottom: 18px; letter-spacing: 3px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.7; color: #5D4037; margin-bottom: 16px; text-align: center; font-weight: 300; } - blockquote { border-top: 1px solid #D4AF37; border-bottom: 1px solid #D4AF37; padding: 24px 40px; margin: 32px 0; text-align: center; font-style: italic; } - ` - }; diff --git a/src/styles/templates/lifestyle/winter-holiday.ts b/src/styles/templates/lifestyle/winter-holiday.ts deleted file mode 100644 index cb1b970..0000000 --- a/src/styles/templates/lifestyle/winter-holiday.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const winterHoliday: StyleOption = { - id: 'winter-holiday', - name: 'Winter Holiday', - category: 'Seasonal', - description: 'Festive greeting card style. Elegant script, deep reds and forest greens.', - vibe: 'Festive, Cozy, Traditional', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Mountains+of+Christmas:wght@400;700&family=Merriweather:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Mountains of Christmas", size: 36, color: "B71C1C", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Merriweather", size: 16, color: "1B5E20", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Merriweather", size: 11, color: "212121", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "B71C1C" - }, - previewCss: ` - font-family: 'Merriweather', serif; - background: #FFEBEE; - h1 { font-family: 'Mountains of Christmas', cursive; font-size: 36pt; font-weight: 700; color: #B71C1C; text-align: center; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #1B5E20; text-align: center; margin-top: 32px; margin-bottom: 16px; border-bottom: 2px dotted #1B5E20; display: inline-block; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px solid #B71C1C; padding: 16px; margin: 24px 0; border-radius: 8px; background: #FFF; } - ` - }; diff --git a/src/styles/templates/minimalist/architecture-firm.ts b/src/styles/templates/minimalist/architecture-firm.ts deleted file mode 100644 index 9365048..0000000 --- a/src/styles/templates/minimalist/architecture-firm.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const architectureFirm: StyleOption = { - id: 'architecture-firm', - name: 'Architecture Firm', - category: 'Architecture', - description: 'Structural precision for architecture and design firms. Clean geometry with sophisticated restraint.', - vibe: 'Structural, Precise, Sophisticated', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Fahkwang:wght@400;500;600&family=Manrope:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Fahkwang", size: 28, color: "1A1A1A", bold: false, align: 'left', - spacing: { before: 480, after: 280, line: 240 } - }, - heading2: { - font: "Manrope", size: 12, color: "4A4A4A", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - body: { - font: "Manrope", size: 10, color: "525252", align: 'left', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "1A1A1A" - }, - previewCss: ` - font-family: 'Manrope', sans-serif; - h1 { font-family: 'Fahkwang', sans-serif; font-size: 28pt; font-weight: 500; color: #1A1A1A; margin-bottom: 32px; letter-spacing: 1px; } - h2 { font-size: 12pt; font-weight: 500; color: #4A4A4A; margin-top: 40px; margin-bottom: 20px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.7; color: #525252; margin-bottom: 16px; font-weight: 300; } - blockquote { border-left: 1px solid #1A1A1A; padding-left: 24px; margin: 32px 0; } - ` - }; diff --git a/src/styles/templates/minimalist/bauhaus-construction.ts b/src/styles/templates/minimalist/bauhaus-construction.ts deleted file mode 100644 index 78238f4..0000000 --- a/src/styles/templates/minimalist/bauhaus-construction.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const bauhausConstruction: StyleOption = { - id: 'bauhaus-construction', - name: 'Bauhaus Construction', - category: 'Modernism', - description: 'Form follows function. Geometric simplicity using primary colors and heavy structural borders.', - vibe: 'Geometric, Functional, Primary', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Jura:wght@400;700&family=Tenor+Sans&display=swap', - wordConfig: { - heading1: { - font: "Jura", size: 32, color: "111111", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { left: { color: "D50000", space: 12, style: "single", size: 48 } } - }, - heading2: { - font: "Tenor Sans", size: 16, color: "111111", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 }, - shading: { fill: "FFEB3B", color: "auto", style: "clear" } - }, - body: { - font: "Tenor Sans", size: 11, color: "212121", align: 'both', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0000FF" - }, - previewCss: ` - font-family: 'Tenor Sans', sans-serif; - h1 { font-family: 'Jura', sans-serif; font-size: 32pt; font-weight: 700; color: #111111; border-left: 12px solid #D50000; padding-left: 16px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #111111; background: #FFEB3B; display: inline-block; padding: 4px 12px; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; text-align: justify; } - blockquote { border-top: 4px solid #0000FF; border-bottom: 4px solid #0000FF; padding: 16px 0; margin: 24px 0; } - ` -}; diff --git a/src/styles/templates/minimalist/de-stijl.ts b/src/styles/templates/minimalist/de-stijl.ts deleted file mode 100644 index 6ca8910..0000000 --- a/src/styles/templates/minimalist/de-stijl.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const deStijl: StyleOption = { - id: 'de-stijl', - name: 'De Stijl', - category: 'Modern', - description: 'Inspired by the Dutch movement (Mondrian). Primary colors, thick black lines, and rigid grid geometry.', - vibe: 'Abstract, Geometric, Primary', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Geo:wght@400&family=Arimo:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Geo", size: 32, color: "FF0000", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { - bottom: { color: "000000", space: 12, style: "single", size: 24 }, - left: { color: "000000", space: 12, style: "single", size: 24 } - } - }, - heading2: { - font: "Arimo", size: 14, color: "0000FF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "FFFF00", color: "auto", style: "clear" } - }, - body: { - font: "Arimo", size: 10, color: "000000", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF0000" - }, - previewCss: ` - font-family: 'Arimo', sans-serif; - h1 { font-family: 'Geo', sans-serif; font-size: 32pt; color: #FF0000; border-bottom: 4px solid #000000; border-left: 4px solid #000000; padding-left: 16px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #0000FF; background: #FFFF00; display: inline-block; padding: 4px 12px; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #000000; margin-bottom: 14px; } - blockquote { border: 4px solid #000000; padding: 16px; margin: 24px 0; box-shadow: 8px 8px 0px #0000FF; } - ` -}; diff --git a/src/styles/templates/minimalist/hipster-coffee.ts b/src/styles/templates/minimalist/hipster-coffee.ts deleted file mode 100644 index afefb1e..0000000 --- a/src/styles/templates/minimalist/hipster-coffee.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const hipsterCoffee: StyleOption = { - id: 'hipster-coffee', - name: 'Hipster Coffee', - category: 'Modern', - description: 'Artisan roaster branding. Clean slab serifs on kraft paper textures.', - vibe: 'Artisan, Slab, Kraft', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Zilla+Slab:wght@400;700&family=Lato:wght@300;400&display=swap', - wordConfig: { - heading1: { - font: "Zilla Slab", size: 36, color: "3E2723", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Lato", size: 14, color: "000000", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true, - tracking: 100 - }, - body: { - font: "Lato", size: 10, color: "4E342E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "3E2723" - }, - previewCss: ` - font-family: 'Lato', sans-serif; - background: #E0C097; - h1 { font-family: 'Zilla Slab', serif; font-size: 36pt; font-weight: 700; color: #3E2723; text-align: center; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; text-align: center; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.6; color: #4E342E; margin-bottom: 14px; } - blockquote { border-top: 1px solid #3E2723; border-bottom: 1px solid #3E2723; padding: 20px; margin: 24px 0; text-align: center; font-style: italic; } - ` - }; diff --git a/src/styles/templates/minimalist/index.ts b/src/styles/templates/minimalist/index.ts deleted file mode 100644 index 120f9fd..0000000 --- a/src/styles/templates/minimalist/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { StyleOption } from '../../../types'; -import { architectureFirm } from './architecture-firm'; -import { bauhausConstruction } from './bauhaus-construction'; -import { deStijl } from './de-stijl'; -import { hipsterCoffee } from './hipster-coffee'; -import { japaneseZen } from './japanese-zen'; -import { minimalistBlack } from './minimalist-black'; -import { minimalistWhite } from './minimalist-white'; -import { museumGallery } from './museum-gallery'; -import { mutedPastel } from './muted-pastel'; -import { scandinavianClean } from './scandinavian-clean'; -import { swissGrid } from './swiss-grid'; -import { wireframeLayout } from './wireframe-layout'; -import { zenGarden } from './zen-garden'; - -export const minimalistStyles: StyleOption[] = [ - architectureFirm, - bauhausConstruction, - deStijl, - hipsterCoffee, - japaneseZen, - minimalistBlack, - minimalistWhite, - museumGallery, - mutedPastel, - scandinavianClean, - swissGrid, - wireframeLayout, - zenGarden -]; diff --git a/src/styles/templates/minimalist/japanese-zen.ts b/src/styles/templates/minimalist/japanese-zen.ts deleted file mode 100644 index 74b4fbf..0000000 --- a/src/styles/templates/minimalist/japanese-zen.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const japaneseZen: StyleOption = { - id: 'japanese-zen', - name: 'Japanese Zen', - category: 'Minimal', - description: 'Inspired by Japanese minimalism and wabi-sabi aesthetics. Peaceful typography with intentional asymmetry.', - vibe: 'Zen, Peaceful, Minimal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Shippori+Mincho:wght@400;600;700&family=Zen+Kaku+Gothic+New:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Shippori Mincho", size: 28, color: "2D2D2D", bold: false, align: 'left', - spacing: { before: 560, after: 320, line: 240 } - }, - heading2: { - font: "Zen Kaku Gothic New", size: 12, color: "5C5C5C", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - body: { - font: "Zen Kaku Gothic New", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 200, line: 320 } - }, - accentColor: "C41E3A" - }, - previewCss: ` - font-family: 'Zen Kaku Gothic New', sans-serif; - h1 { font-family: 'Shippori Mincho', serif; font-size: 28pt; color: #2D2D2D; margin-bottom: 36px; } - h2 { font-size: 12pt; color: #5C5C5C; margin-top: 40px; margin-bottom: 20px; font-weight: 300; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 1.8; color: #4A4A4A; margin-bottom: 18px; font-weight: 300; } - blockquote { border-left: 2px solid #C41E3A; padding-left: 24px; margin: 36px 0; } - ` -}; diff --git a/src/styles/templates/minimalist/minimalist-black.ts b/src/styles/templates/minimalist/minimalist-black.ts deleted file mode 100644 index 366c940..0000000 --- a/src/styles/templates/minimalist/minimalist-black.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const minimalistBlack: StyleOption = { - id: 'minimalist-black', - name: 'Minimalist Black', - category: 'Minimal', - description: 'Ultra-minimal dark design with stark contrasts. High-impact typography on dark backgrounds.', - vibe: 'Dark, Minimal, Bold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Work+Sans:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Bebas Neue", size: 48, color: "FFFFFF", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 200 }, - shading: { fill: "0A0A0A", color: "auto", style: "clear" } - }, - heading2: { - font: "Work Sans", size: 12, color: "FFFFFF", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "1A1A1A", color: "auto", style: "clear" } - }, - body: { - font: "Work Sans", size: 10, color: "E0E0E0", align: 'left', - spacing: { before: 0, after: 180, line: 300 }, - shading: { fill: "121212", color: "auto", style: "clear" } - }, - accentColor: "FFFFFF" - }, - previewCss: ` - font-family: 'Work Sans', sans-serif; - background: #0A0A0A; - h1 { font-family: 'Bebas Neue', sans-serif; font-size: 48pt; color: #FFFFFF; background: #0A0A0A; padding: 16px 20px; margin-bottom: 24px; letter-spacing: 3px; } - h2 { font-size: 12pt; color: #FFFFFF; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; letter-spacing: 4px; font-weight: 300; } - p { font-size: 10pt; line-height: 1.7; color: #E0E0E0; margin-bottom: 16px; font-weight: 300; } - blockquote { border-left: 1px solid #FFFFFF; padding-left: 24px; margin: 28px 0; } - ` -}; diff --git a/src/styles/templates/minimalist/minimalist-white.ts b/src/styles/templates/minimalist/minimalist-white.ts deleted file mode 100644 index d812639..0000000 --- a/src/styles/templates/minimalist/minimalist-white.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const minimalistWhite: StyleOption = { - id: 'minimalist-white', - name: 'Minimalist White', - category: 'Minimal', - description: 'Ultra-clean design with maximum white space. Less is more philosophy with restrained typography that lets content breathe.', - vibe: 'Clean, Modern, Sophisticated', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;600&display=swap', - wordConfig: { - heading1: { - font: "Work Sans", size: 32, color: "111111", bold: false, align: 'left', - spacing: { before: 600, after: 300, line: 240 } - }, - heading2: { - font: "Work Sans", size: 14, color: "444444", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - body: { - font: "Work Sans", size: 10, color: "555555", align: 'left', - spacing: { before: 0, after: 200, line: 320 } - }, - accentColor: "111111" - }, - previewCss: ` - font-family: 'Work Sans', sans-serif; - h1 { font-size: 32pt; font-weight: 300; color: #111111; margin-bottom: 32px; letter-spacing: -1px; } - h2 { font-size: 14pt; font-weight: 600; color: #444444; margin-top: 40px; margin-bottom: 20px; } - p { font-size: 10pt; line-height: 1.8; color: #555555; margin-bottom: 18px; } - blockquote { border-left: 1px solid #DDDDDD; padding-left: 24px; margin: 32px 0; color: #666666; } - ` -}; diff --git a/src/styles/templates/minimalist/museum-gallery.ts b/src/styles/templates/minimalist/museum-gallery.ts deleted file mode 100644 index 8db7511..0000000 --- a/src/styles/templates/minimalist/museum-gallery.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const museumGallery: StyleOption = { - id: 'museum-gallery', - name: 'Museum Gallery', - category: 'Institutional', - description: 'Art gallery placard style. Extremely neutral sans-serifs, high contrast, small but clear text.', - vibe: 'Neutral, Institutional, Clean', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Karla:wght@400;700&family=Work+Sans:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Work Sans", size: 24, color: "000000", bold: true, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - heading2: { - font: "Karla", size: 12, color: "616161", bold: true, align: 'left', - spacing: { before: 280, after: 140, line: 240 }, - allCaps: true - }, - body: { - font: "Karla", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Karla', sans-serif; - h1 { font-family: 'Work Sans', sans-serif; font-size: 24pt; font-weight: 700; color: #000000; margin-bottom: 20px; } - h2 { font-size: 12pt; font-weight: 700; color: #616161; margin-top: 24px; margin-bottom: 14px; text-transform: uppercase; letter-spacing: 1px; } - p { font-size: 10pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 2px solid #000; padding-left: 16px; margin: 20px 0; color: #424242; } - ` -}; diff --git a/src/styles/templates/minimalist/muted-pastel.ts b/src/styles/templates/minimalist/muted-pastel.ts deleted file mode 100644 index b450f19..0000000 --- a/src/styles/templates/minimalist/muted-pastel.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const mutedPastel: StyleOption = { - id: 'muted-pastel', - name: 'Muted Pastel', - category: 'Minimal', - description: 'Soft and calming. Very light background tints with gentle, rounded typography.', - vibe: 'Soft, Calming, Gentle', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Nunito:wght@400;700&family=Quicksand:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Nunito", size: 28, color: "7986CB", bold: true, align: 'center', - spacing: { before: 480, after: 240, line: 240 } - }, - heading2: { - font: "Quicksand", size: 14, color: "9575CD", bold: true, align: 'center', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Quicksand", size: 11, color: "616161", align: 'center', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "9575CD" - }, - previewCss: ` - font-family: 'Quicksand', sans-serif; - background: #FDFBF7; - h1 { font-family: 'Nunito', sans-serif; font-size: 28pt; font-weight: 700; color: #7986CB; text-align: center; margin-bottom: 32px; } - h2 { font-size: 14pt; font-weight: 600; color: #9575CD; text-align: center; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 11pt; line-height: 1.7; color: #616161; margin-bottom: 16px; text-align: center; } - blockquote { background: #F3E5F5; padding: 24px; border-radius: 20px; margin: 32px 40px; text-align: center; } - ` -}; diff --git a/src/styles/templates/minimalist/scandinavian-clean.ts b/src/styles/templates/minimalist/scandinavian-clean.ts deleted file mode 100644 index 89a8850..0000000 --- a/src/styles/templates/minimalist/scandinavian-clean.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const scandinavianClean: StyleOption = { - id: 'scandinavian-clean', - name: 'Scandinavian Clean', - category: 'Minimal', - description: 'Inspired by Nordic design principles. Clean lines, functional typography, and subtle warmth with muted colors.', - vibe: 'Nordic, Clean, Warm Minimal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap', - wordConfig: { - heading1: { - font: "Poppins", size: 28, color: "2C2C2C", bold: false, align: 'left', - spacing: { before: 480, after: 240, line: 240 } - }, - heading2: { - font: "Poppins", size: 14, color: "5D5D5D", bold: true, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Poppins", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 180, line: 300 } - }, - accentColor: "E07A5F" - }, - previewCss: ` - font-family: 'Poppins', sans-serif; - h1 { font-size: 28pt; font-weight: 300; color: #2C2C2C; margin-bottom: 28px; } - h2 { font-size: 14pt; font-weight: 600; color: #5D5D5D; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 10pt; line-height: 1.7; color: #4A4A4A; margin-bottom: 16px; font-weight: 300; } - blockquote { border-left: 3px solid #E07A5F; padding-left: 20px; margin: 28px 0; color: #666666; } - ` -}; diff --git a/src/styles/templates/minimalist/swiss-grid.ts b/src/styles/templates/minimalist/swiss-grid.ts deleted file mode 100644 index b18f435..0000000 --- a/src/styles/templates/minimalist/swiss-grid.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const swissGrid: StyleOption = { - id: 'swiss-grid', - name: 'Swiss International', - category: 'Minimalist', - description: 'Objective, bold, and asymmetric. Heavy use of black and white, strong grid alignment.', - vibe: 'Architecture, Design, Modernism', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;700;900&display=swap', - wordConfig: { - heading1: { - font: "Inter", size: 42, color: "000000", bold: true, tracking: -40, align: 'left', - spacing: { before: 800, after: 400, line: 240 }, - border: { top: { color: "000000", space: 24, style: "single", size: 36 } } - }, - heading2: { - font: "Inter", size: 16, color: "000000", bold: true, allCaps: true, tracking: 40, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - body: { - font: "Inter", size: 10, color: "111111", align: 'left', - spacing: { before: 0, after: 200, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Inter', sans-serif; - h1 { font-size: 42pt; font-weight: 900; letter-spacing: -2px; border-top: 6px solid black; padding-top: 24px; margin-bottom: 24px; line-height: 1; } - h2 { font-size: 16pt; font-weight: 700; text-transform: uppercase; letter-spacing: 2px; margin-top: 40px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.5; margin-bottom: 16px; max-width: 65ch; } - blockquote { border-left: 4px solid black; padding-left: 20px; font-weight: 700; font-style: normal; margin-left: 0; } - ` -}; diff --git a/src/styles/templates/minimalist/wireframe-layout.ts b/src/styles/templates/minimalist/wireframe-layout.ts deleted file mode 100644 index 090a75c..0000000 --- a/src/styles/templates/minimalist/wireframe-layout.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const wireframeLayout: StyleOption = { - id: 'wireframe-layout', - name: 'Wireframe Layout', - category: 'Minimal', - description: 'Digital blueprint style. Grey backgrounds, monospaced fonts, and placeholder-like blocks.', - vibe: 'Digital, Prototype, Structural', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Redacted+Script&family=Flow+Circular&family=Roboto+Mono&display=swap', - wordConfig: { - heading1: { - font: "Roboto Mono", size: 24, color: "0000FF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "E0E0E0", color: "auto", style: "clear" } - }, - heading2: { - font: "Roboto Mono", size: 14, color: "555555", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "CCCCCC", space: 4, style: "single", size: 4 } } - }, - body: { - font: "Roboto Mono", size: 10, color: "333333", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0000FF" - }, - previewCss: ` - font-family: 'Roboto Mono', monospace; - h1 { font-size: 24pt; font-weight: 700; color: #0000FF; background: #E0E0E0; padding: 12px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #555555; border-bottom: 1px solid #CCC; margin-top: 32px; margin-bottom: 16px; padding-bottom: 4px; } - p { font-size: 10pt; line-height: 1.6; color: #333333; margin-bottom: 14px; } - blockquote { border: 1px dashed #999; padding: 16px; margin: 24px 0; background: #F9F9F9; } - ` -}; diff --git a/src/styles/templates/minimalist/zen-garden.ts b/src/styles/templates/minimalist/zen-garden.ts deleted file mode 100644 index 315548a..0000000 --- a/src/styles/templates/minimalist/zen-garden.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const zenGarden: StyleOption = { - id: 'zen-garden', - name: 'Zen Garden', - category: 'Minimal', - description: 'Inspired by Japanese rock gardens. Extreme minimalism with meditative spacing and natural balance.', - vibe: 'Meditative, Balanced, Serene', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Noto+Serif+JP:wght@400;600&family=Noto+Sans+JP:wght@300;400&display=swap', - wordConfig: { - heading1: { - font: "Noto Serif JP", size: 26, color: "2C2C2C", bold: false, align: 'left', - spacing: { before: 600, after: 360, line: 240 } - }, - heading2: { - font: "Noto Sans JP", size: 11, color: "5C5C5C", bold: false, align: 'left', - spacing: { before: 480, after: 240, line: 240 } - }, - body: { - font: "Noto Sans JP", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 240, line: 360 } - }, - accentColor: "6B8E6B" - }, - previewCss: ` - font-family: 'Noto Sans JP', sans-serif; - h1 { font-family: 'Noto Serif JP', serif; font-size: 26pt; font-weight: 600; color: #2C2C2C; margin-bottom: 40px; } - h2 { font-size: 11pt; color: #5C5C5C; margin-top: 48px; margin-bottom: 24px; font-weight: 300; letter-spacing: 2px; } - p { font-size: 10pt; line-height: 2; color: #4A4A4A; margin-bottom: 20px; font-weight: 300; } - blockquote { border-left: 1px solid #6B8E6B; padding-left: 32px; margin: 40px 0; } - ` -}; diff --git a/src/styles/templates/tech/8-bit-arcade.ts b/src/styles/templates/tech/8-bit-arcade.ts deleted file mode 100644 index cbd0e76..0000000 --- a/src/styles/templates/tech/8-bit-arcade.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const bitArcade8: StyleOption = { - id: '8-bit-arcade', - name: '8-Bit Arcade', - category: 'Gaming', - description: 'Retro gaming high-score screen. Pixelated fonts on dark backgrounds.', - vibe: 'Retro, Gaming, Pixel', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Press+Start+2P&family=VT323&display=swap', - wordConfig: { - heading1: { - font: "Press Start 2P", size: 20, color: "76FF03", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 300 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - heading2: { - font: "Press Start 2P", size: 12, color: "D500F9", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "VT323", size: 14, color: "FFFFFF", align: 'left', - spacing: { before: 0, after: 160, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - accentColor: "76FF03" - }, - previewCss: ` - font-family: 'VT323', monospace; - background: #000000; - h1 { font-family: 'Press Start 2P', cursive; font-size: 20pt; color: #76FF03; background: #212121; text-align: center; padding: 20px; margin-bottom: 28px; line-height: 1.5; } - h2 { font-family: 'Press Start 2P', cursive; font-size: 12pt; color: #D500F9; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 14pt; line-height: 1.4; color: #FFFFFF; margin-bottom: 14px; } - blockquote { border: 4px dashed #FFFFFF; padding: 16px; margin: 20px 0; color: #FFFF00; } - ` - }; diff --git a/src/styles/templates/tech/aerospace-modern.ts b/src/styles/templates/tech/aerospace-modern.ts deleted file mode 100644 index 5fcc85e..0000000 --- a/src/styles/templates/tech/aerospace-modern.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const aerospaceModern: StyleOption = { - id: 'aerospace-modern', - name: 'Aerospace Modern', - category: 'Tech', - description: 'Sleek design inspired by aerospace and space exploration. Clean lines with futuristic precision.', - vibe: 'Futuristic, Sleek, Precision', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Michroma&family=Saira:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Michroma", size: 22, color: "0B3D91", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Saira", size: 13, color: "FC3D21", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Saira", size: 10, color: "2E3A45", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FC3D21" - }, - previewCss: ` - font-family: 'Saira', sans-serif; - h1 { font-family: 'Michroma', sans-serif; font-size: 22pt; color: #0B3D91; margin-bottom: 24px; letter-spacing: 2px; } - h2 { font-size: 13pt; font-weight: 500; color: #FC3D21; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #2E3A45; margin-bottom: 14px; font-weight: 300; } - blockquote { background: #E8F0FE; padding: 16px; border-left: 4px solid #0B3D91; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/artificial-intelligence.ts b/src/styles/templates/tech/artificial-intelligence.ts deleted file mode 100644 index 06f58ab..0000000 --- a/src/styles/templates/tech/artificial-intelligence.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const artificialIntelligence: StyleOption = { - id: 'artificial-intelligence', - name: 'Artificial Intelligence', - category: 'Tech', - description: 'Cutting-edge design for AI and machine learning content. Neural network inspired with gradient accents.', - vibe: 'Cutting-edge, Neural, Intelligent', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Oxanium:wght@400;600;700&family=Lexend:wght@300;400;500&display=swap', - wordConfig: { - heading1: { - font: "Oxanium", size: 28, color: "7C3AED", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Lexend", size: 14, color: "2563EB", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Lexend", size: 10, color: "334155", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "7C3AED" - }, - previewCss: ` - font-family: 'Lexend', sans-serif; - h1 { font-family: 'Oxanium', sans-serif; font-size: 28pt; font-weight: 700; color: #7C3AED; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 500; color: #2563EB; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #334155; margin-bottom: 14px; font-weight: 300; } - blockquote { background: linear-gradient(135deg, #EDE9FE 0%, #DBEAFE 100%); padding: 16px; border-radius: 8px; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/astronomy-space.ts b/src/styles/templates/tech/astronomy-space.ts deleted file mode 100644 index 57781d3..0000000 --- a/src/styles/templates/tech/astronomy-space.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const astronomySpace: StyleOption = { - id: 'astronomy-space', - name: 'Astronomy Space', - category: 'Science', - description: 'Cosmic design for astronomy and space science. Deep space colors with stellar typography.', - vibe: 'Cosmic, Scientific, Vast', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700&family=Space+Grotesk:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Orbitron", size: 26, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "0A0A23", color: "auto", style: "clear" } - }, - heading2: { - font: "Space Grotesk", size: 14, color: "7C4DFF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Space Grotesk", size: 10, color: "B0BEC5", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "121225", color: "auto", style: "clear" } - }, - accentColor: "7C4DFF" - }, - previewCss: ` - font-family: 'Space Grotesk', sans-serif; - background: #0A0A23; - h1 { font-family: 'Orbitron', sans-serif; font-size: 26pt; font-weight: 700; color: #FFFFFF; background: #0A0A23; padding: 16px 20px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 500; color: #7C4DFF; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #B0BEC5; margin-bottom: 14px; } - blockquote { background: #1A1A3E; padding: 16px; border-left: 4px solid #7C4DFF; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/biohazard-lab.ts b/src/styles/templates/tech/biohazard-lab.ts deleted file mode 100644 index eef317e..0000000 --- a/src/styles/templates/tech/biohazard-lab.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const biohazardLab: StyleOption = { - id: 'biohazard-lab', - name: 'Biohazard Lab', - category: 'Sci-Fi', - description: 'Warning-label aesthetic. Monospace fonts with high-contrast yellow and black caution themes.', - vibe: 'Warning, Industrial, Hazardous', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Syne+Mono&family=Azeret+Mono:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Syne Mono", size: 32, color: "000000", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "FFEB3B", color: "auto", style: "clear" } - }, - heading2: { - font: "Azeret Mono", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { left: { color: "FFEB3B", space: 8, style: "single", size: 24 } } - }, - body: { - font: "Azeret Mono", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFEB3B" - }, - previewCss: ` - font-family: 'Azeret Mono', monospace; - h1 { font-family: 'Syne Mono', monospace; font-size: 32pt; font-weight: 700; color: #000000; background: #FFEB3B; padding: 16px; text-align: center; margin-bottom: 28px; letter-spacing: -1px; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; border-left: 8px solid #FFEB3B; padding-left: 12px; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px dashed #000000; padding: 16px; margin: 20px 0; background: #FFF9C4; } - ` - }; diff --git a/src/styles/templates/tech/biopunk-lab.ts b/src/styles/templates/tech/biopunk-lab.ts deleted file mode 100644 index dba974f..0000000 --- a/src/styles/templates/tech/biopunk-lab.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const biopunkLab: StyleOption = { - id: 'biopunk-lab', - name: 'Biopunk Lab', - category: 'Sci-Fi', - description: 'Organic technology. Slime greens, flesh tones, and rounded organic fonts.', - vibe: 'Organic, Gross, Tech', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Creepster&family=Kodchasan:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Creepster", size: 32, color: "2E7D32", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "C8E6C9", color: "auto", style: "clear" } - }, - heading2: { - font: "Kodchasan", size: 18, color: "1B5E20", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "2E7D32", space: 4, style: "wave", size: 12 } } - }, - body: { - font: "Kodchasan", size: 11, color: "33691E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "2E7D32" - }, - previewCss: ` - font-family: 'Kodchasan', sans-serif; - h1 { font-family: 'Creepster', cursive; font-size: 32pt; color: #2E7D32; background: #C8E6C9; padding: 16px; border-radius: 20px; text-align: center; margin-bottom: 24px; } - h2 { font-size: 18pt; font-weight: 700; color: #1B5E20; margin-top: 32px; margin-bottom: 16px; text-decoration: underline wavy #2E7D32; } - p { font-size: 11pt; line-height: 1.6; color: #33691E; margin-bottom: 14px; } - blockquote { background: #F1F8E9; border: 2px solid #2E7D32; border-radius: 16px; padding: 16px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/tech/blockchain-protocol.ts b/src/styles/templates/tech/blockchain-protocol.ts deleted file mode 100644 index 61a3770..0000000 --- a/src/styles/templates/tech/blockchain-protocol.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const blockchainProtocol: StyleOption = { - id: 'blockchain-protocol', - name: 'Blockchain Protocol', - category: 'Tech', - description: 'Technical blockchain and Web3 design. Decentralized aesthetics with protocol documentation style.', - vibe: 'Technical, Decentralized, Protocol', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Inter:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Inter", size: 28, color: "6366F1", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Inter", size: 16, color: "1E1E1E", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Inter", size: 10, color: "4B5563", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "6366F1" - }, - previewCss: ` - font-family: 'Inter', sans-serif; - h1 { font-size: 28pt; font-weight: 600; color: #6366F1; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 600; color: #1E1E1E; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #4B5563; margin-bottom: 14px; } - blockquote { font-family: 'JetBrains Mono', monospace; background: #F3F4F6; padding: 16px; border-radius: 6px; margin: 20px 0; font-size: 9pt; border-left: 4px solid #6366F1; } - ` - }; diff --git a/src/styles/templates/tech/bsod-blue.ts b/src/styles/templates/tech/bsod-blue.ts deleted file mode 100644 index ef20895..0000000 --- a/src/styles/templates/tech/bsod-blue.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const bsodBlue: StyleOption = { - id: 'bsod-blue', - name: 'BSOD Blue', - category: 'Tech', - description: 'The infamous crash screen. Pure white terminal fonts on a deep, error blue background.', - vibe: 'Crash, Error, Terminal', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Lucident&family=Fira+Mono&display=swap', - wordConfig: { - heading1: { - font: "Lucident", size: 24, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "0000AA", color: "auto", style: "clear" } - }, - heading2: { - font: "Fira Mono", size: 14, color: "FFFFFF", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "0000AA", color: "auto", style: "clear" } - }, - body: { - font: "Fira Mono", size: 11, color: "FFFFFF", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "0000AA", color: "auto", style: "clear" } - }, - accentColor: "FFFFFF" - }, - previewCss: ` - font-family: 'Fira Mono', monospace; - background: #0000AA; - color: #FFFFFF; - h1 { font-family: 'Lucident', monospace; font-size: 24pt; font-weight: 700; color: #FFFFFF; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 400; color: #FFFFFF; margin-top: 32px; margin-bottom: 16px; text-decoration: underline; } - p { font-size: 11pt; line-height: 1.5; color: #FFFFFF; margin-bottom: 14px; } - blockquote { border: 2px solid #FFFFFF; padding: 16px; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/circuit-board.ts b/src/styles/templates/tech/circuit-board.ts deleted file mode 100644 index 0fb99b4..0000000 --- a/src/styles/templates/tech/circuit-board.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const circuitBoard: StyleOption = { - id: 'circuit-board', - name: 'Circuit Board', - category: 'Tech', - description: 'PCB aesthetic. Deep forest green background with copper/gold tracks.', - vibe: 'Tech, Green, Copper', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Teko:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Teko", size: 36, color: "FFD54F", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "FFB300", space: 4, style: "dotted", size: 12 } } - }, - heading2: { - font: "Share Tech Mono", size: 16, color: "A5D6A7", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Share Tech Mono", size: 11, color: "C8E6C9", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFD54F" - }, - previewCss: ` - font-family: 'Share Tech Mono', monospace; - background: #1B5E20; - h1 { font-family: 'Teko', sans-serif; font-size: 36pt; font-weight: 700; color: #FFD54F; margin-bottom: 24px; border-bottom: 4px dotted #FFB300; } - h2 { font-size: 16pt; color: #A5D6A7; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.5; color: #C8E6C9; margin-bottom: 14px; } - blockquote { border: 1px solid #FFD54F; padding: 16px; margin: 24px 0; color: #FFD54F; } - ` - }; diff --git a/src/styles/templates/tech/code-editor.ts b/src/styles/templates/tech/code-editor.ts deleted file mode 100644 index e905543..0000000 --- a/src/styles/templates/tech/code-editor.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const codeEditor: StyleOption = { - id: 'code-editor', - name: 'Code Editor', - category: 'Tech', - description: 'Dark mode IDE aesthetic. Monospaced fonts with syntax-highlighting color palette.', - vibe: 'Technical, Dark, Coding', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Inconsolata:wght@400;700&family=Source+Code+Pro:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Inconsolata", size: 26, color: "61AFEF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "282C34", color: "auto", style: "clear" } - }, - heading2: { - font: "Source Code Pro", size: 14, color: "98C379", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Source Code Pro", size: 10, color: "ABB2BF", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "21252B", color: "auto", style: "clear" } - }, - accentColor: "E06C75" - }, - previewCss: ` - font-family: 'Source Code Pro', monospace; - background: #282C34; - h1 { font-family: 'Inconsolata', monospace; font-size: 26pt; font-weight: 700; color: #61AFEF; background: #282C34; padding: 16px 20px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 600; color: #98C379; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.6; color: #ABB2BF; margin-bottom: 14px; } - blockquote { background: #2C313C; padding: 16px; border-left: 4px solid #E06C75; margin: 20px 0; color: #E06C75; } - ` - }; diff --git a/src/styles/templates/tech/crypto-futurism.ts b/src/styles/templates/tech/crypto-futurism.ts deleted file mode 100644 index 50f44d0..0000000 --- a/src/styles/templates/tech/crypto-futurism.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const cryptoFuturism: StyleOption = { - id: 'crypto-futurism', - name: 'Crypto Futurism', - category: 'Tech', - description: 'Cutting-edge design for blockchain and cryptocurrency content. Dark themes with electric accents.', - vibe: 'Futuristic, Digital, Cutting-edge', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Audiowide&family=Rajdhani:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Audiowide", size: 26, color: "00D4AA", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "0D1117", color: "auto", style: "clear" } - }, - heading2: { - font: "Rajdhani", size: 16, color: "58A6FF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Rajdhani", size: 10, color: "C9D1D9", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "161B22", color: "auto", style: "clear" } - }, - accentColor: "00D4AA" - }, - previewCss: ` - font-family: 'Rajdhani', sans-serif; - background: #0D1117; - h1 { font-family: 'Audiowide', cursive; font-size: 26pt; color: #00D4AA; background: #0D1117; padding: 16px 20px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 600; color: #58A6FF; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #C9D1D9; margin-bottom: 14px; } - blockquote { background: #21262D; padding: 16px; border-left: 4px solid #00D4AA; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/cybersecurity.ts b/src/styles/templates/tech/cybersecurity.ts deleted file mode 100644 index 119dfd9..0000000 --- a/src/styles/templates/tech/cybersecurity.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const cybersecurity: StyleOption = { - id: 'cybersecurity', - name: 'Cybersecurity', - category: 'Tech', - description: 'High-security design for infosec and cybersecurity. Matrix-inspired with threat-level colors.', - vibe: 'Secure, Technical, Alert', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Exo+2:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Exo 2", size: 26, color: "00E676", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "0D0D0D", color: "auto", style: "clear" } - }, - heading2: { - font: "Exo 2", size: 14, color: "00E676", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Share Tech Mono", size: 9, color: "B0BEC5", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "1A1A1A", color: "auto", style: "clear" } - }, - accentColor: "00E676" - }, - previewCss: ` - font-family: 'Share Tech Mono', monospace; - background: #0D0D0D; - h1 { font-family: 'Exo 2', sans-serif; font-size: 26pt; font-weight: 600; color: #00E676; background: #0D0D0D; padding: 16px 20px; margin-bottom: 24px; } - h2 { font-family: 'Exo 2', sans-serif; font-size: 14pt; font-weight: 600; color: #00E676; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 9pt; line-height: 1.6; color: #B0BEC5; margin-bottom: 14px; } - blockquote { background: #1A1A1A; padding: 16px; border-left: 4px solid #00E676; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/data-analytics.ts b/src/styles/templates/tech/data-analytics.ts deleted file mode 100644 index 3334056..0000000 --- a/src/styles/templates/tech/data-analytics.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const dataAnalytics: StyleOption = { - id: 'data-analytics', - name: 'Data Analytics', - category: 'Tech', - description: 'Clean design for data science and analytics content. Precise typography optimized for charts and metrics.', - vibe: 'Analytical, Clean, Data-driven', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Overpass:wght@400;600;700&family=Overpass+Mono:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Overpass", size: 26, color: "0F172A", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Overpass", size: 14, color: "3730A3", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Overpass", size: 10, color: "475569", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "3730A3" - }, - previewCss: ` - font-family: 'Overpass', sans-serif; - h1 { font-size: 26pt; font-weight: 700; color: #0F172A; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #3730A3; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.6; color: #475569; margin-bottom: 14px; } - blockquote { font-family: 'Overpass Mono', monospace; background: #F1F5F9; padding: 16px; border-left: 4px solid #3730A3; margin: 20px 0; font-size: 9pt; } - ` - }; diff --git a/src/styles/templates/tech/deep-sea-sub.ts b/src/styles/templates/tech/deep-sea-sub.ts deleted file mode 100644 index 56832e4..0000000 --- a/src/styles/templates/tech/deep-sea-sub.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const deepSeaSub: StyleOption = { - id: 'deep-sea-sub', - name: 'Deep Sea Sub', - category: 'Nature', - description: 'Bioluminescent abyss. Deepest navy backgrounds with glowing cyan/purple text.', - vibe: 'Dark, Underwater, Glowing', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Abel&family=Rajdhani:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Rajdhani", size: 36, color: "00E5FF", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "1A237E", color: "auto", style: "clear" } - }, - heading2: { - font: "Abel", size: 20, color: "E040FB", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Abel", size: 12, color: "B2EBF2", align: 'center', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "000051", color: "auto", style: "clear" } - }, - accentColor: "00E5FF" - }, - previewCss: ` - font-family: 'Abel', sans-serif; - background: #000051; - h1 { font-family: 'Rajdhani', sans-serif; font-size: 36pt; font-weight: 700; color: #00E5FF; background: linear-gradient(135deg, #1A237E 0%, #000051 100%); padding: 24px 32px; border-radius: 8px; margin: 0 auto 24px auto; text-align: center; display: block; box-shadow: 0 0 30px rgba(0, 229, 255, 0.3); border: 1px solid #00E5FF; } - h2 { font-size: 20pt; font-weight: 700; color: #E040FB; text-align: center; margin-top: 32px; margin-bottom: 16px; text-shadow: 0 0 5px #E040FB; } - p { font-size: 12pt; line-height: 1.6; color: #B2EBF2; margin-bottom: 14px; text-align: center; } - blockquote { border: 1px solid #00E5FF; padding: 20px; margin: 24px auto; color: #E0F7FA; text-align: center; background: rgba(0, 229, 255, 0.1); border-radius: 8px; max-width: 85%; font-style: italic; } - ` - }; diff --git a/src/styles/templates/tech/desert-sands.ts b/src/styles/templates/tech/desert-sands.ts deleted file mode 100644 index 29b945b..0000000 --- a/src/styles/templates/tech/desert-sands.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const desertSands: StyleOption = { - id: 'desert-sands', - name: 'Desert Sands', - category: 'Nature', - description: 'Dune aesthetic. Warm beige backgrounds with wind-swept, eroded typefaces.', - vibe: 'Warm, Sandy, Soft', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cinzel&family=Fauna+One&display=swap', - wordConfig: { - heading1: { - font: "Cinzel", size: 36, color: "5D4037", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Fauna One", size: 16, color: "8D6E63", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Fauna One", size: 11, color: "4E342E", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "8D6E63" - }, - previewCss: ` - font-family: 'Fauna One', serif; - background: #F3E5AB; /* Sand color */ - h1 { font-family: 'Cinzel', serif; font-size: 36pt; color: #5D4037; text-align: center; margin-bottom: 24px; letter-spacing: 2px; } - h2 { font-size: 16pt; font-weight: 700; color: #8D6E63; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #4E342E; margin-bottom: 14px; text-align: center; } - blockquote { border-top: 1px solid #5D4037; border-bottom: 1px solid #5D4037; padding: 20px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/tech/frutiger-aero.ts b/src/styles/templates/tech/frutiger-aero.ts deleted file mode 100644 index ae97f79..0000000 --- a/src/styles/templates/tech/frutiger-aero.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const frutigerAero: StyleOption = { - id: 'frutiger-aero', - name: 'Frutiger Aero', - category: 'Tech', - description: 'Mid-2000s tech aesthetic. Glossy textures, humanist sans-serifs, and optimistic skeuomorphic blues and greens.', - vibe: 'Glossy, Optimistic, 2000s', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Varela+Round&family=M+PLUS+Rounded+1c:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "Varela Round", size: 28, color: "0288D1", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "M PLUS Rounded 1c", size: 15, color: "7CB342", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "M PLUS Rounded 1c", size: 10, color: "546E7A", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "03A9F4" - }, - previewCss: ` - font-family: 'M PLUS Rounded 1c', sans-serif; - h1 { font-family: 'Varela Round', sans-serif; font-size: 28pt; color: #0288D1; margin-bottom: 24px; background: linear-gradient(to right, #E1F5FE, #FFFFFF); padding: 10px; border-radius: 10px; } - h2 { font-size: 15pt; font-weight: 700; color: #7CB342; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #546E7A; margin-bottom: 14px; } - blockquote { background: linear-gradient(180deg, #FFFFFF 0%, #E0F7FA 100%); padding: 16px; border-radius: 15px; border: 1px solid #B3E5FC; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/game-handheld.ts b/src/styles/templates/tech/game-handheld.ts deleted file mode 100644 index 4b69cbe..0000000 --- a/src/styles/templates/tech/game-handheld.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const gameHandheld: StyleOption = { - id: 'game-handheld', - name: 'Game Handheld', - category: 'Gaming', - description: 'Classic 90s handheld console. Four shades of olive green pixel art style.', - vibe: 'Pixel, Green, Retro', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap', - wordConfig: { - heading1: { - font: "Press Start 2P", size: 20, color: "0f380f", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "8bac0f", color: "auto", style: "clear" } - }, - heading2: { - font: "Press Start 2P", size: 12, color: "306230", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Press Start 2P", size: 10, color: "0f380f", align: 'left', - spacing: { before: 0, after: 160, line: 240 } - }, - accentColor: "306230" - }, - previewCss: ` - font-family: 'Press Start 2P', cursive; - background: #9bbc0f; - h1 { font-size: 20pt; color: #0f380f; background: #8bac0f; padding: 20px; text-align: center; border: 4px solid #0f380f; margin-bottom: 24px; } - h2 { font-size: 12pt; color: #306230; margin-top: 32px; margin-bottom: 16px; border-bottom: 4px solid #306230; } - p { font-size: 10pt; line-height: 1.6; color: #0f380f; margin-bottom: 14px; } - blockquote { background: #8bac0f; border: 2px solid #306230; padding: 16px; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/hologram-blue.ts b/src/styles/templates/tech/hologram-blue.ts deleted file mode 100644 index d2d3fd6..0000000 --- a/src/styles/templates/tech/hologram-blue.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const hologramBlue: StyleOption = { - id: 'hologram-blue', - name: 'Hologram Blue', - category: 'Sci-Fi', - description: 'Star Wars style communications. Translucent flickering blue text on dark voids.', - vibe: 'Holographic, Futuristic, Translucent', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Audiowide&family=Rajdhani:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Audiowide", size: 30, color: "00B0FF", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - heading2: { - font: "Rajdhani", size: 18, color: "80D8FF", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Rajdhani", size: 12, color: "B3E5FC", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "00B0FF" - }, - previewCss: ` - font-family: 'Rajdhani', sans-serif; - background: #000000; - h1 { font-family: 'Audiowide', cursive; font-size: 30pt; color: #00B0FF; text-align: center; margin-bottom: 24px; opacity: 0.8; text-shadow: 0 0 8px #00B0FF; } - h2 { font-size: 18pt; font-weight: 700; color: #80D8FF; text-align: center; margin-top: 32px; margin-bottom: 16px; border-top: 1px solid #00B0FF; border-bottom: 1px solid #00B0FF; display: inline-block; padding: 5px 20px; } - p { font-size: 12pt; line-height: 1.6; color: #B3E5FC; margin-bottom: 14px; text-align: center; opacity: 0.9; } - blockquote { border: 1px dashed #00B0FF; padding: 16px; margin: 24px 0; color: #E1F5FE; text-align: center; } - ` - }; diff --git a/src/styles/templates/tech/index.ts b/src/styles/templates/tech/index.ts deleted file mode 100644 index 6496c09..0000000 --- a/src/styles/templates/tech/index.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { StyleOption } from '../../../types'; -import { bitArcade8 } from './8-bit-arcade'; -import { aerospaceModern } from './aerospace-modern'; -import { artificialIntelligence } from './artificial-intelligence'; -import { astronomySpace } from './astronomy-space'; -import { biohazardLab } from './biohazard-lab'; -import { biopunkLab } from './biopunk-lab'; -import { blockchainProtocol } from './blockchain-protocol'; -import { bsodBlue } from './bsod-blue'; -import { circuitBoard } from './circuit-board'; -import { codeEditor } from './code-editor'; -import { cryptoFuturism } from './crypto-futurism'; -import { cybersecurity } from './cybersecurity'; -import { dataAnalytics } from './data-analytics'; -import { deepSeaSub } from './deep-sea-sub'; -import { desertSands } from './desert-sands'; -import { frutigerAero } from './frutiger-aero'; -import { gameHandheld } from './game-handheld'; -import { hologramBlue } from './hologram-blue'; -import { industrialBlueprint } from './industrial-blueprint'; -import { marineBiology } from './marine-biology'; -import { marsRover } from './mars-rover'; -import { nationalParkSignage } from './national-park-signage'; -import { neonNoir } from './neon-noir'; -import { schematicDiagram } from './schematic-diagram'; -import { smartHomeTech } from './smart-home-tech'; -import { solarpunk } from './solarpunk'; -import { startupSaas } from './startup-saas'; -import { techDocumentation } from './tech-documentation'; -import { techStartup } from './tech-startup'; -import { volcanicAsh } from './volcanic-ash'; - -export const techStyles: StyleOption[] = [ - bitArcade8, - aerospaceModern, - artificialIntelligence, - astronomySpace, - biohazardLab, - biopunkLab, - blockchainProtocol, - bsodBlue, - circuitBoard, - codeEditor, - cryptoFuturism, - cybersecurity, - dataAnalytics, - deepSeaSub, - desertSands, - frutigerAero, - gameHandheld, - hologramBlue, - industrialBlueprint, - marineBiology, - marsRover, - nationalParkSignage, - neonNoir, - schematicDiagram, - smartHomeTech, - solarpunk, - startupSaas, - techDocumentation, - techStartup, - volcanicAsh -]; diff --git a/src/styles/templates/tech/industrial-blueprint.ts b/src/styles/templates/tech/industrial-blueprint.ts deleted file mode 100644 index a7f7a1d..0000000 --- a/src/styles/templates/tech/industrial-blueprint.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const industrialBlueprint: StyleOption = { - id: 'industrial-blueprint', - name: 'Industrial Blueprint', - category: 'Technical', - description: 'Engineering-inspired design reminiscent of technical blueprints. Precise typography with drafting aesthetics.', - vibe: 'Technical, Precise, Engineering', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Share+Tech+Mono&family=Titillium+Web:wght@400;600;700&display=swap', - wordConfig: { - heading1: { - font: "Titillium Web", size: 24, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "1A3A5C", color: "auto", style: "clear" } - }, - heading2: { - font: "Titillium Web", size: 14, color: "1A3A5C", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Share Tech Mono", size: 9, color: "2C4A6B", align: 'left', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "1A3A5C" - }, - previewCss: ` - font-family: 'Share Tech Mono', monospace; - h1 { font-family: 'Titillium Web', sans-serif; font-size: 24pt; font-weight: 700; color: #FFFFFF; background: #1A3A5C; padding: 16px 20px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-family: 'Titillium Web', sans-serif; font-size: 14pt; font-weight: 700; color: #1A3A5C; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 9pt; line-height: 1.7; color: #2C4A6B; margin-bottom: 14px; } - blockquote { background: #E8F4FC; padding: 16px; border: 1px dashed #1A3A5C; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/marine-biology.ts b/src/styles/templates/tech/marine-biology.ts deleted file mode 100644 index d7d0dfa..0000000 --- a/src/styles/templates/tech/marine-biology.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const marineBiology: StyleOption = { - id: 'marine-biology', - name: 'Marine Biology', - category: 'Science', - description: 'Ocean-inspired design for marine science and aquatic content. Deep blues with flowing elegance.', - vibe: 'Oceanic, Scientific, Flowing', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600&family=Lora:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Lora", size: 26, color: "0C4A6E", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Archivo", size: 13, color: "0369A1", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Archivo", size: 10, color: "334155", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0EA5E9" - }, - previewCss: ` - font-family: 'Archivo', sans-serif; - h1 { font-family: 'Lora', serif; font-size: 26pt; font-weight: 700; color: #0C4A6E; margin-bottom: 24px; } - h2 { font-size: 13pt; font-weight: 600; color: #0369A1; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.6; color: #334155; margin-bottom: 14px; } - blockquote { background: #E0F2FE; padding: 16px; border-left: 4px solid #0EA5E9; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/mars-rover.ts b/src/styles/templates/tech/mars-rover.ts deleted file mode 100644 index 9ae400b..0000000 --- a/src/styles/templates/tech/mars-rover.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const marsRover: StyleOption = { - id: 'mars-rover', - name: 'Mars Rover', - category: 'Space', - description: 'Red planet exploration. Dusty orange and terracotta tones with functional technical type.', - vibe: 'Space, Dusty, Technical', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Orbitron&family=Exo:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Orbitron", size: 30, color: "BF360C", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "FF7043", space: 6, style: "thick", size: 18 } } - }, - heading2: { - font: "Exo", size: 16, color: "E64A19", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Exo", size: 11, color: "3E2723", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF5722" - }, - previewCss: ` - font-family: 'Exo', sans-serif; - background: #FBE9E7; - h1 { font-family: 'Orbitron', sans-serif; font-size: 30pt; font-weight: 700; color: #BF360C; border-bottom: 4px solid #FF7043; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #E64A19; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.6; color: #3E2723; margin-bottom: 14px; } - blockquote { background: #FFCCBC; border-left: 6px solid #BF360C; padding: 16px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/tech/national-park-signage.ts b/src/styles/templates/tech/national-park-signage.ts deleted file mode 100644 index a2d5ecd..0000000 --- a/src/styles/templates/tech/national-park-signage.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const nationalParkSignage: StyleOption = { - id: 'national-park-signage', - name: 'National Park Signage', - category: 'Nature', - description: 'Routed wood sign aesthetic. Heavy rounded serifs with earthy brown and cream colors.', - vibe: 'Outdoors, Rustic, Official', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Crete+Round:ital@0;1&family=Lato:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Crete Round", size: 32, color: "FFFFFF", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "3E2723", color: "auto", style: "clear" } // Dark brown background - }, - heading2: { - font: "Lato", size: 16, color: "3E2723", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true - }, - body: { - font: "Lato", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "3E2723" - }, - previewCss: ` - font-family: 'Lato', sans-serif; - h1 { font-family: 'Crete Round', serif; font-size: 32pt; color: #FFFFFF; background: #3E2723; padding: 16px; margin-bottom: 24px; border-radius: 8px; border: 2px solid #5D4037; } - h2 { font-size: 16pt; font-weight: 700; color: #3E2723; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { background: #EFEBE9; border-left: 6px solid #3E2723; padding: 16px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/tech/neon-noir.ts b/src/styles/templates/tech/neon-noir.ts deleted file mode 100644 index ef3fd4c..0000000 --- a/src/styles/templates/tech/neon-noir.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const neonNoir: StyleOption = { - id: 'neon-noir', - name: 'Neon Noir', - category: 'Futuristic', - description: 'High-tech noir aesthetic. Ultra-thin, futuristic typography with glowing neon accents.', - vibe: 'Futuristic, Thin, Neon', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Megrim&family=Gruppo&display=swap', - wordConfig: { - heading1: { - font: "Megrim", size: 36, color: "D500F9", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "121212", color: "auto", style: "clear" } - }, - heading2: { - font: "Gruppo", size: 18, color: "00E5FF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Gruppo", size: 12, color: "E0E0E0", align: 'left', - spacing: { before: 0, after: 160, line: 300 }, - shading: { fill: "1C1C1C", color: "auto", style: "clear" } - }, - accentColor: "D500F9" - }, - previewCss: ` - font-family: 'Gruppo', sans-serif; - background: #121212; - h1 { font-family: 'Megrim', cursive; font-size: 36pt; font-weight: 700; color: #D500F9; background: #121212; margin-bottom: 24px; } - h2 { font-size: 18pt; font-weight: 700; color: #00E5FF; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.6; color: #E0E0E0; margin-bottom: 14px; } - blockquote { border: 1px solid #D500F9; padding: 16px; margin: 20px 0; background: #000; color: #D500F9; } - ` - }; diff --git a/src/styles/templates/tech/schematic-diagram.ts b/src/styles/templates/tech/schematic-diagram.ts deleted file mode 100644 index 2d3e224..0000000 --- a/src/styles/templates/tech/schematic-diagram.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const schematicDiagram: StyleOption = { - id: 'schematic-diagram', - name: 'Schematic Diagram', - category: 'Technical', - description: 'Patent drawing style. Thin, precise lines on stark white with serif lettering.', - vibe: 'Technical, Precise, Patent', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Courier+Prime&family=Libre+Baskerville:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Libre Baskerville", size: 28, color: "000000", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - allCaps: true - }, - heading2: { - font: "Courier Prime", size: 14, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "single", size: 4 } } - }, - body: { - font: "Courier Prime", size: 11, color: "212121", align: 'both', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - h1 { font-family: 'Libre Baskerville', serif; font-size: 28pt; font-weight: 700; color: #000000; text-align: center; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 700; color: #000000; margin-top: 32px; margin-bottom: 16px; border-bottom: 1px solid #000; display: inline-block; padding-bottom: 2px; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; text-align: justify; } - blockquote { border: 1px solid #000; padding: 20px; margin: 24px 0; font-size: 10pt; } - ` - }; diff --git a/src/styles/templates/tech/smart-home-tech.ts b/src/styles/templates/tech/smart-home-tech.ts deleted file mode 100644 index 5ce9548..0000000 --- a/src/styles/templates/tech/smart-home-tech.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const smartHomeTech: StyleOption = { - id: 'smart-home-tech', - name: 'Smart Home Tech', - category: 'Tech', - description: 'Modern IoT and smart home design. Clean, connected typography with ambient intelligence.', - vibe: 'Connected, Modern, Ambient', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Poppins", size: 28, color: "00BFA5", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Poppins", size: 15, color: "263238", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Poppins", size: 10, color: "546E7A", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "00BFA5" - }, - previewCss: ` - font-family: 'Poppins', sans-serif; - h1 { font-size: 28pt; font-weight: 600; color: #00BFA5; margin-bottom: 24px; } - h2 { font-size: 15pt; font-weight: 600; color: #263238; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #546E7A; margin-bottom: 14px; } - blockquote { background: #E0F2F1; padding: 16px; border-radius: 12px; border-left: 4px solid #00BFA5; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/solarpunk.ts b/src/styles/templates/tech/solarpunk.ts deleted file mode 100644 index 13c7b22..0000000 --- a/src/styles/templates/tech/solarpunk.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const solarpunk: StyleOption = { - id: 'solarpunk', - name: 'Solarpunk', - category: 'Futuristic', - description: 'Nature-meets-technology future. Art Nouveau curves with high-tech sustainable green and gold.', - vibe: 'Sustainable, Hopeful, Organic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Caudex:wght@400;700&family=El+Messiri:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "El Messiri", size: 30, color: "2E7D32", bold: true, align: 'left', - spacing: { before: 440, after: 260, line: 240 } - }, - heading2: { - font: "Caudex", size: 15, color: "AFB42B", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Caudex", size: 11, color: "33691E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFD700" - }, - previewCss: ` - font-family: 'Caudex', serif; - h1 { font-family: 'El Messiri', sans-serif; font-size: 30pt; font-weight: 700; color: #2E7D32; margin-bottom: 30px; } - h2 { font-size: 15pt; font-weight: 700; color: #AFB42B; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.6; color: #33691E; margin-bottom: 14px; } - blockquote { background: #F1F8E9; padding: 16px; border-left: 4px solid #FFD700; border-radius: 0 16px 16px 0; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/startup-saas.ts b/src/styles/templates/tech/startup-saas.ts deleted file mode 100644 index a4e64e8..0000000 --- a/src/styles/templates/tech/startup-saas.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const startupSaas: StyleOption = { - id: 'startup-saas', - name: 'Startup SaaS', - category: 'Tech', - description: 'Modern SaaS product design language. Clean, conversion-focused with trustworthy tech aesthetics.', - vibe: 'Modern, Trustworthy, Product', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap', - wordConfig: { - heading1: { - font: "Inter", size: 32, color: "111827", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Inter", size: 18, color: "4F46E5", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Inter", size: 10, color: "6B7280", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "4F46E5" - }, - previewCss: ` - font-family: 'Inter', sans-serif; - h1 { font-size: 32pt; font-weight: 700; color: #111827; margin-bottom: 24px; letter-spacing: -0.5px; } - h2 { font-size: 18pt; font-weight: 600; color: #4F46E5; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #6B7280; margin-bottom: 14px; } - blockquote { background: #EEF2FF; padding: 16px; border-radius: 8px; border-left: 4px solid #4F46E5; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/tech/tech-documentation.ts b/src/styles/templates/tech/tech-documentation.ts deleted file mode 100644 index 64c4584..0000000 --- a/src/styles/templates/tech/tech-documentation.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const techDocumentation: StyleOption = { - id: 'tech-documentation', - name: 'Tech Documentation', - category: 'Technical', - description: 'Clean and functional design for technical documentation. Optimized for code samples and clear instruction.', - vibe: 'Technical, Clear, Functional', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "IBM Plex Sans", size: 24, color: "161616", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "IBM Plex Sans", size: 16, color: "161616", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "IBM Plex Sans", size: 10, color: "525252", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "0F62FE" - }, - previewCss: ` - font-family: 'IBM Plex Sans', sans-serif; - h1 { font-size: 24pt; font-weight: 600; color: #161616; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 600; color: #161616; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #525252; margin-bottom: 14px; } - blockquote { font-family: 'IBM Plex Mono', monospace; background: #F4F4F4; padding: 16px; margin: 20px 0; font-size: 9pt; border-left: 4px solid #0F62FE; } - ` - }; diff --git a/src/styles/templates/tech/tech-startup.ts b/src/styles/templates/tech/tech-startup.ts deleted file mode 100644 index 0d119ca..0000000 --- a/src/styles/templates/tech/tech-startup.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const techStartup: StyleOption = { - id: 'tech-startup', - name: 'Tech Startup', - category: 'Tech', - description: 'Modern, energetic design for technology companies and startups. Bold gradients, vibrant colors, and confident typography.', - vibe: 'Innovative, Dynamic, Bold', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;700&display=swap', - wordConfig: { - heading1: { - font: "Plus Jakarta Sans", size: 28, color: "6366F1", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Plus Jakarta Sans", size: 16, color: "1E1E1E", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Plus Jakarta Sans", size: 10, color: "4B5563", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "6366F1" - }, - previewCss: ` - font-family: 'Plus Jakarta Sans', sans-serif; - h1 { font-size: 28pt; font-weight: 700; color: #6366F1; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #1E1E1E; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #4B5563; margin-bottom: 14px; } - blockquote { background: linear-gradient(135deg, #EEF2FF 0%, #E0E7FF 100%); padding: 20px; border-radius: 8px; border-left: 4px solid #6366F1; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/tech/volcanic-ash.ts b/src/styles/templates/tech/volcanic-ash.ts deleted file mode 100644 index 813759d..0000000 --- a/src/styles/templates/tech/volcanic-ash.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const volcanicAsh: StyleOption = { - id: 'volcanic-ash', - name: 'Volcanic Ash', - category: 'Nature', - description: 'Geological extreme. Obsidian greys with magma orange cracks.', - vibe: 'Dark, Hot, Geological', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Creepster&family=Merriweather+Sans:wght@400;800&display=swap', - wordConfig: { - heading1: { - font: "Merriweather Sans", size: 36, color: "FF3D00", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "212121", color: "auto", style: "clear" } // Obsidian - }, - heading2: { - font: "Merriweather Sans", size: 16, color: "424242", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "FF3D00", space: 4, style: "single", size: 6 } } - }, - body: { - font: "Merriweather Sans", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF3D00" - }, - previewCss: ` - font-family: 'Merriweather Sans', sans-serif; - background: #FAFAFA; - h1 { font-size: 36pt; font-weight: 800; color: #FF3D00; background: #212121; padding: 16px; margin-bottom: 24px; border-bottom: 4px solid #DD2C00; } - h2 { font-size: 16pt; font-weight: 800; color: #424242; margin-top: 32px; margin-bottom: 16px; border-bottom: 2px solid #FF3D00; display: inline-block; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border-left: 8px solid #212121; padding-left: 16px; margin: 24px 0; background: #FFCCBC; } - ` - }; diff --git a/src/styles/templates/vintage/amber-monitor.ts b/src/styles/templates/vintage/amber-monitor.ts deleted file mode 100644 index a940290..0000000 --- a/src/styles/templates/vintage/amber-monitor.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const amberMonitor: StyleOption = { - id: 'amber-monitor', - name: 'Amber Monitor', - category: 'Retro', - description: '1980s monochrome computing. Glowing amber text on a black void.', - vibe: 'Retro, Computing, Amber', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=VT323&display=swap', - wordConfig: { - heading1: { - font: "VT323", size: 36, color: "FFB300", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - heading2: { - font: "VT323", size: 20, color: "FFCA28", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "FFB300", space: 4, style: "single", size: 12 } } - }, - body: { - font: "VT323", size: 16, color: "FFE082", align: 'left', - spacing: { before: 0, after: 160, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" } - }, - accentColor: "FFB300" - }, - previewCss: ` - font-family: 'VT323', monospace; - background: #000000; - h1 { font-size: 36pt; color: #FFB300; margin-bottom: 24px; text-shadow: 0 0 5px #FF6F00; } - h2 { font-size: 20pt; color: #FFCA28; margin-top: 32px; margin-bottom: 16px; border-bottom: 1px solid #FFB300; } - p { font-size: 16pt; line-height: 1.4; color: #FFE082; margin-bottom: 14px; } - blockquote { border-left: 4px solid #FFB300; padding-left: 16px; margin: 24px 0; color: #FFECB3; } - ` - }; diff --git a/src/styles/templates/vintage/ancient-papyrus.ts b/src/styles/templates/vintage/ancient-papyrus.ts deleted file mode 100644 index 8d3833e..0000000 --- a/src/styles/templates/vintage/ancient-papyrus.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const ancientPapyrus: StyleOption = { - id: 'ancient-papyrus', - name: 'Ancient Papyrus', - category: 'Historical', - description: 'Egyptian scroll aesthetic. Fibre textures (using color) and ancient-looking serifs.', - vibe: 'Ancient, Scroll, Historical', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Caesar+Dressing&family=Antic+Didone&display=swap', - wordConfig: { - heading1: { - font: "Caesar Dressing", size: 32, color: "3E2723", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Antic Didone", size: 18, color: "5D4037", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "8D6E63", space: 4, style: "single", size: 4 } } - }, - body: { - font: "Antic Didone", size: 12, color: "212121", align: 'both', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "3E2723" - }, - previewCss: ` - font-family: 'Antic Didone', serif; - background: #FFF3E0; - background-image: linear-gradient(0deg, #FFE0B2 1px, transparent 1px); - background-size: 100% 20px; - h1 { font-family: 'Caesar Dressing', cursive; font-size: 32pt; color: #3E2723; text-align: center; margin-bottom: 24px; text-shadow: 1px 1px #FFF; } - h2 { font-size: 18pt; font-weight: 700; color: #5D4037; margin-top: 32px; margin-bottom: 16px; border-bottom: 1px solid #8D6E63; } - p { font-size: 12pt; line-height: 1.8; color: #212121; margin-bottom: 14px; text-align: justify; } - blockquote { border: 2px solid #3E2723; padding: 16px; margin: 24px 0; background: #FFCCBC; } - ` - }; diff --git a/src/styles/templates/vintage/art-deco-glamour.ts b/src/styles/templates/vintage/art-deco-glamour.ts deleted file mode 100644 index c38ada1..0000000 --- a/src/styles/templates/vintage/art-deco-glamour.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const artDecoGlamour: StyleOption = { - id: 'art-deco-glamour', - name: 'Art Deco Glamour', - category: 'Vintage', - description: 'Geometric elegance inspired by the 1920s-1930s Art Deco movement. Features bold contrasts, streamlined shapes, and luxurious golden accents.', - vibe: 'Luxury, Elegant, Theatrical', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Poiret+One&family=Josefin+Sans:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Poiret One", size: 32, color: "1C1C1C", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "F5F0E1", color: "auto", style: "clear" }, - border: { - top: { color: "C9A227", space: 10, style: "single", size: 24 }, - bottom: { color: "C9A227", space: 10, style: "single", size: 24 } - } - }, - heading2: { - font: "Josefin Sans", size: 14, color: "C9A227", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Josefin Sans", size: 10, color: "2D2D2D", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "C9A227" - }, - previewCss: ` - font-family: 'Josefin Sans', sans-serif; - h1 { font-family: 'Poiret One', cursive; font-size: 32pt; color: #1C1C1C; text-align: center; background: #F5F0E1; padding: 20px 24px; border-top: 4px solid #C9A227; border-bottom: 4px solid #C9A227; margin-bottom: 28px; letter-spacing: 4px; text-transform: uppercase; } - h2 { font-size: 14pt; font-weight: 600; color: #C9A227; margin-top: 32px; margin-bottom: 14px; letter-spacing: 2px; text-transform: uppercase; } - p { font-size: 10pt; line-height: 1.6; color: #2D2D2D; margin-bottom: 14px; } - blockquote { border-left: 4px solid #C9A227; padding: 16px 20px; background: #FAFAF5; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/vintage/atomic-age-1950s.ts b/src/styles/templates/vintage/atomic-age-1950s.ts deleted file mode 100644 index ac0412b..0000000 --- a/src/styles/templates/vintage/atomic-age-1950s.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const atomicAge1950s: StyleOption = { - id: 'atomic-age-1950s', - name: 'Atomic Age 1950s', - category: 'Retro', - description: 'Mid-century modern futurism. Starburst motifs and playful, bouncy sans-serifs.', - vibe: 'Mid-Century, Optimistic, Bouncy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Lobster&family=Josefin+Sans:wght@400;600&display=swap', - - wordConfig: { - heading1: { - font: "Lobster", size: 34, color: "00ACC1", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Josefin Sans", size: 16, color: "F4511E", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { left: { color: "FDD835", space: 8, style: "dotted", size: 24 } } - }, - body: { - font: "Josefin Sans", size: 11, color: "37474F", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "F4511E" - }, - - previewCss: ` - font-family: 'Josefin Sans', sans-serif; - h1 { font-family: 'Lobster', cursive; font-size: 34pt; color: #00ACC1; margin-bottom: 24px; text-shadow: 2px 2px #E0F7FA; } - h2 { font-size: 16pt; font-weight: 700; color: #F4511E; margin-top: 30px; margin-bottom: 14px; border-left: 6px dotted #FDD835; padding-left: 10px; } - p { font-size: 11pt; line-height: 1.6; color: #37474F; margin-bottom: 14px; } - blockquote { background: #FFF3E0; border-radius: 20px 0 20px 0; padding: 20px; margin: 24px 0; color: #F4511E; } - ` - }; diff --git a/src/styles/templates/vintage/atompunk-50s.ts b/src/styles/templates/vintage/atompunk-50s.ts deleted file mode 100644 index 7c8fa7e..0000000 --- a/src/styles/templates/vintage/atompunk-50s.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const atompunk50s: StyleOption = { - id: 'atompunk-50s', - name: 'Atompunk 50s', - category: 'Retro', - description: 'Optimistic nuclear age. Starburst motifs and playful, bouncy sans-serifs.', - vibe: 'Retro, Future, Pastel', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Lobster&family=Josefin+Sans:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Lobster", size: 36, color: "00BCD4", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "FCE4EC", color: "auto", style: "clear" } - }, - heading2: { - font: "Josefin Sans", size: 18, color: "E91E63", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Josefin Sans", size: 12, color: "37474F", align: 'center', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "00BCD4" - }, - previewCss: ` - font-family: 'Josefin Sans', sans-serif; - h1 { font-family: 'Lobster', cursive; font-size: 36pt; color: #00BCD4; background: #FCE4EC; padding: 20px; border-radius: 50% 10% 50% 10%; margin-bottom: 24px; text-align: center; } - h2 { font-size: 18pt; font-weight: 700; color: #E91E63; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.6; color: #37474F; margin-bottom: 14px; text-align: center; } - blockquote { border: 2px dashed #00BCD4; padding: 16px; margin: 24px 0; background: #E0F7FA; border-radius: 16px; } - ` - }; diff --git a/src/styles/templates/vintage/gold-rush-ledger.ts b/src/styles/templates/vintage/gold-rush-ledger.ts deleted file mode 100644 index b1447b8..0000000 --- a/src/styles/templates/vintage/gold-rush-ledger.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const goldRushLedger: StyleOption = { - id: 'gold-rush-ledger', - name: 'Gold Rush Ledger', - category: 'Vintage', - description: '1850s handwritten accounting. Script headers with rigid body fonts mimicking recorded entries.', - vibe: 'Vintage, Handwritten, Accounting', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Pinyon+Script&family=Inknut+Antiqua:wght@400;700&display=swap', - - wordConfig: { - heading1: { - font: "Pinyon Script", size: 42, color: "000000", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 } - }, - heading2: { - font: "Inknut Antiqua", size: 12, color: "3E2723", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - border: { bottom: { color: "000000", space: 4, style: "double", size: 12 } } - }, - body: { - font: "Inknut Antiqua", size: 10, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "000000" - }, - - previewCss: ` - font-family: 'Inknut Antiqua', serif; - background: #FFF9C4; - h1 { font-family: 'Pinyon Script', cursive; font-size: 42pt; color: #000000; text-align: center; margin-bottom: 24px; } - h2 { font-size: 12pt; font-weight: 700; color: #3E2723; margin-top: 32px; margin-bottom: 16px; border-bottom: 4px double #000; padding-bottom: 4px; } - p { font-size: 10pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 1px solid #000; padding: 16px; margin: 24px 0; background: #FFFDE7; } - ` - }; diff --git a/src/styles/templates/vintage/index.ts b/src/styles/templates/vintage/index.ts deleted file mode 100644 index d06d824..0000000 --- a/src/styles/templates/vintage/index.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { StyleOption } from '../../../types'; -import { amberMonitor } from './amber-monitor'; -import { ancientPapyrus } from './ancient-papyrus'; -import { artDecoGlamour } from './art-deco-glamour'; -import { atomicAge1950s } from './atomic-age-1950s'; -import { atompunk50s } from './atompunk-50s'; -import { goldRushLedger } from './gold-rush-ledger'; -import { labelMakerEmboss } from './label-maker-emboss'; -import { libraryArchive } from './library-archive'; -import { medievalIlluminated } from './medieval-illuminated'; -import { memphisPattern } from './memphis-pattern'; -import { midCenturyModern } from './mid-century-modern'; -import { noirDetective } from './noir-detective'; -import { oldTelegram } from './old-telegram'; -import { psychedelic60s } from './psychedelic-60s'; -import { raygunGothic } from './raygun-gothic'; -import { retro80s } from './retro-80s'; -import { retroDiner } from './retro-diner'; -import { sovietConstructivism } from './soviet-constructivism'; -import { speakeasyProhibition } from './speakeasy-prohibition'; -import { victorianOrnate } from './victorian-ornate'; -import { vintageApothecary } from './vintage-apothecary'; -import { vintageRadio } from './vintage-radio'; -import { vintageTypewriter } from './vintage-typewriter'; -import { wantedPoster } from './wanted-poster'; - -export const vintageStyles: StyleOption[] = [ - amberMonitor, - ancientPapyrus, - artDecoGlamour, - atomicAge1950s, - atompunk50s, - goldRushLedger, - labelMakerEmboss, - libraryArchive, - medievalIlluminated, - memphisPattern, - midCenturyModern, - noirDetective, - oldTelegram, - psychedelic60s, - raygunGothic, - retro80s, - retroDiner, - sovietConstructivism, - speakeasyProhibition, - victorianOrnate, - vintageApothecary, - vintageRadio, - vintageTypewriter, - wantedPoster -]; diff --git a/src/styles/templates/vintage/label-maker-emboss.ts b/src/styles/templates/vintage/label-maker-emboss.ts deleted file mode 100644 index c32b5db..0000000 --- a/src/styles/templates/vintage/label-maker-emboss.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const labelMakerEmboss: StyleOption = { - id: 'label-maker-emboss', - name: 'Label Maker Emboss', - category: 'Retro', - description: 'Simulates the embossed plastic tape of handheld label makers. White text on dark strips.', - vibe: 'Tactile, Retro, Organized', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cutive+Mono&family=Gaspard&display=swap', - wordConfig: { - heading1: { - font: "Cutive Mono", size: 28, color: "FFFFFF", bold: true, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "000000", color: "auto", style: "clear" }, - allCaps: true - }, - heading2: { - font: "Cutive Mono", size: 16, color: "FFFFFF", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - shading: { fill: "B71C1C", color: "auto", style: "clear" }, - allCaps: true - }, - body: { - font: "Cutive Mono", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "B71C1C" - }, - previewCss: ` - font-family: 'Cutive Mono', monospace; - h1 { font-size: 28pt; font-weight: 700; color: #FFFFFF; background: #000000; padding: 8px 16px; margin-bottom: 24px; text-transform: uppercase; display: inline-block; box-shadow: 2px 2px 0px rgba(0,0,0,0.3); border-radius: 4px; } - h2 { font-size: 16pt; font-weight: 700; color: #FFFFFF; background: #B71C1C; padding: 4px 12px; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; display: inline-block; border-radius: 2px; } - p { font-size: 11pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px dashed #000000; padding: 16px; margin: 24px 0; background: #E0E0E0; } - ` - }; diff --git a/src/styles/templates/vintage/library-archive.ts b/src/styles/templates/vintage/library-archive.ts deleted file mode 100644 index d1ce829..0000000 --- a/src/styles/templates/vintage/library-archive.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const libraryArchive: StyleOption = { - id: 'library-archive', - name: 'Library Archive', - category: 'Vintage', - description: 'Organized catalog card aesthetic. Monospaced headers with serif body, reminiscent of Dewey Decimal cards.', - vibe: 'Organized, Vintage, Catalog', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cutive+Mono&family=Old+Standard+TT:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Cutive Mono", size: 24, color: "000000", bold: true, align: 'left', - spacing: { before: 400, after: 240, line: 240 }, - border: { bottom: { color: "B0BEC5", space: 4, style: "dotted", size: 8 } } - }, - heading2: { - font: "Cutive Mono", size: 14, color: "455A64", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Old Standard TT", size: 12, color: "263238", align: 'both', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "D32F2F" - }, - previewCss: ` - font-family: 'Old Standard TT', serif; - background: #FDFBF7; - h1 { font-family: 'Cutive Mono', monospace; font-size: 24pt; font-weight: 700; color: #000000; border-bottom: 2px dotted #B0BEC5; padding-bottom: 12px; margin-bottom: 28px; } - h2 { font-family: 'Cutive Mono', monospace; font-size: 14pt; font-weight: 700; color: #455A64; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 12pt; line-height: 1.8; color: #263238; margin-bottom: 16px; text-align: justify; } - blockquote { border: 1px solid #B0BEC5; padding: 16px; margin: 24px 0; background: #FFF; font-family: 'Cutive Mono', monospace; font-size: 10pt; } - ` - }; diff --git a/src/styles/templates/vintage/medieval-illuminated.ts b/src/styles/templates/vintage/medieval-illuminated.ts deleted file mode 100644 index 6170c7d..0000000 --- a/src/styles/templates/vintage/medieval-illuminated.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const medievalIlluminated: StyleOption = { - id: 'medieval-illuminated', - name: 'Medieval Illuminated', - category: 'Historical', - description: 'Manuscript style. Heavy ornate headers mimicking drop caps and blackletter feels.', - vibe: 'Historic, Religious, Ornate', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=MedievalSharp&family=Goudy+Bookletter+1911&display=swap', - - wordConfig: { - heading1: { - font: "MedievalSharp", size: 36, color: "800000", bold: false, align: 'left', - spacing: { before: 440, after: 260, line: 240 }, - border: { - left: { color: "FFD700", space: 10, style: "thick", size: 24 } - } - }, - heading2: { - font: "MedievalSharp", size: 18, color: "556B2F", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Goudy Bookletter 1911", size: 13, color: "000000", align: 'both', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "FFD700" - }, - - previewCss: ` - font-family: 'Goudy Bookletter 1911', serif; - background: #FFF8DC; - h1 { font-family: 'MedievalSharp', cursive; font-size: 36pt; color: #800000; border-left: 8px solid #FFD700; padding-left: 16px; margin-bottom: 24px; } - h2 { font-family: 'MedievalSharp', cursive; font-size: 18pt; color: #556B2F; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 13pt; line-height: 1.6; color: #000000; margin-bottom: 14px; text-align: justify; } - blockquote { border: 2px double #800000; padding: 16px; margin: 24px 0; background: #FAEBD7; } - ` - }; diff --git a/src/styles/templates/vintage/memphis-pattern.ts b/src/styles/templates/vintage/memphis-pattern.ts deleted file mode 100644 index 7b46439..0000000 --- a/src/styles/templates/vintage/memphis-pattern.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const memphisPattern: StyleOption = { - id: 'memphis-pattern', - name: 'Memphis Pattern', - category: 'Retro', - description: 'The chaotic 80s aesthetic. Clashing patterns, zig-zags, and vibrant pastel-neons.', - vibe: 'Playful, Chaotic, 80s', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Righteous&family=Comfortaa:wght@400;700&display=swap', - - wordConfig: { - heading1: { - font: "Righteous", size: 36, color: "E91E63", bold: false, align: 'right', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "00BCD4", space: 8, style: "single", size: 12 } } - }, - heading2: { - font: "Comfortaa", size: 16, color: "673AB7", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Comfortaa", size: 10, color: "111111", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFEB3B" - }, - - previewCss: ` - font-family: 'Comfortaa', cursive; - h1 { font-family: 'Righteous', cursive; font-size: 36pt; color: #E91E63; text-align: right; border-bottom: 4px dashed #00BCD4; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-size: 16pt; font-weight: 700; color: #673AB7; margin-top: 32px; margin-bottom: 16px; background: linear-gradient(90deg, #FFEB3B 0%, transparent 100%); padding: 5px; } - p { font-size: 10pt; line-height: 1.6; color: #111111; margin-bottom: 14px; } - blockquote { border-left: 8px solid #000; padding-left: 16px; margin: 24px 0; color: #E91E63; } - ` - }; diff --git a/src/styles/templates/vintage/mid-century-modern.ts b/src/styles/templates/vintage/mid-century-modern.ts deleted file mode 100644 index 7b053ae..0000000 --- a/src/styles/templates/vintage/mid-century-modern.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const midCenturyModern: StyleOption = { - id: 'mid-century-modern', - name: 'Mid-Century Modern', - category: 'Retro', - description: 'Optimistic and playful design from the 1950s-60s. Features geometric sans-serifs with personality, vibrant atomic-age colors, and approachable warmth.', - vibe: 'Playful, Nostalgic, Friendly', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Quicksand:wght@400;600;700&display=swap', - wordConfig: { - heading1: { - font: "Quicksand", size: 26, color: "2D3E50", bold: true, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "E8F6F3", color: "auto", style: "clear" } - }, - heading2: { - font: "Quicksand", size: 14, color: "E67E22", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Quicksand", size: 10, color: "34495E", align: 'left', - spacing: { before: 0, after: 160, line: 300 } - }, - accentColor: "1ABC9C" - }, - previewCss: ` - font-family: 'Quicksand', sans-serif; - h1 { font-size: 26pt; font-weight: 700; color: #2D3E50; background: #E8F6F3; padding: 16px 20px; border-radius: 4px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #E67E22; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.7; color: #34495E; margin-bottom: 14px; } - blockquote { background: #FEF5E7; padding: 16px; border-radius: 8px; border-left: 4px solid #E67E22; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/vintage/noir-detective.ts b/src/styles/templates/vintage/noir-detective.ts deleted file mode 100644 index 5f90352..0000000 --- a/src/styles/templates/vintage/noir-detective.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const noirDetective: StyleOption = { - id: 'noir-detective', - name: 'Noir Detective', - category: 'Vintage', - description: '1940s case file. Typewriter font on manila folder background with gritty grey accents.', - vibe: 'Gritty, Mystery, Vintage', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Courier+Prime&family=Special+Elite&display=swap', - - wordConfig: { - heading1: { - font: "Special Elite", size: 26, color: "000000", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "5D4037", space: 4, style: "single", size: 12 } } - }, - heading2: { - font: "Courier Prime", size: 14, color: "3E2723", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 }, - allCaps: true - }, - body: { - font: "Courier Prime", size: 11, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "5D4037" - }, - - previewCss: ` - font-family: 'Courier Prime', monospace; - background: #F4E1C1; - h1 { font-family: 'Special Elite', cursive; font-size: 26pt; color: #000000; border-bottom: 2px solid #5D4037; padding-bottom: 10px; margin-bottom: 24px; } - h2 { font-size: 14pt; font-weight: 700; color: #3E2723; margin-top: 30px; margin-bottom: 14px; text-transform: uppercase; text-decoration: underline; } - p { font-size: 11pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { border: 1px solid #3E2723; padding: 16px; margin: 20px 0; background: #FFF8E1; box-shadow: 4px 4px 0 rgba(0,0,0,0.1); } - ` - }; diff --git a/src/styles/templates/vintage/old-telegram.ts b/src/styles/templates/vintage/old-telegram.ts deleted file mode 100644 index 0c8436a..0000000 --- a/src/styles/templates/vintage/old-telegram.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const oldTelegram: StyleOption = { - id: 'old-telegram', - name: 'Old Telegram', - category: 'Vintage', - description: 'Urgent vintage message. All-caps serif type with stop-word aesthetics.', - vibe: 'Urgent, Vintage, Telegraph', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cutive+Mono&display=swap', - - wordConfig: { - heading1: { - font: "Cutive Mono", size: 28, color: "000000", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - allCaps: true - }, - heading2: { - font: "Cutive Mono", size: 14, color: "000000", bold: false, align: 'left', - spacing: { before: 280, after: 140, line: 240 }, - allCaps: true - }, - body: { - font: "Cutive Mono", size: 12, color: "000000", align: 'left', - spacing: { before: 0, after: 140, line: 260 }, - allCaps: true - }, - accentColor: "000000" - }, - - previewCss: ` - font-family: 'Cutive Mono', monospace; - background: #FFF59D; - text-transform: uppercase; - h1 { font-size: 28pt; font-weight: 700; color: #000000; text-align: center; margin-bottom: 24px; border-bottom: 2px solid #000; } - h2 { font-size: 14pt; font-weight: 400; color: #000000; margin-top: 28px; margin-bottom: 14px; } - p { font-size: 12pt; line-height: 1.5; color: #000000; margin-bottom: 12px; } - blockquote { border: 2px solid #000; padding: 12px; margin: 16px 0; text-align: center; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/vintage/psychedelic-60s.ts b/src/styles/templates/vintage/psychedelic-60s.ts deleted file mode 100644 index 9493b28..0000000 --- a/src/styles/templates/vintage/psychedelic-60s.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const psychedelic60s: StyleOption = { - id: 'psychedelic-60s', - name: 'Psychedelic 60s', - category: 'Retro', - description: 'Groovy 1960s psychedelic poster art inspired design. Vibrant colors with flowing, trippy typography.', - vibe: 'Groovy, Vibrant, Trippy', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Monoton&family=Comfortaa:wght@400;600;700&display=swap', - wordConfig: { - heading1: { - font: "Monoton", size: 36, color: "FF1493", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 220 } - }, - heading2: { - font: "Comfortaa", size: 16, color: "00CED1", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Comfortaa", size: 10, color: "4A4A4A", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FF6B00" - }, - previewCss: ` - font-family: 'Comfortaa', cursive; - h1 { font-family: 'Monoton', cursive; font-size: 36pt; color: #FF1493; text-align: center; margin-bottom: 28px; } - h2 { font-size: 16pt; font-weight: 700; color: #00CED1; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #4A4A4A; margin-bottom: 14px; } - blockquote { background: linear-gradient(135deg, #FFE5F0 0%, #E5FFFA 100%); padding: 16px; border-radius: 12px; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/vintage/raygun-gothic.ts b/src/styles/templates/vintage/raygun-gothic.ts deleted file mode 100644 index 3ec73d0..0000000 --- a/src/styles/templates/vintage/raygun-gothic.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const raygunGothic: StyleOption = { - id: 'raygun-gothic', - name: 'Raygun Gothic', - category: 'Retro', - description: 'Golden age sci-fi (Flash Gordon). Swooping curves and metallic golds.', - vibe: 'Retro, Sci-Fi, Heroic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Righteous&family=Jura:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Righteous", size: 36, color: "FFD700", bold: false, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "B71C1C", color: "auto", style: "clear" } - }, - heading2: { - font: "Jura", size: 18, color: "B71C1C", bold: true, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Jura", size: 12, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "FFD700" - }, - previewCss: ` - font-family: 'Jura', sans-serif; - h1 { font-family: 'Righteous', cursive; font-size: 36pt; color: #FFD700; background: #B71C1C; padding: 16px; border-radius: 20px 20px 0 0; margin-bottom: 24px; text-align: center; } - h2 { font-size: 18pt; font-weight: 700; color: #B71C1C; text-align: center; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; letter-spacing: 2px; } - p { font-size: 12pt; line-height: 1.6; color: #212121; margin-bottom: 14px; } - blockquote { border: 2px solid #FFD700; padding: 16px; margin: 24px 0; background: #FFF8E1; border-radius: 12px; } - ` - }; diff --git a/src/styles/templates/vintage/retro-80s.ts b/src/styles/templates/vintage/retro-80s.ts deleted file mode 100644 index 23de985..0000000 --- a/src/styles/templates/vintage/retro-80s.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const retro80s: StyleOption = { - id: 'retro-80s', - name: 'Retro 80s', - category: 'Retro', - description: 'Nostalgic 1980s aesthetic with bold colors and geometric shapes. Perfect for synthwave and retro-themed content.', - vibe: 'Retro, Vibrant, Nostalgic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Bungee&family=VT323&family=Rubik:wght@400;500&display=swap', - wordConfig: { - heading1: { - font: "Bungee", size: 28, color: "FF1493", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 }, - shading: { fill: "1A1A2E", color: "auto", style: "clear" } - }, - heading2: { - font: "VT323", size: 20, color: "00CED1", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Rubik", size: 10, color: "E8E8E8", align: 'left', - spacing: { before: 0, after: 160, line: 280 }, - shading: { fill: "16213E", color: "auto", style: "clear" } - }, - accentColor: "FF1493" - }, - previewCss: ` - font-family: 'Rubik', sans-serif; - background: #16213E; - h1 { font-family: 'Bungee', cursive; font-size: 28pt; color: #FF1493; text-align: center; background: #1A1A2E; padding: 20px; margin-bottom: 28px; } - h2 { font-family: 'VT323', monospace; font-size: 20pt; color: #00CED1; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #E8E8E8; margin-bottom: 14px; } - blockquote { background: #0F3460; padding: 16px; border-left: 4px solid #FF1493; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/vintage/retro-diner.ts b/src/styles/templates/vintage/retro-diner.ts deleted file mode 100644 index 198ae9d..0000000 --- a/src/styles/templates/vintage/retro-diner.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const retroDiner: StyleOption = { - id: 'retro-diner', - name: 'Retro Diner', - category: 'Retro', - description: '1950s American diner aesthetic. Nostalgic typography with chrome and neon vibes.', - vibe: 'Nostalgic, Retro, Americana', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Cherry+Cream+Soda&family=Poppins:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Cherry Cream Soda", size: 36, color: "E8533E", bold: false, align: 'center', - spacing: { before: 400, after: 240, line: 240 } - }, - heading2: { - font: "Poppins", size: 14, color: "40E0D0", bold: true, align: 'left', - spacing: { before: 300, after: 150, line: 240 } - }, - body: { - font: "Poppins", size: 10, color: "2C3E50", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "E8533E" - }, - previewCss: ` - font-family: 'Poppins', sans-serif; - h1 { font-family: 'Cherry Cream Soda', cursive; font-size: 36pt; color: #E8533E; text-align: center; margin-bottom: 28px; } - h2 { font-size: 14pt; font-weight: 600; color: #40E0D0; margin-top: 30px; margin-bottom: 14px; } - p { font-size: 10pt; line-height: 1.6; color: #2C3E50; margin-bottom: 14px; } - blockquote { background: #FFF5EE; padding: 16px; border: 2px dashed #E8533E; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/vintage/soviet-constructivism.ts b/src/styles/templates/vintage/soviet-constructivism.ts deleted file mode 100644 index de7d544..0000000 --- a/src/styles/templates/vintage/soviet-constructivism.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const sovietConstructivism: StyleOption = { - id: 'soviet-constructivism', - name: 'Soviet Constructivism', - category: 'Historical', - description: 'Revolutionary Russian art. Angled text (italics), blocky fonts, and aggressive red/black palette.', - vibe: 'Bold, Revolutionary, Angled', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Rubik+Mono+One&family=Roboto+Condensed:wght@400;700&display=swap', - - wordConfig: { - heading1: { - font: "Rubik Mono One", size: 32, color: "D50000", bold: false, align: 'left', - spacing: { before: 400, after: 200, line: 240 }, - shading: { fill: "F5F5F5", color: "auto", style: "clear" }, - border: { right: { color: "000000", space: 10, style: "single", size: 36 } } - }, - heading2: { - font: "Roboto Condensed", size: 18, color: "000000", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 }, - allCaps: true, - italic: true - }, - body: { - font: "Roboto Condensed", size: 12, color: "212121", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "D50000" - }, - - previewCss: ` - font-family: 'Roboto Condensed', sans-serif; - h1 { font-family: 'Rubik Mono One', sans-serif; font-size: 32pt; color: #D50000; background: #F5F5F5; border-right: 10px solid #000; padding: 12px; margin-bottom: 24px; text-transform: uppercase; } - h2 { font-size: 18pt; font-weight: 700; color: #000000; margin-top: 32px; margin-bottom: 16px; text-transform: uppercase; font-style: italic; transform: skewX(-10deg); display: inline-block; } - p { font-size: 12pt; line-height: 1.5; color: #212121; margin-bottom: 14px; } - blockquote { background: #000; color: #FFF; padding: 20px; transform: rotate(-1deg); margin: 24px 0; font-weight: 700; } - ` - }; diff --git a/src/styles/templates/vintage/speakeasy-prohibition.ts b/src/styles/templates/vintage/speakeasy-prohibition.ts deleted file mode 100644 index 87bb495..0000000 --- a/src/styles/templates/vintage/speakeasy-prohibition.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const speakeasyProhibition: StyleOption = { - id: 'speakeasy-prohibition', - name: 'Speakeasy Prohibition', - category: 'Vintage', - description: '1920s Prohibition era speakeasy aesthetic. Mysterious, elegant with jazz age glamour.', - vibe: 'Mysterious, Glamorous, Jazz Age', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Poiret+One&family=Raleway:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Poiret One", size: 36, color: "D4AF37", bold: false, align: 'center', - spacing: { before: 480, after: 280, line: 240 }, - shading: { fill: "1A1A1A", color: "auto", style: "clear" } - }, - heading2: { - font: "Raleway", size: 12, color: "D4AF37", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Raleway", size: 10, color: "E8E8E8", align: 'left', - spacing: { before: 0, after: 180, line: 300 }, - shading: { fill: "212121", color: "auto", style: "clear" } - }, - accentColor: "D4AF37" - }, - previewCss: ` - font-family: 'Raleway', sans-serif; - background: #1A1A1A; - h1 { font-family: 'Poiret One', cursive; font-size: 36pt; color: #D4AF37; text-align: center; background: #1A1A1A; padding: 20px; margin-bottom: 32px; letter-spacing: 4px; } - h2 { font-size: 12pt; color: #D4AF37; margin-top: 36px; margin-bottom: 18px; text-transform: uppercase; letter-spacing: 3px; font-weight: 500; } - p { font-size: 10pt; line-height: 1.7; color: #E8E8E8; margin-bottom: 16px; font-weight: 400; } - blockquote { border-left: 2px solid #D4AF37; padding-left: 20px; margin: 28px 0; } - ` - }; diff --git a/src/styles/templates/vintage/victorian-ornate.ts b/src/styles/templates/vintage/victorian-ornate.ts deleted file mode 100644 index 56999e3..0000000 --- a/src/styles/templates/vintage/victorian-ornate.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const victorianOrnate: StyleOption = { - id: 'victorian-ornate', - name: 'Victorian Ornate', - category: 'Classic', - description: 'Inspired by the decorative exuberance of the Victorian era (1837-1901). Features rich typography with ornamental borders and jewel-tone accents.', - vibe: 'Traditional, Formal, Heritage', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Crimson+Text:wght@400;600&display=swap', - wordConfig: { - heading1: { - font: "Playfair Display", size: 26, color: "2C1810", bold: true, align: 'center', - spacing: { before: 400, after: 200, line: 240 }, - border: { bottom: { color: "8B4513", space: 8, style: "double", size: 12 } } - }, - heading2: { - font: "Playfair Display", size: 16, color: "5D3A1A", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Crimson Text", size: 11, color: "3D2914", align: 'both', - spacing: { before: 0, after: 160, line: 320 } - }, - accentColor: "8B4513" - }, - previewCss: ` - font-family: 'Crimson Text', serif; - h1 { font-family: 'Playfair Display', serif; font-size: 26pt; font-weight: 700; color: #2C1810; text-align: center; border-bottom: 4px double #8B4513; padding-bottom: 12px; margin-bottom: 24px; } - h2 { font-family: 'Playfair Display', serif; font-size: 16pt; font-weight: 700; color: #5D3A1A; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 11pt; line-height: 1.8; color: #3D2914; margin-bottom: 14px; text-align: justify; } - blockquote { background: #FDF5E6; padding: 20px; border: 1px solid #D4A574; color: #5D3A1A; margin: 24px 0; font-style: italic; } - ` -}; diff --git a/src/styles/templates/vintage/vintage-apothecary.ts b/src/styles/templates/vintage/vintage-apothecary.ts deleted file mode 100644 index 821878f..0000000 --- a/src/styles/templates/vintage/vintage-apothecary.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const vintageApothecary: StyleOption = { - id: 'vintage-apothecary', - name: 'Vintage Apothecary', - category: 'Vintage', - description: 'Old-world pharmacy aesthetic with medicinal elegance. Ornate typography with antique charm.', - vibe: 'Vintage, Medicinal, Antique', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Almendra:wght@400;700&family=Cardo:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Almendra", size: 28, color: "2D4739", bold: true, align: 'center', - spacing: { before: 480, after: 280, line: 240 }, - border: { bottom: { color: "2D4739", space: 10, style: "double", size: 8 } } - }, - heading2: { - font: "Almendra", size: 16, color: "4A6B5D", bold: false, align: 'left', - spacing: { before: 360, after: 180, line: 240 } - }, - body: { - font: "Cardo", size: 11, color: "3D3D3D", align: 'both', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "2D4739" - }, - previewCss: ` - font-family: 'Cardo', serif; - h1 { font-family: 'Almendra', serif; font-size: 28pt; font-weight: 700; color: #2D4739; text-align: center; border-bottom: 3px double #2D4739; padding-bottom: 16px; margin-bottom: 32px; } - h2 { font-family: 'Almendra', serif; font-size: 16pt; color: #4A6B5D; margin-top: 36px; margin-bottom: 18px; } - p { font-size: 11pt; line-height: 1.8; color: #3D3D3D; margin-bottom: 16px; text-align: justify; } - blockquote { background: #F0F5F1; padding: 20px; border: 1px solid #2D4739; margin: 28px 0; } - ` - }; diff --git a/src/styles/templates/vintage/vintage-radio.ts b/src/styles/templates/vintage/vintage-radio.ts deleted file mode 100644 index 3cf7383..0000000 --- a/src/styles/templates/vintage/vintage-radio.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const vintageRadio: StyleOption = { - id: 'vintage-radio', - name: 'Vintage Radio', - category: 'Retro', - description: 'Golden age of radio inspired design. Art Deco influences with warm broadcast aesthetics.', - vibe: 'Vintage, Broadcast, Golden Age', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Rye&family=Roboto+Slab:wght@400;500;600&display=swap', - wordConfig: { - heading1: { - font: "Rye", size: 28, color: "8B4513", bold: false, align: 'center', - spacing: { before: 440, after: 260, line: 240 }, - shading: { fill: "FDF5E6", color: "auto", style: "clear" } - }, - heading2: { - font: "Roboto Slab", size: 14, color: "A0522D", bold: true, align: 'left', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Roboto Slab", size: 10, color: "3E2723", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "CD853F" - }, - previewCss: ` - font-family: 'Roboto Slab', serif; - h1 { font-family: 'Rye', cursive; font-size: 28pt; color: #8B4513; text-align: center; background: #FDF5E6; padding: 20px; margin-bottom: 30px; } - h2 { font-size: 14pt; font-weight: 600; color: #A0522D; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #3E2723; margin-bottom: 14px; } - blockquote { background: #FAF0E6; padding: 16px; border: 2px solid #CD853F; margin: 20px 0; } - ` - }; diff --git a/src/styles/templates/vintage/vintage-typewriter.ts b/src/styles/templates/vintage/vintage-typewriter.ts deleted file mode 100644 index 141a4f4..0000000 --- a/src/styles/templates/vintage/vintage-typewriter.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const vintageTypewriter: StyleOption = { - id: 'vintage-typewriter', - name: 'Vintage Typewriter', - category: 'Vintage', - description: 'Nostalgic design reminiscent of classic typewriters. Monospace aesthetics with vintage character.', - vibe: 'Nostalgic, Literary, Classic', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Special+Elite&family=Courier+Prime:wght@400;700&display=swap', - wordConfig: { - heading1: { - font: "Special Elite", size: 24, color: "2D2D2D", bold: false, align: 'left', - spacing: { before: 400, after: 240, line: 260 } - }, - heading2: { - font: "Special Elite", size: 14, color: "4A4A4A", bold: false, align: 'left', - spacing: { before: 320, after: 160, line: 260 } - }, - body: { - font: "Courier Prime", size: 10, color: "3D3D3D", align: 'left', - spacing: { before: 0, after: 180, line: 320 } - }, - accentColor: "8B4513" - }, - previewCss: ` - font-family: 'Courier Prime', monospace; - h1 { font-family: 'Special Elite', cursive; font-size: 24pt; color: #2D2D2D; margin-bottom: 28px; } - h2 { font-family: 'Special Elite', cursive; font-size: 14pt; color: #4A4A4A; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.8; color: #3D3D3D; margin-bottom: 16px; } - blockquote { border-left: 2px solid #8B4513; padding-left: 20px; margin: 24px 0; } - ` - }; diff --git a/src/styles/templates/vintage/wanted-poster.ts b/src/styles/templates/vintage/wanted-poster.ts deleted file mode 100644 index 2ba242c..0000000 --- a/src/styles/templates/vintage/wanted-poster.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { StyleOption } from '../../../types'; - -export const wantedPoster: StyleOption = { - id: 'wanted-poster', - name: 'Wanted Poster', - category: 'Vintage', - description: 'Old West saloon design. Wood-block typography with weathered western grit.', - vibe: 'Western, Rugged, Vintage', - googleFontsImport: 'https://fonts.googleapis.com/css2?family=Sancreek&family=Holtwood+One+SC&display=swap', - wordConfig: { - heading1: { - font: "Sancreek", size: 36, color: "3E2723", bold: false, align: 'center', - spacing: { before: 440, after: 260, line: 240 } - }, - heading2: { - font: "Holtwood One SC", size: 14, color: "5D4037", bold: false, align: 'center', - spacing: { before: 320, after: 160, line: 240 } - }, - body: { - font: "Holtwood One SC", size: 10, color: "4E342E", align: 'left', - spacing: { before: 0, after: 160, line: 280 } - }, - accentColor: "3E2723" - }, - previewCss: ` - font-family: 'Holtwood One SC', serif; - background: #D7CCC8; - h1 { font-family: 'Sancreek', cursive; font-size: 36pt; color: #3E2723; text-align: center; margin-bottom: 28px; } - h2 { font-size: 14pt; color: #5D4037; text-align: center; margin-top: 32px; margin-bottom: 16px; } - p { font-size: 10pt; line-height: 1.6; color: #4E342E; margin-bottom: 14px; } - blockquote { border: 4px solid #3E2723; padding: 20px; margin: 24px 0; text-align: center; font-size: 12pt; } - ` - }; diff --git a/surgery_templates.cjs b/surgery_templates.cjs deleted file mode 100644 index 0acc3bf..0000000 --- a/surgery_templates.cjs +++ /dev/null @@ -1,49 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // 1. Fix double quotes artifact from previous failed regex - if (content.includes('""border')) { - content = content.replace(/""border/g, '"border'); - changed = true; - } - - // 2. Fix the swallowed element braces for common elements - // We look for a border property followed by a new key without a closing/opening sequence - // e.g. "borderBottom": { ... }, "h3": { - // needs a closing brace: "borderBottom": { ... } }, "h3": { - - // This regex matches a border property at the end of an element. - // It tries to insert a closing brace if it's missing. - const keys = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'blockquote', 'code', 'pre', 'ul', 'ol', 'table', 'hr', 'img', 'mark', 'footnote', 'page']; - keys.forEach(key => { - // If we see a border property followed by a comma and then a key, - // it means the element itself was never closed. - const brokenSequenceRegex = new RegExp(`("border(?:Top|Bottom|Left|Right)":\\s*{[^}]*}\\s*),\\s*"(${key})":`, 'g'); - if (brokenSequenceRegex.test(content)) { - content = content.replace(brokenSequenceRegex, '$1\n },\n "$2":'); - changed = true; - } - }); - - if (changed) { - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Surgery Performed: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished template surgery.'); diff --git a/surgery_templates_final.cjs b/surgery_templates_final.cjs deleted file mode 100644 index 5ca9f49..0000000 --- a/surgery_templates_final.cjs +++ /dev/null @@ -1,42 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // Comprehensive list of all possible keys in the templates - const keys = [ - 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'blockquote', 'code', 'pre', - 'ul', 'ol', 'li', 'strong', 'em', 'a', 'table', 'th', 'td', 'hr', 'img', - 'del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef', 'page' - ]; - - keys.forEach(key => { - // If we see a border property followed by a comma and then a key, - // it means the element itself was never closed. - const brokenSequenceRegex = new RegExp(`("border(?:Top|Bottom|Left|Right)":\\s*{[^}]*}\\s*),\\s*"(${key})":`, 'g'); - if (brokenSequenceRegex.test(content)) { - content = content.replace(brokenSequenceRegex, '$1\\n },\\n "$2":'); - changed = true; - } - }); - - if (changed) { - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Final Surgery: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished final template surgery.'); diff --git a/surgery_templates_final_v2.cjs b/surgery_templates_final_v2.cjs deleted file mode 100644 index 0a5666a..0000000 --- a/surgery_templates_final_v2.cjs +++ /dev/null @@ -1,47 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // Fix the literal \n characters from previous run - if (content.includes('\\n')) { - content = content.split('\\n').join('\n'); - changed = true; - } - - // Comprehensive list of all possible keys - const keys = [ - 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'blockquote', 'code', 'pre', - 'ul', 'ol', 'li', 'strong', 'em', 'a', 'table', 'th', 'td', 'hr', 'img', - 'del', 'sup', 'sub', 'mark', 'footnote', 'footnoteRef', 'page' - ]; - - keys.forEach(key => { - const brokenSequenceRegex = new RegExp(`("border(?:Top|Bottom|Left|Right)":\\s*{[^}]*}\\s*),\\s*"(${key})":`, 'g'); - if (brokenSequenceRegex.test(content)) { - // Use actual newline characters here - content = content.replace(brokenSequenceRegex, `$1\n },\n "$2":`); - changed = true; - } - }); - - if (changed) { - fs.writeFileSync(fullPath, content, { encoding: 'utf8' }); - console.log(`Final Corrective Surgery: ${fullPath}`); - } - } - }); -} - -walk(rootDir); -console.log('Finished final corrective surgery.'); diff --git a/validate_json.ps1 b/validate_json.ps1 deleted file mode 100644 index f21a845..0000000 --- a/validate_json.ps1 +++ /dev/null @@ -1,13 +0,0 @@ -$templatesDir = "d:\gdfhbfgdbnbdfbdf\typogenie\src-tauri\templates" -$files = Get-ChildItem -Path $templatesDir -Recurse -Filter *.json - -foreach ($file in $files) { - try { - $content = Get-Content -Path $file.FullName -Raw - $json = $content | ConvertFrom-Json - Write-Host "VALID: $($file.Name)" -ForegroundColor Green - } catch { - Write-Host "INVALID: $($file.Name)" -ForegroundColor Red - Write-Host "Error: $($_.Exception.Message)" - } -} diff --git a/validate_templates.cjs b/validate_templates.cjs deleted file mode 100644 index b03d8fc..0000000 --- a/validate_templates.cjs +++ /dev/null @@ -1,31 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const rootDir = 'd:\\gdfhbfgdbnbdfbdf\\typogenie\\src-tauri\\templates'; -let errorCount = 0; -let totalCount = 0; - -function walk(dir) { - const files = fs.readdirSync(dir, { withFileTypes: true }); - files.forEach(dirent => { - const fullPath = path.join(dir, dirent.name); - if (dirent.isDirectory()) { - walk(fullPath); - } else if (dirent.name.endsWith('.json')) { - totalCount++; - const content = fs.readFileSync(fullPath, 'utf8'); - try { - JSON.parse(content); - } catch (e) { - console.error(`Invalid JSON in: ${fullPath}\nError: ${e.message}`); - errorCount++; - } - } - }); -} - -walk(rootDir); -console.log(`\nValidation complete.`); -console.log(`Total Templates: ${totalCount}`); -console.log(`Errors Found: ${errorCount}`); -if (errorCount > 0) process.exit(1);