create-flexireact 1.3.0 → 1.3.2

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.
Files changed (2) hide show
  1. package/index.js +234 -62
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -616,7 +616,7 @@ interface LayoutProps {
616
616
 
617
617
  export default function RootLayout({ children }: LayoutProps) {
618
618
  return (
619
- <div className="relative min-h-screen bg-background text-foreground antialiased">
619
+ <div className="app">
620
620
  <Navbar />
621
621
  <main>{children}</main>
622
622
  <Footer />
@@ -643,39 +643,45 @@ export default function HomePage() {
643
643
  // Styles
644
644
  // ============================================================================
645
645
 
646
- 'app/styles/globals.css': () => `@tailwind base;
647
- @tailwind components;
648
- @tailwind utilities;
646
+ 'app/styles/globals.css': () => `/* FlexiReact Default Template Styles */
649
647
 
650
648
  :root {
651
649
  --bg: #0a0a0a;
652
650
  --fg: #fafafa;
653
651
  --primary: #10b981;
652
+ --primary-light: #34d399;
653
+ --accent: #06b6d4;
654
654
  --muted: #71717a;
655
655
  --border: #27272a;
656
656
  --card: #18181b;
657
657
  }
658
658
 
659
- * { box-sizing: border-box; margin: 0; padding: 0; }
659
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
660
+
661
+ html { scroll-behavior: smooth; }
660
662
 
661
663
  body {
662
- font-family: 'Inter', system-ui, sans-serif;
664
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
663
665
  background: var(--bg);
664
666
  color: var(--fg);
665
667
  min-height: 100vh;
666
668
  -webkit-font-smoothing: antialiased;
669
+ line-height: 1.6;
667
670
  }
668
671
 
669
- a { color: inherit; text-decoration: none; }
672
+ a { color: inherit; text-decoration: none; transition: color 0.2s; }
670
673
  a:hover { color: var(--primary); }
671
674
 
675
+ /* Layout */
676
+ .app { min-height: 100vh; }
677
+
672
678
  /* Navbar */
673
679
  .navbar {
674
680
  position: sticky;
675
681
  top: 0;
676
682
  z-index: 50;
677
683
  border-bottom: 1px solid var(--border);
678
- background: rgba(10,10,10,0.8);
684
+ background: rgba(10,10,10,0.85);
679
685
  backdrop-filter: blur(12px);
680
686
  }
681
687
  .navbar-inner {
@@ -690,15 +696,16 @@ a:hover { color: var(--primary); }
690
696
  .logo-icon {
691
697
  width: 32px;
692
698
  height: 32px;
693
- background: linear-gradient(135deg, var(--primary), #06b6d4);
699
+ background: linear-gradient(135deg, var(--primary), var(--accent));
694
700
  border-radius: 8px;
695
701
  display: flex;
696
702
  align-items: center;
697
703
  justify-content: center;
704
+ font-size: 1rem;
698
705
  }
699
706
  .logo-text { font-weight: 700; font-size: 1.125rem; }
700
- .nav-links { display: flex; gap: 1.5rem; }
701
- .nav-links a { color: var(--muted); font-size: 0.875rem; }
707
+ .nav-links { display: flex; gap: 2rem; }
708
+ .nav-links a { color: var(--muted); font-size: 0.9375rem; font-weight: 500; }
702
709
  .nav-links a:hover { color: var(--fg); }
703
710
 
704
711
  /* Hero */
@@ -709,48 +716,57 @@ a:hover { color: var(--primary); }
709
716
  align-items: center;
710
717
  justify-content: center;
711
718
  overflow: hidden;
719
+ padding: 4rem 1.5rem;
712
720
  }
713
721
  .hero-glow {
714
722
  position: absolute;
715
723
  top: 50%;
716
724
  left: 50%;
717
725
  transform: translate(-50%, -50%);
718
- width: 600px;
719
- height: 600px;
720
- background: radial-gradient(circle, rgba(16,185,129,0.15), transparent 70%);
726
+ width: 700px;
727
+ height: 700px;
728
+ background: radial-gradient(circle, rgba(16,185,129,0.12), transparent 70%);
721
729
  pointer-events: none;
722
730
  }
723
731
  .hero-content {
732
+ position: relative;
733
+ z-index: 1;
724
734
  text-align: center;
725
735
  padding: 2rem;
726
736
  max-width: 800px;
727
737
  }
728
738
  .hero-badge {
729
- display: inline-block;
730
- padding: 0.5rem 1rem;
739
+ display: inline-flex;
740
+ align-items: center;
741
+ gap: 0.5rem;
742
+ padding: 0.5rem 1.25rem;
731
743
  background: rgba(16,185,129,0.1);
732
744
  border: 1px solid rgba(16,185,129,0.2);
733
745
  border-radius: 9999px;
734
746
  font-size: 0.875rem;
747
+ font-weight: 500;
735
748
  color: var(--primary);
736
749
  margin-bottom: 2rem;
737
750
  }
738
751
  .hero-title {
739
- font-size: clamp(2.5rem, 6vw, 4.5rem);
752
+ font-size: clamp(2.5rem, 7vw, 4.5rem);
740
753
  font-weight: 800;
741
754
  line-height: 1.1;
755
+ letter-spacing: -0.02em;
742
756
  margin-bottom: 1.5rem;
743
757
  }
744
758
  .gradient-text {
745
- background: linear-gradient(90deg, var(--primary), #06b6d4);
759
+ background: linear-gradient(135deg, var(--primary), var(--accent));
746
760
  -webkit-background-clip: text;
747
761
  -webkit-text-fill-color: transparent;
762
+ background-clip: text;
748
763
  }
749
764
  .hero-subtitle {
750
765
  font-size: 1.125rem;
751
766
  color: var(--muted);
752
767
  line-height: 1.7;
753
- margin-bottom: 2.5rem;
768
+ max-width: 600px;
769
+ margin: 0 auto 2.5rem;
754
770
  }
755
771
  .hero-buttons {
756
772
  display: flex;
@@ -760,21 +776,36 @@ a:hover { color: var(--primary); }
760
776
  margin-bottom: 3rem;
761
777
  }
762
778
  .btn-primary {
779
+ display: inline-flex;
780
+ align-items: center;
781
+ gap: 0.5rem;
763
782
  padding: 0.875rem 2rem;
764
- background: var(--primary);
783
+ background: linear-gradient(135deg, var(--primary), var(--accent));
765
784
  color: #000;
766
785
  font-weight: 600;
767
- border-radius: 8px;
768
- transition: opacity 0.2s;
786
+ border-radius: 10px;
787
+ transition: all 0.2s;
788
+ }
789
+ .btn-primary:hover {
790
+ transform: translateY(-2px);
791
+ box-shadow: 0 10px 30px rgba(16,185,129,0.3);
792
+ color: #000;
769
793
  }
770
- .btn-primary:hover { opacity: 0.9; color: #000; }
771
794
  .btn-outline {
795
+ display: inline-flex;
796
+ align-items: center;
797
+ gap: 0.5rem;
772
798
  padding: 0.875rem 2rem;
773
799
  border: 1px solid var(--border);
774
- border-radius: 8px;
775
- transition: border-color 0.2s;
800
+ border-radius: 10px;
801
+ font-weight: 600;
802
+ transition: all 0.2s;
803
+ }
804
+ .btn-outline:hover {
805
+ border-color: var(--primary);
806
+ background: rgba(16,185,129,0.1);
807
+ color: var(--fg);
776
808
  }
777
- .btn-outline:hover { border-color: var(--primary); color: var(--fg); }
778
809
 
779
810
  /* Terminal */
780
811
  .terminal {
@@ -784,23 +815,24 @@ a:hover { color: var(--primary); }
784
815
  max-width: 500px;
785
816
  margin: 0 auto;
786
817
  overflow: hidden;
818
+ text-align: left;
787
819
  }
788
820
  .terminal-header {
789
- padding: 0.75rem 1rem;
821
+ padding: 0.875rem 1rem;
790
822
  border-bottom: 1px solid var(--border);
791
823
  display: flex;
792
824
  gap: 0.5rem;
825
+ background: rgba(255,255,255,0.02);
793
826
  }
794
827
  .dot { width: 12px; height: 12px; border-radius: 50%; }
795
828
  .dot.red { background: #ef4444; }
796
829
  .dot.yellow { background: #eab308; }
797
830
  .dot.green { background: #22c55e; }
798
831
  .terminal-body {
799
- padding: 1rem;
800
- font-family: monospace;
832
+ padding: 1.25rem;
833
+ font-family: 'JetBrains Mono', 'Fira Code', monospace;
801
834
  font-size: 0.875rem;
802
- text-align: left;
803
- line-height: 1.6;
835
+ line-height: 1.8;
804
836
  }
805
837
  .dim { color: var(--muted); }
806
838
  .green { color: var(--primary); }
@@ -815,34 +847,50 @@ a:hover { color: var(--primary); }
815
847
  font-size: 2rem;
816
848
  font-weight: 700;
817
849
  text-align: center;
818
- margin-bottom: 1rem;
850
+ margin-bottom: 0.75rem;
819
851
  }
820
852
  .features-subtitle {
821
853
  text-align: center;
822
854
  color: var(--muted);
823
855
  margin-bottom: 3rem;
856
+ font-size: 1.0625rem;
824
857
  }
825
858
  .features-grid {
826
859
  display: grid;
827
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
860
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
828
861
  gap: 1.5rem;
829
862
  }
830
863
  .feature-card {
831
864
  background: var(--card);
832
865
  border: 1px solid var(--border);
866
+ border-radius: 16px;
867
+ padding: 1.75rem;
868
+ transition: all 0.3s;
869
+ }
870
+ .feature-card:hover {
871
+ border-color: var(--primary);
872
+ transform: translateY(-4px);
873
+ }
874
+ .feature-icon {
875
+ font-size: 2rem;
876
+ margin-bottom: 1rem;
877
+ display: block;
878
+ width: 48px;
879
+ height: 48px;
880
+ display: flex;
881
+ align-items: center;
882
+ justify-content: center;
883
+ background: rgba(16,185,129,0.1);
833
884
  border-radius: 12px;
834
- padding: 1.5rem;
835
- transition: border-color 0.2s;
836
885
  }
837
- .feature-card:hover { border-color: var(--primary); }
838
- .feature-icon { font-size: 2rem; margin-bottom: 1rem; display: block; }
839
- .feature-title { font-weight: 600; margin-bottom: 0.5rem; }
840
- .feature-desc { color: var(--muted); font-size: 0.875rem; line-height: 1.6; }
886
+ .feature-title { font-weight: 600; font-size: 1.0625rem; margin-bottom: 0.5rem; }
887
+ .feature-desc { color: var(--muted); font-size: 0.9375rem; line-height: 1.6; }
841
888
 
842
889
  /* Footer */
843
890
  .footer {
844
891
  border-top: 1px solid var(--border);
845
892
  padding: 2rem 1.5rem;
893
+ margin-top: 2rem;
846
894
  }
847
895
  .footer-inner {
848
896
  max-width: 1200px;
@@ -856,7 +904,16 @@ a:hover { color: var(--primary); }
856
904
  color: var(--muted);
857
905
  }
858
906
  .footer-links { display: flex; gap: 1.5rem; }
859
- .footer-links a:hover { color: var(--fg); }
907
+ .footer-links a:hover { color: var(--primary); }
908
+
909
+ /* Responsive */
910
+ @media (max-width: 768px) {
911
+ .nav-links { display: none; }
912
+ .hero { min-height: auto; padding: 6rem 1.5rem 4rem; }
913
+ .hero-buttons { flex-direction: column; align-items: center; }
914
+ .btn-primary, .btn-outline { width: 100%; justify-content: center; }
915
+ .footer-inner { flex-direction: column; text-align: center; }
916
+ }
860
917
  `,
861
918
 
862
919
  // ============================================================================
@@ -1173,29 +1230,115 @@ export default function HomePage() {
1173
1230
  // Styles
1174
1231
  // ============================================================================
1175
1232
 
1176
- 'app/styles/globals.css': () => `@tailwind base;
1177
- @tailwind components;
1178
- @tailwind utilities;
1233
+ 'app/styles/globals.css': () => `/* Flexi UI Template Styles */
1179
1234
 
1180
1235
  :root {
1181
1236
  --bg: #0a0a0a;
1182
1237
  --fg: #fafafa;
1183
1238
  --primary: #00FF9C;
1239
+ --primary-dark: #10b981;
1184
1240
  --muted: #94a3b8;
1185
1241
  --border: #1e293b;
1186
1242
  --card: #0f0f0f;
1187
1243
  }
1188
1244
 
1189
- * { box-sizing: border-box; margin: 0; padding: 0; }
1245
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
1246
+
1247
+ html { scroll-behavior: smooth; }
1190
1248
 
1191
1249
  body {
1192
- font-family: 'Inter', system-ui, sans-serif;
1250
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
1193
1251
  background: var(--bg);
1194
1252
  color: var(--fg);
1195
1253
  min-height: 100vh;
1254
+ -webkit-font-smoothing: antialiased;
1255
+ line-height: 1.6;
1256
+ }
1257
+
1258
+ a { color: inherit; text-decoration: none; transition: color 0.2s; }
1259
+ a:hover { color: var(--primary); }
1260
+
1261
+ /* Buttons */
1262
+ button {
1263
+ font-family: inherit;
1264
+ cursor: pointer;
1265
+ }
1266
+
1267
+ .btn, [class*="btn-"] {
1268
+ display: inline-flex;
1269
+ align-items: center;
1270
+ justify-content: center;
1271
+ gap: 0.5rem;
1272
+ padding: 0.75rem 1.5rem;
1273
+ font-size: 0.9375rem;
1274
+ font-weight: 600;
1275
+ border-radius: 8px;
1276
+ transition: all 0.2s;
1277
+ border: none;
1278
+ cursor: pointer;
1279
+ }
1280
+
1281
+ .btn-primary, button[class*="primary"] {
1282
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
1283
+ color: #000;
1196
1284
  }
1197
1285
 
1198
- a { color: inherit; text-decoration: none; }
1286
+ .btn-primary:hover, button[class*="primary"]:hover {
1287
+ transform: translateY(-2px);
1288
+ box-shadow: 0 8px 25px rgba(0, 255, 156, 0.3);
1289
+ }
1290
+
1291
+ .btn-outline, button[class*="outline"] {
1292
+ background: transparent;
1293
+ border: 1px solid var(--border);
1294
+ color: var(--fg);
1295
+ }
1296
+
1297
+ .btn-outline:hover, button[class*="outline"]:hover {
1298
+ border-color: var(--primary);
1299
+ background: rgba(0, 255, 156, 0.1);
1300
+ }
1301
+
1302
+ .btn-ghost, button[class*="ghost"] {
1303
+ background: transparent;
1304
+ border: 1px solid var(--border);
1305
+ color: var(--fg);
1306
+ }
1307
+
1308
+ .btn-ghost:hover, button[class*="ghost"]:hover {
1309
+ background: rgba(255, 255, 255, 0.05);
1310
+ border-color: var(--muted);
1311
+ }
1312
+
1313
+ .btn-sm, button[class*="sm"] {
1314
+ padding: 0.5rem 1rem;
1315
+ font-size: 0.875rem;
1316
+ }
1317
+
1318
+ /* Badge */
1319
+ [class*="badge"], .badge {
1320
+ display: inline-flex;
1321
+ align-items: center;
1322
+ padding: 0.25rem 0.75rem;
1323
+ font-size: 0.75rem;
1324
+ font-weight: 600;
1325
+ border-radius: 9999px;
1326
+ background: rgba(0, 255, 156, 0.1);
1327
+ color: var(--primary);
1328
+ border: 1px solid rgba(0, 255, 156, 0.2);
1329
+ }
1330
+
1331
+ /* Card */
1332
+ [class*="card"], .card {
1333
+ background: var(--card);
1334
+ border: 1px solid var(--border);
1335
+ border-radius: 12px;
1336
+ transition: all 0.3s;
1337
+ }
1338
+
1339
+ [class*="card"]:hover, .card:hover {
1340
+ border-color: var(--primary);
1341
+ }
1199
1342
 
1200
1343
  /* Navbar */
1201
1344
  .navbar {
@@ -1205,7 +1348,7 @@ a { color: inherit; text-decoration: none; }
1205
1348
  right: 0;
1206
1349
  z-index: 50;
1207
1350
  border-bottom: 1px solid var(--border);
1208
- background: rgba(10,10,10,0.8);
1351
+ background: rgba(10,10,10,0.85);
1209
1352
  backdrop-filter: blur(12px);
1210
1353
  }
1211
1354
  .navbar-inner {
@@ -1220,16 +1363,17 @@ a { color: inherit; text-decoration: none; }
1220
1363
  .logo-icon {
1221
1364
  width: 32px;
1222
1365
  height: 32px;
1223
- background: linear-gradient(135deg, var(--primary), #10b981);
1366
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
1224
1367
  border-radius: 8px;
1225
1368
  display: flex;
1226
1369
  align-items: center;
1227
1370
  justify-content: center;
1228
1371
  font-weight: 900;
1372
+ font-size: 1rem;
1229
1373
  color: #000;
1230
1374
  }
1231
- .logo-text { font-weight: 700; }
1232
- .nav-links { display: flex; gap: 0.5rem; }
1375
+ .logo-text { font-weight: 700; font-size: 1.125rem; }
1376
+ .nav-links { display: flex; gap: 0.75rem; align-items: center; }
1233
1377
 
1234
1378
  /* Hero */
1235
1379
  .hero {
@@ -1238,44 +1382,51 @@ a { color: inherit; text-decoration: none; }
1238
1382
  display: flex;
1239
1383
  align-items: center;
1240
1384
  justify-content: center;
1241
- padding-top: 4rem;
1385
+ padding: 6rem 1.5rem;
1386
+ overflow: hidden;
1242
1387
  }
1243
1388
  .hero-glow {
1244
1389
  position: absolute;
1245
1390
  top: 50%;
1246
1391
  left: 50%;
1247
1392
  transform: translate(-50%, -50%);
1248
- width: 600px;
1249
- height: 600px;
1250
- background: radial-gradient(circle, rgba(0,255,156,0.15), transparent 70%);
1393
+ width: 700px;
1394
+ height: 700px;
1395
+ background: radial-gradient(circle, rgba(0,255,156,0.12), transparent 70%);
1251
1396
  pointer-events: none;
1252
1397
  }
1253
1398
  .hero-content {
1399
+ position: relative;
1400
+ z-index: 1;
1254
1401
  text-align: center;
1255
1402
  padding: 2rem;
1256
1403
  max-width: 800px;
1257
1404
  }
1258
1405
  .hero-title {
1259
- font-size: clamp(2.5rem, 6vw, 4rem);
1406
+ font-size: clamp(2.5rem, 7vw, 4.5rem);
1260
1407
  font-weight: 800;
1261
1408
  line-height: 1.1;
1409
+ letter-spacing: -0.02em;
1262
1410
  margin-bottom: 1.5rem;
1263
1411
  }
1264
1412
  .gradient-text {
1265
- background: linear-gradient(90deg, var(--primary), #10b981);
1413
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
1266
1414
  -webkit-background-clip: text;
1267
1415
  -webkit-text-fill-color: transparent;
1416
+ background-clip: text;
1268
1417
  }
1269
1418
  .hero-subtitle {
1270
1419
  font-size: 1.125rem;
1271
1420
  color: var(--muted);
1272
1421
  line-height: 1.7;
1273
- margin-bottom: 2rem;
1422
+ max-width: 600px;
1423
+ margin: 0 auto 2.5rem;
1274
1424
  }
1275
1425
  .hero-buttons {
1276
1426
  display: flex;
1277
1427
  gap: 1rem;
1278
1428
  justify-content: center;
1429
+ flex-wrap: wrap;
1279
1430
  }
1280
1431
 
1281
1432
  /* Features */
@@ -1292,17 +1443,28 @@ a { color: inherit; text-decoration: none; }
1292
1443
  }
1293
1444
  .features-grid {
1294
1445
  display: grid;
1295
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1446
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
1296
1447
  gap: 1.5rem;
1297
1448
  }
1298
1449
  .feature-card {
1299
- padding: 1.5rem;
1450
+ padding: 1.75rem;
1300
1451
  text-align: center;
1452
+ background: var(--card);
1453
+ border: 1px solid var(--border);
1454
+ border-radius: 16px;
1455
+ transition: all 0.3s;
1456
+ }
1457
+ .feature-card:hover {
1458
+ border-color: var(--primary);
1459
+ transform: translateY(-4px);
1460
+ }
1461
+ .feature-icon {
1462
+ font-size: 2rem;
1463
+ margin-bottom: 1rem;
1464
+ display: block;
1301
1465
  }
1302
- .feature-card:hover { border-color: var(--primary); }
1303
- .feature-icon { font-size: 2rem; margin-bottom: 1rem; }
1304
1466
  .feature-card h3 { font-weight: 600; margin-bottom: 0.5rem; }
1305
- .feature-card p { color: var(--muted); font-size: 0.875rem; }
1467
+ .feature-card p { color: var(--muted); font-size: 0.9375rem; line-height: 1.6; }
1306
1468
 
1307
1469
  /* Footer */
1308
1470
  .footer {
@@ -1310,12 +1472,22 @@ a { color: inherit; text-decoration: none; }
1310
1472
  padding: 2rem 1.5rem;
1311
1473
  display: flex;
1312
1474
  justify-content: space-between;
1475
+ align-items: center;
1313
1476
  max-width: 1200px;
1314
1477
  margin: 0 auto;
1315
1478
  color: var(--muted);
1316
1479
  font-size: 0.875rem;
1317
1480
  }
1318
1481
  .footer a:hover { color: var(--primary); }
1482
+
1483
+ /* Responsive */
1484
+ @media (max-width: 768px) {
1485
+ .nav-links { display: none; }
1486
+ .hero { min-height: auto; padding: 8rem 1.5rem 4rem; }
1487
+ .hero-buttons { flex-direction: column; align-items: center; }
1488
+ .hero-buttons button, .hero-buttons a { width: 100%; }
1489
+ .footer { flex-direction: column; gap: 1rem; text-align: center; }
1490
+ }
1319
1491
  `,
1320
1492
 
1321
1493
  // ============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-flexireact",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Create FlexiReact apps with one command - The Modern React Framework",
5
5
  "author": "FlexiReact Team",
6
6
  "license": "MIT",