@astralui/core 0.1.1 → 0.1.3
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/README.md +10 -0
- package/dist/index.cjs +227 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +102 -1
- package/dist/index.d.ts +102 -1
- package/dist/index.js +217 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +294 -0
- package/package.json +1 -1
package/dist/styles.css
CHANGED
|
@@ -582,3 +582,297 @@ button, input, optgroup, select, textarea { font-family: inherit; font-size: 100
|
|
|
582
582
|
animation: au-toast-spin .6s linear infinite;
|
|
583
583
|
display: block;
|
|
584
584
|
}
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
/* ===== src/styles/backgrounds.css ===== */
|
|
588
|
+
/* AstralUI decorative backgrounds - full-bleed backdrops you can drop behind any
|
|
589
|
+
surface (auth screens, hero sections, empty states). Use the React components
|
|
590
|
+
<SpaceBackground/> / <GridBackground/>, or the classes directly. */
|
|
591
|
+
|
|
592
|
+
/* ============================ Space / starfield ============================ */
|
|
593
|
+
.astral-space-bg {
|
|
594
|
+
position: relative;
|
|
595
|
+
overflow: hidden;
|
|
596
|
+
background: #06060d;
|
|
597
|
+
background-image:
|
|
598
|
+
radial-gradient(ellipse 80% 50% at 50% 0%, rgba(99, 40, 180, 0.15) 0%, transparent 60%),
|
|
599
|
+
radial-gradient(ellipse 60% 40% at 80% 20%, rgba(219, 39, 119, 0.07) 0%, transparent 50%),
|
|
600
|
+
radial-gradient(ellipse 70% 50% at 20% 80%, rgba(59, 130, 246, 0.07) 0%, transparent 50%);
|
|
601
|
+
}
|
|
602
|
+
.astral-space-bg::before {
|
|
603
|
+
content: '';
|
|
604
|
+
position: absolute;
|
|
605
|
+
top: 30%;
|
|
606
|
+
left: 50%;
|
|
607
|
+
transform: translate(-50%, -50%);
|
|
608
|
+
width: 800px;
|
|
609
|
+
height: 800px;
|
|
610
|
+
background: radial-gradient(circle, rgba(147, 51, 234, 0.12) 0%, rgba(219, 39, 119, 0.04) 40%, transparent 65%);
|
|
611
|
+
pointer-events: none;
|
|
612
|
+
animation: astral-glow 8s ease-in-out infinite;
|
|
613
|
+
}
|
|
614
|
+
@keyframes astral-glow {
|
|
615
|
+
0%, 100% { opacity: 0.6; transform: translate(-50%, -50%) scale(1); }
|
|
616
|
+
50% { opacity: 1; transform: translate(-50%, -50%) scale(1.1); }
|
|
617
|
+
}
|
|
618
|
+
@keyframes astral-twinkle {
|
|
619
|
+
0%, 100% { opacity: 0.15; }
|
|
620
|
+
50% { opacity: 0.7; }
|
|
621
|
+
}
|
|
622
|
+
.astral-stars, .astral-stars::after { position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 1px; height: 1px; pointer-events: none; overflow: visible; }
|
|
623
|
+
.astral-stars::after { content: ''; position: absolute; top: 0; left: 0; width: 1px; height: 1px; overflow: visible; }
|
|
624
|
+
.astral-stars { box-shadow: 1px 630px 0 0px rgba(230,220,255,0.33), 752px 236px 0 1px rgba(230,220,255,0.46), 1061px 309px 0 0px rgba(230,220,255,0.61), 1801px 542px 0 0px rgba(230,220,255,0.32), 377px 388px 0 0px rgba(230,220,255,0.60), 1069px 1013px 0 0px rgba(230,220,255,0.24), 1078px 157px 0 1px rgba(230,220,255,0.43), 944px 540px 0 0px rgba(230,220,255,0.21), 46px 1192px 0 1px rgba(230,220,255,0.59), 1142px 923px 0 0px rgba(230,220,255,0.37), 751px 321px 0 0px rgba(230,220,255,0.52), 728px 63px 0 0px rgba(230,220,255,0.28), 908px 395px 0 0px rgba(230,220,255,0.23), 1973px 655px 0 0px rgba(230,220,255,0.70), 867px 842px 0 0px rgba(230,220,255,0.47), 1991px 228px 0 0px rgba(230,220,255,0.40), 878px 896px 0 0px rgba(230,220,255,0.61), 1612px 117px 0 0px rgba(230,220,255,0.27), 1275px 456px 0 0px rgba(230,220,255,0.45), 1042px 124px 0 1px rgba(230,220,255,0.37), 1537px 318px 0 0px rgba(230,220,255,0.66), 933px 529px 0 1px rgba(230,220,255,0.43), 1954px 384px 0 0px rgba(230,220,255,0.63), 1485px 669px 0 0px rgba(230,220,255,0.47), 615px 412px 0 0px rgba(230,220,255,0.42), 1134px 783px 0 0px rgba(230,220,255,0.44), 912px 11px 0 0px rgba(230,220,255,0.39), 894px 1123px 0 0px rgba(230,220,255,0.41), 585px 493px 0 0px rgba(230,220,255,0.38), 1420px 1123px 0 0px rgba(230,220,255,0.44), 1643px 639px 0 0px rgba(230,220,255,0.40), 258px 975px 0 0px rgba(230,220,255,0.24), 1195px 404px 0 0px rgba(230,220,255,0.39), 628px 740px 0 0px rgba(230,220,255,0.34), 1978px 236px 0 0px rgba(230,220,255,0.46), 1569px 153px 0 0px rgba(230,220,255,0.31), 598px 202px 0 1px rgba(230,220,255,0.56), 1179px 621px 0 0px rgba(230,220,255,0.38), 587px 468px 0 0px rgba(230,220,255,0.41), 644px 423px 0 0px rgba(230,220,255,0.56), 819px 12px 0 0px rgba(230,220,255,0.47), 384px 1044px 0 1px rgba(230,220,255,0.68), 1589px 280px 0 0px rgba(230,220,255,0.30), 1743px 975px 0 1px rgba(230,220,255,0.37), 1257px 810px 0 1px rgba(230,220,255,0.26), 1360px 1196px 0 1px rgba(230,220,255,0.27), 738px 49px 0 0px rgba(230,220,255,0.29), 1011px 187px 0 0px rgba(230,220,255,0.33), 433px 405px 0 0px rgba(230,220,255,0.41), 1915px 690px 0 0px rgba(230,220,255,0.52), 1874px 591px 0 0px rgba(230,220,255,0.24), 1507px 182px 0 0px rgba(230,220,255,0.50), 688px 467px 0 0px rgba(230,220,255,0.61), 963px 779px 0 0px rgba(230,220,255,0.23), 1261px 809px 0 0px rgba(230,220,255,0.60), 427px 59px 0 0px rgba(230,220,255,0.57), 1927px 643px 0 0px rgba(230,220,255,0.52), 763px 598px 0 0px rgba(230,220,255,0.39), 1692px 1015px 0 1px rgba(230,220,255,0.48), 105px 880px 0 0px rgba(230,220,255,0.51), 46px 562px 0 0px rgba(230,220,255,0.64), 673px 1061px 0 1px rgba(230,220,255,0.43), 961px 1064px 0 0px rgba(230,220,255,0.22), 962px 658px 0 0px rgba(230,220,255,0.47), 176px 530px 0 1px rgba(230,220,255,0.68), 809px 397px 0 1px rgba(230,220,255,0.60), 748px 368px 0 0px rgba(230,220,255,0.66), 1257px 1107px 0 0px rgba(230,220,255,0.63), 293px 570px 0 0px rgba(230,220,255,0.35), 501px 514px 0 0px rgba(230,220,255,0.56), 485px 515px 0 0px rgba(230,220,255,0.51), 987px 961px 0 0px rgba(230,220,255,0.33), 430px 790px 0 0px rgba(230,220,255,0.39), 484px 748px 0 0px rgba(230,220,255,0.50), 741px 150px 0 0px rgba(230,220,255,0.39), 786px 1119px 0 0px rgba(230,220,255,0.25), 529px 835px 0 0px rgba(230,220,255,0.46), 16px 949px 0 0px rgba(230,220,255,0.26), 314px 465px 0 0px rgba(230,220,255,0.34), 1368px 239px 0 0px rgba(230,220,255,0.55), 1519px 115px 0 1px rgba(230,220,255,0.47), 1013px 922px 0 1px rgba(230,220,255,0.34), 1461px 344px 0 0px rgba(230,220,255,0.53), 430px 482px 0 0px rgba(230,220,255,0.50), 544px 816px 0 0px rgba(230,220,255,0.44), 1011px 406px 0 0px rgba(230,220,255,0.59), 1754px 524px 0 0px rgba(230,220,255,0.36), 288px 528px 0 0px rgba(230,220,255,0.68), 1656px 754px 0 0px rgba(230,220,255,0.20), 1875px 660px 0 0px rgba(230,220,255,0.57), 726px 536px 0 0px rgba(230,220,255,0.27), 637px 1113px 0 0px rgba(230,220,255,0.55), 1457px 407px 0 0px rgba(230,220,255,0.49), 1289px 262px 0 0px rgba(230,220,255,0.53), 379px 214px 0 0px rgba(230,220,255,0.38), 1699px 1126px 0 1px rgba(230,220,255,0.38), 660px 320px 0 0px rgba(230,220,255,0.59), 1615px 1019px 0 0px rgba(230,220,255,0.23), 405px 394px 0 0px rgba(230,220,255,0.60), 1248px 927px 0 0px rgba(230,220,255,0.51), 1633px 33px 0 0px rgba(230,220,255,0.38), 1761px 704px 0 0px rgba(230,220,255,0.36), 1933px 878px 0 0px rgba(230,220,255,0.44), 251px 81px 0 0px rgba(230,220,255,0.62), 1505px 376px 0 0px rgba(230,220,255,0.21), 434px 320px 0 0px rgba(230,220,255,0.65), 828px 539px 0 0px rgba(230,220,255,0.23), 1920px 280px 0 1px rgba(230,220,255,0.48), 399px 44px 0 0px rgba(230,220,255,0.46), 989px 174px 0 1px rgba(230,220,255,0.65), 1511px 952px 0 0px rgba(230,220,255,0.34), 440px 83px 0 1px rgba(230,220,255,0.30), 1837px 1054px 0 0px rgba(230,220,255,0.61), 296px 855px 0 0px rgba(230,220,255,0.67), 368px 1173px 0 0px rgba(230,220,255,0.68), 1792px 962px 0 0px rgba(230,220,255,0.69), 511px 469px 0 0px rgba(230,220,255,0.27), 931px 1046px 0 0px rgba(230,220,255,0.26); animation: astral-twinkle 6s ease-in-out infinite; }
|
|
625
|
+
.astral-stars::after { box-shadow: 2px 27px 0 0px rgba(200,180,255,0.31), 1488px 812px 0 0px rgba(200,180,255,0.23), 501px 642px 0 1px rgba(200,180,255,0.32), 531px 507px 0 0px rgba(200,180,255,0.33), 888px 915px 0 1px rgba(200,180,255,0.40), 662px 1189px 0 0px rgba(200,180,255,0.20), 1541px 199px 0 0px rgba(200,180,255,0.45), 368px 501px 0 0px rgba(200,180,255,0.33), 1966px 839px 0 0px rgba(200,180,255,0.35), 1262px 1062px 0 0px rgba(200,180,255,0.22), 914px 327px 0 0px rgba(200,180,255,0.38), 1001px 235px 0 0px rgba(200,180,255,0.38), 1997px 246px 0 0px rgba(200,180,255,0.27), 1079px 259px 0 0px rgba(200,180,255,0.34), 330px 1042px 0 0px rgba(200,180,255,0.55), 1121px 1137px 0 0px rgba(200,180,255,0.38), 1355px 1084px 0 0px rgba(200,180,255,0.54), 1657px 361px 0 0px rgba(200,180,255,0.16), 862px 562px 0 0px rgba(200,180,255,0.54), 314px 1150px 0 0px rgba(200,180,255,0.25), 1908px 493px 0 0px rgba(200,180,255,0.21), 1913px 390px 0 0px rgba(200,180,255,0.48), 1893px 1162px 0 0px rgba(200,180,255,0.28), 1501px 977px 0 0px rgba(200,180,255,0.45), 1592px 371px 0 0px rgba(200,180,255,0.20), 386px 389px 0 0px rgba(200,180,255,0.41), 437px 713px 0 0px rgba(200,180,255,0.26), 1821px 419px 0 0px rgba(200,180,255,0.18), 1808px 220px 0 0px rgba(200,180,255,0.29), 1634px 75px 0 0px rgba(200,180,255,0.51), 16px 221px 0 0px rgba(200,180,255,0.16), 1322px 327px 0 0px rgba(200,180,255,0.45), 1817px 524px 0 0px rgba(200,180,255,0.37), 1766px 544px 0 0px rgba(200,180,255,0.30), 949px 727px 0 0px rgba(200,180,255,0.43), 842px 703px 0 0px rgba(200,180,255,0.42), 694px 561px 0 0px rgba(200,180,255,0.52), 1921px 436px 0 1px rgba(200,180,255,0.21), 954px 931px 0 0px rgba(200,180,255,0.27), 1089px 569px 0 0px rgba(200,180,255,0.35), 1073px 200px 0 0px rgba(200,180,255,0.20), 1618px 319px 0 0px rgba(200,180,255,0.17), 1602px 745px 0 1px rgba(200,180,255,0.42), 250px 69px 0 0px rgba(200,180,255,0.22), 105px 451px 0 0px rgba(200,180,255,0.18), 1206px 933px 0 0px rgba(200,180,255,0.24), 1026px 372px 0 0px rgba(200,180,255,0.54), 1525px 270px 0 0px rgba(200,180,255,0.19), 878px 1126px 0 0px rgba(200,180,255,0.45), 371px 769px 0 0px rgba(200,180,255,0.41), 418px 622px 0 0px rgba(200,180,255,0.34), 551px 771px 0 0px rgba(200,180,255,0.52), 480px 1187px 0 0px rgba(200,180,255,0.46), 1128px 294px 0 0px rgba(200,180,255,0.49), 543px 1136px 0 0px rgba(200,180,255,0.51), 1434px 1169px 0 0px rgba(200,180,255,0.33), 1258px 486px 0 0px rgba(200,180,255,0.36), 1512px 896px 0 0px rgba(200,180,255,0.19), 1702px 936px 0 0px rgba(200,180,255,0.53), 675px 188px 0 0px rgba(200,180,255,0.53), 538px 639px 0 0px rgba(200,180,255,0.49), 301px 1128px 0 1px rgba(200,180,255,0.23), 837px 22px 0 0px rgba(200,180,255,0.18), 1124px 7px 0 0px rgba(200,180,255,0.29), 1134px 451px 0 0px rgba(200,180,255,0.47), 366px 51px 0 0px rgba(200,180,255,0.19), 1273px 393px 0 0px rgba(200,180,255,0.21), 50px 592px 0 0px rgba(200,180,255,0.47), 1191px 783px 0 0px rgba(200,180,255,0.20), 1819px 723px 0 0px rgba(200,180,255,0.52), 406px 144px 0 1px rgba(200,180,255,0.29), 323px 183px 0 0px rgba(200,180,255,0.32), 1000px 613px 0 0px rgba(200,180,255,0.40), 1612px 552px 0 0px rgba(200,180,255,0.17), 1443px 1004px 0 1px rgba(200,180,255,0.42), 1856px 649px 0 0px rgba(200,180,255,0.43), 1175px 268px 0 0px rgba(200,180,255,0.37), 567px 752px 0 0px rgba(200,180,255,0.18), 1674px 253px 0 0px rgba(200,180,255,0.39), 323px 8px 0 0px rgba(200,180,255,0.21); animation: astral-twinkle 8s ease-in-out infinite reverse; }
|
|
626
|
+
|
|
627
|
+
/* ============================ Technical grid ============================ */
|
|
628
|
+
.astral-grid-bg {
|
|
629
|
+
position: relative;
|
|
630
|
+
overflow: hidden;
|
|
631
|
+
background-image:
|
|
632
|
+
radial-gradient(50% 44% at 50% 8%, color-mix(in srgb, var(--astral-primary-color-filled) 16%, transparent), transparent 70%),
|
|
633
|
+
radial-gradient(42% 40% at 84% 104%, color-mix(in srgb, var(--astral-color-blue-6) 11%, transparent), transparent 72%);
|
|
634
|
+
}
|
|
635
|
+
.astral-grid-bg::before {
|
|
636
|
+
content: '';
|
|
637
|
+
position: absolute;
|
|
638
|
+
inset: 0;
|
|
639
|
+
pointer-events: none;
|
|
640
|
+
--astral-grid-line: color-mix(in srgb, var(--astral-color-default-border) 60%, transparent);
|
|
641
|
+
background-image: linear-gradient(var(--astral-grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--astral-grid-line) 1px, transparent 1px);
|
|
642
|
+
background-size: 48px 48px;
|
|
643
|
+
-webkit-mask-image: radial-gradient(72% 62% at 50% 32%, #000, transparent 76%);
|
|
644
|
+
mask-image: radial-gradient(72% 62% at 50% 32%, #000, transparent 76%);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
@media (prefers-reduced-motion: reduce) {
|
|
648
|
+
.astral-space-bg::before, .astral-stars, .astral-stars::after { animation: none; }
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
|
|
652
|
+
/* ===== src/styles/charts.css ===== */
|
|
653
|
+
/* AstralUI charts - lightweight, dependency-free data viz (pure SVG + CSS).
|
|
654
|
+
Theme-aware via the --astral-*/--au-* tokens. Render through the React
|
|
655
|
+
components <Sparkline/>, <Delta/>, <Donut/>, <FunnelBars/>, <StackedBars/>. */
|
|
656
|
+
|
|
657
|
+
/* ---------- sparkline ---------- */
|
|
658
|
+
.au-spark { margin-top: 10px; height: 28px; width: 100%; display: block; }
|
|
659
|
+
|
|
660
|
+
/* ---------- delta badge ---------- */
|
|
661
|
+
.au-delta { font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px; border-radius: 999px; white-space: nowrap; flex-shrink: 0; }
|
|
662
|
+
.au-delta.up { color: var(--au-green); background: color-mix(in srgb, var(--au-green) 14%, transparent); }
|
|
663
|
+
.au-delta.down { color: var(--au-red); background: color-mix(in srgb, var(--au-red) 14%, transparent); }
|
|
664
|
+
|
|
665
|
+
/* ---------- donut ---------- */
|
|
666
|
+
.au-donut { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
|
|
667
|
+
.au-donut-ring { position: relative; width: 150px; height: 150px; flex: 0 0 auto; }
|
|
668
|
+
.au-donut-ctr { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; }
|
|
669
|
+
.au-donut-ctr b { font-size: 26px; font-weight: 760; letter-spacing: -.02em; color: var(--au-text); line-height: 1; }
|
|
670
|
+
.au-donut-ctr span { font-size: 11px; color: var(--au-dim); margin-top: 3px; }
|
|
671
|
+
.au-donut-legend { display: flex; flex-direction: column; gap: 7px; min-width: 170px; flex: 1; }
|
|
672
|
+
.au-dl { display: flex; align-items: center; gap: 9px; padding: 5px 8px; border-radius: 8px; cursor: default; transition: background .12s, opacity .15s; }
|
|
673
|
+
.au-dl.on { background: var(--au-surface-2); }
|
|
674
|
+
.au-dl.off { opacity: .4; }
|
|
675
|
+
.au-dl .dot { width: 9px; height: 9px; border-radius: 3px; flex: 0 0 auto; }
|
|
676
|
+
.au-dl .dll { font-size: 12.5px; color: var(--au-dim); flex: 1; min-width: 0; }
|
|
677
|
+
.au-dl.on .dll { color: var(--au-text); }
|
|
678
|
+
.au-dl b { font-size: 14px; font-weight: 730; color: var(--au-text); min-width: 30px; font-variant-numeric: tabular-nums; }
|
|
679
|
+
|
|
680
|
+
/* ---------- funnel bars ---------- */
|
|
681
|
+
.au-funnel { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; justify-content: space-around; gap: 8px; padding: 6px 0 2px; }
|
|
682
|
+
.au-fbar { display: grid; grid-template-columns: 86px 1fr 46px; align-items: center; gap: 14px; transition: opacity .15s; }
|
|
683
|
+
.au-fbar.off { opacity: .36; }
|
|
684
|
+
.au-fbar-label { font-size: 12px; color: var(--au-dim); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
685
|
+
.au-fbar.on .au-fbar-label { color: var(--au-text); font-weight: 600; }
|
|
686
|
+
.au-fbar-track { height: 20px; border-radius: 7px; background: var(--au-surface-2); overflow: hidden; }
|
|
687
|
+
.au-fbar-fill { height: 100%; border-radius: 7px; min-width: 3px; transition: width .45s cubic-bezier(.4,0,.2,1), filter .15s; }
|
|
688
|
+
.au-fbar.on .au-fbar-fill { filter: brightness(1.18) saturate(1.08); }
|
|
689
|
+
.au-fbar-val { font-size: 14px; font-weight: 730; color: var(--au-text); font-variant-numeric: tabular-nums; text-align: right; }
|
|
690
|
+
|
|
691
|
+
/* ---------- stacked bars ---------- */
|
|
692
|
+
.au-usage { display: flex; flex-direction: column; gap: 14px; }
|
|
693
|
+
.au-usage-legend { display: flex; gap: 16px; justify-content: flex-end; flex-wrap: wrap; }
|
|
694
|
+
.au-ulg { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--au-dim); cursor: default; transition: opacity .15s, color .15s; }
|
|
695
|
+
.au-ulg.on { color: var(--au-text); }
|
|
696
|
+
.au-ulg.off { opacity: .4; }
|
|
697
|
+
.au-ulg .dot { width: 9px; height: 9px; border-radius: 3px; flex: 0 0 auto; }
|
|
698
|
+
.au-usage-rows { display: flex; flex-direction: column; gap: 10px; }
|
|
699
|
+
.au-urow { display: grid; grid-template-columns: 104px 1fr auto; align-items: center; gap: 14px; }
|
|
700
|
+
.au-urow-label { font-size: 12px; color: var(--au-dim); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color .15s; }
|
|
701
|
+
.au-urow.on .au-urow-label { color: var(--au-text); font-weight: 600; }
|
|
702
|
+
.au-utrack { display: flex; align-items: stretch; height: 22px; border-radius: 7px; background: var(--au-surface-2); overflow: hidden; }
|
|
703
|
+
.au-useg { height: 100%; flex: 0 0 auto; cursor: pointer; transition: opacity .15s, filter .15s; }
|
|
704
|
+
.au-unums { display: inline-flex; gap: 12px; font-variant-numeric: tabular-nums; min-width: 64px; justify-content: flex-end; }
|
|
705
|
+
.au-unums b { font-size: 13.5px; font-weight: 740; transition: opacity .15s, text-shadow .15s; }
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
/* ===== src/styles/auth.css ===== */
|
|
709
|
+
/* AstralUI auth surface - sign-in / sign-up / verify / onboarding layouts.
|
|
710
|
+
A centered card on a branded backdrop, with stepper, fields, notices, and a
|
|
711
|
+
logo dropzone. Theme-aware via the --astral-* tokens. Pair with <AuthShell/>
|
|
712
|
+
(or the .astral-space-bg / .astral-grid-bg backgrounds). */
|
|
713
|
+
|
|
714
|
+
.au-auth {
|
|
715
|
+
--aa-panel: var(--astral-app-card, light-dark(#ffffff, #16161b));
|
|
716
|
+
--aa-surface-2: light-dark(var(--astral-color-gray-1), #1d1d24);
|
|
717
|
+
--aa-line: var(--astral-color-default-border);
|
|
718
|
+
--aa-text: var(--astral-color-text);
|
|
719
|
+
--aa-dim: light-dark(var(--astral-color-gray-7), #a6a6b3);
|
|
720
|
+
--aa-faint: light-dark(var(--astral-color-gray-6), #6f6f7d);
|
|
721
|
+
--aa-brand: var(--astral-primary-color-filled);
|
|
722
|
+
--aa-brand-text: light-dark(var(--astral-color-violet-7), var(--astral-color-violet-3));
|
|
723
|
+
--aa-brand-2: var(--astral-color-violet-5);
|
|
724
|
+
--aa-accent: #EF8E2E;
|
|
725
|
+
--aa-green: light-dark(#059669, #34d399);
|
|
726
|
+
--aa-red: light-dark(#dc2626, #f87171);
|
|
727
|
+
--aa-shadow: light-dark(0 1px 2px rgba(16,16,24,.06), 0 1px 2px rgba(0,0,0,.4)),
|
|
728
|
+
light-dark(0 8px 22px rgba(16,16,24,.06), 0 8px 24px rgba(0,0,0,.22));
|
|
729
|
+
font-family: var(--astral-font-family);
|
|
730
|
+
|
|
731
|
+
position: relative;
|
|
732
|
+
min-height: 100dvh;
|
|
733
|
+
display: grid;
|
|
734
|
+
place-items: center;
|
|
735
|
+
padding: 40px 22px;
|
|
736
|
+
overflow: hidden;
|
|
737
|
+
background: var(--astral-color-body);
|
|
738
|
+
color: var(--aa-text);
|
|
739
|
+
}
|
|
740
|
+
.au-auth .num { font-variant-numeric: tabular-nums; }
|
|
741
|
+
|
|
742
|
+
/* branded backdrop: soft radial wash + faint masked grid */
|
|
743
|
+
.au-auth-bg { position: absolute; inset: 0; pointer-events: none;
|
|
744
|
+
background:
|
|
745
|
+
radial-gradient(58% 46% at 50% -4%, color-mix(in srgb, var(--aa-brand) 16%, transparent), transparent 70%),
|
|
746
|
+
radial-gradient(40% 38% at 86% 108%, color-mix(in srgb, var(--aa-accent) 10%, transparent), transparent 72%); }
|
|
747
|
+
.au-auth-bg::after { content: ""; position: absolute; inset: 0; opacity: .5;
|
|
748
|
+
background-image: linear-gradient(var(--aa-line) 1px, transparent 1px), linear-gradient(90deg, var(--aa-line) 1px, transparent 1px);
|
|
749
|
+
background-size: 44px 44px;
|
|
750
|
+
-webkit-mask-image: radial-gradient(70% 60% at 50% 30%, #000, transparent 75%);
|
|
751
|
+
mask-image: radial-gradient(70% 60% at 50% 30%, #000, transparent 75%); }
|
|
752
|
+
|
|
753
|
+
.au-auth-lang { position: absolute; top: 16px; right: 16px; z-index: 5; }
|
|
754
|
+
.au-auth-back { position: absolute; top: 16px; left: 16px; z-index: 5; display: inline-flex; align-items: center; gap: 6px;
|
|
755
|
+
font: inherit; font-size: 12.5px; font-weight: 600; color: var(--aa-dim); background: var(--aa-panel);
|
|
756
|
+
border: 1px solid var(--aa-line); border-radius: 10px; padding: 8px 13px; cursor: pointer; transition: .15s; }
|
|
757
|
+
.au-auth-back:hover { color: var(--aa-text); border-color: color-mix(in srgb, var(--aa-brand) 45%, transparent); }
|
|
758
|
+
|
|
759
|
+
/* card */
|
|
760
|
+
.au-auth-card { position: relative; z-index: 2; width: 100%; max-width: 452px;
|
|
761
|
+
background: var(--aa-panel); border: 1px solid var(--aa-line); border-radius: 20px;
|
|
762
|
+
box-shadow: var(--aa-shadow); padding: 30px 30px 26px; overflow: hidden; }
|
|
763
|
+
|
|
764
|
+
/* brand banner header */
|
|
765
|
+
.au-auth-banner { position: relative; display: flex; align-items: center; justify-content: center;
|
|
766
|
+
padding: 19px 0 17px; margin: -30px -30px 24px; border-bottom: 1px solid var(--aa-line);
|
|
767
|
+
background: linear-gradient(180deg, #f5f3fc, #ece8f8); }
|
|
768
|
+
.au-auth-banner::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
|
|
769
|
+
background: linear-gradient(90deg, var(--aa-accent), var(--aa-brand) 55%, var(--aa-brand-2)); }
|
|
770
|
+
.au-auth-banner img { height: 25px; width: auto; display: block; }
|
|
771
|
+
|
|
772
|
+
.au-auth-title { margin: 0; font-size: 23px; font-weight: 700; letter-spacing: -.02em; color: var(--aa-text); }
|
|
773
|
+
.au-auth-sub { margin-top: 6px; font-size: 12.8px; color: var(--aa-dim); line-height: 1.5; }
|
|
774
|
+
|
|
775
|
+
/* error */
|
|
776
|
+
.au-auth-err { display: flex; align-items: flex-start; gap: 9px; margin: 16px 0 0; padding: 10px 13px; border-radius: 11px; font-size: 12.5px; line-height: 1.45;
|
|
777
|
+
color: var(--aa-red); background: color-mix(in srgb, var(--aa-red) 12%, transparent); border: 1px solid color-mix(in srgb, var(--aa-red) 30%, transparent); }
|
|
778
|
+
.au-auth-err svg { flex: 0 0 auto; margin-top: 1px; }
|
|
779
|
+
|
|
780
|
+
/* stepper */
|
|
781
|
+
.au-auth-steps { display: flex; align-items: center; margin: 24px 0 22px; }
|
|
782
|
+
.au-auth-step { display: flex; align-items: center; gap: 8px; }
|
|
783
|
+
.au-auth-step-dot { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 700; flex: 0 0 auto;
|
|
784
|
+
background: var(--aa-surface-2); border: 1px solid var(--aa-line); color: var(--aa-faint); transition: .15s; }
|
|
785
|
+
.au-auth-step-dot svg { width: 13px; height: 13px; }
|
|
786
|
+
.au-auth-step-l { font-size: 12px; font-weight: 600; color: var(--aa-faint); white-space: nowrap; }
|
|
787
|
+
.au-auth-step.on .au-auth-step-dot { background: var(--aa-brand); border-color: var(--aa-brand); color: #fff; box-shadow: 0 0 0 4px color-mix(in srgb, var(--aa-brand) 22%, transparent); }
|
|
788
|
+
.au-auth-step.on .au-auth-step-l { color: var(--aa-text); }
|
|
789
|
+
.au-auth-step.done .au-auth-step-dot { background: color-mix(in srgb, var(--aa-brand) 18%, transparent); border-color: color-mix(in srgb, var(--aa-brand) 45%, transparent); color: var(--aa-brand-text); }
|
|
790
|
+
.au-auth-step.done .au-auth-step-l { color: var(--aa-dim); }
|
|
791
|
+
.au-auth-step-line { flex: 1; height: 2px; margin: 0 10px; border-radius: 2px; background: var(--aa-line); }
|
|
792
|
+
.au-auth-step-line.fill { background: color-mix(in srgb, var(--aa-brand) 50%, transparent); }
|
|
793
|
+
|
|
794
|
+
/* field */
|
|
795
|
+
.au-auth-field { margin-bottom: 18px; }
|
|
796
|
+
.au-auth-field label { display: block; font-size: 12px; font-weight: 600; color: var(--aa-dim); margin-bottom: 7px; }
|
|
797
|
+
.au-auth-input { display: flex; align-items: center; gap: 9px; background: var(--aa-surface-2); border: 1px solid var(--aa-line); border-radius: 11px; padding: 11px 13px; transition: .15s; }
|
|
798
|
+
.au-auth-input:focus-within { border-color: var(--aa-brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--aa-brand) 18%, transparent); }
|
|
799
|
+
.au-auth-input input { flex: 1; border: 0; background: transparent; color: var(--aa-text); font: inherit; font-size: 13.5px; outline: none; }
|
|
800
|
+
.au-auth-input input::placeholder { color: var(--aa-faint); }
|
|
801
|
+
.au-auth-hint { margin-top: 7px; font-size: 11.5px; color: var(--aa-faint); }
|
|
802
|
+
|
|
803
|
+
/* logo dropzone */
|
|
804
|
+
.au-auth-drop { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; border: 1.5px dashed var(--aa-line); border-radius: 14px; padding: 24px 18px; background: var(--aa-surface-2); transition: .15s; cursor: pointer; }
|
|
805
|
+
.au-auth-drop:hover { border-color: color-mix(in srgb, var(--aa-brand) 55%, transparent); background: color-mix(in srgb, var(--aa-brand) 6%, var(--aa-surface-2)); }
|
|
806
|
+
.au-auth-drop .ph { width: 54px; height: 54px; border-radius: 14px; display: grid; place-items: center; background: color-mix(in srgb, var(--aa-brand) 14%, transparent); color: var(--aa-brand-text); overflow: hidden; }
|
|
807
|
+
.au-auth-drop .ph svg { width: 24px; height: 24px; }
|
|
808
|
+
.au-auth-drop .ph img { width: 100%; height: 100%; object-fit: cover; }
|
|
809
|
+
.au-auth-drop .t { font-size: 13px; font-weight: 600; color: var(--aa-text); }
|
|
810
|
+
.au-auth-drop .t b { color: var(--aa-brand-text); font-weight: 700; }
|
|
811
|
+
.au-auth-drop .h { font-size: 11.5px; color: var(--aa-faint); }
|
|
812
|
+
.au-auth-drop-clear { margin-top: 9px; font-size: 12px; font-weight: 600; color: var(--aa-faint); background: transparent; border: 0; cursor: pointer; }
|
|
813
|
+
.au-auth-drop-clear:hover { color: var(--aa-red); }
|
|
814
|
+
|
|
815
|
+
/* success */
|
|
816
|
+
.au-auth-ok { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 6px 0 2px; }
|
|
817
|
+
.au-auth-okring { width: 66px; height: 66px; border-radius: 50%; display: grid; place-items: center; margin-bottom: 16px; color: var(--aa-green);
|
|
818
|
+
background: color-mix(in srgb, var(--aa-green) 15%, transparent); box-shadow: 0 0 0 6px color-mix(in srgb, var(--aa-green) 8%, transparent); }
|
|
819
|
+
.au-auth-okring svg { width: 30px; height: 30px; }
|
|
820
|
+
|
|
821
|
+
/* join icon */
|
|
822
|
+
.au-auth-jicon { width: 46px; height: 46px; border-radius: 13px; display: grid; place-items: center; margin-bottom: 16px; color: var(--aa-brand-text); background: color-mix(in srgb, var(--aa-brand) 14%, transparent); }
|
|
823
|
+
.au-auth-jicon svg { width: 22px; height: 22px; }
|
|
824
|
+
|
|
825
|
+
/* actions */
|
|
826
|
+
.au-auth-actions { display: flex; align-items: center; gap: 10px; margin-top: 24px; }
|
|
827
|
+
.au-auth-actions.center { justify-content: center; }
|
|
828
|
+
.au-auth-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font: inherit; font-size: 13px; font-weight: 650; border-radius: 11px; padding: 11px 18px; cursor: pointer; transition: .15s; border: 1px solid var(--aa-line); background: transparent; color: var(--aa-text); }
|
|
829
|
+
.au-auth-btn.ghost { color: var(--aa-dim); }
|
|
830
|
+
.au-auth-btn.ghost:hover { color: var(--aa-text); border-color: color-mix(in srgb, var(--aa-brand) 45%, transparent); }
|
|
831
|
+
.au-auth-btn.primary { background: var(--aa-brand); border-color: var(--aa-brand); color: #fff; box-shadow: 0 6px 16px color-mix(in srgb, var(--aa-brand) 32%, transparent); }
|
|
832
|
+
.au-auth-btn.primary:hover { filter: brightness(1.08); }
|
|
833
|
+
.au-auth-btn.primary:active { transform: translateY(1px); }
|
|
834
|
+
.au-auth-btn:disabled { opacity: .5; cursor: not-allowed; }
|
|
835
|
+
.au-auth-btn.full, .au-auth-btn.block { flex: 1; width: 100%; }
|
|
836
|
+
.au-auth-btn svg { width: 15px; height: 15px; }
|
|
837
|
+
|
|
838
|
+
.au-auth-alt { margin-top: 16px; text-align: center; font-size: 12px; color: var(--aa-faint); }
|
|
839
|
+
.au-auth-alt button, .au-auth-alt a { color: var(--aa-brand-text); font: inherit; font-weight: 600; background: transparent; border: 0; cursor: pointer; padding: 0; text-decoration: none; }
|
|
840
|
+
.au-auth-alt button:hover, .au-auth-alt a:hover { text-decoration: underline; }
|
|
841
|
+
|
|
842
|
+
/* stacked form */
|
|
843
|
+
.au-auth-form { display: flex; flex-direction: column; gap: 16px; margin-top: 20px; }
|
|
844
|
+
.au-auth-form .au-auth-field { margin-bottom: 0; }
|
|
845
|
+
|
|
846
|
+
/* notices (info / warn / ok / err) */
|
|
847
|
+
.au-auth-note { display: flex; align-items: flex-start; gap: 9px; margin-top: 16px; padding: 10px 13px; border-radius: 11px; font-size: 12.5px; line-height: 1.45; }
|
|
848
|
+
.au-auth-note svg { flex: 0 0 auto; margin-top: 1px; }
|
|
849
|
+
.au-auth-note.info { color: var(--aa-brand-text); background: color-mix(in srgb, var(--aa-brand) 12%, transparent); border: 1px solid color-mix(in srgb, var(--aa-brand) 28%, transparent); }
|
|
850
|
+
.au-auth-note.warn { color: var(--aa-accent); background: color-mix(in srgb, var(--aa-accent) 14%, transparent); border: 1px solid color-mix(in srgb, var(--aa-accent) 32%, transparent); }
|
|
851
|
+
.au-auth-note.ok { color: var(--aa-green); background: color-mix(in srgb, var(--aa-green) 13%, transparent); border: 1px solid color-mix(in srgb, var(--aa-green) 30%, transparent); }
|
|
852
|
+
.au-auth-note.err { color: var(--aa-red); background: color-mix(in srgb, var(--aa-red) 12%, transparent); border: 1px solid color-mix(in srgb, var(--aa-red) 30%, transparent); }
|
|
853
|
+
|
|
854
|
+
/* password reveal toggle */
|
|
855
|
+
.au-auth-eye { display: grid; place-items: center; padding: 0; background: none; border: 0; color: var(--aa-faint); cursor: pointer; transition: .15s; }
|
|
856
|
+
.au-auth-eye:hover { color: var(--aa-dim); }
|
|
857
|
+
.au-auth-eye svg { width: 17px; height: 17px; }
|
|
858
|
+
|
|
859
|
+
/* right-aligned inline link (forgot password) */
|
|
860
|
+
.au-auth-flink { display: block; width: fit-content; margin: 8px 0 0 auto; font: inherit; font-size: 11.5px; font-weight: 600; color: var(--aa-brand-text); background: none; border: 0; cursor: pointer; }
|
|
861
|
+
.au-auth-flink:hover { text-decoration: underline; }
|
|
862
|
+
|
|
863
|
+
/* inline field error */
|
|
864
|
+
.au-auth-ferr { margin-top: 6px; font-size: 11.5px; color: var(--aa-red); }
|
|
865
|
+
|
|
866
|
+
/* checkbox row */
|
|
867
|
+
.au-auth-check { display: flex; align-items: center; gap: 9px; cursor: pointer; font-size: 12.5px; color: var(--aa-dim); }
|
|
868
|
+
.au-auth-check input { width: 16px; height: 16px; accent-color: var(--aa-brand); cursor: pointer; flex: 0 0 auto; }
|
|
869
|
+
|
|
870
|
+
/* spinner */
|
|
871
|
+
.au-auth-spin { width: 15px; height: 15px; border-radius: 50%; border: 2px solid rgba(255,255,255,.45); border-top-color: #fff; animation: au-auth-spin .6s linear infinite; flex: 0 0 auto; }
|
|
872
|
+
@keyframes au-auth-spin { to { transform: rotate(360deg); } }
|
|
873
|
+
|
|
874
|
+
/* helper line, centered */
|
|
875
|
+
.au-auth-help { margin-top: 14px; text-align: center; font-size: 11.5px; color: var(--aa-faint); }
|
|
876
|
+
|
|
877
|
+
/* when used with the cosmic backdrop, hide the default grid wash */
|
|
878
|
+
.au-auth.astral-space-bg .au-auth-bg { display: none; }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astralui/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "AstralUI - a self-contained, dependency-free React design system: theme engine (light/dark + per-brand theming), design tokens, and components (Modal, Drawer, Select, Menu, Toast, DateInput, PinInput, Spinner).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Unbounded Technologies",
|