@alivecss/aliveui 1.0.3 → 1.1.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/dist/cli.js CHANGED
@@ -585,6 +585,9 @@ function generateBase(_config) {
585
585
  ::before,
586
586
  ::after {
587
587
  box-sizing: border-box;
588
+ border-width: 0;
589
+ border-style: solid;
590
+ border-color: currentColor;
588
591
  }
589
592
 
590
593
  html {
@@ -604,6 +607,39 @@ body {
604
607
  -moz-osx-font-smoothing: grayscale;
605
608
  }
606
609
 
610
+ blockquote,
611
+ dl,
612
+ dd,
613
+ h1,
614
+ h2,
615
+ h3,
616
+ h4,
617
+ h5,
618
+ h6,
619
+ hr,
620
+ figure,
621
+ p,
622
+ pre {
623
+ margin: 0;
624
+ }
625
+
626
+ fieldset {
627
+ margin: 0;
628
+ padding: 0;
629
+ }
630
+
631
+ legend {
632
+ padding: 0;
633
+ }
634
+
635
+ ol,
636
+ ul,
637
+ menu {
638
+ list-style: none;
639
+ margin: 0;
640
+ padding: 0;
641
+ }
642
+
607
643
  button,
608
644
  input,
609
645
  optgroup,
@@ -613,9 +649,24 @@ textarea {
613
649
  font-size: 100%;
614
650
  font-weight: inherit;
615
651
  line-height: inherit;
652
+ letter-spacing: inherit;
616
653
  color: inherit;
617
654
  margin: 0;
618
655
  padding: 0;
656
+ background-color: transparent;
657
+ background-image: none;
658
+ }
659
+
660
+ button,
661
+ [type='button'],
662
+ [type='reset'],
663
+ [type='submit'] {
664
+ -webkit-appearance: button;
665
+ cursor: pointer;
666
+ }
667
+
668
+ :disabled {
669
+ cursor: default;
619
670
  }
620
671
 
621
672
  button,
@@ -623,6 +674,28 @@ select {
623
674
  text-transform: none;
624
675
  }
625
676
 
677
+ img,
678
+ svg,
679
+ video,
680
+ canvas,
681
+ audio,
682
+ iframe,
683
+ embed,
684
+ object {
685
+ display: block;
686
+ vertical-align: middle;
687
+ }
688
+
689
+ img,
690
+ video {
691
+ max-width: 100%;
692
+ height: auto;
693
+ }
694
+
695
+ [hidden] {
696
+ display: none;
697
+ }
698
+
626
699
  /* \u2500\u2500 Design tokens \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
627
700
  :root {
628
701
  /* Motion durations */
@@ -820,6 +893,30 @@ select {
820
893
  .alive-loop-ping { animation: alive-ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; }
821
894
  .alive-loop-bounce { animation: alive-bounce 1s infinite; }
822
895
 
896
+ /* \u2500\u2500 Scroll-reveal (data-alive-scroll) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
897
+
898
+ [data-alive-scroll] {
899
+ opacity: 0;
900
+ transform: translateY(8px);
901
+ }
902
+ [data-alive-scroll].is-visible {
903
+ animation: alive-fade-up var(--alive-duration-slow) var(--alive-ease-emphasized) both;
904
+ }
905
+ [data-alive-scroll="fade"] {
906
+ opacity: 0;
907
+ transform: none;
908
+ }
909
+ [data-alive-scroll="fade"].is-visible {
910
+ animation: alive-fade-in var(--alive-duration-normal) var(--alive-ease-standard) both;
911
+ }
912
+ [data-alive-scroll="scale"] {
913
+ opacity: 0;
914
+ transform: scale(0.94);
915
+ }
916
+ [data-alive-scroll="scale"].is-visible {
917
+ animation: alive-scale-in var(--alive-duration-slow) var(--alive-ease-emphasized) both;
918
+ }
919
+
823
920
  /* Reduced motion \u2014 respect system preference */
824
921
  @media (prefers-reduced-motion: reduce) {
825
922
  .alive-enter,
@@ -842,6 +939,18 @@ select {
842
939
  transform: none;
843
940
  }
844
941
 
942
+ [data-alive-scroll],
943
+ [data-alive-scroll="fade"],
944
+ [data-alive-scroll="scale"] {
945
+ opacity: 1;
946
+ transform: none;
947
+ }
948
+ [data-alive-scroll].is-visible,
949
+ [data-alive-scroll="fade"].is-visible,
950
+ [data-alive-scroll="scale"].is-visible {
951
+ animation: none;
952
+ }
953
+
845
954
  /* depth system \u2014 disable hover lift and active press */
846
955
  .d2,
847
956
  .d2:hover,
@@ -2174,6 +2283,251 @@ select {
2174
2283
  color: rgba(0,0,0,0.3);
2175
2284
  user-select: none;
2176
2285
  }
2286
+
2287
+ /* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
2288
+ AliveUI Build \u2014 Display & marketing components
2289
+ Browser frame \xB7 Phone frame \xB7 Stat card \xB7 Checklist \xB7 Dot grid
2290
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 */
2291
+
2292
+ /* \u2500\u2500 Browser Frame \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2293
+ .alive-browser {
2294
+ border-radius: 12px;
2295
+ overflow: hidden;
2296
+ border: 1px solid rgba(0,0,0,0.1);
2297
+ background: #fff;
2298
+ box-shadow: 0 24px 64px rgba(0,0,0,0.1), 0 4px 12px rgba(0,0,0,0.06);
2299
+ }
2300
+ .alive-browser-bar {
2301
+ display: flex;
2302
+ align-items: center;
2303
+ gap: 8px;
2304
+ padding: 10px 16px;
2305
+ background: #f3f3f3;
2306
+ border-bottom: 1px solid rgba(0,0,0,0.08);
2307
+ flex-shrink: 0;
2308
+ }
2309
+ .alive-browser-dots {
2310
+ display: flex;
2311
+ gap: 6px;
2312
+ flex-shrink: 0;
2313
+ }
2314
+ .alive-browser-dot {
2315
+ width: 10px;
2316
+ height: 10px;
2317
+ border-radius: 50%;
2318
+ opacity: 0.85;
2319
+ }
2320
+ .alive-browser-dot:nth-child(1) { background: #ff5f57; }
2321
+ .alive-browser-dot:nth-child(2) { background: #febc2e; }
2322
+ .alive-browser-dot:nth-child(3) { background: #28c840; }
2323
+ .alive-browser-url {
2324
+ flex: 1;
2325
+ max-width: 280px;
2326
+ margin: 0 auto;
2327
+ padding: 4px 12px;
2328
+ border-radius: 6px;
2329
+ background: rgba(0,0,0,0.06);
2330
+ border: 1px solid rgba(0,0,0,0.08);
2331
+ font-size: 0.7rem;
2332
+ color: rgba(0,0,0,0.35);
2333
+ text-align: center;
2334
+ font-family: ui-monospace, monospace;
2335
+ white-space: nowrap;
2336
+ overflow: hidden;
2337
+ text-overflow: ellipsis;
2338
+ user-select: none;
2339
+ }
2340
+ .alive-browser-body {
2341
+ overflow: hidden;
2342
+ }
2343
+ /* Dark variant */
2344
+ .alive-browser-dark {
2345
+ border-color: rgba(255,255,255,0.1);
2346
+ background: #0f0f0f;
2347
+ box-shadow: 0 32px 80px rgba(0,0,0,0.6), 0 8px 24px rgba(0,0,0,0.4);
2348
+ }
2349
+ .alive-browser-dark .alive-browser-bar {
2350
+ background: #161616;
2351
+ border-bottom-color: rgba(255,255,255,0.07);
2352
+ }
2353
+ .alive-browser-dark .alive-browser-url {
2354
+ background: rgba(255,255,255,0.05);
2355
+ border-color: rgba(255,255,255,0.07);
2356
+ color: rgba(255,255,255,0.2);
2357
+ }
2358
+
2359
+ /* \u2500\u2500 Phone Frame \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2360
+ .alive-phone {
2361
+ position: relative;
2362
+ display: inline-flex;
2363
+ flex-direction: column;
2364
+ border-radius: 40px;
2365
+ border: 8px solid #1c1c1e;
2366
+ background: #fff;
2367
+ overflow: hidden;
2368
+ box-shadow:
2369
+ 0 32px 80px rgba(0,0,0,0.35),
2370
+ inset 0 0 0 1px rgba(255,255,255,0.1),
2371
+ 0 0 0 1px rgba(0,0,0,0.5);
2372
+ }
2373
+ .alive-phone::before {
2374
+ content: '';
2375
+ position: absolute;
2376
+ top: 10px;
2377
+ left: 50%;
2378
+ transform: translateX(-50%);
2379
+ width: 90px;
2380
+ height: 22px;
2381
+ background: #1c1c1e;
2382
+ border-radius: 11px;
2383
+ z-index: 10;
2384
+ }
2385
+ .alive-phone-screen {
2386
+ width: 100%;
2387
+ overflow: hidden;
2388
+ flex: 1;
2389
+ }
2390
+ .alive-phone-dark {
2391
+ background: #0f0f0f;
2392
+ }
2393
+ .alive-phone-dark .alive-phone-screen {
2394
+ background: #0f0f0f;
2395
+ }
2396
+ /* Sizes */
2397
+ .alive-phone-sm { width: 220px; border-radius: 32px; border-width: 6px; }
2398
+ .alive-phone-sm::before { width: 70px; height: 18px; border-radius: 9px; }
2399
+ .alive-phone-lg { width: 340px; border-radius: 48px; border-width: 10px; }
2400
+ .alive-phone-lg::before { width: 110px; height: 26px; border-radius: 13px; }
2401
+
2402
+ /* \u2500\u2500 Stat Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2403
+ .alive-stat {
2404
+ padding: 1.5rem;
2405
+ border-radius: 12px;
2406
+ background: #fff;
2407
+ border: 1px solid rgba(0,0,0,0.07);
2408
+ box-shadow: 0 2px 8px rgba(0,0,0,0.04);
2409
+ }
2410
+ .alive-stat-label {
2411
+ font-size: 0.75rem;
2412
+ font-weight: 600;
2413
+ letter-spacing: 0.06em;
2414
+ color: rgba(0,0,0,0.4);
2415
+ text-transform: uppercase;
2416
+ margin-bottom: 0.5rem;
2417
+ }
2418
+ .alive-stat-value {
2419
+ font-size: 2.25rem;
2420
+ font-weight: 700;
2421
+ letter-spacing: -0.04em;
2422
+ line-height: 1;
2423
+ color: rgba(0,0,0,0.9);
2424
+ margin-bottom: 0.5rem;
2425
+ font-variant-numeric: tabular-nums;
2426
+ }
2427
+ .alive-stat-change {
2428
+ display: inline-flex;
2429
+ align-items: center;
2430
+ gap: 4px;
2431
+ font-size: 0.8125rem;
2432
+ font-weight: 600;
2433
+ }
2434
+ .alive-stat-up { color: #16a34a; }
2435
+ .alive-stat-down { color: #dc2626; }
2436
+ /* Dark variant */
2437
+ .alive-stat-dark {
2438
+ background: rgba(255,255,255,0.05);
2439
+ border-color: rgba(255,255,255,0.09);
2440
+ box-shadow: none;
2441
+ }
2442
+ .alive-stat-dark .alive-stat-label { color: rgba(255,255,255,0.35); }
2443
+ .alive-stat-dark .alive-stat-value { color: #ffffff; }
2444
+
2445
+ /* \u2500\u2500 Feature Checklist \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2446
+ .alive-checklist {
2447
+ display: flex;
2448
+ flex-direction: column;
2449
+ gap: 0.875rem;
2450
+ }
2451
+ .alive-checklist-item {
2452
+ display: flex;
2453
+ align-items: flex-start;
2454
+ gap: 0.75rem;
2455
+ font-size: 0.9375rem;
2456
+ color: rgba(0,0,0,0.75);
2457
+ line-height: 1.45;
2458
+ }
2459
+ .alive-checklist-icon {
2460
+ flex-shrink: 0;
2461
+ width: 20px;
2462
+ height: 20px;
2463
+ border-radius: 50%;
2464
+ background: rgba(74,222,128,0.15);
2465
+ border: 1.5px solid rgba(74,222,128,0.4);
2466
+ display: flex;
2467
+ align-items: center;
2468
+ justify-content: center;
2469
+ margin-top: 2px;
2470
+ }
2471
+ .alive-checklist-icon::after {
2472
+ content: '';
2473
+ display: block;
2474
+ width: 5px;
2475
+ height: 9px;
2476
+ border-right: 2px solid #16a34a;
2477
+ border-bottom: 2px solid #16a34a;
2478
+ transform: rotate(45deg) translate(-1px, -1px);
2479
+ }
2480
+ /* Dark variant */
2481
+ .alive-checklist-dark .alive-checklist-item { color: rgba(255,255,255,0.75); }
2482
+ .alive-checklist-dark .alive-checklist-icon {
2483
+ background: rgba(74,222,128,0.12);
2484
+ border-color: rgba(74,222,128,0.3);
2485
+ }
2486
+
2487
+ /* \u2500\u2500 Dot Grid Background \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2488
+ .alive-dot-grid {
2489
+ background-image: radial-gradient(circle, rgba(0,0,0,0.12) 1px, transparent 1px);
2490
+ background-size: 24px 24px;
2491
+ }
2492
+ .alive-dot-grid-sm { background-size: 16px 16px; }
2493
+ .alive-dot-grid-lg { background-size: 32px 32px; }
2494
+ .alive-dot-grid-dark {
2495
+ background-image: radial-gradient(circle, rgba(255,255,255,0.12) 1px, transparent 1px);
2496
+ }
2497
+
2498
+ /* \u2500\u2500 Terminal / Code Block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
2499
+ .alive-terminal {
2500
+ border-radius: 10px;
2501
+ overflow: hidden;
2502
+ background: #0f0f0f;
2503
+ border: 1px solid rgba(255,255,255,0.08);
2504
+ box-shadow: 0 16px 48px rgba(0,0,0,0.4);
2505
+ font-family: ui-monospace, 'Cascadia Code', 'Fira Code', monospace;
2506
+ }
2507
+ .alive-terminal-bar {
2508
+ display: flex;
2509
+ align-items: center;
2510
+ gap: 8px;
2511
+ padding: 10px 16px;
2512
+ background: #161616;
2513
+ border-bottom: 1px solid rgba(255,255,255,0.06);
2514
+ flex-shrink: 0;
2515
+ }
2516
+ .alive-terminal-body {
2517
+ padding: 1.25rem 1.5rem;
2518
+ font-size: 0.8125rem;
2519
+ line-height: 1.7;
2520
+ color: rgba(255,255,255,0.75);
2521
+ overflow: auto;
2522
+ }
2523
+ .alive-terminal-prompt {
2524
+ color: rgba(255,255,255,0.25);
2525
+ user-select: none;
2526
+ }
2527
+ .alive-terminal-cmd { color: #60a5fa; }
2528
+ .alive-terminal-out { color: rgba(255,255,255,0.45); }
2529
+ .alive-terminal-ok { color: #4ade80; }
2530
+ .alive-terminal-err { color: #f87171; }
2177
2531
  `;
2178
2532
  }
2179
2533
 
@@ -3796,7 +4150,7 @@ function generateAliveSpecific(classes, _config) {
3796
4150
 
3797
4151
  // src/cli.ts
3798
4152
  var program = new import_commander.Command();
3799
- program.name("aliveui").description("AliveUI \u2014 motion-first CSS framework").version("1.0.0");
4153
+ program.name("aliveui").description("AliveUI \u2014 motion-first CSS framework").version("1.1.0");
3800
4154
  program.command("init").description("Create an aliveui.config.js in the current directory").action(() => {
3801
4155
  const configPath = (0, import_path.resolve)(process.cwd(), "aliveui.config.js");
3802
4156
  if ((0, import_fs2.existsSync)(configPath)) {