diff --git a/.vscode/settings.json b/.vscode/settings.json index 6f3a2913..f673a71b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "liveServer.settings.port": 5501 + "liveServer.settings.port": 5502 } \ No newline at end of file diff --git a/components.css b/components.css index 2e4177e2..7d773fe5 100644 --- a/components.css +++ b/components.css @@ -1,203 +1,315 @@ -/* Component Documentation System Styles */ +/* ============================================ + 🎨 Enhanced Component Documentation System + Modern, Attractive & Performance-Optimized + ============================================ */ -/* 🎨 CSS Variables for theming */ +/* 🎨 CSS Variables - Enhanced Color Palette */ :root { - /* Light theme colors */ - --primary: #6c63ff; - --primary-light: #8a84ff; - --primary-dark: #554fd8; - --secondary: #ff6584; - --accent: #36d1dc; - --text: #1a202c; - --text-light: #64748b; - --bg: #ffffff; - --bg-secondary: #f5f7fa; - --bg-tertiary: #e9ecef; - --border: #dee2e6; - --shadow: 0 10px 30px rgba(0, 0, 0, 0.1); - --radius: 12px; - --transition: all 0.3s ease; - --header-height: 80px; + /* Primary Colors - Vibrant Purple Gradient */ + --primary: #6366f1; + --primary-light: #818cf8; + --primary-dark: #4f46e5; + --primary-glow: rgba(99, 102, 241, 0.3); - /* 🆕 Additional theme variables for enhanced customization */ - --transition-speed: 0.3s; - --border-radius: 12px; - --spacing-unit: 1rem; - --secondary-bar-height: 55px; - --total-header-height: calc(var(--header-height) + var(--secondary-bar-height)); + /* Secondary & Accent Colors */ + --secondary: #ec4899; + --secondary-light: #f472b6; + --accent: #06b6d4; + --accent-light: #22d3ee; + --success: #10b981; + --warning: #f59e0b; + --danger: #ef4444; + + /* Text Colors */ + --text-primary: #0f172a; + --text-secondary: #475569; + --text-tertiary: #94a3b8; + --text-inverse: #ffffff; + + /* Background Colors */ + --bg-primary: #ffffff; + --bg-secondary: #f8fafc; + --bg-tertiary: #f1f5f9; + --bg-elevated: #ffffff; + + /* Border & Shadow */ + --border-color: #e2e8f0; + --border-light: #f1f5f9; + --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); + --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1); + --shadow-glow: 0 0 20px rgba(99, 102, 241, 0.15); + + /* Design System */ + --radius-sm: 0.375rem; + --radius-md: 0.5rem; + --radius-lg: 0.75rem; + --radius-xl: 1rem; + --radius-full: 9999px; + + /* Transitions */ + --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1); + --transition-bounce: 500ms cubic-bezier(0.68, -0.55, 0.265, 1.55); + + /* Layout */ + --header-height: 72px; + --spacing-xs: 0.25rem; + --spacing-sm: 0.5rem; + --spacing-md: 1rem; + --spacing-lg: 1.5rem; + --spacing-xl: 2rem; + --spacing-2xl: 3rem; } -/* 🌙 Dark Mode Variables */ +/* 🌙 Dark Theme Variables */ [data-theme="dark"] { - --primary: #8a84ff; - --primary-light: #a8a4ff; - --primary-dark: #6c63ff; - --secondary: #ff8fa3; - --accent: #4dd0e1; - --text: #e2e8f0; - --text-light: #94a3b8; - --bg: #1a1a2e; - --bg-secondary: #2c2c43; - --bg-tertiary: #3e4a6e; - --border: #404040; - --shadow: 0 10px 30px rgba(0, 0, 0, 0.3); - --nav-secondary-bg: #343450; -} - -/* 🏗️ Base Styles */ + --primary: #818cf8; + --primary-light: #a5b4fc; + --primary-dark: #6366f1; + --primary-glow: rgba(129, 140, 248, 0.4); + + --secondary: #f472b6; + --accent: #22d3ee; + + --text-primary: #f1f5f9; + --text-secondary: #cbd5e1; + --text-tertiary: #94a3b8; + + --bg-primary: #0f172a; + --bg-secondary: #1e293b; + --bg-tertiary: #334155; + --bg-elevated: #1e293b; + + --border-color: #334155; + --border-light: #475569; + --shadow-glow: 0 0 30px rgba(129, 140, 248, 0.2); +} + +/* ============================================ + 🏗️ Base Styles - Enhanced Foundation + ============================================ */ + * { margin: 0; padding: 0; box-sizing: border-box; } +*::before, +*::after { + box-sizing: border-box; +} + html { scroll-behavior: smooth; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } body { - font-family: 'Inter', 'Segoe UI', sans-serif; + font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', 'Roboto', sans-serif; line-height: 1.6; - color: var(--text); - background-color: var(--bg); - transition: var(--transition); + color: var(--text-primary); + background: var(--bg-primary); + transition: background-color var(--transition-base), color var(--transition-base); overflow-x: hidden; + position: relative; +} + +/* Animated Background Pattern */ +body::before { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: + radial-gradient(circle at 20% 50%, var(--primary-glow) 0%, transparent 50%), + radial-gradient(circle at 80% 80%, rgba(236, 72, 153, 0.1) 0%, transparent 50%); + opacity: 0.6; + z-index: -1; + pointer-events: none; } .container { width: 100%; - max-width: 1200px; + max-width: 1280px; margin: 0 auto; - padding: 0 20px; + padding: 0 var(--spacing-lg); } section { padding: 100px 0; + position: relative; } -h1, h2, h3, h4, h5 { - margin-bottom: 1rem; +/* Enhanced Typography */ +h1, h2, h3, h4, h5, h6 { + margin-bottom: var(--spacing-md); line-height: 1.2; font-weight: 700; + letter-spacing: -0.025em; } h1 { - font-size: 3.5rem; + font-size: clamp(2.5rem, 5vw, 4rem); } h2 { - font-size: 2.5rem; + font-size: clamp(2rem, 4vw, 3rem); } h3 { - font-size: 1.8rem; + font-size: clamp(1.5rem, 3vw, 2rem); } p { - margin-bottom: 1.5rem; - color: var(--text-light); + margin-bottom: var(--spacing-lg); + color: var(--text-secondary); + line-height: 1.7; } a { text-decoration: none; color: inherit; - transition: var(--transition); + transition: var(--transition-base); } +/* ============================================ + ✨ Enhanced Button System + ============================================ */ + .btn { - display: inline-block; - padding: 14px 32px; - background-color: var(--primary); - color: white; - border-radius: var(--radius); + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--spacing-sm); + padding: 0.875rem 2rem; + background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); + color: var(--text-inverse); + border-radius: var(--radius-full); font-weight: 600; + font-size: 0.9375rem; border: none; cursor: pointer; - transition: var(--transition); - text-align: center; + transition: all var(--transition-base); position: relative; overflow: hidden; - width: 150px; + box-shadow: var(--shadow-md), 0 0 0 0 var(--primary-glow); } .btn::before { content: ''; position: absolute; - top: 0; - left: -100%; - width: 100%; - height: 100%; - background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); - transition: var(--transition); + top: 50%; + left: 50%; + width: 0; + height: 0; + border-radius: 50%; + background: rgba(255, 255, 255, 0.3); + transform: translate(-50%, -50%); + transition: width var(--transition-slow), height var(--transition-slow); } .btn:hover::before { - left: 100%; + width: 300px; + height: 300px; } .btn:hover { - background-color: var(--primary-dark); - transform: translateY(-3px); - box-shadow: 0 10px 20px rgba(108, 99, 255, 0.3); + transform: translateY(-2px) scale(1.02); + box-shadow: var(--shadow-xl), 0 0 20px var(--primary-glow); +} + +.btn:active { + transform: translateY(0) scale(0.98); } .btn-secondary { - background-color: var(--secondary); + background: linear-gradient(135deg, var(--secondary) 0%, #be185d 100%); + box-shadow: var(--shadow-md), 0 0 0 0 rgba(236, 72, 153, 0.3); } .btn-secondary:hover { - background-color: #e05574; - box-shadow: 0 10px 20px rgba(255, 101, 132, 0.3); + box-shadow: var(--shadow-xl), 0 0 20px rgba(236, 72, 153, 0.4); } .btn-outline { - background-color: transparent; - border: 2px solid var(--primary); + background: transparent; color: var(--primary); + border: 2px solid var(--primary); + box-shadow: none; } .btn-outline:hover { - background-color: var(--primary); - color: white; + background: var(--primary); + color: var(--text-inverse); + border-color: var(--primary); +} + +.btn-ghost { + background: var(--bg-tertiary); + color: var(--text-primary); + box-shadow: none; } -/* ⏳ Progress Bar */ +.btn-ghost:hover { + background: var(--border-color); + box-shadow: var(--shadow-sm); +} + +/* ============================================ + ⏳ Progress Bar - Smooth Animation + ============================================ */ + #progress-bar { position: fixed; top: 0; left: 0; width: 0%; - height: 4px; - background: linear-gradient(to right, var(--primary), var(--accent)); - z-index: 1000; - transition: width 0.3s ease; + height: 3px; + background: linear-gradient(90deg, var(--primary), var(--accent), var(--secondary)); + background-size: 200% 100%; + z-index: 9999; + transition: width var(--transition-fast); + animation: shimmer 3s infinite; } -/* 🧭 Header/Navigation */ +@keyframes shimmer { + 0% { background-position: 200% 0; } + 100% { background-position: -200% 0; } +} + +/* ============================================ + 🧭 Enhanced Navigation Header + ============================================ */ + .header { position: fixed; top: 0; left: 0; width: 100%; height: var(--header-height); - background-color: var(--bg); - box-shadow: 0 2px 20px rgba(0, 0, 0, 0.1); - z-index: 999; - transition: var(--transition); + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(20px) saturate(180%); + -webkit-backdrop-filter: blur(20px) saturate(180%); + border-bottom: 1px solid var(--border-light); + z-index: 1000; + transition: all var(--transition-base); } [data-theme="dark"] .header { - box-shadow: 0 2px 20px rgba(0, 0, 0, 0.3); + background: rgba(15, 23, 42, 0.8); + border-bottom-color: var(--border-color); } .header.scrolled { - height: 70px; - background-color: rgba(255, 255, 255, 0.95); - backdrop-filter: blur(10px); -} - -[data-theme="dark"] .header.scrolled { - background-color: rgba(18, 18, 18, 0.95); + height: 64px; + box-shadow: var(--shadow-lg); } .nav-container { @@ -206,206 +318,186 @@ a { align-items: center; height: 100%; width: 100%; + gap: var(--spacing-lg); } +/* Logo with Gradient Animation */ .logo-container { display: flex; align-items: center; + gap: var(--spacing-sm); flex-shrink: 0; } .logo { - height: 40px; - margin-right: 10px; + height: 42px; + filter: drop-shadow(0 2px 4px rgba(99, 102, 241, 0.2)); + transition: transform var(--transition-base); +} + +.logo:hover { + transform: rotate(360deg) scale(1.1); } .site-name { font-size: 1.5rem; - font-weight: 700; - background: linear-gradient(to right, var(--primary), var(--accent)); - background-clip: text; + font-weight: 800; + background: linear-gradient(135deg, var(--primary), var(--accent), var(--secondary)); + background-size: 200% 200%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; + background-clip: text; + animation: gradientShift 5s ease infinite; } +@keyframes gradientShift { + 0%, 100% { background-position: 0% 50%; } + 50% { background-position: 100% 50%; } +} + +/* Enhanced Navigation Links */ .nav-links { display: flex; list-style: none; + gap: var(--spacing-sm); flex: 1; justify-content: center; - margin: 0 20px; } .nav-links li { - margin: 0 15px; + position: relative; } .nav-links a { - color: var(--text); - font-weight: 500; + color: var(--text-primary); + font-weight: 600; + font-size: 0.9375rem; + padding: var(--spacing-sm) var(--spacing-md); + border-radius: var(--radius-md); position: relative; - padding: 5px 0; - transition: all 0.3s ease-in-out; - white-space: nowrap; + display: inline-block; + transition: all var(--transition-base); } -.nav-links a::after { +.nav-links a::before { content: ''; position: absolute; - width: 100%; - height: 3px; - bottom: -5px; - left: 0; - background: linear-gradient(90deg, var(--primary), var(--secondary)); - transform: scaleX(0); - transform-origin: left; - transition: transform 0.3s ease-in-out; - border-radius: 2px; + bottom: 0; + left: 50%; + width: 0; + height: 2px; + background: linear-gradient(90deg, var(--primary), var(--accent)); + transform: translateX(-50%); + transition: width var(--transition-base); + border-radius: var(--radius-full); } -.nav-links a:hover { - text-shadow: 0 0 8px rgba(108, 99, 255, 0.6); - background: linear-gradient(135deg, #3f5efb, #f119e2, #ff6ec4); - background-clip: text; - -webkit-background-clip: text; - color: transparent; - -webkit-text-fill-color: transparent; - transform: translateY(-2px); - transition: all 0.3s ease; - box-shadow: 0 2px 8px rgba(63, 94, 251, 0.2); +.nav-links a:hover, +.nav-links a.active { + color: var(--primary); + background: var(--bg-tertiary); } -.nav-links a:hover::after, -.nav-links a.active::after { - transform: scaleX(1); +.nav-links a:hover::before, +.nav-links a.active::before { + width: 80%; } +/* Navigation Actions */ .nav-actions { display: flex; align-items: center; - gap: 15px; + gap: var(--spacing-md); flex-shrink: 0; } +/* Enhanced Theme Toggle */ .theme-toggle { - background: none; + width: 44px; + height: 44px; + border-radius: var(--radius-full); + background: var(--bg-tertiary); border: none; - font-size: 1.2rem; + color: var(--text-primary); cursor: pointer; - color: var(--text); - width: 40px; - height: 40px; - border-radius: 50%; display: flex; align-items: center; justify-content: center; - transition: var(--transition); + font-size: 1.25rem; + transition: all var(--transition-base); + position: relative; + overflow: hidden; } -.theme-toggle:hover { - background-color: var(--bg-tertiary); +.theme-toggle::before { + content: ''; + position: absolute; + inset: 0; + background: linear-gradient(135deg, var(--primary), var(--accent)); + opacity: 0; + transition: opacity var(--transition-base); } -.hamburger { - display: none; - flex-direction: column; - background: none; - border: none; - cursor: pointer; - width: 30px; - height: 30px; - justify-content: center; +.theme-toggle:hover { + transform: rotate(180deg) scale(1.1); + box-shadow: var(--shadow-md); } -.hamburger span { - width: 25px; - height: 3px; - background-color: var(--text); - margin: 2px 0; - transition: var(--transition); - border-radius: 2px; +.theme-toggle:hover::before { + opacity: 1; } - -/* Mobile Menu */ -.mobile-menu-container { - display: none; - position: fixed; - top: var(--header-height); - left: 0; - width: 100%; - background-color: var(--bg); - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); - z-index: 998; - overflow-y: auto; - max-height: 90vh; +.theme-toggle i { + position: relative; + z-index: 1; + transition: all var(--transition-base); } -.mobile-menu-container.active { - display: block; +.theme-toggle:hover i { + color: var(--text-inverse); } -.mobile-menu-links { - display: flex; +/* Hamburger Menu - Animated */ +.hamburger { + display: none; flex-direction: column; - padding: 10px 0; -} - -.mobile-link-item { - border-bottom: 1px solid var(--border); -} - -.mobile-link-item a, -.accordion-toggle { - display: block; - width: 100%; - padding: 15px 20px; - text-align: left; - font-size: 1.1rem; - font-weight: 500; + justify-content: space-between; + width: 28px; + height: 22px; background: none; border: none; - color: var(--text); cursor: pointer; - transition: background-color 0.2s ease; -} - -.accordion-toggle { - display: flex; - justify-content: space-between; - align-items: center; + padding: 0; } -.accordion-toggle:hover { - background-color: var(--bg-tertiary); +.hamburger span { + width: 100%; + height: 3px; + background: var(--text-primary); + border-radius: var(--radius-full); + transition: all var(--transition-base); + transform-origin: center; } -.accordion-content { - max-height: 0; - overflow: hidden; - transition: max-height 0.3s ease-out; - background-color: var(--bg-secondary); +.hamburger.active span:nth-child(1) { + transform: translateY(9.5px) rotate(45deg); } -.accordion-content.active { - max-height: 300px; +.hamburger.active span:nth-child(2) { + opacity: 0; + transform: translateX(-20px); } -.accordion-content a { - padding: 10px 20px 10px 40px; - font-size: 1rem; - border: none; - border-top: 1px solid var(--border); +.hamburger.active span:nth-child(3) { + transform: translateY(-9.5px) rotate(-45deg); } -.accordion-content a:hover { - background-color: var(--bg-tertiary); - color: var(--primary); -} +/* ============================================ + 🦸 Hero Section - Eye-Catching + ============================================ */ -/* 🦸 Hero Section */ .hero { - padding: calc(var(--header-height) + 40px) 0 120px; + padding: calc(var(--header-height) + 80px) 0 100px; text-align: center; position: relative; overflow: hidden; @@ -414,109 +506,162 @@ a { .hero::before { content: ''; position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: url('data:image/svg+xml,'); - background-size: cover; + top: -50%; + left: -10%; + width: 120%; + height: 200%; + background: + radial-gradient(circle at 30% 20%, rgba(99, 102, 241, 0.15) 0%, transparent 40%), + radial-gradient(circle at 70% 60%, rgba(6, 182, 212, 0.1) 0%, transparent 40%); + animation: float 20s ease-in-out infinite; + z-index: -1; +} + +@keyframes float { + 0%, 100% { transform: translate(0, 0) rotate(0deg); } + 33% { transform: translate(30px, -50px) rotate(120deg); } + 66% { transform: translate(-20px, 20px) rotate(240deg); } } .docs-title { - font-size: 3rem; - font-weight: 700; - background: linear-gradient(to right, var(--primary), var(--accent)); + font-size: clamp(2.5rem, 6vw, 4.5rem); + font-weight: 900; + background: linear-gradient(135deg, var(--primary), var(--accent), var(--secondary)); + background-size: 200% 200%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; - margin-bottom: 1rem; + margin-bottom: var(--spacing-lg); display: flex; align-items: center; justify-content: center; - gap: 1rem; + gap: var(--spacing-md); + animation: gradientShift 6s ease infinite; + line-height: 1.1; } .docs-title i { color: var(--primary); -webkit-text-fill-color: var(--primary); + filter: drop-shadow(0 4px 8px var(--primary-glow)); + animation: bounce 2s ease-in-out infinite; +} + +@keyframes bounce { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-10px); } } .docs-subtitle { - font-size: 1.25rem; - color: var(--text-light); - max-width: 600px; - margin: 0 auto; + font-size: clamp(1.125rem, 2vw, 1.5rem); + color: var(--text-secondary); + max-width: 700px; + margin: 0 auto var(--spacing-2xl); + line-height: 1.6; } -/* 🔍 Search and filter section */ +/* ============================================ + 🔍 Search & Filter - Modern Design + ============================================ */ + .search-filter-section { - background: var(--bg-secondary); - border-radius: 1rem; - padding: 2rem; - margin-bottom: 2rem; - box-shadow: var(--shadow); - border: 1px solid var(--border); + background: var(--bg-elevated); + border-radius: var(--radius-xl); + padding: var(--spacing-2xl); + margin-bottom: var(--spacing-2xl); + box-shadow: var(--shadow-lg); + border: 1px solid var(--border-color); + position: relative; + overflow: hidden; +} + +.search-filter-section::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: linear-gradient(90deg, var(--primary), var(--accent), var(--secondary)); + background-size: 200% 100%; + animation: shimmer 3s infinite; } .search-container { - margin-bottom: 2rem; + margin-bottom: var(--spacing-xl); } .search-input-wrapper { position: relative; - max-width: 500px; + max-width: 600px; margin: 0 auto; } .search-icon { position: absolute; - left: 1rem; + left: var(--spacing-lg); top: 50%; transform: translateY(-50%); - color: var(--text-light); - font-size: 1.1rem; + color: var(--text-tertiary); + font-size: 1.25rem; + transition: color var(--transition-base); + pointer-events: none; } #searchInput { width: 100%; - padding: 1rem 1rem 1rem 3rem; - border: 2px solid var(--border); - border-radius: 0.75rem; - background: var(--bg); - color: var(--text); + padding: 1.125rem var(--spacing-xl) 1.125rem 3.5rem; + border: 2px solid var(--border-color); + border-radius: var(--radius-full); + background: var(--bg-primary); + color: var(--text-primary); font-size: 1rem; - transition: all var(--transition-speed) ease; + font-weight: 500; + transition: all var(--transition-base); + box-shadow: var(--shadow-sm); } #searchInput:focus { outline: none; border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(108, 99, 255, 0.1); + box-shadow: 0 0 0 4px var(--primary-glow), var(--shadow-md); + transform: translateY(-2px); +} + +#searchInput:focus + .search-icon { + color: var(--primary); } .clear-btn { position: absolute; - right: 1rem; + right: var(--spacing-md); top: 50%; transform: translateY(-50%); - background: none; + background: var(--bg-tertiary); border: none; - color: var(--text-light); + color: var(--text-secondary); cursor: pointer; - padding: 0.25rem; - border-radius: 0.25rem; - transition: color var(--transition-speed) ease; + padding: var(--spacing-sm); + border-radius: var(--radius-full); + transition: all var(--transition-base); + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; } .clear-btn:hover { - color: var(--text); + background: var(--danger); + color: var(--text-inverse); + transform: translateY(-50%) scale(1.1); } -/* 🧰 Filter container */ +/* Filter System */ .filter-container { display: flex; flex-wrap: wrap; - gap: 2rem; + gap: var(--spacing-xl); align-items: center; justify-content: space-between; } @@ -524,103 +669,128 @@ a { .filter-group { display: flex; align-items: center; - gap: 1rem; + gap: var(--spacing-md); flex-wrap: wrap; } .filter-label { - font-weight: 600; - color: var(--text); + font-weight: 700; + color: var(--text-primary); + font-size: 0.9375rem; white-space: nowrap; + letter-spacing: -0.01em; } .filter-buttons { display: flex; - gap: 0.5rem; + gap: var(--spacing-sm); flex-wrap: wrap; } .filter-btn { - padding: 0.5rem 1rem; - border: 2px solid var(--border); - background: var(--bg); - color: var(--text-light); - border-radius: 0.5rem; + padding: 0.625rem 1.25rem; + border: 2px solid var(--border-color); + background: var(--bg-primary); + color: var(--text-secondary); + border-radius: var(--radius-full); cursor: pointer; - transition: all var(--transition-speed) ease; + transition: all var(--transition-base); font-size: 0.875rem; - font-weight: 500; + font-weight: 600; + position: relative; + overflow: hidden; +} + +.filter-btn::before { + content: ''; + position: absolute; + top: 50%; + left: 50%; + width: 0; + height: 0; + background: var(--primary-glow); + border-radius: 50%; + transform: translate(-50%, -50%); + transition: width var(--transition-base), height var(--transition-base); } .filter-btn:hover { border-color: var(--primary); color: var(--primary); + transform: translateY(-2px); + box-shadow: var(--shadow-md); } .filter-btn.active { - background: var(--primary); + background: linear-gradient(135deg, var(--primary), var(--primary-dark)); border-color: var(--primary); - color: white; + color: var(--text-inverse); + box-shadow: var(--shadow-md), 0 0 12px var(--primary-glow); } -/* 🖼️ View toggle */ +/* View Toggle */ .view-toggle { display: flex; - gap: 0.25rem; - background: var(--bg); - border-radius: 0.5rem; - padding: 0.25rem; - border: 1px solid var(--border); + gap: var(--spacing-xs); + background: var(--bg-tertiary); + border-radius: var(--radius-md); + padding: 4px; + border: 1px solid var(--border-color); } .view-btn { - padding: 0.5rem; + padding: var(--spacing-sm) var(--spacing-md); border: none; background: transparent; - color: var(--text-light); - border-radius: 0.25rem; + color: var(--text-secondary); + border-radius: var(--radius-sm); cursor: pointer; - transition: all var(--transition-speed) ease; - width: 40px; - height: 40px; + transition: all var(--transition-base); + width: 44px; + height: 44px; display: flex; align-items: center; justify-content: center; + font-size: 1.125rem; } .view-btn:hover { - color: var(--text); + color: var(--text-primary); + background: var(--bg-primary); } .view-btn.active { background: var(--primary); - color: white; + color: var(--text-inverse); + box-shadow: var(--shadow-sm); } -/* 🧩 Components section */ +/* ============================================ + 🧩 Component Cards - Premium Design + ============================================ */ + .components-section { - margin-bottom: 3rem; + margin-bottom: var(--spacing-2xl); } .components-grid { display: grid; - grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); - gap: 2rem; - transition: all var(--transition-speed) ease; + grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); + gap: var(--spacing-xl); + transition: all var(--transition-base); } .components-grid.list-view { grid-template-columns: 1fr; } -/* 🃏 Component card */ .component-card { - background: var(--bg); - border-radius: 1rem; - padding: 1.5rem; - border: 1px solid var(--border); - box-shadow: var(--shadow); - transition: all var(--transition-speed) ease; + background: var(--bg-elevated); + border-radius: var(--radius-xl); + padding: var(--spacing-xl); + border: 1px solid var(--border-color); + box-shadow: var(--shadow-md); + transition: all var(--transition-base); cursor: pointer; position: relative; overflow: hidden; @@ -633,861 +803,163 @@ a { left: 0; right: 0; height: 4px; - background: linear-gradient(to right, var(--primary), var(--accent)); + background: linear-gradient(90deg, var(--primary), var(--accent)); transform: scaleX(0); - transition: transform var(--transition-speed) ease; + transition: transform var(--transition-base); + transform-origin: left; +} + +.component-card::after { + content: ''; + position: absolute; + inset: -2px; + background: linear-gradient(135deg, var(--primary), var(--accent), var(--secondary)); + opacity: 0; + z-index: -1; + border-radius: inherit; + transition: opacity var(--transition-base); } .component-card:hover { - transform: translateY(-5px); - box-shadow: 0 20px 40px rgba(108, 99, 255, 0.15); + transform: translateY(-8px) scale(1.02); + box-shadow: var(--shadow-xl), var(--shadow-glow); + border-color: var(--primary); } .component-card:hover::before { transform: scaleX(1); } +.component-card:hover::after { + opacity: 0.1; +} + .card-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 1rem; + margin-bottom: var(--spacing-md); } .component-title { - font-size: 1.25rem; - font-weight: 600; - color: var(--text); + font-size: 1.375rem; + font-weight: 700; + color: var(--text-primary); margin: 0; + letter-spacing: -0.02em; } .component-category { - background: var(--accent); - color: white; - padding: 0.25rem 0.75rem; - border-radius: 1rem; - font-size: 0.75rem; - font-weight: 500; + background: linear-gradient(135deg, var(--accent), var(--accent-light)); + color: var(--text-inverse); + padding: 0.375rem 1rem; + border-radius: var(--radius-full); + font-size: 0.8125rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.05em; + box-shadow: var(--shadow-sm); } .component-description { - color: var(--text-light); - margin-bottom: 1rem; - line-height: 1.5; + color: var(--text-secondary); + margin-bottom: var(--spacing-lg); + line-height: 1.6; + font-size: 0.9375rem; } .component-preview-mini { background: var(--bg-secondary); - border: 1px solid var(--border); - border-radius: 0.5rem; - padding: 1rem; - margin-bottom: 1rem; - min-height: 80px; + border: 1px solid var(--border-light); + border-radius: var(--radius-md); + padding: var(--spacing-xl); + margin-bottom: var(--spacing-lg); + min-height: 100px; display: flex; align-items: center; justify-content: center; + transition: all var(--transition-base); +} + +.component-card:hover .component-preview-mini { + background: var(--bg-tertiary); + transform: scale(1.02); } .card-footer { display: flex; align-items: center; justify-content: space-between; - margin-top: 1rem; + margin-top: var(--spacing-lg); + padding-top: var(--spacing-md); + border-top: 1px solid var(--border-light); } .component-tags { display: flex; - gap: 0.5rem; + gap: var(--spacing-sm); flex-wrap: wrap; } .tag { - background: var(--border); - color: var(--text-light); - padding: 0.25rem 0.5rem; - border-radius: 0.25rem; - font-size: 0.75rem; + background: var(--bg-tertiary); + color: var(--text-secondary); + padding: 0.375rem 0.75rem; + border-radius: var(--radius-md); + font-size: 0.8125rem; + font-weight: 600; + transition: all var(--transition-base); +} + +.tag:hover { + background: var(--primary); + color: var(--text-inverse); + transform: scale(1.05); } .complexity-badge { - padding: 0.25rem 0.75rem; - border-radius: 1rem; - font-size: 0.75rem; - font-weight: 500; + padding: 0.375rem 1rem; + border-radius: var(--radius-full); + font-size: 0.8125rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.03em; + box-shadow: var(--shadow-sm); } .complexity-beginner { - background: #10b981; - color: white; + background: linear-gradient(135deg, #10b981, #059669); + color: var(--text-inverse); } .complexity-intermediate { - background: #f59e0b; - color: white; + background: linear-gradient(135deg, #f59e0b, #d97706); + color: var(--text-inverse); } .complexity-advanced { - background: #ef4444; - color: white; + background: linear-gradient(135deg, #ef4444, #dc2626); + color: var(--text-inverse); } -/* 🚫 No results */ +/* ============================================ + 🚫 No Results State + ============================================ */ + .no-results { text-align: center; - padding: 4rem 2rem; - color: var(--text-light); + padding: var(--spacing-2xl); + color: var(--text-tertiary); } .no-results i { - font-size: 4rem; - margin-bottom: 1rem; - opacity: 0.5; -} - -.no-results h3 { - font-size: 1.5rem; - margin-bottom: 0.5rem; - color: var(--text); -} - -/* 🪟 Modal styles */ -.modal-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.8); - backdrop-filter: blur(5px); - z-index: 1000; - display: flex; - align-items: center; - justify-content: center; - opacity: 0; - visibility: hidden; - transition: all var(--transition-speed) ease; -} - -.modal-overlay.active { - opacity: 1; - visibility: visible; -} - -.modal-content { - background: var(--bg); - border-radius: 1rem; - width: 90vw; - max-width: 1000px; - max-height: 90vh; - overflow: hidden; - box-shadow: var(--shadow); - border: 1px solid var(--border); - transform: scale(0.9); - transition: transform var(--transition-speed) ease; -} - -.modal-overlay.active .modal-content { - transform: scale(1); -} - -.modal-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1.5rem 2rem; - border-bottom: 1px solid var(--border); - background: var(--bg-secondary); -} - -.modal-close { - background: none; - border: none; - color: var(--text-light); - font-size: 1.5rem; - cursor: pointer; - padding: 0.5rem; - border-radius: 0.5rem; - transition: all var(--transition-speed) ease; -} - -.modal-close:hover { - background: var(--border); - color: var(--text); -} - -.modal-body { - overflow-y: auto; - max-height: calc(90vh - 80px); -} - -/* 📑 Modal tabs */ -.modal-tabs { - display: flex; - background: var(--bg-secondary); - border-bottom: 1px solid var(--border); -} - -.tab-btn { - flex: 1; - padding: 1rem; - border: none; - background: transparent; - color: var(--text-light); - cursor: pointer; - transition: all var(--transition-speed) ease; - font-weight: 500; - border-bottom: 3px solid transparent; -} - -.tab-btn:hover { - background: var(--bg); - color: var(--text); -} - -.tab-btn.active { + font-size: 5rem; + margin-bottom: var(--spacing-lg); + opacity: 0.3; color: var(--primary); - border-bottom-color: var(--primary); - background: var(--bg); -} - -/* 📄 Tab content */ -.tab-content { - padding: 2rem; -} - -.tab-pane { - display: none; -} - -.tab-pane.active { - display: block; -} - -/* 🖼️ Component preview */ -.component-preview { - background: var(--bg-secondary); - border: 1px solid var(--border); - border-radius: 0.5rem; - padding: 2rem; - min-height: 200px; - margin-bottom: 1rem; -} - -/* 💻 Code sections */ -.code-section { - margin-bottom: 1.5rem; - border-radius: 0.5rem; - overflow: hidden; - border: 1px solid var(--border); -} - -.code-header { - display: flex; - align-items: center; - justify-content: space-between; - background: #2d3748; - color: white; - padding: 0.75rem 1rem; - font-size: 0.875rem; -} - -.code-language { - font-weight: 600; - text-transform: uppercase; - letter-spacing: 0.5px; -} - -.copy-code-btn { - background: var(--primary); - color: white; - border: none; - padding: 0.5rem 1rem; - border-radius: 0.25rem; - cursor: pointer; - font-size: 0.75rem; - transition: all var(--transition-speed) ease; - display: flex; - align-items: center; - gap: 0.5rem; } -.copy-code-btn:hover { - background: var(--primary-dark); - transform: translateY(-1px); -} - -.copy-code-btn.copied { - background: #10b981; -} - -.copy-code-btn.copied::after { - content: ' ✓'; -} - -/* 💻 Code blocks */ -pre { - margin: 0; - background: #1a202c !important; - overflow-x: auto; -} - -code { - font-family: 'Fira Code', 'Monaco', 'Consolas', monospace; - font-size: 0.875rem; - line-height: 1.5; -} - -/* 📖 Usage and customization content */ -.usage-content, -.customization-content { - line-height: 1.8; -} - -.usage-content h3, -.customization-content h3 { - color: var(--text); - margin-bottom: 1rem; - margin-top: 2rem; -} - -.usage-content h3:first-child, -.customization-content h3:first-child { - margin-top: 0; -} - -.usage-content p, -.customization-content p { - color: var(--text-light); - margin-bottom: 1rem; -} - -.usage-content ul, -.customization-content ul { - color: var(--text-light); - margin-left: 1.5rem; - margin-bottom: 1rem; -} - -.usage-content li, -.customization-content li { - margin-bottom: 0.5rem; -} - -/* 🦶 Footer */ -.footer { - background-color: var(--bg-secondary); - color: var(--text); - padding: 80px 0 30px; - position: relative; - border-top: 1px solid var(--border); -} - -.footer-content { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); - gap: 40px; - margin-bottom: 40px; -} - -.footer-about { - display: flex; - flex-direction: column; -} - -.footer-logo { - display: flex; - align-items: center; - margin-bottom: 20px; -} - -.footer-logo img { - height: 40px; - margin-right: 10px; -} - -.footer-logo span { +.no-results h3 { font-size: 1.5rem; - font-weight: 700; - background: linear-gradient(to right, var(--primary), var(--accent)); - background-clip: text; - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; -} - -.footer-about p { - color: var(--text-light); - margin-bottom: 20px; -} - -.footer-links h3, -.footer-social h3 { - margin-bottom: 20px; - position: relative; - padding-bottom: 10px; -} - -.footer-links h3::after, -.footer-social h3::after { - content: ''; - position: absolute; - width: 40px; - height: 2px; - background-color: var(--primary); - bottom: 0; - left: 0; -} - -.footer-links ul { - list-style: none; -} - -.footer-links li { - margin-bottom: 12px; -} - -.footer-links a { - color: var(--text-light); - transition: var(--transition); - display: flex; - align-items: center; -} - -.footer-links a i { - margin-right: 10px; - width: 20px; - text-align: center; -} - -.footer-links a:hover { - color: var(--primary); - padding-left: 5px; -} - -.social-icons { - display: flex; - gap: 15px; -} - -.social-icons a { - display: flex; - align-items: center; - justify-content: center; - width: 40px; - height: 40px; - background-color: var(--bg-tertiary); - border-radius: 50%; - color: var(--text); - transition: var(--transition); -} - -.social-icons a:hover { - background-color: var(--primary); - color: white; - transform: translateY(-3px); -} - -.footer-bottom { - text-align: center; - padding-top: 30px; - border-top: 1px solid var(--border); - color: var(--text-light); - font-size: 0.9rem; -} - -.footer-bottom .highlight { - color: var(--primary); - font-weight: 600; -} - -.newsletter { - background: var(--bg-tertiary); - border-radius: var(--radius); - padding: 20px; - margin-top: 20px; - border: 1px solid var(--border); - text-align: center; -} - -.newsletter h4 { - margin-bottom: 15px; - font-size: 1.2rem; -} - -.newsletter-form { - display: flex; - gap: 10px; -} - -.newsletter-form input { - flex: 1; - padding: 3px 3px; - border: 3px solid var(--border); - border-radius: var(--radius); - background: var(--bg); - color: var(--text); -} - -.newsletter-form input::placeholder { - color: var(--text-light); -} - -.newsletter-form button { - padding: 3px 3px; - background: var(--primary); - color: white; - border: none; - border-radius: var(--radius); - cursor: pointer; - transition: var(--transition); -} - -.newsletter-form button:hover { - background: var(--primary-dark); -} - -/* ⬆️ Scroll to Top Button */ -#scrollBtn { - display: none; - position: fixed; - bottom: 30px; - right: 30px; - z-index: 99; - border: none; - outline: none; - background-color: var(--primary); - color: white; - cursor: pointer; - padding: 15px; - border-radius: 50%; - font-size: 18px; - width: 50px; - height: 50px; - box-shadow: var(--shadow); - transition: var(--transition); -} - -#scrollBtn:hover { - background-color: var(--primary-dark); - transform: translateY(-3px); -} - -/* 📱 Responsive Design */ -@media (max-width: 1200px) { - .container { - max-width: 960px; - } -} - -@media (max-width: 992px) { - h1 { - font-size: 2.8rem; - } - - h2 { - font-size: 2.2rem; - } - - .docs-title { - font-size: 2.5rem; - flex-direction: column; - gap: 0.5rem; - } - - .docs-subtitle { - font-size: 1rem; - } -} - -/* 🔒 Force light look on components page even if dark theme toggled */ -body[data-theme="dark"] { - /* Re-apply light palette to keep page white */ - --primary: #6c63ff; - --primary-light: #8a84ff; - --primary-dark: #554fd8; - --secondary: #ff6584; - --accent: #36d1dc; - --text: #1a202c; - --text-light: #64748b; - --bg: #ffffff; /* white background */ - --bg-secondary: #f5f7fa; - --bg-tertiary: #e9ecef; - --border: #dee2e6; - --shadow: 0 10px 30px rgba(0, 0, 0, 0.1); - --nav-secondary-bg: #ffffff; - - color: var(--text); - background-color: var(--bg); -} - -@media (max-width: 768px) { - .nav-links { - display: none; - position: absolute; - top: 100%; - left: 0; - width: 100%; - background-color: var(--bg); - flex-direction: column; - padding: 20px; - box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); - z-index: 1000; - border-top: 1px solid var(--border); - } - - .nav-links.active { - display: flex; - } - - .nav-links li { - margin: 10px 0; - } - - .nav-actions .btn, - .nav-actions .btn-outline { - display: none; - } - - .nav-actions { - display: flex; - gap: 15px; - } - - .hamburger { - display: flex; - } - - .hamburger.active span:nth-child(1) { - transform: rotate(45deg) translate(5px, 5px); - } - - .hamburger.active span:nth-child(2) { - opacity: 0; - } - - .hamburger.active span:nth-child(3) { - transform: rotate(-45deg) translate(7px, -6px); - } - - .hero { - padding-top: calc(var(--header-height) + 60px); - } - - .search-filter-section { - padding: 1.5rem; - } - - .filter-container { - flex-direction: column; - align-items: stretch; - gap: 1rem; - } - - .filter-group { - flex-direction: column; - align-items: stretch; - gap: 0.5rem; - } - - .components-grid { - grid-template-columns: 1fr; - gap: 1rem; - } - - .modal-content { - width: 95vw; - margin: 1rem; - } - - .modal-header { - padding: 1rem; - } - - .tab-content { - padding: 1rem; - } - - .footer-content { - grid-template-columns: 1fr; - text-align: center; - } - - .footer-links h3::after, - .footer-social h3::after { - left: 50%; - transform: translateX(-50%); - } -} - -@media (max-width: 576px) { - h1 { - font-size: 2.2rem; - } - - h2 { - font-size: 1.8rem; - } - - section { - padding: 60px 0; - } - - .hero { - padding: 150px 0 80px; - } - - .docs-title { - font-size: 2rem; - } - - .footer { - padding: 60px 0 20px; - } - - .footer-content { - grid-template-columns: 1fr; - gap: 30px; - } - - .newsletter-form { - flex-direction: column; - } -} - -@media (max-width: 400px) { - h1 { - font-size: 1.8rem; - } - - h2 { - font-size: 1.5rem; - } - - .btn { - padding: 12px 24px; - font-size: 0.9rem; - } - - .docs-title { - font-size: 1.8rem; - } - - .docs-subtitle { - font-size: 1rem; - } -} - -/* Desktop Dropdown Styles */ -.dropdown-link-item { - position: relative; -} - -.dropdown-content { - display: none; - position: absolute; - top: 100%; - left: 0; - background-color: var(--bg); - border: 1px solid var(--border); - border-radius: var(--radius-sm); - box-shadow: var(--shadow); - z-index: 999; - list-style: none; - min-width: 180px; - padding: 8px 0; - border-top: 3px solid var(--primary); - animation: fadeIn 0.2s ease-out; - margin-top: 5px; -} - -.dropdown-content li a { - padding: 10px 15px; - display: block; - white-space: nowrap; - font-weight: 500; -} - -.dropdown-content li a:hover { - background-color: var(--bg-tertiary); - color: var(--primary); - padding-left: 20px; -} - -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(-10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -.fade-in { - animation: fadeInUp 0.6s ease-out; -} - -/* ⏳ Loading states */ -.loading { - opacity: 0.6; - pointer-events: none; -} - -.loading::after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - width: 20px; - height: 20px; - margin: -10px 0 0 -10px; - border: 2px solid var(--border); - border-top-color: var(--primary); - border-radius: 50%; - animation: spin 1s linear infinite; -} - -@keyframes spin { - to { - transform: rotate(360deg); - } -} - -/* Desktop View: Single header navigation */ -@media (min-width: 769px) { - .main-primary-bar { - position: relative; - top: 0; - width: 100%; - z-index: 999; - transition: var(--transition); - } - - .main-primary-bar, - .header { - visibility: visible !important; - } - - .hero { - padding-top: calc(var(--header-height) + 40px); - } - - .desktop-only { - display: flex !important; - } - - .nav-actions .hamburger { - display: none !important; - } + margin-bottom: var(--spacing-md); } \ No newline at end of file diff --git a/index.html b/index.html index 6663702a..3bad77bc 100644 --- a/index.html +++ b/index.html @@ -482,134 +482,491 @@

Ready to Animate Your Website?

- + + + + + + + - - - \ No newline at end of file