diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..72b9ba3 --- /dev/null +++ b/contact.html @@ -0,0 +1,80 @@ + + + + + + DevsCreate - Contact + + + + + + + + + +
+
+ +
+ +
+
+ +
+ +
+
+

Get in touch

+

Connect with us through our social channels and community platforms.

+ +
+

Discord Server

+

Join our community of developers

+ discord.gg/devscreate +
+ +
+

GitHub

+

Check out our open source projects

+ github.com/TheDevsCreate +
+
+ +
+
+
+
+
+
+
+
+ Daylight +
+
+ Midnight +
+
+
+
+ + +
+ + + diff --git a/css/app.css b/css/app.css index 6370418..5175d26 100644 --- a/css/app.css +++ b/css/app.css @@ -1,22 +1,28 @@ :root { - --bg: #f6f6f9; + --bg: #f0f4f8; --bg-accent: rgba(255, 255, 255, 0.5); - --text: #0b0d18; - --muted: #5a5e73; - --accent: #5d5fef; - --glow: rgba(93, 95, 239, 0.35); + --text: #0a1929; + --muted: #4a5a6a; + --accent: #1e88e5; + --glow: rgba(30, 136, 229, 0.35); } [data-theme="dark"] { - --bg: #080914; - --bg-accent: rgba(11, 13, 24, 0.75); - --text: #f9fbff; - --muted: #b4b8d0; - --accent: #f7a76c; - --glow: rgba(247, 167, 108, 0.4); + --bg: #0a1929; + --bg-accent: rgba(10, 25, 41, 0.75); + --text: #f0f7ff; + --muted: #a0b4c8; + --accent: #42a5f5; + --glow: rgba(66, 165, 245, 0.4); } + + html { + overflow: auto; + max-height: 100vh; + } + * { box-sizing: border-box; margin: 0; @@ -63,7 +69,8 @@ justify-content: space-between; margin-bottom: 3rem; position: relative; - z-index: 2; + z-index: 10000; + gap: 1rem; } .logo { @@ -71,6 +78,98 @@ font-size: 1.25rem; letter-spacing: 0.08em; text-transform: uppercase; + flex-shrink: 0; + } + + .search-container { + position: relative; + flex: 1; + max-width: 400px; + z-index: 10000; + } + + .search-input { + width: 100%; + padding: 0.6rem 1rem; + border-radius: 20px; + border: 1px solid rgba(255, 255, 255, 0.1); + background: var(--bg); + color: var(--text); + font-family: 'Space Grotesk', sans-serif; + font-size: 0.95rem; + transition: border-color 0.2s, box-shadow 0.2s; + outline: none; + } + + .search-input:focus { + border-color: var(--accent); + box-shadow: 0 0 0 2px rgba(30, 136, 229, 0.1); + } + + [data-theme="dark"] .search-input:focus { + box-shadow: 0 0 0 2px rgba(66, 165, 245, 0.1); + } + + .search-results { + position: absolute; + top: calc(100% + 0.5rem); + left: 0; + right: 0; + background: var(--bg-accent); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 16px; + max-height: 400px; + overflow-y: auto; + display: none; + box-shadow: 0 10px 40px rgba(3, 7, 18, 0.25); + backdrop-filter: blur(30px); + -webkit-backdrop-filter: blur(30px); + z-index: 9999; + } + + .search-results.show { + display: block; + } + + .search-result-item { + padding: 0.75rem 1rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + cursor: pointer; + transition: background 0.2s; + } + + .search-result-item:last-child { + border-bottom: none; + } + + .search-result-item:hover { + background: rgba(255, 255, 255, 0.05); + } + + .search-result-page { + font-size: 0.85rem; + color: var(--accent); + font-weight: 500; + margin-bottom: 0.25rem; + } + + .search-result-text { + font-size: 0.9rem; + color: var(--muted); + } + + .search-result-highlight { + background: var(--accent); + color: white; + padding: 0.1rem 0.2rem; + border-radius: 3px; + } + + .search-no-results { + padding: 1rem; + text-align: center; + color: var(--muted); + font-size: 0.9rem; } .toggle { @@ -149,7 +248,7 @@ backdrop-filter: blur(20px); } - .card + .card { + .hero-text .card + .card { margin-top: 1.2rem; } @@ -172,14 +271,14 @@ cursor: pointer; font-size: 1rem; letter-spacing: 0.02em; - box-shadow: 0 20px 40px rgba(93, 95, 239, 0.35); + box-shadow: 0 20px 40px rgba(30, 136, 229, 0.35); transition: transform 250ms ease, box-shadow 250ms ease; overflow: hidden; isolation: isolate; } [data-theme="dark"] .goo-btn { - box-shadow: 0 20px 50px rgba(247, 167, 108, 0.35); + box-shadow: 0 20px 50px rgba(66, 165, 245, 0.35); } .goo-btn::before, @@ -205,11 +304,11 @@ .goo-btn:hover { transform: translateY(-2px); - box-shadow: 0 25px 55px rgba(93, 95, 239, 0.45); + box-shadow: 0 25px 55px rgba(30, 136, 229, 0.45); } [data-theme="dark"] .goo-btn:hover { - box-shadow: 0 25px 55px rgba(247, 167, 108, 0.45); + box-shadow: 0 25px 55px rgba(66, 165, 245, 0.45); } .hero-actions span { @@ -240,13 +339,13 @@ } .swatch.light { - background: linear-gradient(135deg, #f6f6f9, #d3def8); - color: #0b0d18; + background: linear-gradient(135deg, #e3f2fd, #90caf9); + color: #0a1929; } .swatch.dark { - background: linear-gradient(135deg, #070a1a, #1b1f3a); - color: #f9fbff; + background: linear-gradient(135deg, #0a1929, #1e3a5f); + color: #f0f7ff; } .illustration { @@ -278,7 +377,7 @@ width: 70px; height: 70px; border-radius: 50%; - background: radial-gradient(circle at 30% 30%, #fff1d0, #f0b67f); + background: radial-gradient(circle at 30% 30%, #e3f2fd, #42a5f5); top: -35px; left: 50%; transform: translateX(-50%); @@ -306,7 +405,7 @@ left: -10%; width: 140%; height: 80%; - background: radial-gradient(circle at 50% 20%, rgba(255, 214, 164, 0.7), transparent 60%); + background: radial-gradient(circle at 50% 20%, rgba(100, 181, 246, 0.7), transparent 60%); transition: transform 800ms ease, opacity 800ms ease; } @@ -340,4 +439,104 @@ 100% { transform: scale(1) translate(-10%, -8%); } + } + + /* Team page styles */ + #team-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1.5rem; + margin-top: 2rem; + } + + .card.team-card { + text-align: center; + padding: 2rem 1rem !important; + min-height: 280px; + height: 100%; + margin: 0 !important; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + + .team-avatar { + width: 120px; + height: 120px; + border-radius: 50%; + object-fit: cover; + margin: 0 auto; + display: block; + flex-shrink: 0; + } + + .team-name { + margin-top: 1rem; + font-size: 1.1rem; + } + + .team-role { + margin-top: 0.5rem; + opacity: 0.8; + font-size: 0.9rem; + color: var(--muted); + } + + /* Contact page styles */ + .contact-card { + margin-top: 1.2rem; + } + + .contact-card p:first-child { + margin-bottom: 0.5rem; + } + + .contact-card p:nth-child(2) { + font-size: 0.95rem; + margin-bottom: 0.75rem; + } + + .contact-link { + color: var(--accent); + text-decoration: none; + font-weight: 500; + transition: opacity 0.2s; + display: inline-block; + } + + .contact-link:hover { + opacity: 0.8; + } + + /* Footer styles */ + footer { + padding: 2rem; + text-align: center; + margin-top: auto; + } + + .footer-nav { + display: flex; + gap: 2rem; + justify-content: center; + align-items: center; + } + + .nav-link { + color: inherit; + text-decoration: none; + opacity: 0.8; + transition: opacity 0.2s; + font-weight: 500; + } + + .nav-link:hover:not(.active) { + opacity: 1; + } + + .nav-link.active { + color: var(--accent); + opacity: 1; + cursor: default; } \ No newline at end of file diff --git a/index.html b/index.html index 63ce232..e08f4d1 100644 --- a/index.html +++ b/index.html @@ -7,15 +7,19 @@ - - - + + +
+
+ +
+
- Over idk devs online right now +
@@ -58,6 +62,18 @@

A discord server for developers, not like any other!

+ + diff --git a/js/app.js b/js/app.js new file mode 100644 index 0000000..00ff56b --- /dev/null +++ b/js/app.js @@ -0,0 +1,227 @@ + const root = document.documentElement; + const toggle = document.getElementById('theme-toggle'); + const thumb = toggle.querySelector('.toggle-thumb'); + const label = toggle.querySelector('span'); + + const setTheme = mode => { + root.setAttribute('data-theme', mode); + const isDark = mode === 'dark'; + toggle.setAttribute('aria-pressed', isDark); + thumb.textContent = isDark ? '🌙' : '☀️'; + label.textContent = isDark ? 'Dark' : 'Light'; + localStorage.setItem('lumen-theme', mode); + }; + + const stored = localStorage.getItem('lumen-theme'); + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; + setTheme(stored || (prefersDark ? 'dark' : 'light')); + + toggle.addEventListener('click', () => { + const next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; + setTheme(next); + }); + + +const discordMembers = async ({ server }) => { + try { + const response = await fetch(`https://discord.com/api/v9/invites/${server}?with_counts=true&with_expiration=true`); + const data = await response.json(); + + // Get the member counts + const memberCount = data.approximate_member_count; + const onlineCount = data.approximate_presence_count; + + // Display the count on the page + const heroActions = document.querySelector('.hero-actions'); + const memberDisplay = document.createElement('div'); + memberDisplay.className = 'member-count'; + memberDisplay.innerHTML = ` +

+ 👥 ${memberCount.toLocaleString()} members • + 🟢 ${onlineCount.toLocaleString()} online +

+ `; + heroActions.appendChild(memberDisplay); + + } catch (err) { + console.error('Failed to fetch Discord member count:', err); + } +} + +if (document.querySelector('.hero-actions')) { + discordMembers({ server: 'devscreate' }); +} + +// Team members functionality +// To get avatar URLs: +// 1. Right-click on user's avatar in Discord (browser version) +// 2. Click "Copy Image Address" or "Open Image in New Tab" +// 3. Paste the URL in avatarUrl field below +const teamMembers = [ + { + name: 'Alexx', + avatarUrl: 'https://cdn.discordapp.com/avatars/1144267370769174608/ca49e2a83bab3d72cb1829591036209b.webp', + role: 'Founder', + roleColor: '#ff0000' // Replace with actual Discord role color + }, + { + name: 'ブルータス', + avatarUrl: 'https://cdn.discordapp.com/avatars/1419447976107184128/6091dae2b44a70a8d5ee02d06424db53.webp', + role: 'Owner', + roleColor: '#0086e6' // Replace with actual Discord role color + }, + { + name: 'kbzx4', + avatarUrl: 'https://cdn.discordapp.com/avatars/1339302301940322344/893a65951cd91dac07fac9ea93c6f243.webp', + role: 'Management', + roleColor: '#0080db' // Replace with actual Discord role color + }, + { + name: 'ItzTreaty', + avatarUrl: 'https://cdn.discordapp.com/avatars/876980860769955891/23c8abf6a0a10023cb8e8a1a7323f65a.webp', + role: 'Management', + roleColor: '#0080db' // Replace with actual Discord role color + }, + { + name: 'Chara', + avatarUrl: 'https://cdn.discordapp.com/avatars/1341372348741324801/ecf2e90e3cf5fb0488cc96e3db48fbf4.webp', + role: 'Management', + roleColor: '#0080db' // Replace with actual Discord role color + }, + { + name: 'AFK / cm | averydoesmagic 🔥 105', + avatarUrl: 'https://cdn.discordapp.com/avatars/567185519063203846/8125888cf7952d1e7168135ed59b2f4f.webp', + role: 'Management', + roleColor: '#0080db' // Replace with actual Discord role color + }, + { + name: 'wintercoder1', + avatarUrl: 'https://cdn.discordapp.com/avatars/983692760072745020/74b7f4384209d260797538f40953e02e.webp', + role: 'Administrator', + roleColor: '#0095ff' // Replace with actual Discord role color + } +]; + +async function loadTeamMembers() { + const grid = document.getElementById('team-grid'); + if (!grid) return; + + for (const member of teamMembers) { + try { + const card = document.createElement('div'); + card.className = 'card team-card'; + + // Use provided avatar URL or fallback to placeholder + const avatarUrl = member.avatarUrl && member.avatarUrl.trim() !== '' + ? member.avatarUrl + : 'https://cdn.discordapp.com/embed/avatars/0.png'; + + card.innerHTML = ` + ${member.name} +

${member.name}

+

${member.role}

+ `; + + grid.appendChild(card); + } catch (err) { + console.error('Failed to load team member:', err); + } + } +} + +if (document.getElementById('team-grid')) { + loadTeamMembers(); +} + +// Search functionality +const pages = [ + { + title: 'Home', + url: 'index.html', + content: [ + 'A discord server for developers, not like any other!', + 'We are a community of developers who are passionate about learning and sharing our knowledge with others.', + 'Diverse - We have a variety of channels for different languages and frameworks.', + 'Helpful - We are always here to help you with your projects and questions.', + 'Join the server' + ] + }, + { + title: 'Team', + url: 'team.html', + content: [ + 'Our team', + 'Meet the people behind DevsCreate.', + ...teamMembers.map(m => `${m.name} - ${m.role}`) + ] + }, + { + title: 'Contact', + url: 'contact.html', + content: [ + 'Get in touch', + 'Connect with us through our social channels and community platforms.', + 'Discord Server - Join our community of developers', + 'GitHub - Check out our open source projects' + ] + } +]; + +const searchInput = document.getElementById('search-input'); +const searchResults = document.getElementById('search-results'); + +if (searchInput && searchResults) { + searchInput.addEventListener('input', (e) => { + const query = e.target.value.trim().toLowerCase(); + + if (query.length < 2) { + searchResults.classList.remove('show'); + return; + } + + const results = []; + + pages.forEach(page => { + page.content.forEach(text => { + if (text.toLowerCase().includes(query)) { + results.push({ page: page.title, url: page.url, text }); + } + }); + }); + + if (results.length === 0) { + searchResults.innerHTML = '
No results found
'; + searchResults.classList.add('show'); + return; + } + + const highlightQuery = (text, query) => { + const regex = new RegExp(`(${query})`, 'gi'); + return text.replace(regex, '$1'); + }; + + searchResults.innerHTML = results + .slice(0, 10) + .map(result => ` +
+
${result.page}
+
${highlightQuery(result.text, query)}
+
+ `) + .join(''); + + searchResults.classList.add('show'); + }); + + // Close search results when clicking outside + document.addEventListener('click', (e) => { + if (!e.target.closest('.search-container')) { + searchResults.classList.remove('show'); + } + }); + + // Prevent closing when clicking inside search container + searchInput.addEventListener('click', (e) => { + e.stopPropagation(); + }); +} \ No newline at end of file diff --git a/js/index.js b/js/index.js deleted file mode 100644 index 6902b5f..0000000 --- a/js/index.js +++ /dev/null @@ -1,22 +0,0 @@ - const root = document.documentElement; - const toggle = document.getElementById('theme-toggle'); - const thumb = toggle.querySelector('.toggle-thumb'); - const label = toggle.querySelector('span'); - - const setTheme = mode => { - root.setAttribute('data-theme', mode); - const isDark = mode === 'dark'; - toggle.setAttribute('aria-pressed', isDark); - thumb.textContent = isDark ? '🌙' : '☀️'; - label.textContent = isDark ? 'Dark' : 'Light'; - localStorage.setItem('lumen-theme', mode); - }; - - const stored = localStorage.getItem('lumen-theme'); - const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; - setTheme(stored || (prefersDark ? 'dark' : 'light')); - - toggle.addEventListener('click', () => { - const next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light'; - setTheme(next); - }); \ No newline at end of file diff --git a/team.html b/team.html new file mode 100644 index 0000000..f7d879d --- /dev/null +++ b/team.html @@ -0,0 +1,56 @@ + + + + + + DevsCreate - Team + + + + + + + + + +
+
+ +
+ +
+
+ +
+ +
+
+

Our team

+

Meet the people behind DevsCreate.

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