Skip to content
Merged
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
45 changes: 45 additions & 0 deletions src/lib/components/common/FoundingMembers.stories.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<script module>
import { defineMeta } from '@storybook/addon-svelte-csf';
import FoundingMembers from './FoundingMembers.svelte';

const { Story } = defineMeta({
title: 'Landing Page/FoundingMembers',
component: FoundingMembers,
tags: ['autodocs'],
parameters: {
layout: 'fullscreen'
}
});
</script>

<Story
name="Default"
args={{
members: [
{
name: 'Ahmad Suryanto',
role: 'Founder & Chairman',
since: 2015,
image: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=500&fit=crop'
},
{
name: 'Siti Nurhaliza',
role: 'Co-Founder',
since: 2015,
image: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=500&fit=crop'
},
{
name: 'Budi Santoso',
role: 'Secretary General',
since: 2016,
image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=500&fit=crop'
},
{
name: 'Dewi Lestari',
role: 'Treasurer',
since: 2016,
image: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=500&fit=crop'
}
]
}}
></Story>
169 changes: 36 additions & 133 deletions src/lib/components/common/FoundingMembers.svelte
Original file line number Diff line number Diff line change
@@ -1,149 +1,52 @@
<script lang="ts"></script>
<script lang="ts">
import type { Member } from '$lib/contract/Member';

interface Props {
members: Member[];
}
const { members }: Props = $props();
</script>

<!-- Founding Members -->
<section class="px-4 py-16 sm:px-6 sm:py-20 lg:px-8">
<div class="mx-auto max-w-7xl">
<h2 class="mb-12 text-center text-3xl font-bold sm:text-4xl">Our Founding Members</h2>
<div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">
<div
class="group relative overflow-hidden rounded-lg bg-white shadow-md transition-all hover:-translate-y-2 hover:shadow-xl"
>
<span
class="absolute top-4 left-4 z-10 rounded bg-red-600 px-3 py-1 text-xs font-semibold text-white uppercase"
>
Since 2015
</span>
<div class="relative h-80 overflow-hidden sm:h-[350px]">
<img
src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=500&fit=crop"
alt="Ahmad Suryanto"
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div
class="absolute inset-0 flex items-center justify-center bg-black/60 opacity-0 transition-opacity group-hover:opacity-100"
>
<button
class="btn-profile bg-white px-6 py-2 text-sm font-semibold text-gray-800 uppercase transition-colors hover:bg-red-600 hover:text-white"
>
View Profile
</button>
</div>
</div>
<div class="p-6">
<h3 class="mb-2 text-lg font-medium">Ahmad Suryanto</h3>
<p class="mb-4 text-xl font-bold text-red-600">Founder & Chairman</p>
<button
class="btn-contact w-full bg-gray-800 py-2 text-sm font-semibold text-white uppercase transition-colors hover:bg-red-600"
>
Contact
</button>
</div>
</div>

<div
class="group relative overflow-hidden rounded-lg bg-white shadow-md transition-all hover:-translate-y-2 hover:shadow-xl"
>
<span
class="absolute top-4 left-4 z-10 rounded bg-red-600 px-3 py-1 text-xs font-semibold text-white uppercase"
>
Since 2015
</span>
<div class="relative h-80 overflow-hidden sm:h-[350px]">
<img
src="https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=500&fit=crop"
alt="Siti Nurhaliza"
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div
class="absolute inset-0 flex items-center justify-center bg-black/60 opacity-0 transition-opacity group-hover:opacity-100"
>
<button
class="btn-profile bg-white px-6 py-2 text-sm font-semibold text-gray-800 uppercase transition-colors hover:bg-red-600 hover:text-white"
>
View Profile
</button>
</div>
</div>
<div class="p-6">
<h3 class="mb-2 text-lg font-medium">Siti Nurhaliza</h3>
<p class="mb-4 text-xl font-bold text-red-600">Co-Founder</p>
<button
class="btn-contact w-full bg-gray-800 py-2 text-sm font-semibold text-white uppercase transition-colors hover:bg-red-600"
>
Contact
</button>
</div>
</div>

<div
class="group relative overflow-hidden rounded-lg bg-white shadow-md transition-all hover:-translate-y-2 hover:shadow-xl"
>
<span
class="absolute top-4 left-4 z-10 rounded bg-red-600 px-3 py-1 text-xs font-semibold text-white uppercase"
{#each members as member (member.name)}
<div
class="group relative overflow-hidden rounded-lg bg-white shadow-md transition-all hover:-translate-y-2 hover:shadow-xl"
>
Since 2016
</span>
<div class="relative h-80 overflow-hidden sm:h-[350px]">
<img
src="https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=500&fit=crop"
alt="Budi Santoso"
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div
class="absolute inset-0 flex items-center justify-center bg-black/60 opacity-0 transition-opacity group-hover:opacity-100"
>
<button
class="btn-profile bg-white px-6 py-2 text-sm font-semibold text-gray-800 uppercase transition-colors hover:bg-red-600 hover:text-white"
<span
class="absolute top-4 left-4 z-10 rounded bg-red-600 px-3 py-1 text-xs font-semibold text-white uppercase"
>
Since {member.since}
</span>
<div class="relative h-80 overflow-hidden sm:h-[350px]">
<img
src={member.image}
alt={member.name}
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div
class="absolute inset-0 flex items-center justify-center bg-black/60 opacity-0 transition-opacity group-hover:opacity-100"
>
View Profile
</button>
<button
class="btn-profile bg-white px-6 py-2 text-sm font-semibold text-gray-800 uppercase transition-colors hover:bg-red-600 hover:text-white"
>
View Profile
</button>
</div>
</div>
</div>
<div class="p-6">
<h3 class="mb-2 text-lg font-medium">Budi Santoso</h3>
<p class="mb-4 text-xl font-bold text-red-600">Secretary General</p>
<button
class="btn-contact w-full bg-gray-800 py-2 text-sm font-semibold text-white uppercase transition-colors hover:bg-red-600"
>
Contact
</button>
</div>
</div>

<div
class="group relative overflow-hidden rounded-lg bg-white shadow-md transition-all hover:-translate-y-2 hover:shadow-xl"
>
<span
class="absolute top-4 left-4 z-10 rounded bg-red-600 px-3 py-1 text-xs font-semibold text-white uppercase"
>
Since 2016
</span>
<div class="relative h-80 overflow-hidden sm:h-[350px]">
<img
src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=500&fit=crop"
alt="Dewi Lestari"
class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-110"
/>
<div
class="absolute inset-0 flex items-center justify-center bg-black/60 opacity-0 transition-opacity group-hover:opacity-100"
>
<div class="p-6">
<h3 class="mb-2 text-lg font-medium">{member.name}</h3>
<p class="mb-4 text-xl font-bold text-red-600">{member.role}</p>
<button
class="btn-profile bg-white px-6 py-2 text-sm font-semibold text-gray-800 uppercase transition-colors hover:bg-red-600 hover:text-white"
class="btn-contact w-full bg-gray-800 py-2 text-sm font-semibold text-white uppercase transition-colors hover:bg-red-600"
>
View Profile
Contact
</button>
</div>
</div>
<div class="p-6">
<h3 class="mb-2 text-lg font-medium">Dewi Lestari</h3>
<p class="mb-4 text-xl font-bold text-red-600">Treasurer</p>
<button
class="btn-contact w-full bg-gray-800 py-2 text-sm font-semibold text-white uppercase transition-colors hover:bg-red-600"
>
Contact
</button>
</div>
</div>
{/each}
</div>
</div>
</section>
30 changes: 26 additions & 4 deletions src/lib/components/pages/LandingPage.stories.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import { fn } from 'storybook/test';
import LandingPage from './LandingPage.svelte';

const { Story } = defineMeta({
const { Story: LandingPageStory } = defineMeta({
title: 'Landing Page/Main',
component: LandingPage,
parameters: {
Expand All @@ -16,6 +16,28 @@
});
</script>

<Story name="Primary">
<LandingPage />
</Story>
<LandingPageStory
name="Default"
args={{
members: [
{
name: 'Siti Nurhaliza',
role: 'Co-Founder',
since: 2015,
image: 'https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=500&fit=crop'
},
{
name: 'Budi Santoso',
role: 'Secretary General',
since: 2016,
image: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=500&fit=crop'
},
{
name: 'Dewi Lestari',
role: 'Treasurer',
since: 2016,
image: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=500&fit=crop'
}
]
}}
/>
8 changes: 7 additions & 1 deletion src/lib/components/pages/LandingPage.svelte
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<script lang="ts">
import type { Member } from '../../../contract/Member';
import Acheivement from '../common/Acheivement.svelte';
import Benefit from '../common/Benefit.svelte';
import CommunityUpdate from '../common/CommunityUpdate.svelte';
Expand All @@ -7,13 +8,18 @@
import HeroSlider from '../common/HeroSlider.svelte';
import Navbar from '../common/Navbar.svelte';
import Programs from '../common/Programs.svelte';

interface Props {
members: Member[];
}
const { members }: Props = $props();
</script>

<Navbar />
<HeroSlider />
<Benefit />
<Programs />
<Acheivement />
<FoundingMembers />
<FoundingMembers {members} />
<CommunityUpdate />
<Footer />
File renamed without changes.
6 changes: 6 additions & 0 deletions src/lib/contract/Member.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export interface Member {
name: string;
role: string;
since: number;
image: string;
}
26 changes: 26 additions & 0 deletions src/lib/data/founding-members.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[
{
"name": "Ahmad Suryanto",
"role": "Founder & Chairman",
"since": 2015,
"image": "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=400&h=500&fit=crop"
},
{
"name": "Siti Nurhaliza",
"role": "Co-Founder",
"since": 2015,
"image": "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=400&h=500&fit=crop"
},
{
"name": "Budi Santoso",
"role": "Secretary General",
"since": 2016,
"image": "https://images.unsplash.com/photo-1500648767791-00dcc994a43e?w=400&h=500&fit=crop"
},
{
"name": "Dewi Lestari",
"role": "Treasurer",
"since": 2016,
"image": "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400&h=500&fit=crop"
}
]
7 changes: 5 additions & 2 deletions src/routes/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<script>
<script lang="ts">
import LandingPage from '$lib/components/pages/LandingPage.svelte';
import membersJson from '$lib/data/founding-members.json';
import type { Member } from '$lib/contract/Member';
const members: Member[] = membersJson as Member[];
</script>

<LandingPage />
<LandingPage {members} />