UNPKG

fireship-ai-blog

Version:

A beautiful, SEO-friendly blog package for Next.js 13+ with Fireship.ai API integration

332 lines (278 loc) 6.88 kB
/* Fireship Blog Styles */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); /* CSS Custom Properties for Theme */ :root { --fireship-primary: #3b82f6; --fireship-secondary: #64748b; --fireship-font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; --fireship-font-size: 16px; --fireship-border-radius: 0.75rem; --fireship-glass-effect: 1; --fireship-sidebar-display: block; } /* Font Family Classes */ .font-inter { font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; } .font-sf-pro { font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, sans-serif; } .font-system { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; } /* Fireship Blog Container */ .fireship-blog-container { font-family: var(--fireship-font-family); font-size: var(--fireship-font-size); line-height: 1.6; } /* Glass Effect */ .fireship-blog-card { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.2); box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); } .dark .fireship-blog-card { background: rgba(0, 0, 0, 0.1); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); } /* Glassmorphism variants */ .glass-light { background: rgba(255, 255, 255, 0.25); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.18); } .glass-dark { background: rgba(0, 0, 0, 0.25); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.1); } /* Sidebar */ .fireship-blog-sidebar { display: var(--fireship-sidebar-display); } /* Typography */ .fireship-blog-text { font-family: var(--fireship-font-family); font-size: var(--fireship-font-size); } .fireship-blog-heading { font-family: var(--fireship-font-family); font-weight: 700; line-height: 1.2; } /* Buttons */ .fireship-blog-button { font-family: var(--fireship-font-family); border-radius: var(--fireship-border-radius); transition: all 0.2s ease-in-out; } .fireship-blog-button:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { transform: translateX(-100%); } to { transform: translateX(0); } } @keyframes scaleIn { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } } .animate-fade-in { animation: fadeIn 0.6s ease-out; } .animate-slide-in { animation: slideIn 0.4s ease-out; } .animate-scale-in { animation: scaleIn 0.3s ease-out; } /* Hover Effects */ .hover-lift { transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out; } .hover-lift:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); } /* Gradient Backgrounds */ .gradient-primary { background: linear-gradient(135deg, var(--fireship-primary) 0%, rgba(59, 130, 246, 0.8) 100%); } .gradient-secondary { background: linear-gradient(135deg, var(--fireship-secondary) 0%, rgba(100, 116, 139, 0.8) 100%); } .gradient-glass { background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); } .dark .gradient-glass { background: linear-gradient(135deg, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0.05) 100%); } /* Text Gradients */ .text-gradient-primary { background: linear-gradient(135deg, var(--fireship-primary) 0%, #8b5cf6 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Loading Animations */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .animate-spin { animation: spin 1s linear infinite; } /* Line Clamp Utilities */ .line-clamp-1 { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; } .line-clamp-2 { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .line-clamp-3 { overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; } /* Scrollbar Styling */ .fireship-scrollbar::-webkit-scrollbar { width: 6px; } .fireship-scrollbar::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.1); border-radius: 3px; } .fireship-scrollbar::-webkit-scrollbar-thumb { background: var(--fireship-primary); border-radius: 3px; } .fireship-scrollbar::-webkit-scrollbar-thumb:hover { background: rgba(59, 130, 246, 0.8); } /* Focus States */ .focus-ring { transition: box-shadow 0.2s ease-in-out; } .focus-ring:focus { outline: none; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.3); } /* Code Syntax Highlighting */ .fireship-blog pre { background: #1e293b; border-radius: var(--fireship-border-radius); padding: 1rem; overflow-x: auto; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; } .fireship-blog code { font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 0.875em; } .fireship-blog pre code { background: none; padding: 0; border-radius: 0; color: #e2e8f0; } /* Responsive Design */ @media (max-width: 768px) { .fireship-blog-container { padding: 1rem; } .fireship-blog-sidebar { display: none; } .fireship-blog-card { margin-bottom: 1rem; } } @media (max-width: 640px) { :root { --fireship-font-size: 14px; } .fireship-blog-heading { font-size: 1.5rem; } } /* Print Styles */ @media print { .fireship-blog-sidebar, .fireship-blog-button, .hover-lift { display: none !important; } .fireship-blog-card { background: white !important; box-shadow: none !important; border: 1px solid #ccc !important; } } /* High Contrast Mode */ @media (prefers-contrast: high) { .fireship-blog-card { border: 2px solid currentColor; background: transparent; } } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .hover-lift:hover { transform: none; } }