suna/backend/agent/tools/presentation_styles_config.py

503 lines
25 KiB
Python
Raw Normal View History

2025-08-21 17:42:54 +08:00
"""
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())