vipfd commited on
Commit
6d67cf4
·
verified ·
1 Parent(s): f8ae22f

Create a non-profit organization website with mission statement hero, our impact statistics, current campaigns, donation form with amounts, volunteer opportunities, success stories, upcoming events, and newsletter signup.

Browse files
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Heartwave Foundation
3
- emoji: 😻
4
- colorFrom: indigo
5
- colorTo: indigo
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
  ---
2
+ title: HeartWave Foundation ❤️🌊
3
+ colorFrom: pink
4
+ colorTo: gray
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/campaign-card.js ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CampaignCard extends HTMLElement {
2
+ connectedCallback() {
3
+ const image = this.getAttribute('image') || '';
4
+ const title = this.getAttribute('title') || '';
5
+ const description = this.getAttribute('description') || '';
6
+ const progress = this.getAttribute('progress') || '0';
7
+
8
+ this.attachShadow({ mode: 'open' });
9
+ this.shadowRoot.innerHTML = `
10
+ <style>
11
+ .progress-bar {
12
+ height: 8px;
13
+ }
14
+ .progress-bar::-webkit-progress-bar {
15
+ background-color: #e5e7eb;
16
+ border-radius: 4px;
17
+ }
18
+ .progress-bar::-webkit-progress-value {
19
+ background-color: #4f46e5;
20
+ border-radius: 4px;
21
+ }
22
+ </style>
23
+ <div class="bg-white rounded-xl shadow-md overflow-hidden h-full flex flex-col">
24
+ <div class="relative overflow-hidden">
25
+ <img src="${image}" alt="${title}" class="campaign-image w-full h-48 object-cover">
26
+ <div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4">
27
+ <h3 class="text-xl font-bold text-white">${title}</h3>
28
+ </div>
29
+ </div>
30
+ <div class="p-6 flex-grow">
31
+ <p class="text-gray-600 mb-4">${description}</p>
32
+ <div class="mb-4">
33
+ <div class="flex justify-between text-sm text-gray-600 mb-1">
34
+ <span>Progress</span>
35
+ <span>${progress}%</span>
36
+ </div>
37
+ <progress class="progress-bar w-full" value="${progress}" max="100"></progress>
38
+ </div>
39
+ <a href="#" class="inline-block bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded-lg transition duration-300">
40
+ Learn More
41
+ </a>
42
+ </div>
43
+ </div>
44
+ `;
45
+ }
46
+ }
47
+ customElements.define('campaign-card', CampaignCard);
components/event-card.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ class EventCard extends HTMLElement {
2
+ connectedCallback() {
3
+ const date = this.getAttribute('date') || '';
4
+ const title = this.getAttribute('title') || '';
5
+ const location = this.get{"ok":false,"message":"terminated"}
components/footer.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .footer-link:hover {
7
+ color: #4f46e5;
8
+ transform: translateX(4px);
9
+ }
10
+ .footer-link {
11
+ transition: all 0.2s ease;
12
+ }
13
+ .social-icon {
14
+ transition: all 0.2s ease;
15
+ }
16
+ .social-icon:hover {
17
+ transform: translateY(-3px);
18
+ }
19
+ </style>
20
+ <footer class="bg-gray-900 text-white py-12 px-4">
21
+ <div class="max-w-6xl mx-auto">
22
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
23
+ <!-- About -->
24
+ <div>
25
+ <h3 class="text-xl font-bold mb-4 flex items-center">
26
+ <i data-feather="heart" class="text-red-500 mr-2"></i>
27
+ <span>HeartWave Foundation</span>
28
+ </h3>
29
+ <p class="text-gray-400 mb-4">Creating waves of positive change through education, healthcare, and sustainable development.</p>
30
+ <div class="flex space-x-4">
31
+ <a href="#" class="social-icon text-gray-400 hover:text-blue-400">
32
+ <i data-feather="facebook"></i>
33
+ </a>
34
+ <a href="#" class="social-icon text-gray-400 hover:text-blue-400">
35
+ <i data-feather="twitter"></i>
36
+ </a>
37
+ <a href="#" class="social-icon text-gray-400 hover:text-pink-500">
38
+ <i data-feather="instagram"></i>
39
+ </a>
40
+ <a href="#" class="social-icon text-gray-400 hover:text-red-500">
41
+ <i data-feather="youtube"></i>
42
+ </a>
43
+ </div>
44
+ </div>
45
+
46
+ <!-- Quick Links -->
47
+ <div>
48
+ <h3 class="text-lg font-bold mb-4">Quick Links</h3>
49
+ <ul class="space-y-2">
50
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">About Us</a></li>
51
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Our Mission</a></li>
52
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Success Stories</a></li>
53
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Financial Reports</a></li>
54
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Careers</a></li>
55
+ </ul>
56
+ </div>
57
+
58
+ <!-- Programs -->
59
+ <div>
60
+ <h3 class="text-lg font-bold mb-4">Programs</h3>
61
+ <ul class="space-y-2">
62
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Education</a></li>
63
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Healthcare</a></li>
64
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Clean Water</a></li>
65
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Women Empowerment</a></li>
66
+ <li><a href="#" class="footer-link text-gray-400 hover:text-white">Disaster Relief</a></li>
67
+ </ul>
68
+ </div>
69
+
70
+ <!-- Contact -->
71
+ <div>
72
+ <h3 class="text-lg font-bold mb-4">Contact Us</h3>
73
+ <address class="not-italic text-gray-400">
74
+ <p class="flex items-center mb-2">
75
+ <i data-feather="map-pin" class="mr-2"></i>
76
+ 123 Charity Ave, Suite 100<br>
77
+ San Francisco, CA 94107
78
+ </p>
79
+ <p class="flex items-center mb-2">
80
+ <i data-feather="mail" class="mr-2"></i>
81
+ info@heartwave.org
82
+ </p>
83
+ <p class="flex items-center">
84
+ <i data-feather="phone" class="mr-2"></i>
85
+ (415) 555-0199
86
+ </p>
87
+ </address>
88
+ </div>
89
+ </div>
90
+
91
+ <div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-500">
92
+ <p>© 2023 HeartWave Foundation. All rights reserved. | <a href="#" class="hover:text-white">Privacy Policy</a> | <a href="#" class="hover:text-white">Terms of Service</a></p>
93
+ </div>
94
+ </div>
95
+ </footer>
96
+ <script>
97
+ if (typeof feather !== 'undefined') {
98
+ feather.replace();
99
+ }
100
+ </script>
101
+ `;
102
+ }
103
+ }
104
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ .navbar {
7
+ transition: all 0.3s ease;
8
+ }
9
+ .navbar.scrolled {
10
+ background-color: white;
11
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
12
+ }
13
+ .nav-link {
14
+ position: relative;
15
+ }
16
+ .nav-link::after {
17
+ content: '';
18
+ position: absolute;
19
+ bottom: -2px;
20
+ left: 0;
21
+ width: 0;
22
+ height: 2px;
23
+ background-color: #4f46e5;
24
+ transition: width 0.3s ease;
25
+ }
26
+ .nav-link:hover::after {
27
+ width: 100%;
28
+ }
29
+ </style>
30
+ <nav class="navbar fixed w-full z-50 py-4 px-6 bg-transparent">
31
+ <div class="max-w-6xl mx-auto flex justify-between items-center">
32
+ <a href="#" class="flex items-center">
33
+ <i data-feather="heart" class="text-red-500 mr-2"></i>
34
+ <span class="text-xl font-bold text-blue-600">HeartWave</span>
35
+ </a>
36
+ <div class="hidden md:flex items-center space-x-8">
37
+ <a href="#" class="nav-link text-gray-800 hover:text-blue-600">Home</a>
38
+ <a href="#impact" class="nav-link text-gray-800 hover:text-blue-600">Impact</a>
39
+ <a href="#campaigns" class="nav-link text-gray-800 hover:text-blue-600">Campaigns</a>
40
+ <a href="#donate" class="nav-link text-gray-800 hover:text-blue-600">Donate</a>
41
+ <a href="#volunteer" class="nav-link text-gray-800 hover:text-blue-600">Volunteer</a>
42
+ <a href="#" class="bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-6 rounded-full transition duration-300">
43
+ Contact Us
44
+ </a>
45
+ </div>
46
+ <button class="md:hidden text-gray-800 focus:outline-none">
47
+ <i data-feather="menu"></i>
48
+ </button>
49
+ </div>
50
+ </nav>
51
+ <script>
52
+ // Navbar scroll effect
53
+ window.addEventListener('scroll', function() {
54
+ const navbar = this.shadowRoot.querySelector('.navbar');
55
+ if (window.scrollY > 50) {
56
+ navbar.classList.add('scrolled');
57
+ } else {
58
+ navbar.classList.remove('scrolled');
59
+ }
60
+ });
61
+
62
+ // Mobile menu toggle
63
+ const mobileMenuButton = this.shadowRoot.querySelector('button');
64
+ mobileMenuButton.addEventListener('click', function() {
65
+ // This would toggle a mobile menu (implementation depends on your mobile menu structure)
66
+ console.log('Mobile menu clicked');
67
+ });
68
+
69
+ // Initialize feather icons
70
+ if (typeof feather !== 'undefined') {
71
+ feather.replace();
72
+ }
73
+ </script>
74
+ `;
75
+ }
76
+ }
77
+ customElements.define('custom-navbar', CustomNavbar);
components/stats-card.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class StatsCard extends HTMLElement {
2
+ connectedCallback() {
3
+ const icon = this.getAttribute('icon') || 'activity';
4
+ const number = this.getAttribute('number') || '0';
5
+ const label = this.getAttribute('label') || 'Label';
6
+
7
+ this.attachShadow({ mode: 'open' });
8
+ this.shadowRoot.innerHTML = `
9
+ <style>
10
+ .stat-card {
11
+ transition: transform 0.3s ease;
12
+ }
13
+ .stat-card:hover {
14
+ transform: translateY(-5px);
15
+ }
16
+ </style>
17
+ <div class="stat-card bg-white p-6 rounded-xl shadow-sm text-center">
18
+ <div class="bg-blue-100 w-16 h-16 rounded-full flex items-center justify-center mx-auto mb-4">
19
+ <i data-feather="${icon}" class="text-blue-600"></i>
20
+ </div>
21
+ <h3 class="text-3xl font-bold text-gray-800 mb-2">${number}</h3>
22
+ <p class="text-gray-600">${label}</p>
23
+ </div>
24
+ `;
25
+ }
26
+ }
27
+ customElements.define('stats-card', StatsCard);
index.html CHANGED
@@ -1,19 +1,279 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>HeartWave Foundation | Making Waves of Change</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script src="components/navbar.js"></script>
12
+ <script src="components/footer.js"></script>
13
+ <script src="components/stats-card.js"></script>
14
+ <script src="components/campaign-card.js"></script>
15
+ <script src="components/event-card.js"></script>
16
+ <script src="components/testimonial-card.js"></script>
17
+ </head>
18
+ <body class="font-sans bg-gray-50">
19
+ <custom-navbar></custom-navbar>
20
+
21
+ <!-- Hero Section -->
22
+ <section class="relative bg-gradient-to-r from-blue-600 to-purple-600 text-white py-20 px-4">
23
+ <div class="max-w-6xl mx-auto text-center">
24
+ <h1 class="text-4xl md:text-6xl font-bold mb-6">Creating Waves of Change</h1>
25
+ <p class="text-xl md:text-2xl mb-8 max-w-3xl mx-auto">Empowering communities through education, healthcare, and sustainable development initiatives worldwide.</p>
26
+ <div class="flex flex-col sm:flex-row gap-4 justify-center">
27
+ <a href="#donate" class="bg-white text-blue-600 hover:bg-blue-50 font-bold py-3 px-6 rounded-full transition duration-300">
28
+ Donate Now
29
+ </a>
30
+ <a href="#volunteer" class="border-2 border-white text-white hover:bg-white hover:text-blue-600 font-bold py-3 px-6 rounded-full transition duration-300">
31
+ Volunteer
32
+ </a>
33
+ </div>
34
+ </div>
35
+ </section>
36
+
37
+ <!-- Impact Stats -->
38
+ <section class="py-16 px-4 bg-white">
39
+ <div class="max-w-6xl mx-auto">
40
+ <h2 class="text-3xl font-bold text-center mb-12 text-gray-800">Our Impact</h2>
41
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6">
42
+ <stats-card icon="users" number="25,000" label="People Helped"></stats-card>
43
+ <stats-card icon="globe" number="15" label="Countries"></stats-card>
44
+ <stats-card icon="home" number="42" label="Communities"></stats-card>
45
+ <stats-card icon="heart" number="500+" label="Volunteers"></stats-card>
46
+ </div>
47
+ </div>
48
+ </section>
49
+
50
+ <!-- Current Campaigns -->
51
+ <section class="py-16 px-4 bg-gray-100">
52
+ <div class="max-w-6xl mx-auto">
53
+ <h2 class="text-3xl font-bold text-center mb-4 text-gray-800">Current Campaigns</h2>
54
+ <p class="text-center text-gray-600 mb-12 max-w-2xl mx-auto">Join us in making a difference through our ongoing initiatives.</p>
55
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
56
+ <campaign-card
57
+ image="http://static.photos/education/640x360/1"
58
+ title="Education for All"
59
+ description="Building schools and providing educational materials for underprivileged children."
60
+ progress="65"
61
+ ></campaign-card>
62
+ <campaign-card
63
+ image="http://static.photos/medical/640x360/2"
64
+ title="Clean Water Initiative"
65
+ description="Installing water purification systems in rural communities."
66
+ progress="42"
67
+ ></campaign-card>
68
+ <campaign-card
69
+ image="http://static.photos/people/640x360/3"
70
+ title="Women Empowerment"
71
+ description="Vocational training and microfinance programs for women."
72
+ progress="78"
73
+ ></campaign-card>
74
+ </div>
75
+ </div>
76
+ </section>
77
+
78
+ <!-- Donation Form -->
79
+ <section id="donate" class="py-16 px-4 bg-white">
80
+ <div class="max-w-4xl mx-auto bg-gradient-to-r from-blue-50 to-purple-50 rounded-xl p-8 shadow-lg">
81
+ <h2 class="text-3xl font-bold text-center mb-6 text-gray-800">Make a Difference</h2>
82
+ <form class="space-y-6">
83
+ <div>
84
+ <label class="block text-gray-700 mb-2">Donation Amount</label>
85
+ <div class="grid grid-cols-2 sm:grid-cols-4 gap-4">
86
+ <button type="button" class="donation-amount bg-white border border-blue-500 text-blue-500 hover:bg-blue-500 hover:text-white py-3 px-4 rounded-lg transition duration-300">
87
+ $25
88
+ </button>
89
+ <button type="button" class="donation-amount bg-white border border-blue-500 text-blue-500 hover:bg-blue-500 hover:text-white py-3 px-4 rounded-lg transition duration-300">
90
+ $50
91
+ </button>
92
+ <button type="button" class="donation-amount bg-white border border-blue-500 text-blue-500 hover:bg-blue-500 hover:text-white py-3 px-4 rounded-lg transition duration-300">
93
+ $100
94
+ </button>
95
+ <button type="button" class="donation-amount bg-white border border-blue-500 text-blue-500 hover:bg-blue-500 hover:text-white py-3 px-4 rounded-lg transition duration-300">
96
+ Custom
97
+ </button>
98
+ </div>
99
+ </div>
100
+ <div id="custom-amount" class="hidden">
101
+ <label for="amount" class="block text-gray-700 mb-2">Enter Amount</label>
102
+ <input type="number" id="amount" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
103
+ </div>
104
+ <div>
105
+ <label for="name" class="block text-gray-700 mb-2">Full Name</label>
106
+ <input type="text" id="name" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
107
+ </div>
108
+ <div>
109
+ <label for="email" class="block text-gray-700 mb-2">Email</label>
110
+ <input type="email" id="email" class="w-full p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
111
+ </div>
112
+ <div>
113
+ <label for="card" class="block text-gray-700 mb-2">Payment Information</label>
114
+ <div class="bg-white p-4 rounded-lg border border-gray-300">
115
+ <div class="flex items-center mb-4">
116
+ <input type="radio" id="credit" name="payment" checked class="mr-2">
117
+ <label for="credit" class="flex items-center">
118
+ <i data-feather="credit-card" class="mr-2"></i>
119
+ Credit Card
120
+ </label>
121
+ </div>
122
+ <input type="text" id="card" placeholder="Card Number" class="w-full p-3 border border-gray-300 rounded-lg mb-3 focus:outline-none focus:ring-2 focus:ring-blue-500">
123
+ <div class="grid grid-cols-2 gap-4">
124
+ <input type="text" placeholder="MM/YY" class="p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
125
+ <input type="text" placeholder="CVV" class="p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
126
+ </div>
127
+ </div>
128
+ </div>
129
+ <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-4 px-6 rounded-lg transition duration-300">
130
+ Donate Now
131
+ </button>
132
+ </form>
133
+ </div>
134
+ </section>
135
+
136
+ <!-- Volunteer Opportunities -->
137
+ <section id="volunteer" class="py-16 px-4 bg-gray-100">
138
+ <div class="max-w-6xl mx-auto">
139
+ <h2 class="text-3xl font-bold text-center mb-4 text-gray-800">Volunteer With Us</h2>
140
+ <p class="text-center text-gray-600 mb-12 max-w-2xl mx-auto">Join our team of passionate volunteers making a difference around the world.</p>
141
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
142
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
143
+ <img src="http://static.photos/education/640x360/4" alt="Education Volunteer" class="w-full h-48 object-cover">
144
+ <div class="p-6">
145
+ <h3 class="text-xl font-bold mb-2 text-gray-800">Education Volunteer</h3>
146
+ <p class="text-gray-600 mb-4">Teach basic literacy and numeracy skills in underserved communities.</p>
147
+ <div class="flex flex-wrap gap-2 mb-4">
148
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Remote</span>
149
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">6 months</span>
150
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Part-time</span>
151
+ </div>
152
+ <a href="#" class="inline-block bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded-lg transition duration-300">
153
+ Apply Now
154
+ </a>
155
+ </div>
156
+ </div>
157
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
158
+ <img src="http://static.photos/medical/640x360/5" alt="Medical Volunteer" class="w-full h-48 object-cover">
159
+ <div class="p-6">
160
+ <h3 class="text-xl font-bold mb-2 text-gray-800">Medical Volunteer</h3>
161
+ <p class="text-gray-600 mb-4">Provide basic healthcare services in rural areas with limited access.</p>
162
+ <div class="flex flex-wrap gap-2 mb-4">
163
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">On-site</span>
164
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">3 months</span>
165
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Full-time</span>
166
+ </div>
167
+ <a href="#" class="inline-block bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded-lg transition duration-300">
168
+ Apply Now
169
+ </a>
170
+ </div>
171
+ </div>
172
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
173
+ <img src="http://static.photos/technology/640x360/6" alt="Tech Volunteer" class="w-full h-48 object-cover">
174
+ <div class="p-6">
175
+ <h3 class="text-xl font-bold mb-2 text-gray-800">Tech Volunteer</h3>
176
+ <p class="text-gray-600 mb-4">Help develop tools and solutions for our digital initiatives.</p>
177
+ <div class="flex flex-wrap gap-2 mb-4">
178
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Remote</span>
179
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Flexible</span>
180
+ <span class="bg-blue-100 text-blue-800 text-xs px-3 py-1 rounded-full">Project-based</span>
181
+ </div>
182
+ <a href="#" class="inline-block bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded-lg transition duration-300">
183
+ Apply Now
184
+ </a>
185
+ </div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ </section>
190
+
191
+ <!-- Success Stories -->
192
+ <section class="py-16 px-4 bg-white">
193
+ <div class="max-w-6xl mx-auto">
194
+ <h2 class="text-3xl font-bold text-center mb-4 text-gray-800">Success Stories</h2>
195
+ <p class="text-center text-gray-600 mb-12 max-w-2xl mx-auto">Hear from those whose lives we've touched.</p>
196
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
197
+ <testimonial-card
198
+ image="http://static.photos/people/200x200/7"
199
+ name="Maria Gonzalez"
200
+ role="Beneficiary, Education Program"
201
+ quote="Thanks to HeartWave, my children now have access to quality education and a brighter future."
202
+ ></testimonial-card>
203
+ <testimonial-card
204
+ image="http://static.photos/people/200x200/8"
205
+ name="James Wilson"
206
+ role="Volunteer, Clean Water Project"
207
+ quote="The most rewarding experience of my life. Seeing the impact of our work first-hand is priceless."
208
+ ></testimonial-card>
209
+ <testimonial-card
210
+ image="http://static.photos/people/200x200/9"
211
+ name="Amina Diallo"
212
+ role="Women Empowerment Participant"
213
+ quote="The skills I learned through the program helped me start my own business and support my family."
214
+ ></testimonial-card>
215
+ </div>
216
+ </div>
217
+ </section>
218
+
219
+ <!-- Upcoming Events -->
220
+ <section class="py-16 px-4 bg-blue-600 text-white">
221
+ <div class="max-w-6xl mx-auto">
222
+ <h2 class="text-3xl font-bold text-center mb-4">Upcoming Events</h2>
223
+ <p class="text-center text-blue-100 mb-12 max-w-2xl mx-auto">Join us for our next fundraising and community events.</p>
224
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
225
+ <event-card
226
+ date="Jun 15, 2023"
227
+ title="Annual Charity Gala"
228
+ location="Grand Ballroom, Downtown"
229
+ description="An evening of fine dining and entertainment to support our education initiatives."
230
+ ></event-card>
231
+ <event-card
232
+ date="Jul 22, 2023"
233
+ title="Community Beach Cleanup"
234
+ location="Sunset Beach"
235
+ description="Join us for a day of environmental conservation and community building."
236
+ ></event-card>
237
+ </div>
238
+ </div>
239
+ </section>
240
+
241
+ <!-- Newsletter Signup -->
242
+ <section class="py-16 px-4 bg-gray-100">
243
+ <div class="max-w-2xl mx-auto text-center">
244
+ <h2 class="text-3xl font-bold mb-4 text-gray-800">Stay Connected</h2>
245
+ <p class="text-gray-600 mb-8">Subscribe to our newsletter for updates on our work, events, and how you can help.</p>
246
+ <form class="flex flex-col sm:flex-row gap-4 justify-center">
247
+ <input type="email" placeholder="Your email address" class="flex-grow max-w-md p-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
248
+ <button type="submit" class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-6 rounded-lg transition duration-300">
249
+ Subscribe
250
+ </button>
251
+ </form>
252
+ </div>
253
+ </section>
254
+
255
+ <custom-footer></custom-footer>
256
+ <script>
257
+ feather.replace();
258
+
259
+ // Handle donation amount selection
260
+ document.querySelectorAll('.donation-amount').forEach(button => {
261
+ button.addEventListener('click', function() {
262
+ document.querySelectorAll('.donation-amount').forEach(btn => {
263
+ btn.classList.remove('bg-blue-500', 'text-white');
264
+ btn.classList.add('bg-white', 'border', 'border-blue-500', 'text-blue-500');
265
+ });
266
+
267
+ if (this.textContent.trim() === 'Custom') {
268
+ document.getElementById('custom-amount').classList.remove('hidden');
269
+ } else {
270
+ document.getElementById('custom-amount').classList.add('hidden');
271
+ this.classList.remove('bg-white', 'border', 'border-blue-500', 'text-blue-500');
272
+ this.classList.add('bg-blue-500', 'text-white');
273
+ }
274
+ });
275
+ });
276
+ </script>
277
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
278
+ </body>
279
+ </html>
script.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Initialize components and animations
2
+ document.addEventListener('DOMContentLoaded', function() {
3
+ // Intersection Observer for animations
4
+ const observerOptions = {
5
+ threshold: 0.1,
6
+ rootMargin: '0px 0px -50px 0px'
7
+ };
8
+
9
+ const observer = new IntersectionObserver((entries) => {
10
+ entries.forEach(entry => {
11
+ if (entry.isIntersecting) {
12
+ entry.target.classList.add('animate-fadeIn');
13
+ observer.unobserve(entry.target);
14
+ }
15
+ });
16
+ }, observerOptions);
17
+
18
+ // Observe all elements with data-animate attribute
19
+ document.querySelectorAll('[data-animate]').forEach(el => {
20
+ observer.observe(el);
21
+ });
22
+
23
+ // Smooth scrolling for anchor links
24
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
25
+ anchor.addEventListener('click', function(e) {
26
+ e.preventDefault();
27
+ const target = document.querySelector(this.getAttribute('href'));
28
+ if (target) {
29
+ target.scrollIntoView({
30
+ behavior: 'smooth'
31
+ });
32
+ }
33
+ });
34
+ });
35
+ });
36
+
37
+ // Form validation for donation form
38
+ function validateDonationForm() {
39
+ const form = document.querySelector('#donate form');
40
+ if (form) {
41
+ form.addEventListener('submit', function(e) {
42
+ e.preventDefault();
43
+
44
+ // Validate form fields
45
+ const name = document.getElementById('name').value;
46
+ const email = document.getElementById('email').value;
47
+ const card = document.getElementById('card').value;
48
+
49
+ if (!name || !email || !card) {
50
+ alert('Please fill in all required fields');
51
+ return;
52
+ }
53
+
54
+ // Simulate donation processing
55
+ alert('Thank you for your donation! A receipt has been sent to your email.');
56
+ form.reset();
57
+ });
58
+ }
59
+ }
60
+
61
+ // Initialize form validation when DOM is loaded
62
+ document.addEventListener('DOMContentLoaded', validateDonationForm);
style.css CHANGED
@@ -1,28 +1,52 @@
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Global Styles */
2
  body {
3
+ scroll-behavior: smooth;
 
4
  }
5
 
6
+ /* Custom scrollbar */
7
+ ::-webkit-scrollbar {
8
+ width: 8px;
9
  }
10
 
11
+ ::-webkit-scrollbar-track {
12
+ background: #f1f1f1;
 
 
 
13
  }
14
 
15
+ ::-webkit-scrollbar-thumb {
16
+ background: #4f46e5;
17
+ border-radius: 4px;
 
 
 
18
  }
19
 
20
+ ::-webkit-scrollbar-thumb:hover {
21
+ background: #4338ca;
22
  }
23
+
24
+ /* Animation for stats cards */
25
+ @keyframes countUp {
26
+ from { transform: translateY(20px); opacity: 0; }
27
+ to { transform: translateY(0); opacity: 1; }
28
+ }
29
+
30
+ .stats-card {
31
+ animation: countUp 0.6s ease-out forwards;
32
+ }
33
+
34
+ /* Hover effects for campaign cards */
35
+ .campaign-card:hover .campaign-image {
36
+ transform: scale(1.05);
37
+ }
38
+
39
+ .campaign-image {
40
+ transition: transform 0.3s ease;
41
+ }
42
+
43
+ /* Pulse animation for CTA buttons */
44
+ @keyframes pulse {
45
+ 0% { box-shadow: 0 0 0 0 rgba(79, 70, 229, 0.7); }
46
+ 70% { box-shadow: 0 0 0 10px rgba(79, 70, 229, 0); }
47
+ 100% { box-shadow: 0 0 0 0 rgba(79, 70, 229, 0); }
48
+ }
49
+
50
+ .pulse {
51
+ animation: pulse 2s infinite;
52
+ }