suna/backend/agent/tools/presentation_styles_config.py

503 lines
25 KiB
Python

"""
Presentation Styles Configuration
Contains all visual style definitions for the presentation tool.
Each style includes colors, fonts, and characteristics.
"""
from typing import Dict, Any
PRESENTATION_STYLES: Dict[str, Dict[str, Any]] = {
"default": {
"name": "Default",
"description": "Clean Inter black/white theme - perfect starting point",
"primary_color": "#000000",
"accent_color": "#666666",
"background": "#FFFFFF",
"text_color": "#000000",
"font_family": "'Inter', '-apple-system', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap",
"font": "Inter (clean sans-serif)",
"characteristics": ["Clean black/white", "Modern Inter font", "Minimal design", "Professional default", "Universal appeal"]
},
"velvet": {
"name": "Velvet",
"description": "Luxurious dark theme with rich purples and gold accents",
"primary_color": "#6B46C1",
"accent_color": "#F59E0B",
"background": "#1F2937",
"text_color": "#F9FAFB",
"font_family": "'Playfair Display', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700&display=swap",
"font": "Playfair Display (elegant serif)",
"characteristics": ["Dark elegant background", "Purple and gold palette", "Luxury feel", "High contrast", "Elegant serif typography"]
},
"glacier": {
"name": "Glacier",
"description": "Cool and clean with icy blues and crisp whites",
"primary_color": "#0EA5E9",
"accent_color": "#06B6D4",
"background": "#F0F9FF",
"text_color": "#0F172A",
"font_family": "'Inter', 'Helvetica Neue', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap",
"font": "Inter (modern sans-serif)",
"characteristics": ["Cool blue tones", "Ice-inspired palette", "Clean and fresh", "Professional clarity", "Modern sans-serif"]
},
"ember": {
"name": "Ember",
"description": "Warm and energetic with fiery oranges and deep reds",
"primary_color": "#EA580C",
"accent_color": "#DC2626",
"background": "#FFF7ED",
"text_color": "#1C1917",
"font_family": "'Oswald', 'Arial Black', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Oswald:wght@300;400;500;600;700&display=swap",
"font": "Oswald (bold display font)",
"characteristics": ["Warm orange-red palette", "Energetic feel", "Bold and confident", "High impact", "Strong display typography"]
},
"sage": {
"name": "Sage",
"description": "Natural and calming with earth greens and soft browns",
"primary_color": "#059669",
"accent_color": "#92400E",
"background": "#F0FDF4",
"text_color": "#14532D",
"font_family": "'Lora', 'Times New Roman', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600;700&display=swap",
"font": "Lora (readable serif)",
"characteristics": ["Nature-inspired greens", "Earthy and organic", "Calming presence", "Sustainability themes", "Readable serif font"]
},
"obsidian": {
"name": "Obsidian",
"description": "Sleek and modern with deep blacks and electric blue accents",
"primary_color": "#1E40AF",
"accent_color": "#3B82F6",
"background": "#111827",
"text_color": "#F9FAFB",
"font_family": "'JetBrains Mono', 'Courier New', monospace",
"font_import": "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&display=swap",
"font": "JetBrains Mono (tech monospace)",
"characteristics": ["Modern dark theme", "Tech-inspired", "High contrast", "Professional edge", "Monospace coding font"]
},
"coral": {
"name": "Coral",
"description": "Vibrant and tropical with coral pinks and ocean blues",
"primary_color": "#EC4899",
"accent_color": "#0891B2",
"background": "#FDF2F8",
"text_color": "#1F2937",
"font_family": "'Poppins', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap",
"font": "Poppins (friendly rounded)",
"characteristics": ["Tropical color palette", "Vibrant and lively", "Creative energy", "Playful professional", "Friendly rounded font"]
},
"platinum": {
"name": "Platinum",
"description": "Sophisticated monochrome with silver accents and clean typography",
"primary_color": "#6B7280",
"accent_color": "#9CA3AF",
"background": "#FFFFFF",
"text_color": "#111827",
"font_family": "'Source Sans Pro', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;600;700&display=swap",
"font": "Source Sans Pro (professional)",
"characteristics": ["Sophisticated grays", "Minimalist elegance", "Timeless appeal", "Premium feel", "Professional typography"]
},
"aurora": {
"name": "Aurora",
"description": "Magical gradients with northern lights inspired colors",
"primary_color": "#8B5CF6",
"accent_color": "#10B981",
"background": "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
"text_color": "#FFFFFF",
"font_family": "'Montserrat', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap",
"font": "Montserrat (modern geometric)",
"characteristics": ["Gradient backgrounds", "Purple-green palette", "Mystical feel", "Creative inspiration", "Geometric sans-serif"]
},
"midnight": {
"name": "Midnight",
"description": "Professional dark mode with navy blues and crisp whites",
"primary_color": "#1E3A8A",
"accent_color": "#3B82F6",
"background": "#0F172A",
"text_color": "#F8FAFC",
"font_family": "'Roboto Slab', 'Times', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@300;400;500;600;700&display=swap",
"font": "Roboto Slab (structured serif)",
"characteristics": ["Dark professional theme", "Navy blue focus", "Executive feel", "Easy on eyes", "Structured slab serif"]
},
"citrus": {
"name": "Citrus",
"description": "Fresh and energetic with bright yellows and lime greens",
"primary_color": "#EAB308",
"accent_color": "#65A30D",
"background": "#FFFBEB",
"text_color": "#1C1917",
"font_family": "'Quicksand', 'Verdana', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500;600;700&display=swap",
"font": "Quicksand (light and airy)",
"characteristics": ["Bright and energetic", "Yellow-green palette", "Optimistic feel", "Innovation themes", "Light rounded font"]
},
"silicon": {
"name": "Silicon",
"description": "Apple-inspired ultra-clean minimalism with perfect spacing",
"primary_color": "#1D1D1F",
"accent_color": "#007AFF",
"background": "#FAFAFA",
"text_color": "#1D1D1F",
"font_family": "'-apple-system', 'BlinkMacSystemFont', 'SF Pro Display', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap",
"font": "SF Pro Display (Apple system)",
"characteristics": ["Ultra-clean design", "Apple aesthetics", "Perfect typography", "Minimal distractions", "Premium feel"]
},
"vercel": {
"name": "Vercel",
"description": "Modern developer-focused design with sharp contrasts",
"primary_color": "#000000",
"accent_color": "#0070F3",
"background": "#FFFFFF",
"text_color": "#000000",
"font_family": "'Inter', '-apple-system', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap",
"font": "Inter (modern web)",
"characteristics": ["Developer-focused", "Sharp black/white", "Modern spacing", "Tech industry", "Clean geometry"]
},
"legal": {
"name": "Legal",
"description": "Sophisticated law firm style with traditional authority",
"primary_color": "#1A202C",
"accent_color": "#B8860B",
"background": "#FFFFFF",
"text_color": "#2D3748",
"font_family": "'Crimson Text', 'Times New Roman', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Crimson+Text:wght@400;600;700&display=swap",
"font": "Crimson Text (traditional serif)",
"characteristics": ["Professional authority", "Traditional colors", "Trustworthy feel", "Legal industry", "Serif elegance"]
},
"investment": {
"name": "Investment",
"description": "Premium investment bank style with financial gravitas",
"primary_color": "#1A365D",
"accent_color": "#C53030",
"background": "#F7FAFC",
"text_color": "#1A202C",
"font_family": "'IBM Plex Sans', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&display=swap",
"font": "IBM Plex Sans (corporate)",
"characteristics": ["Financial gravitas", "Conservative colors", "Data-focused", "Banking industry", "Corporate trust"]
},
"luxury": {
"name": "Luxury",
"description": "High-end luxury brand aesthetics with premium materials",
"primary_color": "#2C1810",
"accent_color": "#DAA520",
"background": "#FDF8F3",
"text_color": "#2C1810",
"font_family": "'Libre Baskerville', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&display=swap",
"font": "Libre Baskerville (luxury serif)",
"characteristics": ["Luxury aesthetics", "Premium materials", "Rich textures", "Exclusive feel", "High-end branding"]
},
"minimal": {
"name": "Minimal",
"description": "Ultra-minimalist design with perfect negative space",
"primary_color": "#000000",
"accent_color": "#666666",
"background": "#FFFFFF",
"text_color": "#000000",
"font_family": "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&display=swap",
"font": "Helvetica Neue (minimal)",
"characteristics": ["Ultra-minimal", "Perfect spacing", "No distractions", "Pure content focus", "Timeless design"]
},
"medical": {
"name": "Medical",
"description": "Healthcare-focused design with trust and clarity",
"primary_color": "#2B6CB0",
"accent_color": "#38A169",
"background": "#F7FAFC",
"text_color": "#2D3748",
"font_family": "'Open Sans', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap",
"font": "Open Sans (healthcare)",
"characteristics": ["Healthcare trust", "Clear communication", "Calming colors", "Medical industry", "Accessible design"]
},
"startup": {
"name": "Startup",
"description": "Y Combinator-inspired startup energy and disruption",
"primary_color": "#FF6600",
"accent_color": "#000000",
"background": "#FFFFFF",
"text_color": "#000000",
"font_family": "'SF Pro Display', 'Helvetica Neue', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap",
"font": "SF Pro Display (startup)",
"characteristics": ["Startup energy", "Disruptive feel", "Bold statements", "Innovation focus", "Silicon Valley"]
},
"academic": {
"name": "Academic",
"description": "University research style with scholarly authority",
"primary_color": "#2C5282",
"accent_color": "#B83280",
"background": "#F7FAFC",
"text_color": "#2D3748",
"font_family": "'Merriweather', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Merriweather:wght@300;400;700&display=swap",
"font": "Merriweather (scholarly)",
"characteristics": ["Scholarly authority", "Research-focused", "Academic tradition", "Knowledge-based", "Educational clarity"]
},
"vintage": {
"name": "Vintage",
"description": "Retro magazine aesthetic with nostalgic appeal",
"primary_color": "#8B4513",
"accent_color": "#FF8C00",
"background": "#F5DEB3",
"text_color": "#2F4F4F",
"font_family": "'Bebas Neue', 'Arial Black', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Bebas+Neue&display=swap",
"font": "Bebas Neue (retro display)",
"characteristics": ["Retro aesthetic", "Magazine style", "Nostalgic colors", "Bold typography", "Vintage charm"]
},
"pencil": {
"name": "Pencil",
"description": "Hand-drawn creative style with artistic flair",
"primary_color": "#2F2F2F",
"accent_color": "#696969",
"background": "#FEFEFE",
"text_color": "#2F2F2F",
"font_family": "'Caveat', 'Comic Sans MS', cursive",
"font_import": "https://fonts.googleapis.com/css2?family=Caveat:wght@400;600;700&display=swap",
"font": "Caveat (handwritten)",
"characteristics": ["Hand-drawn feel", "Creative energy", "Artistic approach", "Casual professional", "Sketch aesthetic"]
},
"frost": {
"name": "Frost",
"description": "Clean business data style with crisp presentation",
"primary_color": "#1E3A8A",
"accent_color": "#3B82F6",
"background": "#F8FAFC",
"text_color": "#1E293B",
"font_family": "'Work Sans', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Work+Sans:wght@300;400;500;600&display=swap",
"font": "Work Sans (business)",
"characteristics": ["Clean data focus", "Business clarity", "Professional blue", "Chart-friendly", "Corporate clean"]
},
"sky": {
"name": "Sky",
"description": "Soft blue gallery style with gentle aesthetics",
"primary_color": "#0369A1",
"accent_color": "#0EA5E9",
"background": "#E0F2FE",
"text_color": "#0C4A6E",
"font_family": "'Nunito Sans', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@300;400;600;700&display=swap",
"font": "Nunito Sans (friendly)",
"characteristics": ["Soft blue tones", "Gallery style", "Gentle aesthetics", "Calming presence", "Light and airy"]
},
"clean": {
"name": "Clean",
"description": "Ultra-clean minimalist with perfect simplicity",
"primary_color": "#1F2937",
"accent_color": "#6B7280",
"background": "#F9FAFB",
"text_color": "#111827",
"font_family": "'DM Sans', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap",
"font": "DM Sans (clean)",
"characteristics": ["Ultra-clean", "Perfect simplicity", "Minimal elements", "Pure design", "Content focus"]
},
"forest": {
"name": "Forest",
"description": "Rich green nature theme with organic appeal",
"primary_color": "#065F46",
"accent_color": "#10B981",
"background": "#064E3B",
"text_color": "#ECFDF5",
"font_family": "'Fira Sans', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Fira+Sans:wght@300;400;500;600&display=swap",
"font": "Fira Sans (natural)",
"characteristics": ["Nature-inspired", "Rich greens", "Organic feel", "Environmental themes", "Natural harmony"]
},
"electric": {
"name": "Electric",
"description": "Vibrant colorful energy with dynamic gradients",
"primary_color": "#DB2777",
"accent_color": "#06B6D4",
"background": "linear-gradient(135deg, #1E1B4B 0%, #7C3AED 50%, #DB2777 100%)",
"text_color": "#F8FAFC",
"font_family": "'Space Grotesk', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap",
"font": "Space Grotesk (dynamic)",
"characteristics": ["Vibrant energy", "Dynamic gradients", "Electric colors", "High impact", "Creative bold"]
},
"bronze": {
"name": "Bronze",
"description": "Warm brown metallic with rich earth tones",
"primary_color": "#92400E",
"accent_color": "#D97706",
"background": "#78350F",
"text_color": "#FEF3C7",
"font_family": "'Spectral', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Spectral:wght@300;400;600;700&display=swap",
"font": "Spectral (warm serif)",
"characteristics": ["Warm metallics", "Earth tones", "Rich browns", "Natural warmth", "Sophisticated depth"]
},
"slate": {
"name": "Slate",
"description": "Professional dark theme with modern sophistication",
"primary_color": "#FFFFFF",
"accent_color": "#D1D5DB",
"background": "#1F2937",
"text_color": "#F9FAFB",
"font_family": "'Inter', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap",
"font": "Inter (professional)",
"characteristics": ["Professional dark", "Modern sophistication", "Clean contrast", "Executive style", "Contemporary edge"]
},
"dune": {
"name": "Dune",
"description": "Charts and data focus with analytical clarity",
"primary_color": "#0F766E",
"accent_color": "#F59E0B",
"background": "#FFFBEB",
"text_color": "#0F172A",
"font_family": "'IBM Plex Sans', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;606&display=swap",
"font": "IBM Plex Sans (data)",
"characteristics": ["Data focused", "Analytical clarity", "Chart optimization", "Information design", "Clear metrics"]
},
"crimson": {
"name": "Crimson",
"description": "Bold business presentation with strong impact",
"primary_color": "#7C2D12",
"accent_color": "#DC2626",
"background": "#FEF2F2",
"text_color": "#450A0A",
"font_family": "'Roboto', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap",
"font": "Roboto (bold business)",
"characteristics": ["Bold impact", "Strong presence", "Business authority", "Confident red", "Executive power"]
},
"canvas": {
"name": "Canvas",
"description": "Natural business style with organic professionalism",
"primary_color": "#374151",
"accent_color": "#F59E0B",
"background": "#F9FAFB",
"text_color": "#1F2937",
"font_family": "'Source Sans Pro', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;600&display=swap",
"font": "Source Sans Pro (natural)",
"characteristics": ["Natural business", "Organic professional", "Warm neutrals", "Comfortable style", "Approachable corporate"]
},
"paper": {
"name": "Paper",
"description": "Magazine editorial style with literary sophistication",
"primary_color": "#6B7280",
"accent_color": "#3B82F6",
"background": "#F3F4F6",
"text_color": "#1F2937",
"font_family": "'Playfair Display', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;700&display=swap",
"font": "Playfair Display (editorial)",
"characteristics": ["Editorial style", "Literary sophistication", "Magazine quality", "Reading focus", "Publishing aesthetic"]
},
"golden": {
"name": "Golden",
"description": "Warm gallery aesthetic with luxurious appeal",
"primary_color": "#C2410C",
"accent_color": "#FBBF24",
"background": "#FEF3C7",
"text_color": "#92400E",
"font_family": "'Outfit', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600&display=swap",
"font": "Outfit (warm modern)",
"characteristics": ["Warm luxury", "Gallery aesthetic", "Golden tones", "Rich warmth", "Premium appeal"]
},
"azure": {
"name": "Azure",
"description": "Professional blue charts with analytical precision",
"primary_color": "#1E40AF",
"accent_color": "#60A5FA",
"background": "#EFF6FF",
"text_color": "#1E3A8A",
"font_family": "'Public Sans', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Public+Sans:wght@300;400;500;600&display=swap",
"font": "Public Sans (analytical)",
"characteristics": ["Professional blue", "Chart optimization", "Analytical precision", "Data visualization", "Corporate analytics"]
},
"timber": {
"name": "Timber",
"description": "Rich wood magazine style with natural luxury",
"primary_color": "#B45309",
"accent_color": "#F59E0B",
"background": "#451A03",
"text_color": "#FEF3C7",
"font_family": "'Crimson Pro', 'Georgia', serif",
"font_import": "https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@300;400;600&display=swap",
"font": "Crimson Pro (rich serif)",
"characteristics": ["Rich wood tones", "Natural luxury", "Magazine sophistication", "Warm elegance", "Organic premium"]
},
"orchid": {
"name": "Orchid",
"description": "Soft purple elegance with delicate sophistication",
"primary_color": "#7C3AED",
"accent_color": "#A78BFA",
"background": "#F3E8FF",
"text_color": "#581C87",
"font_family": "'Comfortaa', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Comfortaa:wght@300;400;500;700&display=swap",
"font": "Comfortaa (soft elegant)",
"characteristics": ["Soft elegance", "Purple sophistication", "Delicate beauty", "Gentle luxury", "Refined aesthetic"]
},
"ocean": {
"name": "Ocean",
"description": "Deep blue minimalist with technical precision",
"primary_color": "#06B6D4",
"accent_color": "#0891B2",
"background": "#164E63",
"text_color": "#CFFAFE",
"font_family": "'JetBrains Mono', 'Courier New', monospace",
"font_import": "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500&display=swap",
"font": "JetBrains Mono (tech precise)",
"characteristics": ["Deep blue theme", "Technical precision", "Ocean depths", "Developer focus", "Code-friendly"]
},
"honey": {
"name": "Honey",
"description": "Warm amber tones with natural sweetness",
"primary_color": "#D97706",
"accent_color": "#F59E0B",
"background": "#FEF3C7",
"text_color": "#92400E",
"font_family": "'Epilogue', 'Arial', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Epilogue:wght@300;400;500;600&display=swap",
"font": "Epilogue (warm modern)",
"characteristics": ["Warm amber", "Natural sweetness", "Golden honey", "Organic warmth", "Gentle luxury"]
},
"crystal": {
"name": "Crystal",
"description": "Pure clean charts with crystal clarity",
"primary_color": "#334155",
"accent_color": "#64748B",
"background": "#FFFFFF",
"text_color": "#0F172A",
"font_family": "'Inter', 'Helvetica', sans-serif",
"font_import": "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap",
"font": "Inter (crystal clear)",
"characteristics": ["Crystal clarity", "Pure clean design", "Chart perfection", "Data precision", "Transparent elegance"]
}
}
def get_style_config(style_name: str) -> Dict[str, Any]:
"""Get style configuration for a given style name"""
return PRESENTATION_STYLES.get(style_name, PRESENTATION_STYLES["default"])
def get_all_styles() -> Dict[str, Dict[str, Any]]:
"""Get all available styles"""
return PRESENTATION_STYLES
def get_style_names() -> list[str]:
"""Get list of all available style names"""
return list(PRESENTATION_STYLES.keys())