.gitattributes CHANGED
@@ -1 +1,2 @@
1
  *.png filter=lfs diff=lfs merge=lfs -text
 
 
1
  *.png filter=lfs diff=lfs merge=lfs -text
2
+ project/public/marble-2398946.jpg filter=lfs diff=lfs merge=lfs -text
project/.bolt/config.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "template": "bolt-vite-react-ts"
3
+ }
project/.bolt/prompt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ For all designs I ask you to make, have them be beautiful, not cookie cutter. Make webpages that are fully featured and worthy for production.
2
+
3
+ By default, this template supports JSX syntax with Tailwind CSS classes, React hooks, and Lucide React for icons. Do not install other packages for UI themes, icons, etc unless absolutely necessary or I request them.
4
+
5
+ Use icons from lucide-react for logos.
project/.gitignore ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Logs
2
+ logs
3
+ *.log
4
+ npm-debug.log*
5
+ yarn-debug.log*
6
+ yarn-error.log*
7
+ pnpm-debug.log*
8
+ lerna-debug.log*
9
+
10
+ node_modules
11
+ dist
12
+ dist-ssr
13
+ *.local
14
+
15
+ # Editor directories and files
16
+ .vscode/*
17
+ !.vscode/extensions.json
18
+ .idea
19
+ .DS_Store
20
+ *.suo
21
+ *.ntvs*
22
+ *.njsproj
23
+ *.sln
24
+ *.sw?
25
+ .env
project/eslint.config.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import js from '@eslint/js';
2
+ import globals from 'globals';
3
+ import reactHooks from 'eslint-plugin-react-hooks';
4
+ import reactRefresh from 'eslint-plugin-react-refresh';
5
+ import tseslint from 'typescript-eslint';
6
+
7
+ export default tseslint.config(
8
+ { ignores: ['dist'] },
9
+ {
10
+ extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
+ files: ['**/*.{ts,tsx}'],
12
+ languageOptions: {
13
+ ecmaVersion: 2020,
14
+ globals: globals.browser,
15
+ },
16
+ plugins: {
17
+ 'react-hooks': reactHooks,
18
+ 'react-refresh': reactRefresh,
19
+ },
20
+ rules: {
21
+ ...reactHooks.configs.recommended.rules,
22
+ 'react-refresh/only-export-components': [
23
+ 'warn',
24
+ { allowConstantExport: true },
25
+ ],
26
+ },
27
+ }
28
+ );
project/index.html ADDED
@@ -0,0 +1,555 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Elegant Studio - Professional Services</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ body {
15
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
16
+ line-height: 1.6;
17
+ color: #333;
18
+ background-color: #ffffff;
19
+ }
20
+
21
+ /* Navigation */
22
+ .navbar {
23
+ background-color: #000;
24
+ padding: 1rem 0;
25
+ position: fixed;
26
+ width: 100%;
27
+ top: 0;
28
+ z-index: 1000;
29
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
30
+ }
31
+
32
+ .nav-container {
33
+ max-width: 1200px;
34
+ margin: 0 auto;
35
+ display: flex;
36
+ justify-content: space-between;
37
+ align-items: center;
38
+ padding: 0 2rem;
39
+ }
40
+
41
+ .logo {
42
+ font-size: 1.8rem;
43
+ font-weight: bold;
44
+ color: #fff;
45
+ text-decoration: none;
46
+ }
47
+
48
+ .nav-menu {
49
+ display: flex;
50
+ list-style: none;
51
+ gap: 2rem;
52
+ }
53
+
54
+ .nav-menu a {
55
+ color: #fff;
56
+ text-decoration: none;
57
+ font-weight: 500;
58
+ transition: color 0.3s ease;
59
+ padding: 0.5rem 1rem;
60
+ border-radius: 4px;
61
+ }
62
+
63
+ .nav-menu a:hover {
64
+ color: #ccc;
65
+ background-color: rgba(255, 255, 255, 0.1);
66
+ }
67
+
68
+ .mobile-menu-toggle {
69
+ display: none;
70
+ background: none;
71
+ border: none;
72
+ color: #fff;
73
+ font-size: 1.5rem;
74
+ cursor: pointer;
75
+ }
76
+
77
+ /* Hero Section */
78
+ .hero {
79
+ background:
80
+ linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)),
81
+ url('./public/marble-2398946.jpg');
82
+ background-size: cover;
83
+ background-position: center;
84
+ background-attachment: fixed;
85
+ min-height: 100vh;
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ text-align: center;
90
+ position: relative;
91
+ overflow: hidden;
92
+ }
93
+
94
+ .hero::before {
95
+ content: '';
96
+ position: absolute;
97
+ top: 0;
98
+ left: 0;
99
+ right: 0;
100
+ bottom: 0;
101
+ background:
102
+ radial-gradient(circle at 20% 20%, rgba(0,0,0,0.05) 0%, transparent 50%),
103
+ radial-gradient(circle at 80% 80%, rgba(0,0,0,0.03) 0%, transparent 50%),
104
+ radial-gradient(circle at 40% 60%, rgba(0,0,0,0.02) 0%, transparent 50%);
105
+ pointer-events: none;
106
+ }
107
+
108
+ .hero-content {
109
+ max-width: 800px;
110
+ padding: 2rem;
111
+ position: relative;
112
+ z-index: 2;
113
+ }
114
+
115
+ .hero h1 {
116
+ font-size: 3.5rem;
117
+ font-weight: 700;
118
+ color: #000;
119
+ margin-bottom: 1.5rem;
120
+ letter-spacing: -2px;
121
+ text-shadow: 2px 2px 4px rgba(255, 255, 255, 0.8);
122
+ }
123
+
124
+ .hero p {
125
+ font-size: 1.3rem;
126
+ color: #333;
127
+ margin-bottom: 2rem;
128
+ font-weight: 600;
129
+ text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.8);
130
+ }
131
+
132
+ .cta-button {
133
+ display: inline-block;
134
+ background-color: rgba(255, 255, 255, 0.9);
135
+ color: #000;
136
+ padding: 1rem 2rem;
137
+ text-decoration: none;
138
+ border-radius: 4px;
139
+ font-weight: 600;
140
+ transition: all 0.3s ease;
141
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
142
+ }
143
+
144
+ .cta-button:hover {
145
+ background-color: #fff;
146
+ color: #fff;
147
+ padding: 1rem 2rem;
148
+ text-decoration: none;
149
+ border-radius: 4px;
150
+ font-weight: 600;
151
+ transition: all 0.3s ease;
152
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
153
+ }
154
+
155
+ .cta-button:hover {
156
+ background-color: #fff;
157
+ transform: translateY(-2px);
158
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
159
+ }
160
+
161
+ /* Section Styles */
162
+ section {
163
+ padding: 5rem 0;
164
+ }
165
+
166
+ .container {
167
+ max-width: 1200px;
168
+ margin: 0 auto;
169
+ padding: 0 2rem;
170
+ }
171
+
172
+ .section-title {
173
+ text-align: center;
174
+ font-size: 2.5rem;
175
+ color: #000;
176
+ margin-bottom: 3rem;
177
+ font-weight: 300;
178
+ letter-spacing: -1px;
179
+ }
180
+
181
+ /* Image Showcase */
182
+ .showcase {
183
+ background-color: #f8f9fa;
184
+ }
185
+
186
+ .image-grid {
187
+ display: grid;
188
+ grid-template-columns: 1fr 1fr;
189
+ gap: 2rem;
190
+ margin-top: 3rem;
191
+ }
192
+
193
+ .image-item {
194
+ position: relative;
195
+ aspect-ratio: 4/3;
196
+ background-color: #e9ecef;
197
+ border-radius: 8px;
198
+ overflow: hidden;
199
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
200
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
201
+ }
202
+
203
+ .image-item:hover {
204
+ transform: translateY(-5px);
205
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.15);
206
+ }
207
+
208
+ .image-placeholder {
209
+ width: 100%;
210
+ height: 100%;
211
+ background: linear-gradient(45deg, #dee2e6, #ced4da);
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ font-size: 1.2rem;
216
+ color: #6c757d;
217
+ font-weight: 500;
218
+ }
219
+
220
+ .image-caption {
221
+ position: absolute;
222
+ bottom: 0;
223
+ left: 0;
224
+ right: 0;
225
+ background: linear-gradient(transparent, rgba(0,0,0,0.8));
226
+ color: #fff;
227
+ padding: 2rem 1.5rem 1.5rem;
228
+ transform: translateY(100%);
229
+ transition: transform 0.3s ease;
230
+ }
231
+
232
+ .image-item:hover .image-caption {
233
+ transform: translateY(0);
234
+ }
235
+
236
+ /* Team Section */
237
+ .team {
238
+ background-color: #fff;
239
+ }
240
+
241
+ .team-grid {
242
+ display: grid;
243
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
244
+ gap: 2rem;
245
+ margin-top: 3rem;
246
+ }
247
+
248
+ .team-member {
249
+ text-align: center;
250
+ padding: 2rem;
251
+ border-radius: 8px;
252
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
253
+ }
254
+
255
+ .team-member:hover {
256
+ transform: translateY(-5px);
257
+ box-shadow: 0 15px 35px rgba(0, 0, 0, 0.1);
258
+ }
259
+
260
+ .team-photo {
261
+ width: 150px;
262
+ height: 150px;
263
+ border-radius: 50%;
264
+ background: linear-gradient(45deg, #e9ecef, #ced4da);
265
+ margin: 0 auto 1.5rem;
266
+ display: flex;
267
+ align-items: center;
268
+ justify-content: center;
269
+ font-size: 3rem;
270
+ color: #6c757d;
271
+ }
272
+
273
+ .team-member h3 {
274
+ font-size: 1.5rem;
275
+ color: #000;
276
+ margin-bottom: 0.5rem;
277
+ font-weight: 500;
278
+ }
279
+
280
+ .team-member .role {
281
+ color: #666;
282
+ font-style: italic;
283
+ margin-bottom: 1rem;
284
+ }
285
+
286
+ .team-member p {
287
+ color: #666;
288
+ line-height: 1.6;
289
+ }
290
+
291
+ /* Contact Section */
292
+ .contact {
293
+ background-color: #000;
294
+ color: #fff;
295
+ }
296
+
297
+ .contact .section-title {
298
+ color: #fff;
299
+ }
300
+
301
+ .contact-grid {
302
+ display: grid;
303
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
304
+ gap: 3rem;
305
+ margin-top: 3rem;
306
+ }
307
+
308
+ .contact-item {
309
+ text-align: center;
310
+ padding: 2rem;
311
+ }
312
+
313
+ .contact-icon {
314
+ font-size: 3rem;
315
+ margin-bottom: 1rem;
316
+ display: block;
317
+ }
318
+
319
+ .contact-item h3 {
320
+ font-size: 1.3rem;
321
+ margin-bottom: 1rem;
322
+ color: #fff;
323
+ }
324
+
325
+ .contact-item p {
326
+ color: #ccc;
327
+ line-height: 1.8;
328
+ }
329
+
330
+ .contact-item a {
331
+ color: #fff;
332
+ text-decoration: none;
333
+ transition: color 0.3s ease;
334
+ }
335
+
336
+ .contact-item a:hover {
337
+ color: #ccc;
338
+ }
339
+
340
+ /* Footer */
341
+ .footer {
342
+ background-color: #000;
343
+ color: #666;
344
+ text-align: center;
345
+ padding: 2rem 0;
346
+ border-top: 1px solid #333;
347
+ }
348
+
349
+ /* Responsive Design */
350
+ @media (max-width: 768px) {
351
+ .nav-menu {
352
+ display: none;
353
+ position: absolute;
354
+ top: 100%;
355
+ left: 0;
356
+ width: 100%;
357
+ background-color: #000;
358
+ flex-direction: column;
359
+ padding: 1rem 0;
360
+ gap: 0;
361
+ }
362
+
363
+ .nav-menu.active {
364
+ display: flex;
365
+ }
366
+
367
+ .nav-menu a {
368
+ padding: 1rem 2rem;
369
+ border-radius: 0;
370
+ }
371
+
372
+ .mobile-menu-toggle {
373
+ display: block;
374
+ }
375
+
376
+ .hero h1 {
377
+ font-size: 2.5rem;
378
+ }
379
+
380
+ .hero p {
381
+ font-size: 1.1rem;
382
+ }
383
+
384
+ .section-title {
385
+ font-size: 2rem;
386
+ }
387
+
388
+ .image-grid {
389
+ grid-template-columns: 1fr;
390
+ gap: 1.5rem;
391
+ }
392
+
393
+ .team-grid {
394
+ grid-template-columns: 1fr;
395
+ }
396
+
397
+ .contact-grid {
398
+ grid-template-columns: 1fr;
399
+ gap: 2rem;
400
+ }
401
+
402
+ section {
403
+ padding: 3rem 0;
404
+ }
405
+
406
+ .container {
407
+ padding: 0 1rem;
408
+ }
409
+ }
410
+ </style>
411
+ </head>
412
+ <body>
413
+ <!-- Navigation -->
414
+ <nav class="navbar">
415
+ <div class="nav-container">
416
+ <a href="#home" class="logo">Elegant Studio</a>
417
+ <ul class="nav-menu">
418
+ <li><a href="#home">Home</a></li>
419
+ <li><a href="#showcase">Portfolio</a></li>
420
+ <li><a href="#team">Team</a></li>
421
+ <li><a href="#contact">Contact</a></li>
422
+ </ul>
423
+ <button class="mobile-menu-toggle" onclick="toggleMobileMenu()">☰</button>
424
+ </div>
425
+ </nav>
426
+
427
+ <!-- Hero Section -->
428
+ <section id="home" class="hero">
429
+ <div class="hero-content">
430
+ <h1>Crafting Excellence</h1>
431
+ <p>We transform visions into reality through innovative design and meticulous attention to detail. Experience the perfect blend of creativity and professionalism.</p>
432
+ <a href="#contact" class="cta-button">Get Started</a>
433
+ </div>
434
+ </section>
435
+
436
+ <!-- Image Showcase -->
437
+ <section id="showcase" class="showcase">
438
+ <div class="container">
439
+ <h2 class="section-title">Our Latest Work</h2>
440
+ <div class="image-grid">
441
+ <div class="image-item">
442
+ <div class="image-placeholder">Project Alpha</div>
443
+ <div class="image-caption">
444
+ <h3>Innovative Design</h3>
445
+ <p>A contemporary approach to modern architecture, blending functionality with aesthetic appeal.</p>
446
+ </div>
447
+ </div>
448
+ <div class="image-item">
449
+ <div class="image-placeholder">Project Beta</div>
450
+ <div class="image-caption">
451
+ <h3>Creative Solutions</h3>
452
+ <p>Pushing boundaries with cutting-edge technology and sustainable design principles.</p>
453
+ </div>
454
+ </div>
455
+ </div>
456
+ </div>
457
+ </section>
458
+
459
+ <!-- Team Section -->
460
+ <section id="team" class="team">
461
+ <div class="container">
462
+ <h2 class="section-title">Meet Our Team</h2>
463
+ <div class="team-grid">
464
+ <div class="team-member">
465
+ <div class="team-photo">👨‍💼</div>
466
+ <h3>Asta Astrauskienė</h3>
467
+ <div class="role">Attorney at law</div>
468
+ <p>With over 15 years of experience in legal practice, Asta brings comprehensive legal expertise and strategic counsel to every case.</p>
469
+ </div>
470
+ <div class="team-member">
471
+ <div class="team-photo">👩‍💼</div>
472
+ <h3>Simona Jašmonaitė</h3>
473
+ <div class="role">Attorney at law</div>
474
+ <p>Simona's expertise in legal analysis and client advocacy creates effective solutions that protect clients' interests and achieve favorable outcomes.</p>
475
+ </div>
476
+ </div>
477
+ </div>
478
+ </section>
479
+
480
+ <!-- Contact Section -->
481
+ <section id="contact" class="contact">
482
+ <div class="container">
483
+ <h2 class="section-title">Get In Touch</h2>
484
+ <div class="contact-grid">
485
+ <div class="contact-item">
486
+ <span class="contact-icon">✉️</span>
487
+ <h3>Email</h3>
488
+ <p>
489
+ <a href="mailto:hello@elegantstudio.com">hello@elegantstudio.com</a><br>
490
+ <a href="mailto:info@elegantstudio.com">info@elegantstudio.com</a>
491
+ </p>
492
+ </div>
493
+ <div class="contact-item">
494
+ <span class="contact-icon">📞</span>
495
+ <h3>Phone</h3>
496
+ <p>
497
+ <a href="tel:+1234567890">(123) 456-7890</a><br>
498
+ <a href="tel:+1234567891">(123) 456-7891</a>
499
+ </p>
500
+ </div>
501
+ <div class="contact-item">
502
+ <span class="contact-icon">📍</span>
503
+ <h3>Address</h3>
504
+ <p>
505
+ Konstitucijos pr. 7<br>
506
+ Vilnius<br>
507
+ Lietuva
508
+ </p>
509
+ </div>
510
+ </div>
511
+ </div>
512
+ </section>
513
+
514
+ <!-- Footer -->
515
+ <footer class="footer">
516
+ <div class="container">
517
+ <p>&copy; 2024 Elegant Studio. All rights reserved. Crafted with passion and precision.</p>
518
+ </div>
519
+ </footer>
520
+
521
+ <script>
522
+ function toggleMobileMenu() {
523
+ const navMenu = document.querySelector('.nav-menu');
524
+ navMenu.classList.toggle('active');
525
+ }
526
+
527
+ // Smooth scrolling for navigation links
528
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
529
+ anchor.addEventListener('click', function (e) {
530
+ e.preventDefault();
531
+ const target = document.querySelector(this.getAttribute('href'));
532
+ const offsetTop = target.offsetTop - 80; // Account for fixed navbar
533
+
534
+ window.scrollTo({
535
+ top: offsetTop,
536
+ behavior: 'smooth'
537
+ });
538
+
539
+ // Close mobile menu if open
540
+ document.querySelector('.nav-menu').classList.remove('active');
541
+ });
542
+ });
543
+
544
+ // Add scroll effect to navbar
545
+ window.addEventListener('scroll', function() {
546
+ const navbar = document.querySelector('.navbar');
547
+ if (window.scrollY > 50) {
548
+ navbar.style.backgroundColor = 'rgba(0, 0, 0, 0.95)';
549
+ } else {
550
+ navbar.style.backgroundColor = '#000';
551
+ }
552
+ });
553
+ </script>
554
+ </body>
555
+ </html>
project/package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
project/package.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "vite-react-typescript-starter",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "lint": "eslint .",
10
+ "preview": "vite preview"
11
+ },
12
+ "dependencies": {
13
+ "lucide-react": "^0.344.0",
14
+ "react": "^18.3.1",
15
+ "react-dom": "^18.3.1"
16
+ },
17
+ "devDependencies": {
18
+ "@eslint/js": "^9.9.1",
19
+ "@types/react": "^18.3.5",
20
+ "@types/react-dom": "^18.3.0",
21
+ "@vitejs/plugin-react": "^4.3.1",
22
+ "autoprefixer": "^10.4.18",
23
+ "eslint": "^9.9.1",
24
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
25
+ "eslint-plugin-react-refresh": "^0.4.11",
26
+ "globals": "^15.9.0",
27
+ "postcss": "^8.4.35",
28
+ "tailwindcss": "^3.4.1",
29
+ "typescript": "^5.5.3",
30
+ "typescript-eslint": "^8.3.0",
31
+ "vite": "^5.4.2"
32
+ }
33
+ }
project/postcss.config.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };
project/public/marble-2398946.jpg ADDED

Git LFS Details

  • SHA256: d9e939db5baf44c66d7307690083f67736dee9400d3d28eb4f0d4bc8319c4d82
  • Pointer size: 131 Bytes
  • Size of remote file: 585 kB
project/src/App.tsx ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from 'react';
2
+
3
+ function App() {
4
+ return (
5
+ <div className="min-h-screen bg-gray-100 flex items-center justify-center">
6
+ <p>Start prompting (or editing) to see magic happen :)</p>
7
+ </div>
8
+ );
9
+ }
10
+
11
+ export default App;
project/src/index.css ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
project/src/main.tsx ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { StrictMode } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import App from './App.tsx';
4
+ import './index.css';
5
+
6
+ createRoot(document.getElementById('root')!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>
10
+ );
project/src/vite-env.d.ts ADDED
@@ -0,0 +1 @@
 
 
1
+ /// <reference types="vite/client" />
project/tailwind.config.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ plugins: [],
8
+ };
project/tsconfig.app.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+
9
+ /* Bundler mode */
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "isolatedModules": true,
13
+ "moduleDetection": "force",
14
+ "noEmit": true,
15
+ "jsx": "react-jsx",
16
+
17
+ /* Linting */
18
+ "strict": true,
19
+ "noUnusedLocals": true,
20
+ "noUnusedParameters": true,
21
+ "noFallthroughCasesInSwitch": true
22
+ },
23
+ "include": ["src"]
24
+ }
project/tsconfig.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "files": [],
3
+ "references": [
4
+ { "path": "./tsconfig.app.json" },
5
+ { "path": "./tsconfig.node.json" }
6
+ ]
7
+ }
project/tsconfig.node.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "lib": ["ES2023"],
5
+ "module": "ESNext",
6
+ "skipLibCheck": true,
7
+
8
+ /* Bundler mode */
9
+ "moduleResolution": "bundler",
10
+ "allowImportingTsExtensions": true,
11
+ "isolatedModules": true,
12
+ "moduleDetection": "force",
13
+ "noEmit": true,
14
+
15
+ /* Linting */
16
+ "strict": true,
17
+ "noUnusedLocals": true,
18
+ "noUnusedParameters": true,
19
+ "noFallthroughCasesInSwitch": true
20
+ },
21
+ "include": ["vite.config.ts"]
22
+ }
project/vite.config.ts ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+
4
+ // https://vitejs.dev/config/
5
+ export default defineConfig({
6
+ plugins: [react()],
7
+ optimizeDeps: {
8
+ exclude: ['lucide-react'],
9
+ },
10
+ });