diff --git a/assets/style.css b/assets/style.css index 9ccce31..386c184 100644 --- a/assets/style.css +++ b/assets/style.css @@ -16,25 +16,29 @@ --accent: 200 85% 45%; --accent-foreground: 0 0% 100%; --border: 200 30% 90%; + --ring: 200 85% 45%; --radius: 0.5rem; } -[data-theme="dark"] { - --background: 200 30% 8%; - --foreground: 200 20% 96%; - --card: 200 25% 15%; - --card-foreground: 200 15% 85%; - --popover: 200 50% 8%; - --popover-foreground: 200 20% 96%; - --primary: 200 70% 40%; - --primary-foreground: 0 0% 100%; - --secondary: 200 30% 20%; - --secondary-foreground: 200 20% 96%; - --muted: 200 30% 20%; - --muted-foreground: 200 30% 65%; - --accent: 200 70% 40%; - --accent-foreground: 0 0% 100%; - --border: 200 30% 20%; +@media (prefers-color-scheme: dark) { + :root { + --background: 200 30% 8%; + --foreground: 200 20% 96%; + --card: 200 25% 15%; + --card-foreground: 200 15% 85%; + --popover: 200 50% 8%; + --popover-foreground: 200 20% 96%; + --primary: 200 70% 40%; + --primary-foreground: 0 0% 100%; + --secondary: 200 30% 20%; + --secondary-foreground: 200 20% 96%; + --muted: 200 30% 20%; + --muted-foreground: 200 30% 65%; + --accent: 200 70% 40%; + --accent-foreground: 0 0% 100%; + --border: 200 30% 20%; + --ring: 200 70% 40%; + } } /* Base styles */ @@ -50,11 +54,12 @@ body { color: hsl(var(--foreground)); background: hsl(var(--background)); transition: background-color 0.3s ease; + min-height: 100vh; } /* Layout */ .container { - max-width: 64rem; + max-width: 80rem; margin: 0 auto; padding: 1.5rem; } @@ -73,154 +78,200 @@ body { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: var(--radius); - padding: 1.5rem; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); transition: background-color 0.3s ease, border-color 0.3s ease; } -.header { - display: flex; - align-items: center; - gap: 1rem; - margin-bottom: 1.5rem; +.card-header { + padding: 1.5rem; + border-bottom: 1px solid hsl(var(--border)); } -.header img { - width: 4rem; - height: 4rem; - border-radius: var(--radius); - object-fit: contain; - background: hsl(var(--secondary)); - padding: 0.5rem; - transition: background-color 0.3s ease; +.card-content { + padding: 1.5rem; } -.banner { +.header-banner { + position: relative; width: 100%; - height: 12rem; - border-radius: calc(var(--radius) + 0.25rem); - object-fit: cover; - margin-bottom: 1.5rem; - border: 1px solid hsl(var(--border)); + height: 20rem; background: hsl(var(--secondary)); + margin-bottom: 2rem; + border-radius: var(--radius); + overflow: hidden; + border: 1px solid hsl(var(--border)); transition: background-color 0.3s ease, border-color 0.3s ease; } +.header-banner img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.header-content { + display: flex; + align-items: flex-start; + gap: 1.5rem; + margin-bottom: 2rem; +} + +.header-icon { + width: 6rem; + height: 6rem; + border-radius: var(--radius); + object-fit: contain; + background: hsl(var(--secondary)); + padding: 0.75rem; + border: 1px solid hsl(var(--border)); + transition: background-color 0.3s ease; +} + .title { - font-size: 1.875rem; + font-size: 2rem; font-weight: 600; - margin-bottom: 0.25rem; + margin-bottom: 0.5rem; color: hsl(var(--foreground)); transition: color 0.3s ease; + line-height: 1.2; } .description { color: hsl(var(--muted-foreground)); - margin-bottom: 1rem; + font-size: 1.125rem; transition: color 0.3s ease; } +/* Tabs */ +.tabs { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.tabs-list { + display: flex; + border-bottom: 1px solid hsl(var(--border)); + margin-bottom: 1.5rem; +} + +.tab { + padding: 0.75rem 1rem; + border-bottom: 2px solid transparent; + color: hsl(var(--muted-foreground)); + font-weight: 500; + cursor: pointer; + transition: all 0.3s ease; + background: none; + border: none; + outline: none; +} + +.tab:hover { + color: hsl(var(--foreground)); +} + +.tab[data-state="active"] { + color: hsl(var(--foreground)); + border-bottom-color: hsl(var(--primary)); +} + +.tab-content { + display: none; +} + +.tab-content[data-state="active"] { + display: block; +} + +/* Plugin Grid */ +.plugin-grid { + display: grid; + gap: 1rem; + grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); +} + +.plugin-card { + display: flex; + flex-direction: column; + gap: 1rem; + padding: 1rem; + background: hsl(var(--card)); + border: 1px solid hsl(var(--border)); + border-radius: var(--radius); + transition: all 0.3s ease; +} + +.plugin-card:hover { + background: hsl(var(--accent) / 0.05); + border-color: hsl(var(--accent) / 0.2); +} + +.plugin-header { + display: flex; + align-items: center; + gap: 1rem; +} + +.plugin-icon { + width: 3rem; + height: 3rem; + border-radius: calc(var(--radius) - 0.25rem); + object-fit: contain; + background: hsl(var(--secondary)); + padding: 0.5rem; + border: 1px solid hsl(var(--border)); +} + +.plugin-info { + flex: 1; + min-width: 0; +} + +.plugin-title { + font-weight: 600; + color: hsl(var(--foreground)); + margin-bottom: 0.25rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.plugin-description { + color: hsl(var(--muted-foreground)); + font-size: 0.875rem; + line-height: 1.4; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} + .badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; - font-size: 0.875rem; + font-size: 0.75rem; font-weight: 500; background: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); - margin: 0.25rem; - transition: background-color 0.3s ease, color 0.3s ease; -} - -.stat { - display: flex; - align-items: center; - gap: 0.5rem; - color: hsl(var(--muted-foreground)); - font-size: 0.875rem; - transition: color 0.3s ease; -} - -.tag { - display: inline-flex; - align-items: center; - padding: 0.25rem 0.75rem; - border-radius: 9999px; - font-size: 0.875rem; - background: hsl(var(--secondary)); - color: hsl(var(--secondary-foreground)); - margin: 0.25rem; - transition: background-color 0.3s ease, color 0.3s ease; -} - -code { - font-family: ui-monospace, monospace; - background: hsl(var(--secondary)); - padding: 0.25rem 0.5rem; - border-radius: calc(var(--radius) - 0.25rem); - font-size: 0.875rem; - transition: background-color 0.3s ease; -} - -h2 { - font-size: 1.25rem; - font-weight: 600; - margin-bottom: 1rem; - color: hsl(var(--foreground)); - transition: color 0.3s ease; -} - -h3 { - font-size: 1rem; - font-weight: 600; - margin-bottom: 0.5rem; - margin-top: 1rem; - color: hsl(var(--foreground)); - transition: color 0.3s ease; -} - -.content { - display: grid; - gap: 0.75rem; - color: hsl(var(--foreground)); - transition: color 0.3s ease; -} - -.content a { - color: hsl(var(--primary)); - text-decoration: none; - transition: color 0.3s ease; -} - -.content a:hover { - text-decoration: underline; -} - -/* Theme Toggle */ -.theme-toggle { - position: fixed; - top: 1rem; - right: 1rem; - padding: 0.5rem; - border-radius: var(--radius); - background: hsl(var(--card)); - border: 1px solid hsl(var(--border)); - color: hsl(var(--foreground)); - cursor: pointer; transition: all 0.3s ease; } -.theme-toggle:hover { - background: hsl(var(--accent)); - color: hsl(var(--accent-foreground)); +.badge-secondary { + background: hsl(var(--secondary)); + color: hsl(var(--secondary-foreground)); } /* Loading state */ #loading { - text-align: center; - padding: 3rem; + display: flex; + align-items: center; + justify-content: center; + min-height: 20rem; color: hsl(var(--muted-foreground)); + font-size: 1.125rem; transition: color 0.3s ease; } @@ -233,9 +284,18 @@ h3 { .grid-cols-2 { grid-template-columns: 1fr; } - - .theme-toggle { - top: auto; - bottom: 1rem; + + .header-banner { + height: 12rem; + } + + .header-content { + flex-direction: column; + align-items: center; + text-align: center; + } + + .plugin-grid { + grid-template-columns: 1fr; } } \ No newline at end of file diff --git a/index.html b/index.html index 5f54f92..93c2976 100644 --- a/index.html +++ b/index.html @@ -24,74 +24,110 @@
Loading repository data...