// UnoCSS Configuration // Generated by cargo rustelo v0.1.0 - Framework-managed file // Template: content-website | Generation: 2025-10-28T18:46:17.145459+00:00 // // This file provides the default Rustelo framework CSS configuration. // To customize colors, fonts, or other design tokens, create a local override // by copying specific sections to a new file: unocss.local.ts // // The framework will automatically merge local configurations with this base. import { defineConfig, presetUno, presetTypography, presetWebFonts, presetIcons } from 'unocss'; export default defineConfig({ // Framework-provided presets presets: [ presetUno(), presetTypography({ cssExtend: { 'h1, h2, h3, h4, h5, h6': { 'font-weight': '600', 'line-height': '1.2', }, 'code': { 'background-color': '#f1f5f9', 'padding': '0.125rem 0.25rem', 'border-radius': '0.25rem', 'font-size': '0.875em', }, 'pre': { 'background-color': '#1e293b !important', 'padding': '1rem', 'border-radius': '0.5rem', 'overflow-x': 'auto', }, }, }), presetWebFonts({ fonts: { sans: 'Inter:400,500,600,700', mono: 'JetBrains Mono:400,500', }, }), presetIcons({ scale: 1.2, warn: true, }), ], // Rustelo framework theme theme: { colors: { // Primary brand colors primary: { 50: '#eff6ff', 100: '#dbeafe', 200: '#bfdbfe', 300: '#93c5fd', 400: '#60a5fa', 500: '#3b82f6', // Primary 600: '#2563eb', 700: '#1d4ed8', 800: '#1e40af', 900: '#1e3a8a', 950: '#172554', }, // Secondary/accent colors secondary: { 50: '#f8fafc', 100: '#f1f5f9', 200: '#e2e8f0', 300: '#cbd5e1', 400: '#94a3b8', 500: '#64748b', // Secondary 600: '#475569', 700: '#334155', 800: '#1e293b', 900: '#0f172a', 950: '#020617', }, // Success colors success: { 50: '#f0fdf4', 500: '#22c55e', // Success 600: '#16a34a', }, // Warning colors warning: { 50: '#fffbeb', 500: '#f59e0b', // Warning 600: '#d97706', }, // Error colors error: { 50: '#fef2f2', 500: '#ef4444', // Error 600: '#dc2626', }, // Framework rust-inspired colors rust: { 50: '#fef7f0', 100: '#fdede0', 200: '#fbd9c0', 300: '#f8c295', 400: '#f4a261', // Rust orange 500: '#e76f51', // Rust red 600: '#d55e47', 700: '#b24936', 800: '#8f3a2d', 900: '#73302a', }, }, // Typography scale fontSize: { 'xs': ['0.75rem', { lineHeight: '1rem' }], 'sm': ['0.875rem', { lineHeight: '1.25rem' }], 'base': ['1rem', { lineHeight: '1.5rem' }], 'lg': ['1.125rem', { lineHeight: '1.75rem' }], 'xl': ['1.25rem', { lineHeight: '1.75rem' }], '2xl': ['1.5rem', { lineHeight: '2rem' }], '3xl': ['1.875rem', { lineHeight: '2.25rem' }], '4xl': ['2.25rem', { lineHeight: '2.5rem' }], '5xl': ['3rem', { lineHeight: '1' }], '6xl': ['3.75rem', { lineHeight: '1' }], }, // Spacing scale (extended) spacing: { '18': '4.5rem', '88': '22rem', '128': '32rem', }, // Animation and transitions animation: { 'fade-in': 'fadeIn 0.5s ease-in-out', 'slide-up': 'slideUp 0.3s ease-out', 'bounce-soft': 'bounceSoft 0.6s ease-in-out', 'spin-slow': 'spin 2s linear infinite', }, }, // Custom keyframes keyframes: { fadeIn: { '0%': { opacity: '0' }, '100%': { opacity: '1' }, }, slideUp: { '0%': { transform: 'translateY(10px)', opacity: '0' }, '100%': { transform: 'translateY(0)', opacity: '1' }, }, bounceSoft: { '0%, 100%': { transform: 'translateY(0)' }, '50%': { transform: 'translateY(-5px)' }, }, }, // Framework-provided shortcuts shortcuts: { // Layout shortcuts 'flex-center': 'flex items-center justify-center', 'flex-between': 'flex items-center justify-between', 'flex-col-center': 'flex flex-col items-center justify-center', // Button shortcuts 'btn-base': 'inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', 'btn-primary': 'btn-base bg-primary-600 text-white hover:bg-primary-700 focus-visible:ring-primary-500', 'btn-secondary': 'btn-base bg-secondary-100 text-secondary-900 hover:bg-secondary-200 focus-visible:ring-secondary-500', 'btn-outline': 'btn-base border border-primary-300 bg-transparent text-primary-700 hover:bg-primary-50 focus-visible:ring-primary-500', 'btn-ghost': 'btn-base text-secondary-600 hover:bg-secondary-100 focus-visible:ring-secondary-500', // Card shortcuts 'card': 'rounded-lg border border-secondary-200 bg-white p-6 shadow-sm', 'card-hover': 'card hover:shadow-md transition-shadow duration-200', // Input shortcuts 'input-base': 'block w-full rounded-md border-secondary-300 bg-white px-3 py-2 text-sm placeholder-secondary-400 shadow-sm focus:border-primary-500 focus:outline-none focus:ring-1 focus:ring-primary-500', // Text shortcuts 'text-muted': 'text-secondary-600', 'text-subtle': 'text-secondary-500', 'heading-1': 'text-4xl font-bold text-secondary-900 tracking-tight', 'heading-2': 'text-3xl font-semibold text-secondary-800 tracking-tight', 'heading-3': 'text-2xl font-semibold text-secondary-800', // Icon shortcuts 'icon-sm': 'w-4 h-4', 'icon-md': 'w-5 h-5', 'icon-lg': 'w-6 h-6', }, // Content scanning for CSS generation content: { filesystem: [ './src/**/*.{html,js,ts,jsx,tsx,rs}', './assets/**/*.{html,js,css}', './templates/**/*.{html,hbs}', './content/**/*.{md,mdx}', ], }, // Framework-provided safelist (always include these classes) safelist: [ // Common utility classes 'container', 'mx-auto', 'px-4', 'py-2', 'py-4', 'py-8', // State classes 'hover:bg-primary-700', 'focus:ring-primary-500', 'disabled:opacity-50', // Animation classes 'animate-fade-in', 'animate-slide-up', 'animate-spin-slow', 'transition-all', 'duration-200', 'duration-300', // Icon classes 'i-heroicons-outline:home', 'i-heroicons-outline:user', 'i-heroicons-outline:cog', ], // Development mode dev: process.env.NODE_ENV === 'development', }); /* * CUSTOMIZATION GUIDE * =================== * * To customize this configuration without losing changes during framework updates: * * 1. Create 'unocss.local.ts' in your project root * 2. Export a partial configuration that will be merged: * * ```typescript * // unocss.local.ts * import { defineConfig } from 'unocss'; * * export default defineConfig({ * theme: { * colors: { * // Override primary color * primary: { * 500: '#your-custom-color', * }, * // Add custom colors * brand: { * 500: '#your-brand-color', * }, * }, * }, * shortcuts: { * // Add custom shortcuts * 'btn-brand': 'btn-base bg-brand-500 text-white hover:bg-brand-600', * }, * }); * ``` * * 3. The framework will automatically detect and merge your local config. * * This approach ensures your customizations persist through framework updates! */