create-template-html-css 1.2.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/README.md +165 -1
- package/bin/cli.js +27 -3
- package/package.json +16 -8
- package/src/generator.js +1 -1
- package/src/inserter.js +1 -1
- package/templates/animated-card/index.html +85 -0
- package/templates/animated-card/script.js +37 -0
- package/templates/animated-card/style.css +254 -0
- package/templates/dashboard-grid/index.html +247 -0
- package/templates/dashboard-grid/script.js +157 -0
- package/templates/dashboard-grid/style.css +558 -0
- package/templates/fade-gallery/index.html +134 -0
- package/templates/fade-gallery/script.js +123 -0
- package/templates/fade-gallery/style.css +309 -0
- package/templates/flex-cards/index.html +276 -0
- package/templates/flex-cards/script.js +122 -0
- package/templates/flex-cards/style.css +556 -0
- package/templates/flex-dashboard/index.html +282 -0
- package/templates/flex-dashboard/script.js +149 -0
- package/templates/flex-dashboard/style.css +659 -0
- package/templates/flex-layout/index.html +185 -0
- package/templates/flex-layout/script.js +79 -0
- package/templates/flex-layout/style.css +336 -0
- package/templates/grid-layout/index.html +164 -0
- package/templates/grid-layout/script.js +75 -0
- package/templates/grid-layout/style.css +452 -0
- package/templates/masonry-grid/index.html +196 -0
- package/templates/masonry-grid/script.js +122 -0
- package/templates/masonry-grid/style.css +259 -0
- package/templates/spinner/index.html +56 -0
- package/templates/spinner/script.js +22 -0
- package/templates/spinner/style.css +207 -0
- package/templates/typing-effect/index.html +58 -0
- package/templates/typing-effect/script.js +247 -0
- package/templates/typing-effect/style.css +253 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// Animated Gallery Component JavaScript
|
|
2
|
+
|
|
3
|
+
// Intersection Observer for scroll animations
|
|
4
|
+
const observerOptions = {
|
|
5
|
+
root: null,
|
|
6
|
+
rootMargin: '0px',
|
|
7
|
+
threshold: 0.1
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
// Callback function for intersection observer
|
|
11
|
+
function handleIntersection(entries, observer) {
|
|
12
|
+
entries.forEach(entry => {
|
|
13
|
+
if (entry.isIntersecting) {
|
|
14
|
+
const delay = entry.target.dataset.delay || 0;
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
entry.target.classList.add('visible');
|
|
17
|
+
}, delay);
|
|
18
|
+
observer.unobserve(entry.target);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Create observer
|
|
24
|
+
const observer = new IntersectionObserver(handleIntersection, observerOptions);
|
|
25
|
+
|
|
26
|
+
// Function to observe elements
|
|
27
|
+
function observeElements() {
|
|
28
|
+
const fadeInUpElements = document.querySelectorAll('.fade-in-up');
|
|
29
|
+
const slideInLeftElements = document.querySelectorAll('.slide-in-left');
|
|
30
|
+
|
|
31
|
+
fadeInUpElements.forEach(element => {
|
|
32
|
+
observer.observe(element);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
slideInLeftElements.forEach(element => {
|
|
36
|
+
observer.observe(element);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Replay animations
|
|
41
|
+
function replayAnimations() {
|
|
42
|
+
const animatedElements = document.querySelectorAll('.gallery-item, .scroll-item');
|
|
43
|
+
|
|
44
|
+
animatedElements.forEach(element => {
|
|
45
|
+
element.classList.remove('visible');
|
|
46
|
+
// Force reflow
|
|
47
|
+
void element.offsetWidth;
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Re-observe elements
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
observeElements();
|
|
53
|
+
}, 100);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Initialize on DOM load
|
|
57
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
58
|
+
console.log('Animated Gallery Component initialized');
|
|
59
|
+
|
|
60
|
+
// Observe elements
|
|
61
|
+
observeElements();
|
|
62
|
+
|
|
63
|
+
// Replay button
|
|
64
|
+
const animateBtn = document.getElementById('animateBtn');
|
|
65
|
+
if (animateBtn) {
|
|
66
|
+
animateBtn.addEventListener('click', () => {
|
|
67
|
+
replayAnimations();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Add click handlers to gallery items
|
|
72
|
+
const galleryItems = document.querySelectorAll('.gallery-item');
|
|
73
|
+
galleryItems.forEach((item, index) => {
|
|
74
|
+
item.addEventListener('click', () => {
|
|
75
|
+
console.log(`Gallery item ${index + 1} clicked`);
|
|
76
|
+
// You can add modal or lightbox functionality here
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
// Smooth scroll for horizontal gallery
|
|
81
|
+
const horizontalScroll = document.querySelector('.horizontal-scroll');
|
|
82
|
+
if (horizontalScroll) {
|
|
83
|
+
let isScrolling = false;
|
|
84
|
+
let scrollLeft = 0;
|
|
85
|
+
let startX = 0;
|
|
86
|
+
|
|
87
|
+
horizontalScroll.addEventListener('mousedown', (e) => {
|
|
88
|
+
isScrolling = true;
|
|
89
|
+
startX = e.pageX - horizontalScroll.offsetLeft;
|
|
90
|
+
scrollLeft = horizontalScroll.scrollLeft;
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
horizontalScroll.addEventListener('mouseleave', () => {
|
|
94
|
+
isScrolling = false;
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
horizontalScroll.addEventListener('mouseup', () => {
|
|
98
|
+
isScrolling = false;
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
horizontalScroll.addEventListener('mousemove', (e) => {
|
|
102
|
+
if (!isScrolling) return;
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
const x = e.pageX - horizontalScroll.offsetLeft;
|
|
105
|
+
const walk = (x - startX) * 2;
|
|
106
|
+
horizontalScroll.scrollLeft = scrollLeft - walk;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Parallax effect on scroll
|
|
112
|
+
window.addEventListener('scroll', () => {
|
|
113
|
+
const scrolled = window.pageYOffset;
|
|
114
|
+
const parallaxElements = document.querySelectorAll('.placeholder-image');
|
|
115
|
+
|
|
116
|
+
parallaxElements.forEach((element, index) => {
|
|
117
|
+
const speed = 0.5;
|
|
118
|
+
const yPos = -(scrolled * speed);
|
|
119
|
+
element.style.transform = `translateY(${yPos}px)`;
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
console.log('Gallery animations ready');
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
* {
|
|
2
|
+
margin: 0;
|
|
3
|
+
padding: 0;
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
body {
|
|
8
|
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
9
|
+
background: linear-gradient(135deg, #141e30 0%, #243b55 100%);
|
|
10
|
+
min-height: 100vh;
|
|
11
|
+
color: white;
|
|
12
|
+
overflow-x: hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.container {
|
|
16
|
+
max-width: 1400px;
|
|
17
|
+
margin: 0 auto;
|
|
18
|
+
padding: 60px 20px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Header */
|
|
22
|
+
.header {
|
|
23
|
+
text-align: center;
|
|
24
|
+
margin-bottom: 80px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.header h1 {
|
|
28
|
+
font-size: 4rem;
|
|
29
|
+
font-weight: 700;
|
|
30
|
+
margin-bottom: 20px;
|
|
31
|
+
background: linear-gradient(135deg, #667eea, #764ba2, #f093fb);
|
|
32
|
+
-webkit-background-clip: text;
|
|
33
|
+
-webkit-text-fill-color: transparent;
|
|
34
|
+
background-clip: text;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.subtitle {
|
|
38
|
+
font-size: 1.5rem;
|
|
39
|
+
color: rgba(255, 255, 255, 0.8);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Section Title */
|
|
43
|
+
.section-title {
|
|
44
|
+
font-size: 2.5rem;
|
|
45
|
+
text-align: center;
|
|
46
|
+
margin-bottom: 50px;
|
|
47
|
+
color: white;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Gallery Grid */
|
|
51
|
+
.gallery-section {
|
|
52
|
+
margin-bottom: 100px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.gallery-grid {
|
|
56
|
+
display: grid;
|
|
57
|
+
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
|
|
58
|
+
gap: 30px;
|
|
59
|
+
padding: 20px;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.gallery-item {
|
|
63
|
+
opacity: 0;
|
|
64
|
+
transform: translateY(50px);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.gallery-item.visible {
|
|
68
|
+
animation: fadeInUp 0.8s ease forwards;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@keyframes fadeInUp {
|
|
72
|
+
to {
|
|
73
|
+
opacity: 1;
|
|
74
|
+
transform: translateY(0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.image-wrapper {
|
|
79
|
+
position: relative;
|
|
80
|
+
overflow: hidden;
|
|
81
|
+
border-radius: 20px;
|
|
82
|
+
cursor: pointer;
|
|
83
|
+
height: 400px;
|
|
84
|
+
box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4);
|
|
85
|
+
transition: transform 0.4s ease, box-shadow 0.4s ease;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.image-wrapper:hover {
|
|
89
|
+
transform: translateY(-10px) scale(1.02);
|
|
90
|
+
box-shadow: 0 25px 60px rgba(0, 0, 0, 0.6);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.placeholder-image {
|
|
94
|
+
width: 100%;
|
|
95
|
+
height: 100%;
|
|
96
|
+
display: flex;
|
|
97
|
+
align-items: center;
|
|
98
|
+
justify-content: center;
|
|
99
|
+
transition: transform 0.4s ease;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.image-wrapper:hover .placeholder-image {
|
|
103
|
+
transform: scale(1.1);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.image-icon {
|
|
107
|
+
font-size: 6rem;
|
|
108
|
+
filter: drop-shadow(0 5px 10px rgba(0, 0, 0, 0.3));
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Gradient Backgrounds */
|
|
112
|
+
.gradient-1 {
|
|
113
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.gradient-2 {
|
|
117
|
+
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.gradient-3 {
|
|
121
|
+
background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.gradient-4 {
|
|
125
|
+
background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.gradient-5 {
|
|
129
|
+
background: linear-gradient(135deg, #fa709a 0%, #fee140 100%);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.gradient-6 {
|
|
133
|
+
background: linear-gradient(135deg, #30cfd0 0%, #330867 100%);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.gradient-7 {
|
|
137
|
+
background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.gradient-8 {
|
|
141
|
+
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.gradient-9 {
|
|
145
|
+
background: linear-gradient(135deg, #ffecd2 0%, #fcb69f 100%);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.gradient-10 {
|
|
149
|
+
background: linear-gradient(135deg, #ff6e7f 0%, #bfe9ff 100%);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* Overlay */
|
|
153
|
+
.overlay {
|
|
154
|
+
position: absolute;
|
|
155
|
+
bottom: 0;
|
|
156
|
+
left: 0;
|
|
157
|
+
right: 0;
|
|
158
|
+
background: linear-gradient(to top, rgba(0, 0, 0, 0.9), transparent);
|
|
159
|
+
padding: 30px;
|
|
160
|
+
transform: translateY(100%);
|
|
161
|
+
transition: transform 0.4s ease;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.image-wrapper:hover .overlay {
|
|
165
|
+
transform: translateY(0);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.overlay h3 {
|
|
169
|
+
font-size: 1.8rem;
|
|
170
|
+
margin-bottom: 10px;
|
|
171
|
+
color: white;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
.overlay p {
|
|
175
|
+
font-size: 1.1rem;
|
|
176
|
+
color: rgba(255, 255, 255, 0.9);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/* Horizontal Scroll Section */
|
|
180
|
+
.horizontal-section {
|
|
181
|
+
margin-bottom: 80px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.horizontal-scroll {
|
|
185
|
+
display: flex;
|
|
186
|
+
gap: 30px;
|
|
187
|
+
overflow-x: auto;
|
|
188
|
+
padding: 20px;
|
|
189
|
+
scroll-behavior: smooth;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.horizontal-scroll::-webkit-scrollbar {
|
|
193
|
+
height: 10px;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.horizontal-scroll::-webkit-scrollbar-track {
|
|
197
|
+
background: rgba(255, 255, 255, 0.1);
|
|
198
|
+
border-radius: 10px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.horizontal-scroll::-webkit-scrollbar-thumb {
|
|
202
|
+
background: linear-gradient(135deg, #667eea, #764ba2);
|
|
203
|
+
border-radius: 10px;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.scroll-item {
|
|
207
|
+
min-width: 300px;
|
|
208
|
+
opacity: 0;
|
|
209
|
+
transform: translateX(-50px);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
.scroll-item.visible {
|
|
213
|
+
animation: slideInLeft 0.8s ease forwards;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@keyframes slideInLeft {
|
|
217
|
+
to {
|
|
218
|
+
opacity: 1;
|
|
219
|
+
transform: translateX(0);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.scroll-item .placeholder-image {
|
|
224
|
+
height: 300px;
|
|
225
|
+
border-radius: 15px;
|
|
226
|
+
margin-bottom: 15px;
|
|
227
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
|
|
228
|
+
transition: transform 0.3s ease;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.scroll-item:hover .placeholder-image {
|
|
232
|
+
transform: scale(1.05);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.scroll-item p {
|
|
236
|
+
text-align: center;
|
|
237
|
+
font-size: 1.2rem;
|
|
238
|
+
font-weight: 600;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* Fade In Animation */
|
|
242
|
+
.fade-in {
|
|
243
|
+
opacity: 0;
|
|
244
|
+
animation: fadeIn 1s ease forwards;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@keyframes fadeIn {
|
|
248
|
+
to {
|
|
249
|
+
opacity: 1;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Controls */
|
|
254
|
+
.controls {
|
|
255
|
+
text-align: center;
|
|
256
|
+
padding: 40px;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.btn {
|
|
260
|
+
padding: 18px 50px;
|
|
261
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
262
|
+
color: white;
|
|
263
|
+
border: none;
|
|
264
|
+
border-radius: 50px;
|
|
265
|
+
font-size: 1.2rem;
|
|
266
|
+
font-weight: 600;
|
|
267
|
+
cursor: pointer;
|
|
268
|
+
transition: all 0.3s ease;
|
|
269
|
+
text-transform: uppercase;
|
|
270
|
+
letter-spacing: 2px;
|
|
271
|
+
box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.btn:hover {
|
|
275
|
+
transform: translateY(-5px);
|
|
276
|
+
box-shadow: 0 15px 40px rgba(102, 126, 234, 0.6);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.btn:active {
|
|
280
|
+
transform: translateY(-2px);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* Responsive Design */
|
|
284
|
+
@media (max-width: 768px) {
|
|
285
|
+
.header h1 {
|
|
286
|
+
font-size: 2.5rem;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.subtitle {
|
|
290
|
+
font-size: 1.2rem;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.gallery-grid {
|
|
294
|
+
grid-template-columns: 1fr;
|
|
295
|
+
gap: 20px;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.image-wrapper {
|
|
299
|
+
height: 350px;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.scroll-item {
|
|
303
|
+
min-width: 250px;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.scroll-item .placeholder-image {
|
|
307
|
+
height: 250px;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
@@ -0,0 +1,276 @@
|
|
|
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>{{name}} - Flex Cards Component</title>
|
|
7
|
+
<link rel="stylesheet" href="style.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="container">
|
|
11
|
+
<header class="hero">
|
|
12
|
+
<h1>Flex Cards Gallery</h1>
|
|
13
|
+
<p>Equal height cards with Flexbox magic</p>
|
|
14
|
+
</header>
|
|
15
|
+
|
|
16
|
+
<!-- Equal Height Cards -->
|
|
17
|
+
<section class="section">
|
|
18
|
+
<h2 class="section-title">Equal Height Cards</h2>
|
|
19
|
+
<div class="card-container">
|
|
20
|
+
<div class="card">
|
|
21
|
+
<div class="card-icon">🚀</div>
|
|
22
|
+
<h3>Launch Fast</h3>
|
|
23
|
+
<p>Get your project up and running in minutes with our streamlined setup process.</p>
|
|
24
|
+
<button class="card-btn">Get Started</button>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div class="card">
|
|
28
|
+
<div class="card-icon">⚡</div>
|
|
29
|
+
<h3>Lightning Speed</h3>
|
|
30
|
+
<p>Optimized for performance with modern techniques.</p>
|
|
31
|
+
<button class="card-btn">Learn More</button>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<div class="card">
|
|
35
|
+
<div class="card-icon">🎨</div>
|
|
36
|
+
<h3>Beautiful Design</h3>
|
|
37
|
+
<p>Stunning interfaces that work perfectly on all devices. Responsive and accessible design patterns that your users will love. Premium quality guaranteed.</p>
|
|
38
|
+
<button class="card-btn">View Demo</button>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div class="card">
|
|
42
|
+
<div class="card-icon">🔒</div>
|
|
43
|
+
<h3>Secure</h3>
|
|
44
|
+
<p>Enterprise-level security built-in from day one.</p>
|
|
45
|
+
<button class="card-btn">Security Info</button>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</section>
|
|
49
|
+
|
|
50
|
+
<!-- Pricing Cards -->
|
|
51
|
+
<section class="section">
|
|
52
|
+
<h2 class="section-title">Pricing Plans</h2>
|
|
53
|
+
<div class="pricing-container">
|
|
54
|
+
<div class="pricing-card">
|
|
55
|
+
<div class="pricing-badge">Basic</div>
|
|
56
|
+
<div class="pricing-icon">📦</div>
|
|
57
|
+
<div class="pricing-amount">
|
|
58
|
+
<span class="currency">$</span>
|
|
59
|
+
<span class="price">9</span>
|
|
60
|
+
<span class="period">/month</span>
|
|
61
|
+
</div>
|
|
62
|
+
<ul class="pricing-features">
|
|
63
|
+
<li>✓ 10 Projects</li>
|
|
64
|
+
<li>✓ 5GB Storage</li>
|
|
65
|
+
<li>✓ Email Support</li>
|
|
66
|
+
<li>✓ Basic Analytics</li>
|
|
67
|
+
</ul>
|
|
68
|
+
<button class="pricing-btn">Choose Plan</button>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div class="pricing-card featured">
|
|
72
|
+
<div class="pricing-badge popular">Popular</div>
|
|
73
|
+
<div class="pricing-icon">⭐</div>
|
|
74
|
+
<div class="pricing-amount">
|
|
75
|
+
<span class="currency">$</span>
|
|
76
|
+
<span class="price">29</span>
|
|
77
|
+
<span class="period">/month</span>
|
|
78
|
+
</div>
|
|
79
|
+
<ul class="pricing-features">
|
|
80
|
+
<li>✓ Unlimited Projects</li>
|
|
81
|
+
<li>✓ 50GB Storage</li>
|
|
82
|
+
<li>✓ Priority Support</li>
|
|
83
|
+
<li>✓ Advanced Analytics</li>
|
|
84
|
+
<li>✓ Custom Domain</li>
|
|
85
|
+
<li>✓ Team Collaboration</li>
|
|
86
|
+
</ul>
|
|
87
|
+
<button class="pricing-btn featured-btn">Choose Plan</button>
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div class="pricing-card">
|
|
91
|
+
<div class="pricing-badge">Enterprise</div>
|
|
92
|
+
<div class="pricing-icon">🏢</div>
|
|
93
|
+
<div class="pricing-amount">
|
|
94
|
+
<span class="currency">$</span>
|
|
95
|
+
<span class="price">99</span>
|
|
96
|
+
<span class="period">/month</span>
|
|
97
|
+
</div>
|
|
98
|
+
<ul class="pricing-features">
|
|
99
|
+
<li>✓ Unlimited Everything</li>
|
|
100
|
+
<li>✓ 500GB Storage</li>
|
|
101
|
+
<li>✓ 24/7 Phone Support</li>
|
|
102
|
+
<li>✓ White Label</li>
|
|
103
|
+
<li>✓ API Access</li>
|
|
104
|
+
</ul>
|
|
105
|
+
<button class="pricing-btn">Contact Sales</button>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
</section>
|
|
109
|
+
|
|
110
|
+
<!-- Product Cards -->
|
|
111
|
+
<section class="section dark-section">
|
|
112
|
+
<h2 class="section-title">Featured Products</h2>
|
|
113
|
+
<div class="product-container">
|
|
114
|
+
<div class="product-card">
|
|
115
|
+
<div class="product-image gradient-1">
|
|
116
|
+
<span class="product-badge">New</span>
|
|
117
|
+
</div>
|
|
118
|
+
<div class="product-info">
|
|
119
|
+
<h3>Premium Headphones</h3>
|
|
120
|
+
<div class="product-rating">
|
|
121
|
+
⭐⭐⭐⭐⭐ <span>(128)</span>
|
|
122
|
+
</div>
|
|
123
|
+
<p>High-quality wireless headphones with noise cancellation</p>
|
|
124
|
+
<div class="product-footer">
|
|
125
|
+
<span class="product-price">$299</span>
|
|
126
|
+
<button class="product-btn">Add to Cart</button>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
|
|
131
|
+
<div class="product-card">
|
|
132
|
+
<div class="product-image gradient-2">
|
|
133
|
+
<span class="product-badge sale">Sale</span>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="product-info">
|
|
136
|
+
<h3>Smart Watch Pro</h3>
|
|
137
|
+
<div class="product-rating">
|
|
138
|
+
⭐⭐⭐⭐☆ <span>(94)</span>
|
|
139
|
+
</div>
|
|
140
|
+
<p>Advanced fitness tracking and health monitoring</p>
|
|
141
|
+
<div class="product-footer">
|
|
142
|
+
<span class="product-price">
|
|
143
|
+
<del>$399</del> $299
|
|
144
|
+
</span>
|
|
145
|
+
<button class="product-btn">Add to Cart</button>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
|
|
150
|
+
<div class="product-card">
|
|
151
|
+
<div class="product-image gradient-3">
|
|
152
|
+
<span class="product-badge">Hot</span>
|
|
153
|
+
</div>
|
|
154
|
+
<div class="product-info">
|
|
155
|
+
<h3>Wireless Earbuds</h3>
|
|
156
|
+
<div class="product-rating">
|
|
157
|
+
⭐⭐⭐⭐⭐ <span>(256)</span>
|
|
158
|
+
</div>
|
|
159
|
+
<p>Crystal clear sound in a compact design</p>
|
|
160
|
+
<div class="product-footer">
|
|
161
|
+
<span class="product-price">$149</span>
|
|
162
|
+
<button class="product-btn">Add to Cart</button>
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
</section>
|
|
168
|
+
|
|
169
|
+
<!-- Team Cards -->
|
|
170
|
+
<section class="section">
|
|
171
|
+
<h2 class="section-title">Meet Our Team</h2>
|
|
172
|
+
<div class="team-container">
|
|
173
|
+
<div class="team-card">
|
|
174
|
+
<div class="team-avatar gradient-4">
|
|
175
|
+
<span class="avatar-text">JD</span>
|
|
176
|
+
</div>
|
|
177
|
+
<h3>John Doe</h3>
|
|
178
|
+
<p class="team-role">CEO & Founder</p>
|
|
179
|
+
<p class="team-bio">Visionary leader with 15 years of experience in tech innovation</p>
|
|
180
|
+
<div class="team-social">
|
|
181
|
+
<a href="#" class="social-link">💼</a>
|
|
182
|
+
<a href="#" class="social-link">🐦</a>
|
|
183
|
+
<a href="#" class="social-link">📧</a>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<div class="team-card">
|
|
188
|
+
<div class="team-avatar gradient-5">
|
|
189
|
+
<span class="avatar-text">JS</span>
|
|
190
|
+
</div>
|
|
191
|
+
<h3>Jane Smith</h3>
|
|
192
|
+
<p class="team-role">CTO</p>
|
|
193
|
+
<p class="team-bio">Tech expert specializing in scalable architectures</p>
|
|
194
|
+
<div class="team-social">
|
|
195
|
+
<a href="#" class="social-link">💼</a>
|
|
196
|
+
<a href="#" class="social-link">🐦</a>
|
|
197
|
+
<a href="#" class="social-link">📧</a>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
<div class="team-card">
|
|
202
|
+
<div class="team-avatar gradient-6">
|
|
203
|
+
<span class="avatar-text">MB</span>
|
|
204
|
+
</div>
|
|
205
|
+
<h3>Mike Brown</h3>
|
|
206
|
+
<p class="team-role">Lead Designer</p>
|
|
207
|
+
<p class="team-bio">Award-winning designer with a passion for user experience</p>
|
|
208
|
+
<div class="team-social">
|
|
209
|
+
<a href="#" class="social-link">💼</a>
|
|
210
|
+
<a href="#" class="social-link">🐦</a>
|
|
211
|
+
<a href="#" class="social-link">📧</a>
|
|
212
|
+
</div>
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<div class="team-card">
|
|
216
|
+
<div class="team-avatar gradient-7">
|
|
217
|
+
<span class="avatar-text">SE</span>
|
|
218
|
+
</div>
|
|
219
|
+
<h3>Sarah Evans</h3>
|
|
220
|
+
<p class="team-role">Marketing Director</p>
|
|
221
|
+
<p class="team-bio">Strategic thinker driving growth and brand awareness</p>
|
|
222
|
+
<div class="team-social">
|
|
223
|
+
<a href="#" class="social-link">💼</a>
|
|
224
|
+
<a href="#" class="social-link">🐦</a>
|
|
225
|
+
<a href="#" class="social-link">📧</a>
|
|
226
|
+
</div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
</section>
|
|
230
|
+
|
|
231
|
+
<!-- Testimonial Cards -->
|
|
232
|
+
<section class="section">
|
|
233
|
+
<h2 class="section-title">What Our Clients Say</h2>
|
|
234
|
+
<div class="testimonial-container">
|
|
235
|
+
<div class="testimonial-card">
|
|
236
|
+
<div class="quote-icon">"</div>
|
|
237
|
+
<p class="testimonial-text">This product completely transformed how we work. The team is incredibly responsive and the features are exactly what we needed.</p>
|
|
238
|
+
<div class="testimonial-author">
|
|
239
|
+
<div class="author-avatar gradient-8">AC</div>
|
|
240
|
+
<div class="author-info">
|
|
241
|
+
<h4>Alice Cooper</h4>
|
|
242
|
+
<p>CEO, TechCorp</p>
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
|
|
247
|
+
<div class="testimonial-card">
|
|
248
|
+
<div class="quote-icon">"</div>
|
|
249
|
+
<p class="testimonial-text">Outstanding quality and support. We've seen a 300% increase in productivity since implementation.</p>
|
|
250
|
+
<div class="testimonial-author">
|
|
251
|
+
<div class="author-avatar gradient-9">BD</div>
|
|
252
|
+
<div class="author-info">
|
|
253
|
+
<h4>Bob Davis</h4>
|
|
254
|
+
<p>CTO, StartupXYZ</p>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div class="testimonial-card">
|
|
260
|
+
<div class="quote-icon">"</div>
|
|
261
|
+
<p class="testimonial-text">Simply the best solution on the market. Easy to use, powerful features, and excellent value for money.</p>
|
|
262
|
+
<div class="testimonial-author">
|
|
263
|
+
<div class="author-avatar gradient-10">CE</div>
|
|
264
|
+
<div class="author-info">
|
|
265
|
+
<h4>Carol Edwards</h4>
|
|
266
|
+
<p>Director, MegaCorp</p>
|
|
267
|
+
</div>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
</div>
|
|
271
|
+
</section>
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<script src="script.js"></script>
|
|
275
|
+
</body>
|
|
276
|
+
</html>
|