diff --git a/assets/style.css b/assets/style.css index 9bdb99c..0407264 100644 --- a/assets/style.css +++ b/assets/style.css @@ -1,6 +1,13 @@ -/* Base styles */ +/* Reset */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +/* Variables */ :root { - /* Light mode colors */ + /* Colors */ --background: 200 30% 97%; --foreground: 200 50% 20%; --card: 0 0% 100%; @@ -10,9 +17,28 @@ --muted: 200 30% 96%; --muted-foreground: 200 30% 40%; --border: 200 30% 90%; - --radius: 0.75rem; + + /* Spacing */ + --space-1: 0.25rem; + --space-2: 0.5rem; + --space-3: 0.75rem; + --space-4: 1rem; + --space-5: 1.25rem; + --space-6: 1.5rem; + --space-8: 2rem; + --space-10: 2.5rem; + --space-12: 3rem; + + /* Radius */ + --radius-sm: 0.375rem; + --radius-md: 0.5rem; + --radius-lg: 0.75rem; + + /* Container */ + --container-width: 64rem; } +/* Dark mode */ @media (prefers-color-scheme: dark) { :root { --background: 200 30% 8%; @@ -27,18 +53,17 @@ } } -/* Reset */ -* { - margin: 0; - padding: 0; - box-sizing: border-box; -} - -/* Global styles */ -body { +/* Base styles */ +html { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; line-height: 1.5; + -webkit-text-size-adjust: 100%; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { color: hsl(var(--foreground)); background: hsl(var(--background)); min-height: 100vh; @@ -46,71 +71,193 @@ body { isolation: isolate; } -/* Background Elements */ +/* Background */ body::before { content: ''; - position: absolute; + position: fixed; inset: 0; - z-index: -1; - background: linear-gradient(to bottom, - hsl(var(--background)), - hsl(var(--primary) / 0.1), + z-index: -2; + background: linear-gradient( + to bottom, + hsl(var(--background)), + hsl(var(--primary) / 0.1), hsl(var(--background)) ); } body::after { content: ''; - position: absolute; + position: fixed; inset: 0; z-index: -1; opacity: 0.35; background-image: radial-gradient( - circle at 1px 1px, - hsl(var(--primary) / 0.5) 1px, + circle at 1px 1px, + hsl(var(--primary) / 0.5) 1px, transparent 0 ); background-size: 32px 32px; mask-image: linear-gradient( - to bottom, - transparent, - black 10%, - black 90%, + to bottom, + transparent, + black 10%, + black 90%, transparent ); } -/* Layout */ +/* Grid System */ .container { - max-width: 64rem; - margin: 0 auto; - padding: 2rem 1.5rem; -} - -.content { - display: flex; - flex-direction: column; - gap: 2rem; -} - -.main { - display: flex; - flex-direction: column; - gap: 2rem; + width: min(var(--container-width), 100% - var(--space-8)); + margin-inline: auto; + padding-block: var(--space-8); } .grid { display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 2rem; + gap: var(--space-6); } +.grid-cols-1 { grid-template-columns: repeat(1, 1fr); } +.grid-cols-2 { grid-template-columns: repeat(2, 1fr); } +.grid-cols-3 { grid-template-columns: repeat(3, 1fr); } +.grid-cols-4 { grid-template-columns: repeat(4, 1fr); } + @media (max-width: 768px) { - .grid { + .grid-cols-2, + .grid-cols-3, + .grid-cols-4 { grid-template-columns: 1fr; } } +/* Card Components */ +.card { + position: relative; + background: hsl(var(--card) / 0.5); + border: 1px solid hsl(var(--border)); + border-radius: var(--radius-lg); + overflow: hidden; + backdrop-filter: blur(8px); +} + +.card-header { + padding: var(--space-6); + border-bottom: 1px solid hsl(var(--border)); +} + +.card-title { + font-size: 1.25rem; + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.025em; +} + +.card-description { + margin-top: var(--space-2); + font-size: 0.875rem; + color: hsl(var(--muted-foreground)); +} + +.card-content { + padding: var(--space-6); +} + +/* Typography */ +h1 { + font-size: 2rem; + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.025em; +} + +h2 { + font-size: 1.5rem; + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.025em; +} + +h3 { + font-size: 1.25rem; + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.025em; +} + +/* Icons */ +.icon { + width: 1.25rem; + height: 1.25rem; + stroke: currentColor; + stroke-width: 2; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; +} + +/* Badges */ +.badge { + display: inline-flex; + align-items: center; + height: 1.5rem; + padding: 0 var(--space-3); + font-size: 0.75rem; + font-weight: 500; + line-height: 1; + border-radius: 9999px; + background: hsl(var(--primary)); + color: hsl(var(--primary-foreground)); + white-space: nowrap; +} + +.badge-secondary { + background: hsl(var(--muted)); + color: hsl(var(--muted-foreground)); +} + +/* Loading State */ +.loading { + display: flex; + align-items: center; + justify-content: center; + min-height: 20rem; + font-size: 1rem; + color: hsl(var(--muted-foreground)); +} + +/* Utilities */ +.hidden { + display: none; +} + +.flex { + display: flex; +} + +.items-center { + align-items: center; +} + +.justify-between { + justify-content: space-between; +} + +.gap-2 { gap: var(--space-2); } +.gap-3 { gap: var(--space-3); } +.gap-4 { gap: var(--space-4); } +.gap-6 { gap: var(--space-6); } + +.mb-2 { margin-bottom: var(--space-2); } +.mb-4 { margin-bottom: var(--space-4); } +.mb-6 { margin-bottom: var(--space-6); } +.mb-8 { margin-bottom: var(--space-8); } + +.mt-2 { margin-top: var(--space-2); } +.mt-4 { margin-top: var(--space-4); } +.mt-6 { margin-top: var(--space-6); } +.mt-8 { margin-top: var(--space-8); } + /* Header */ .header { text-align: center; @@ -124,14 +271,14 @@ body::after { padding: 1.5rem 2rem; background: hsl(var(--card) / 0.5); border: 1px solid hsl(var(--border)); - border-radius: var(--radius); + border-radius: var(--radius-lg); backdrop-filter: blur(8px); } .header-icon { width: 4rem; height: 4rem; - border-radius: var(--radius); + border-radius: var(--radius-lg); object-fit: contain; background: hsl(var(--muted)); padding: 0.5rem; @@ -158,7 +305,7 @@ body::after { .banner { width: 100%; height: 16rem; - border-radius: var(--radius); + border-radius: var(--radius-lg); object-fit: cover; border: 1px solid hsl(var(--border)); background: hsl(var(--muted)); @@ -178,7 +325,7 @@ body::after { padding: 1.5rem; background: hsl(var(--card) / 0.5); border: 1px solid hsl(var(--border)); - border-radius: var(--radius); + border-radius: var(--radius-lg); backdrop-filter: blur(8px); } @@ -205,25 +352,6 @@ body::after { line-height: 1; } -/* Cards */ -.card { - background: hsl(var(--card) / 0.5); - border: 1px solid hsl(var(--border)); - border-radius: var(--radius); - backdrop-filter: blur(8px); -} - -.card-title { - padding: 1.5rem; - font-size: 1.25rem; - font-weight: 600; - border-bottom: 1px solid hsl(var(--border)); -} - -.card-content { - padding: 1.5rem; -} - /* Info Lists */ .info-list { display: flex; @@ -300,7 +428,6 @@ body::after { gap: 0.5rem; } -.badge, .tag { display: inline-flex; align-items: center; @@ -314,29 +441,11 @@ body::after { white-space: nowrap; } -.badge { - background: hsl(var(--primary)); - color: hsl(var(--primary-foreground)); -} - /* Code */ code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.875rem; background: hsl(var(--muted)); padding: 0.25rem 0.5rem; - border-radius: calc(var(--radius) - 0.25rem); -} - -/* Loading State */ -.loading { - text-align: center; - padding: 3rem; - color: hsl(var(--muted-foreground)); - font-size: 1.125rem; -} - -/* Utilities */ -.hidden { - display: none; + border-radius: calc(var(--radius-lg) - 0.25rem); } \ No newline at end of file diff --git a/index.html b/index.html index d7d26e8..6a002f9 100644 --- a/index.html +++ b/index.html @@ -10,158 +10,181 @@
Loading repository data...
- - - -
-
-
- - - - -
-
Available Plugins
-
0
-
+ +
+
+
+

Statistics

+

Repository information and metrics

-
- -
-
-

Author

-
-
-
- - - - -
-
Name
-
-
-
- - - - -
-
-
- -
-

Compatibility

-
-
-
-
- - - - -

HRIStudio

-
- -
- - - - -
-
Min Version
- -
-
- - -
- - -
-
-
-
- -
-

Tags

-
+
+
+ + + + +
+
Available Plugins
+
0
+
+
+
-
-
+
+ + + +
+ +
+
+

Author

+

Repository maintainer information

+
+
+
+
+ + + + +
+
Name
+
+
+
+ + + + +
+
+
+ + +
+
+

Compatibility

+

Version requirements and support

+
+
+
+ +
+
+ + + + +

HRIStudio

+
+ +
+ + + + +
+
Min Version
+ +
+
+ + +
+ + + +
+
+
+
+ + +
+
+

Tags

+

Repository categories and features

+
+
+
+
+
@@ -204,9 +227,8 @@ const distributionsDiv = document.getElementById('ros2Distributions'); data.compatibility.ros2.distributions.forEach(dist => { const badge = document.createElement('span'); - badge.className = 'badge secondary'; + badge.className = 'badge'; badge.textContent = dist; - badge.style.marginRight = '0.5rem'; distributionsDiv.appendChild(badge); }); @@ -220,7 +242,7 @@ const tagsContainer = document.getElementById('tags'); data.tags.forEach(tag => { const badge = document.createElement('span'); - badge.className = 'tag'; + badge.className = 'badge badge-secondary'; badge.textContent = tag; tagsContainer.appendChild(badge); }); @@ -232,12 +254,6 @@ iconImg.classList.remove('hidden'); } - if (data.assets?.banner) { - const banner = document.getElementById('repoBanner'); - banner.src = data.assets.banner; - banner.classList.remove('hidden'); - } - // Show content document.getElementById('loading').classList.add('hidden'); document.getElementById('content').classList.remove('hidden'); @@ -251,7 +267,4 @@ loadRepositoryData(); - - - \ No newline at end of file