Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .astro/data-store.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.3.0","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[]},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":\"shiki\",\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"responsiveImages\":false,\"serializeConfig\":false},\"legacy\":{\"collections\":false}}"]
[["Map",1,2],"meta::meta",["Map",3,4,5,6],"astro-version","5.18.1","astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":true},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"actionBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"headingIdCompat\":false,\"preserveScriptOrder\":false,\"liveContentCollections\":false,\"csp\":false,\"staticImportMetaEnv\":false,\"chromeDevtoolsWorkspace\":false,\"failOnPrerenderConflict\":false,\"svgo\":false},\"legacy\":{\"collections\":false}}"]
2 changes: 1 addition & 1 deletion .astro/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"_variables": {
"lastUpdateCheck": 1759260475499
"lastUpdateCheck": 1777380175180
}
}
1 change: 0 additions & 1 deletion .astro/types.d.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
/// <reference types="astro/client" />
/// <reference path="content.d.ts" />
6 changes: 4 additions & 2 deletions src/components/App.astro
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,19 @@ import SocialShare from './SocialShare.astro';

<style>
.App {
background-color: #0a0a0a;
background-color: var(--bg-primary);
text-align: center;
display: flex;
justify-content: center;
flex-direction: column;
min-height: 100vh;
transition: background-color 0.3s ease;
}

.App-header {
padding: 20px;
color: white;
color: var(--text-primary);
transition: color 0.3s ease;
}

.App-header a {
Expand Down
126 changes: 126 additions & 0 deletions src/components/DarkModeToggle.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
// Dark mode toggle component
---

<button class="dark-mode-toggle" id="darkModeToggle" aria-label="Toggle dark mode">
<svg class="sun-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
<svg class="moon-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
</button>

<script>
// Initialize dark mode
function initDarkMode() {
const toggle = document.getElementById('darkModeToggle');
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)');

// Check localStorage or system preference
const isDarkMode = localStorage.getItem('darkMode') === 'true' ||
(localStorage.getItem('darkMode') === null && prefersDark.matches);

if (isDarkMode) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}

// Toggle dark mode on button click
toggle?.addEventListener('click', () => {
const isDark = document.documentElement.classList.toggle('dark');
localStorage.setItem('darkMode', isDark);
});

// Listen for system preference changes
prefersDark.addEventListener('change', (e) => {
if (localStorage.getItem('darkMode') === null) {
if (e.matches) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
}
});
}

// Run on page load
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initDarkMode);
} else {
initDarkMode();
}
</script>

<style>
.dark-mode-toggle {
background: none;
border: none;
color: var(--text-primary);
cursor: pointer;
padding: 0.5rem;
display: flex;
align-items: center;
justify-content: center;
border-radius: 8px;
transition: background-color 0.3s ease, color 0.3s ease;
width: 40px;
height: 40px;
}

.dark-mode-toggle:hover {
background-color: rgba(0, 0, 0, 0.1);
}

:global(.dark) .dark-mode-toggle:hover {
background-color: rgba(255, 255, 255, 0.1);
}

.dark-mode-toggle svg {
width: 24px;
height: 24px;
position: absolute;
transition: opacity 0.3s ease, transform 0.3s ease;
}

.sun-icon {
opacity: 1;
transform: rotate(0deg);
}

.moon-icon {
opacity: 0;
transform: rotate(-180deg);
}

:global(.dark) .sun-icon {
opacity: 0;
transform: rotate(180deg);
}

:global(.dark) .moon-icon {
opacity: 1;
transform: rotate(0deg);
}

@media (max-width: 768px) {
.dark-mode-toggle {
width: 36px;
height: 36px;
}

.dark-mode-toggle svg {
width: 20px;
height: 20px;
}
}
</style>
75 changes: 46 additions & 29 deletions src/components/IssueList.astro
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,15 @@ if (repoInfo) {
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid rgba(255, 255, 255, 0.1);
transition: border-color 0.3s ease;
}

:global(.dark) .Card-Issues {
border-top-color: rgba(255, 255, 255, 0.1);
}

:global:not(.dark) .Card-Issues {
border-top-color: rgba(0, 0, 0, 0.1);
}

.Issues-Header {
Expand All @@ -164,7 +173,7 @@ if (repoInfo) {
.Issues-Title {
font-size: 0.9rem;
font-weight: 600;
color: rgba(255, 255, 255, 0.9);
color: var(--text-primary);
margin: 0;
}

Expand Down Expand Up @@ -193,26 +202,26 @@ if (repoInfo) {
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
text-decoration: none;
color: inherit;
color: var(--text-primary);
transition: all 0.2s ease;
gap: 0.75rem;
}

.Issue-Card:hover {
background: rgba(255, 255, 255, 0.08);
border-color: rgba(102, 126, 234, 0.3);
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
:global(.dark) .Issue-Card {
background: rgba(255, 255, 255, 0.05);
border-color: rgba(255, 255, 255, 0.1);
}

.Issue-Content {
flex: 1;
min-width: 0;
:global:not(.dark) .Issue-Card {
background: rgba(0, 0, 0, 0.03);
border-color: rgba(0, 0, 0, 0.1);
}

.Issue-Title {
font-size: 0.85rem;
color: rgba(255, 255, 255, 0.95);
.Issue-Card:hover {
background: rgba(255, 255, 255, 0.08);
border-color: rgba(102, 126, 234, 0.3);
transform: translateY(-1px);
box-shavar(--text-primary);
margin: 0 0 0.5rem 0;
line-height: 1.4;
display: -webkit-box;
Expand All @@ -227,6 +236,25 @@ if (repoInfo) {
gap: 0.75rem;
align-items: center;
font-size: 0.75rem;
color: var(--text-secondary);
}

.Issue-Number {
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
background: rgba(255, 255, 255, 0.1);
padding: 0.125rem 0.375rem;
border-radius: 6px;
font-size: 0.7rem;
transition: background-color 0.3s ease;
}

:global(.dark) .Issue-Number {
background: rgba(255, 255, 255, 0.1);
}

:global:not(.dark) .Issue-Number {
background: rgba(0, 0, 0, 0.1)er;
font-size: 0.75rem;
color: rgba(255, 255, 255, 0.6);
}

Expand Down Expand Up @@ -264,25 +292,14 @@ if (repoInfo) {
}

.Issue-Label.help-wanted {
background: linear-gradient(135deg, rgba(59, 130, 246, 0.2) 0%, rgba(59, 130, 246, 0.1) 100%);
color: #60a5fa;
border: 1px solid rgba(59, 130, 246, 0.3);
box-shadow: 0 2px 4px rgba(59, 130, 246, 0.1);
}

.no-issues {
text-align: center;
padding: 2rem 1rem;
color: rgba(255, 255, 255, 0.6);
}

.no-issues-icon {
font-size: 2rem;
margin-bottom: 0.75rem;
opacity: 0.7;
backgrovar(--text-secondary);
}

.no-issues-text {
font-size: 0.9rem;
font-weight: 500;
margin-bottom: 0.25rem;
color: var(--text-primary)t {
font-size: 0.9rem;
font-weight: 500;
margin-bottom: 0.25rem;
Expand Down
48 changes: 39 additions & 9 deletions src/components/Navbar.astro
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
---
// Navbar component for social links
import DarkModeToggle from './DarkModeToggle.astro';
---

<div class="topnav">
<a href="https://join.slack.com/t/firstcontributors/shared_invite/zt-1n4y7xnk0-DnLVTaN6U9xLU79H5Hi62w" target="_blank" rel="noopener noreferrer">
<img src="/slack.svg" class="logo" alt="slack logo" />
<span>Slack</span>
</a>
<div class="nav-links">
<a href="https://join.slack.com/t/firstcontributors/shared_invite/zt-1n4y7xnk0-DnLVTaN6U9xLU79H5Hi62w" target="_blank" rel="noopener noreferrer">
<img src="/slack.svg" class="logo" alt="slack logo" />
<span>Slack</span>
</a>
<a href="https://www.youtube.com/channel/UCMXNFxCvyH5LhUwEcmY8qGQ" target="_blank" rel="noopener noreferrer">
<img src="/youtube.svg" class="logo" alt="youtube logo" />
<span>Youtube</span>
Expand All @@ -19,32 +21,56 @@
<img src="/github.svg" class="logo" alt="github logo" />
<span>GitHub</span>
</a>
</div>
<DarkModeToggle />
</div>

<style>
.topnav {
display: flex;
justify-content: center;
justify-content: space-between;
align-items: center;
gap: 2rem;
padding: 1rem;
background-color: rgba(255, 255, 255, 0.1);
background-color: rgba(255, 255, 255, 0.08);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
transition: all 0.3s ease;
}

:global:not(.dark) .topnav {
background-color: rgba(0, 0, 0, 0.05);
border-bottom-color: rgba(0, 0, 0, 0.1);
}

:global(.dark) .topnav {
background-color: rgba(0, 0, 0, 0.3);
border-bottom-color: rgba(255, 255, 255, 0.1);
}

.nav-links {
display: flex;
justify-content: center;
align-items: center;
gap: 2rem;
flex: 1;
}

.topnav a {
display: flex;
align-items: center;
gap: 0.5rem;
color: white;
color: var(--text-primary);
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 8px;
transition: background-color 0.3s ease;
}

.topnav a:hover {
background-color: rgba(0, 0, 0, 0.1);
}

:global(.dark) .topnav a:hover {
background-color: rgba(255, 255, 255, 0.1);
}

Expand All @@ -55,10 +81,14 @@

@media (max-width: 768px) {
.topnav {
gap: 1rem;
gap: 0.5rem;
padding: 0.5rem;
}

.nav-links {
gap: 1rem;
}

.topnav a {
padding: 0.25rem 0.5rem;
}
Expand Down
Loading