Skip to content
Draft
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
1 change: 0 additions & 1 deletion src/assets/astro.svg

This file was deleted.

1 change: 0 additions & 1 deletion src/assets/background.svg

This file was deleted.

55 changes: 55 additions & 0 deletions src/components/Contributors.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
// TODO: Make this pull from GitHub
const spotlight = [
{ name: 'Mike A', role: 'Contributor • 24 PRs', avatar: 'bg-primary-fixed-dim' },
{ name: 'Suchandra S.', role: 'Dev Lead • 1 Projects', avatar: 'bg-secondary-fixed-dim' },
{ name: 'Ryan K.', role: 'Contributor • UIPA', avatar: 'bg-tertiary-fixed-dim' },
];
---

<section class="px-8 py-24 bg-inverse-surface text-inverse-on-surface relative overflow-hidden">
<div class="max-w-7xl mx-auto flex flex-col md:flex-row items-center gap-16 relative z-10">
<div class="flex-1">
<h2 class="text-5xl font-headline font-bold text-white mb-6">Our Digital Community</h2>
<p class="text-lg opacity-80 mb-10 leading-relaxed">
We are a community of over TODO: Get num of contributors: developers, designers, and organizers dedicated to civic tech.
</p>
<div class="grid grid-cols-2 gap-8">
<div>
<div class="text-5xl font-extrabold text-primary-fixed mb-2">TODO: Pull from GitHub: 1.2k+</div>
<div class="text-sm font-bold uppercase tracking-widest opacity-60">Commits this month</div>
</div>
<div>
<div class="text-5xl font-extrabold text-tertiary-fixed mb-2">48</div>
<div class="text-sm font-bold uppercase tracking-widest opacity-60">TODO: Pull from GitHub: Active Repos</div>
</div>
</div>
<div class="mt-12 flex items-center gap-4">
<button class="bg-white text-black px-6 py-3 rounded-full font-bold flex items-center gap-2">
<span class="material-symbols-outlined">terminal</span> View on GitHub
</button>
</div>
</div>

<div class="flex-1 w-full max-w-md bg-white/5 backdrop-blur-md rounded-3xl p-8 border border-white/10">
<div class="flex items-center justify-between mb-8">
<h4 class="font-bold">Contributor Spotlight</h4>
<span class="material-symbols-outlined text-secondary-fixed">stars</span>
</div>
<div class="space-y-6">
{
spotlight.map((person) => (
<div class="flex items-center gap-4">
<div class:list={['w-12 h-12 rounded-full', person.avatar]} />
<div>
<div class="font-bold text-white">{person.name}</div>
<div class="text-xs opacity-60">{person.role}</div>
</div>
</div>
))
}
</div>
</div>
</div>
<div class="absolute -bottom-24 -left-24 w-96 h-96 bg-primary/20 blur-[100px] rounded-full"></div>
</section>
34 changes: 34 additions & 0 deletions src/components/DonationCTA.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<section class="px-8 py-24">
<div
class="max-w-6xl mx-auto bg-primary-container rounded-[3rem] p-12 md:p-20 text-center relative overflow-hidden shadow-2xl shadow-primary/10"
>
<div class="relative z-10">
<h2 class="text-5xl md:text-7xl font-headline font-extrabold text-on-primary-container mb-8">
TODO: Fix this: Donate.
</h2>
<p class="text-xl text-on-primary-container/80 max-w-2xl mx-auto mb-12">
TODO: Rewrite this: Your contributions help us keep the servers running and the coffee brewing for our
volunteers. 100% of donations go directly into community tech tools.
</p>
<div class="flex flex-col sm:flex-row justify-center gap-4">
<button
class="bg-primary text-on-primary px-10 py-5 rounded-full text-xl font-bold hover:scale-105 transition-transform"
>TODO: Update this. One-Time Gift</button
>
<button
class="bg-white/40 backdrop-blur-sm text-on-primary-container px-10 py-5 rounded-full text-xl font-bold hover:bg-white/50 transition-all"
>TODO: Update this: Monthly Ohana Member</button
>
</div>
<div
class="mt-12 flex justify-center items-center gap-8 opacity-60 grayscale hover:grayscale-0 transition-all"
>
<span class="font-headline font-bold">TRUSTED BY</span>
<div class="flex gap-12 font-bold text-2xl tracking-tighter">
<span>TODO: Update this</span>
</div>
</div>
</div>
<div class="absolute -top-20 -right-20 w-96 h-96 border-[40px] border-white/10 rounded-full"></div>
</div>
</section>
55 changes: 55 additions & 0 deletions src/components/Footer.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
const columns = [
{
title: 'Connect',
links: ['Code of Conduct', 'Privacy Policy', 'GitHub', 'Volunteer Login'],
},
{
title: 'Support',
links: ['Sponsor Us', 'Merch Store', 'Contact Us'],
},
];
---

<footer
class="bg-slate-50 dark:bg-slate-950 w-full border-t border-slate-200/50 dark:border-slate-800/50 font-body text-sm"
>
<div class="grid grid-cols-1 md:grid-cols-2 gap-8 px-12 py-16 max-w-7xl mx-auto">
<div>
<div class="text-lg font-semibold text-slate-800 dark:text-slate-200 mb-4">Code with Aloha</div>
<p class="text-slate-500 mb-6 max-w-sm">
TODO: Update this
</p>
<div class="flex gap-4">
<a class="text-slate-500 hover:text-cyan-600 transition-all" href="#"
><span class="material-symbols-outlined">public</span></a
>
<a class="text-slate-500 hover:text-cyan-600 transition-all" href="#"
><span class="material-symbols-outlined">alternate_email</span></a
>
</div>
</div>
<div class="grid grid-cols-2 gap-8">
{
columns.map((col) => (
<div class="flex flex-col gap-3">
<div class="font-bold text-slate-800 dark:text-slate-200 mb-2 uppercase text-xs tracking-widest">
{col.title}
</div>
{col.links.map((link) => (
<a class="text-slate-500 hover:text-cyan-600 transition-all" href="#">
{link}
</a>
))}
</div>
))
}
</div>
</div>
<div
class="px-12 py-8 max-w-7xl mx-auto border-t border-slate-200/50 text-center md:text-left text-slate-400"
>
TOOD: Update this too
© 2026 Code with Aloha.
</div>
</footer>
41 changes: 41 additions & 0 deletions src/components/Hero.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
// TODO: Replace with url of Hero Image
const heroImage =
'';
---

<section class="relative px-8 py-20 lg:py-32 max-w-7xl mx-auto overflow-hidden">
<div class="grid lg:grid-cols-2 gap-12 items-center">
<div class="relative z-10">
<h1
class="text-6xl lg:text-8xl font-headline font-extrabold tracking-tighter text-primary leading-tight mb-6"
>
TODO: Insert tagline <br />Here.
</h1>
<p class="text-xl text-on-surface-variant max-w-lg mb-10 leading-relaxed">
In the spirit of <span class="font-bold text-tertiary italic">TODO</span>: Insert Description Here
</p>
<div class="flex flex-wrap gap-4">
<button
class="bg-primary text-on-primary px-8 py-4 rounded-full text-lg font-bold hover:scale-[1.02] transition-transform"
>Get Involved</button
>
<button
class="bg-surface-container-high text-on-surface px-8 py-4 rounded-full text-lg font-bold hover:bg-surface-container-highest transition-colors"
>Our Impact</button
>
</div>
</div>
<div class="relative lg:ml-auto w-full aspect-square md:aspect-video lg:aspect-square">
<div
class="absolute inset-0 bg-primary-container/20 rounded-[2rem] -rotate-3 translate-x-4 translate-y-4"
>
</div>
<img
alt="Image of Hawaii or Code With Aloha"
class="relative z-10 w-full h-full object-cover rounded-[2rem] shadow-2xl shadow-primary/20"
src={heroImage}
/>
</div>
</div>
</section>
115 changes: 115 additions & 0 deletions src/components/Meetup.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
// TODO: Pull from meetup or calendar?
const events = [
{
month: 'Jul',
day: '6',
title: 'Civic Tech Night: New Member Social',
detail: "6:00 PM • Entrepreneur's Sandbox",
accent: 'primary',
},
{
month: 'Aug',
day: '03',
title: 'Civic Tech Night: New Member Social',
detail: "6:00 PM• Entrepreneur's Sandbox",
accent: 'tertiary',
},
];

// TODO: Add Photos from our meetups
const columnA = [
'',
'',
'',
];
const columnB = [
'',
'',
];
const heights = ['h-64', 'h-80', 'h-64'];
---

<section class="bg-surface-container-low overflow-hidden">
<div class="max-w-7xl mx-auto px-8 py-24">
<div class="grid lg:grid-cols-2 gap-16 items-center">
<div>
<span class="text-tertiary font-bold tracking-widest uppercase text-sm"
>Community</span
>
<h2 class="text-5xl font-headline font-bold text-on-surface mt-2 mb-6">Join Our Next Meetup!</h2>
<p class="text-on-surface-variant text-lg mb-10 max-w-lg">
We are civic tech volunteers interested in utilizing technology to improve our local communities.
</p>
<div class="space-y-4 mb-10">
{
events.map((ev) => (
<div
class:list={[
'bg-white p-6 rounded-2xl shadow-sm hover:shadow-md transition-shadow flex gap-6 group cursor-pointer',
ev.accent === 'tertiary' && 'border-l-4 border-tertiary',
]}
>
<div
class:list={[
'p-4 rounded-xl flex flex-col items-center justify-center min-w-[70px]',
ev.accent === 'tertiary'
? 'bg-tertiary/10 text-tertiary'
: 'bg-primary/10 text-primary',
]}
>
<span class="text-xs font-bold uppercase">{ev.month}</span>
<span class="text-2xl font-black">{ev.day}</span>
</div>
<div>
<h4
class:list={[
'font-bold text-lg transition-colors',
ev.accent === 'tertiary'
? 'group-hover:text-tertiary'
: 'group-hover:text-primary',
]}
>
{ev.title}
</h4>
<p class="text-sm text-on-surface-variant">{ev.detail}</p>
</div>
</div>
))
}
</div>
<button class="flex items-center gap-2 text-primary font-bold group">
Explore Full Calendar
<span class="material-symbols-outlined group-hover:translate-x-1 transition-transform"
>arrow_forward</span
>
</button>
</div>

<div class="relative h-[600px] flex gap-4 overflow-hidden mask-fade-vertical">
<div class="flex flex-col gap-4 animate-marquee-vertical py-4">
{
columnA.map((src, i) => (
<img
class:list={['w-full object-cover rounded-3xl shadow-lg', heights[i % heights.length]]}
src={src}
alt=""
/>
))
}
</div>
<div class="flex flex-col gap-4 animate-marquee-vertical-slow py-4 mt-12">
{
columnB.map((src, i) => (
<img
class:list={['w-full object-cover rounded-3xl shadow-lg', i === 0 ? 'h-80' : 'h-64']}
src={src}
alt=""
/>
))
}
</div>
</div>
</div>
</div>
</section>
79 changes: 79 additions & 0 deletions src/components/Milestones.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
// TODO: Update all of these
const milestones = [
{
icon: 'emoji_events',
stat: '10+',
label: 'Volunteers',
body: 'Hit a major community growth milestone this quarter.',
accent: 'primary',
},
{
icon: 'auto_awesome',
stat: 'A Project',
label: 'Design System',
body: 'Released our first TODO: Update this.',
accent: 'tertiary',
},
{
icon: 'volunteer_activism',
stat: '$0+',
label: 'Grants Awarded',
body: 'TODO: Update this with something else',
accent: 'secondary',
},
{
icon: 'terminal',
stat: 'nth App',
label: 'Launched',
body: "TODO: Update this",
accent: 'primary',
},
];

const accentMap = {
primary: { bg: 'bg-primary/10', text: 'text-primary' },
tertiary: { bg: 'bg-tertiary/10', text: 'text-tertiary' },
secondary: { bg: 'bg-secondary/10', text: 'text-secondary' },
};
---

<section class="px-8 py-24 bg-surface-container-lowest">
<div class="max-w-7xl mx-auto">
<div class="text-center mb-16">
<span class="text-primary font-bold tracking-widest uppercase text-sm">Progress Report</span>
<h2 class="text-4xl font-headline font-bold mt-2">Organizational Milestones</h2>
</div>
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
{
milestones.map((m) => (
<div class="p-8 bg-white rounded-3xl shadow-sm border border-slate-100 flex flex-col items-center text-center">
<div
class:list={[
'w-16 h-16 rounded-2xl flex items-center justify-center mb-6',
accentMap[m.accent].bg,
accentMap[m.accent].text,
]}
>
<span class="material-symbols-outlined text-3xl">{m.icon}</span>
</div>
<h4 class="text-3xl font-black text-on-surface mb-2">{m.stat}</h4>
<p class:list={['text-sm font-bold uppercase tracking-widest mb-4', accentMap[m.accent].text]}>
{m.label}
</p>
<p class="text-on-surface-variant text-sm">{m.body}</p>
</div>
))
}
</div>
<div class="mt-16 text-center">
<a
class="inline-flex items-center gap-2 font-bold text-on-surface-variant hover:text-primary transition-colors underline decoration-primary/30 decoration-2 underline-offset-8"
href="#"
>
View our full history and origins
<span class="material-symbols-outlined text-sm">open_in_new</span>
</a>
</div>
</div>
</section>
Loading