@aggc/ui 0.7.0 → 0.8.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.
Files changed (38) hide show
  1. package/dist/chunks/UiToastProvider.vue_vue_type_script_setup_true_lang-D7OGRCU4.js +3958 -0
  2. package/dist/chunks/{pageHeader-DhPY_hNA.js → pageHeader-YZ3BV9dQ.js} +8 -5
  3. package/dist/components/UiAvatar.styles.d.ts +53 -0
  4. package/dist/components/UiAvatar.vue.d.ts +13 -0
  5. package/dist/components/UiButton.styles.d.ts +0 -3
  6. package/dist/components/UiModal.styles.d.ts +21 -0
  7. package/dist/components/UiModal.vue.d.ts +30 -0
  8. package/dist/components/UiToast.styles.d.ts +41 -0
  9. package/dist/components/UiToast.vue.d.ts +13 -0
  10. package/dist/components/UiToastProvider.vue.d.ts +13 -0
  11. package/dist/components/index.d.ts +4 -0
  12. package/dist/components.js +14 -10
  13. package/dist/composables/useToast.d.ts +27 -0
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +66 -61
  16. package/dist/styles/recipes/button.recipe.d.ts +0 -3
  17. package/dist/styles.js +2 -2
  18. package/dist/ui.css +364 -58
  19. package/package.json +3 -2
  20. package/src/components/UiAvatar.styles.ts +81 -0
  21. package/src/components/UiAvatar.test.ts +43 -0
  22. package/src/components/UiAvatar.vue +41 -0
  23. package/src/components/UiModal.styles.ts +126 -0
  24. package/src/components/UiModal.test.ts +64 -0
  25. package/src/components/UiModal.vue +79 -0
  26. package/src/components/UiToast.styles.ts +143 -0
  27. package/src/components/UiToast.test.ts +47 -0
  28. package/src/components/UiToast.vue +65 -0
  29. package/src/components/UiToastProvider.vue +22 -0
  30. package/src/components/index.ts +4 -0
  31. package/src/composables/useToast.ts +43 -0
  32. package/src/css/base.css +50 -1
  33. package/src/index.ts +1 -0
  34. package/src/stories/feedback/UiToast.stories.ts +72 -0
  35. package/src/stories/layout/UiModal.stories.ts +89 -0
  36. package/src/stories/primitives/UiAvatar.stories.ts +83 -0
  37. package/src/styles/recipes/button.recipe.ts +8 -4
  38. package/dist/chunks/UiSkeleton.vue_vue_type_script_setup_true_lang-Dg-HzSqj.js +0 -1201
package/dist/ui.css CHANGED
@@ -83,9 +83,58 @@ body {
83
83
  }
84
84
  }
85
85
 
86
+ @keyframes fadeIn {
87
+ from { opacity: 0; }
88
+ to { opacity: 1; }
89
+ }
90
+
91
+ @keyframes modalIn {
92
+ from {
93
+ opacity: 0;
94
+ transform: scale(0.95) translateY(12px);
95
+ }
96
+ to {
97
+ opacity: 1;
98
+ transform: scale(1) translateY(0);
99
+ }
100
+ }
101
+
102
+ @keyframes toastSlideIn {
103
+ from {
104
+ opacity: 0;
105
+ transform: translateX(calc(100% + 1rem));
106
+ }
107
+ to {
108
+ opacity: 1;
109
+ transform: translateX(0);
110
+ }
111
+ }
112
+
113
+ @keyframes toastFadeOut {
114
+ from {
115
+ opacity: 1;
116
+ transform: translateX(0);
117
+ }
118
+ to {
119
+ opacity: 0;
120
+ transform: translateX(calc(100% + 1rem));
121
+ }
122
+ }
123
+
124
+ @keyframes toastSwipeOut {
125
+ from {
126
+ transform: translateX(var(--reka-toast-swipe-end-x));
127
+ }
128
+ to {
129
+ transform: translateX(calc(100% + 1rem));
130
+ }
131
+ }
132
+
86
133
  @media (prefers-reduced-motion: reduce) {
87
134
  .aggc-spin,
88
- [data-ui-loading-pulse] {
135
+ [data-ui-loading-pulse],
136
+ [data-state="open"],
137
+ [data-state="closed"] {
89
138
  animation: none !important;
90
139
  }
91
140
 
@@ -1027,14 +1076,38 @@ body {
1027
1076
  animation: loadingPulse 1.4s cubic-bezier(0.25, 0.1, 0.25, 1) infinite;
1028
1077
  }
1029
1078
 
1030
- .p_1 {
1031
- padding: var(--spacing-1);
1079
+ .bg_rgba\(0\,_0\,_0\,_0\.3\) {
1080
+ background: rgba(0, 0, 0, 0.3);
1081
+ }
1082
+
1083
+ .anim_fadeIn_160ms_cubic-bezier\(0\.16\,_1\,_0\.3\,_1\) {
1084
+ animation: fadeIn 160ms cubic-bezier(0.16, 1, 0.3, 1);
1085
+ }
1086
+
1087
+ .bd_none {
1088
+ border: var(--borders-none);
1032
1089
  }
1033
1090
 
1034
1091
  .bg_transparent {
1035
1092
  background: var(--colors-transparent);
1036
1093
  }
1037
1094
 
1095
+ .bg_bg\.menu {
1096
+ background: var(--colors-bg-menu);
1097
+ }
1098
+
1099
+ .p_0 {
1100
+ padding: var(--spacing-0);
1101
+ }
1102
+
1103
+ .anim_modalIn_240ms_cubic-bezier\(0\.16\,_1\,_0\.3\,_1\) {
1104
+ animation: modalIn 240ms cubic-bezier(0.16, 1, 0.3, 1);
1105
+ }
1106
+
1107
+ .p_1 {
1108
+ padding: var(--spacing-1);
1109
+ }
1110
+
1038
1111
  .bg_bg\.cardStrong {
1039
1112
  background: var(--colors-bg-card-strong);
1040
1113
  }
@@ -1071,10 +1144,6 @@ body {
1071
1144
  padding: var(--spacing-3);
1072
1145
  }
1073
1146
 
1074
- .bg_bg\.menu {
1075
- background: var(--colors-bg-menu);
1076
- }
1077
-
1078
1147
  .p_1\.5 {
1079
1148
  padding: var(--spacing-1\.5);
1080
1149
  }
@@ -1139,6 +1208,18 @@ body {
1139
1208
  border-color: var(--colors-badge-danger-border);
1140
1209
  }
1141
1210
 
1211
+ .ov_hidden {
1212
+ overflow: hidden;
1213
+ }
1214
+
1215
+ .trs_background-color_160ms_cubic-bezier\(0\.25\,_0\.1\,_0\.25\,_1\) {
1216
+ transition: background-color 160ms cubic-bezier(0.25, 0.1, 0.25, 1);
1217
+ }
1218
+
1219
+ .bdr_lg {
1220
+ border-radius: var(--radii-lg);
1221
+ }
1222
+
1142
1223
  .gap_2 {
1143
1224
  gap: var(--spacing-2);
1144
1225
  }
@@ -1191,6 +1272,18 @@ body {
1191
1272
  gap: var(--spacing-0\.5);
1192
1273
  }
1193
1274
 
1275
+ .trs_color_160ms_cubic-bezier\(0\.25\,_0\.1\,_0\.25\,_1\)\,_background_160ms_cubic-bezier\(0\.25\,_0\.1\,_0\.25\,_1\) {
1276
+ transition: color 160ms cubic-bezier(0.25, 0.1, 0.25, 1), background 160ms cubic-bezier(0.25, 0.1, 0.25, 1);
1277
+ }
1278
+
1279
+ .px_6 {
1280
+ padding-inline: var(--spacing-6);
1281
+ }
1282
+
1283
+ .bd-c_border\.subtle {
1284
+ border-color: var(--colors-border-subtle);
1285
+ }
1286
+
1194
1287
  .px_3\.5 {
1195
1288
  padding-inline: var(--spacing-3\.5);
1196
1289
  }
@@ -1207,14 +1300,6 @@ body {
1207
1300
  border-color: var(--colors-transparent);
1208
1301
  }
1209
1302
 
1210
- .ov_hidden {
1211
- overflow: hidden;
1212
- }
1213
-
1214
- .bdr_lg {
1215
- border-radius: var(--radii-lg);
1216
- }
1217
-
1218
1303
  .px_3 {
1219
1304
  padding-inline: var(--spacing-3);
1220
1305
  }
@@ -1243,12 +1328,16 @@ body {
1243
1328
  border-radius: 999px;
1244
1329
  }
1245
1330
 
1246
- .gap_5 {
1247
- gap: var(--spacing-5);
1331
+ .ring_none {
1332
+ outline: var(--borders-none);
1248
1333
  }
1249
1334
 
1250
- .bd-c_border\.subtle {
1251
- border-color: var(--colors-border-subtle);
1335
+ .trs_all_240ms_cubic-bezier\(0\.16\,_1\,_0\.3\,_1\) {
1336
+ transition: all 240ms cubic-bezier(0.16, 1, 0.3, 1);
1337
+ }
1338
+
1339
+ .gap_5 {
1340
+ gap: var(--spacing-5);
1252
1341
  }
1253
1342
 
1254
1343
  .bdr_2xl {
@@ -1455,6 +1544,31 @@ body {
1455
1544
  color: var(--colors-badge-danger-text);
1456
1545
  }
1457
1546
 
1547
+ .us_none {
1548
+ -webkit-user-select: none;
1549
+ user-select: none;
1550
+ }
1551
+
1552
+ .ff_heading {
1553
+ font-family: var(--fonts-heading);
1554
+ }
1555
+
1556
+ .fw_600 {
1557
+ font-weight: 600;
1558
+ }
1559
+
1560
+ .fs_md {
1561
+ font-size: var(--font-sizes-md);
1562
+ }
1563
+
1564
+ .c_text\.muted {
1565
+ color: var(--colors-text-muted);
1566
+ }
1567
+
1568
+ .obj-f_cover {
1569
+ object-fit: cover;
1570
+ }
1571
+
1458
1572
  .vis_hidden {
1459
1573
  visibility: hidden;
1460
1574
  }
@@ -1503,10 +1617,6 @@ body {
1503
1617
  line-height: 1.55;
1504
1618
  }
1505
1619
 
1506
- .fw_600 {
1507
- font-weight: 600;
1508
- }
1509
-
1510
1620
  .lh_1\.5 {
1511
1621
  line-height: 1.5;
1512
1622
  }
@@ -1515,6 +1625,47 @@ body {
1515
1625
  box-shadow: 0 0 0 0 var(--colors-bg-accentSoft, rgba(49, 94, 255, 0.3));
1516
1626
  }
1517
1627
 
1628
+ .pos_fixed {
1629
+ position: fixed;
1630
+ }
1631
+
1632
+ .bkdp_blur\(12px\) {
1633
+ backdrop-filter: blur(12px);
1634
+ -webkit-backdrop-filter: blur(12px);
1635
+ }
1636
+
1637
+ .z_50 {
1638
+ z-index: 50;
1639
+ }
1640
+
1641
+ .jc_flex-end {
1642
+ justify-content: flex-end;
1643
+ }
1644
+
1645
+ .bx-sh_0_16px_48px_-8px_rgba\(0\,_0\,_0\,_0\.12\)\,_0_4px_16px_-4px_rgba\(0\,_0\,_0\,_0\.06\) {
1646
+ box-shadow: 0 16px 48px -8px rgba(0, 0, 0, 0.12), 0 4px 16px -4px rgba(0, 0, 0, 0.06);
1647
+ }
1648
+
1649
+ .trf_translate\(-50\%\,_-50\%\) {
1650
+ transform: translate(-50%, -50%);
1651
+ }
1652
+
1653
+ .z_51 {
1654
+ z-index: 51;
1655
+ }
1656
+
1657
+ .sr_true {
1658
+ position: absolute;
1659
+ width: 1px;
1660
+ height: 1px;
1661
+ padding: 0;
1662
+ margin: -1px;
1663
+ overflow: hidden;
1664
+ clip: rect(0, 0, 0, 0);
1665
+ white-space: nowrap;
1666
+ border-width: 0;
1667
+ }
1668
+
1518
1669
  .bx-sh_none {
1519
1670
  box-shadow: none;
1520
1671
  }
@@ -1523,10 +1674,6 @@ body {
1523
1674
  z-index: 30;
1524
1675
  }
1525
1676
 
1526
- .c_text\.muted {
1527
- color: var(--colors-text-muted);
1528
- }
1529
-
1530
1677
  .trf_rotate\(180deg\) {
1531
1678
  transform: rotate(180deg);
1532
1679
  }
@@ -1555,6 +1702,18 @@ body {
1555
1702
  overflow-wrap: anywhere;
1556
1703
  }
1557
1704
 
1705
+ .lh_1\.4 {
1706
+ line-height: 1.4;
1707
+ }
1708
+
1709
+ .bx-sh_0_4px_12px_-4px_rgba\(0\,_0\,_0\,_0\.1\)\,_0_1px_2px_0_rgba\(0\,_0\,_0\,_0\.06\) {
1710
+ box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
1711
+ }
1712
+
1713
+ .pointer-events_auto {
1714
+ pointer-events: auto;
1715
+ }
1716
+
1558
1717
  .ac_start {
1559
1718
  align-content: start;
1560
1719
  }
@@ -1610,10 +1769,6 @@ body {
1610
1769
  justify-content: flex-start;
1611
1770
  }
1612
1771
 
1613
- .jc_flex-end {
1614
- justify-content: flex-end;
1615
- }
1616
-
1617
1772
  .scr-bar-w_thin {
1618
1773
  scrollbar-width: thin;
1619
1774
  }
@@ -1654,10 +1809,6 @@ body {
1654
1809
  box-shadow: 0 1px 2px 0 rgba(15,23,42,0.04), 0 4px 12px -4px rgba(15,23,42,0.1);
1655
1810
  }
1656
1811
 
1657
- .ff_heading {
1658
- font-family: var(--fonts-heading);
1659
- }
1660
-
1661
1812
  .fs_2xl {
1662
1813
  font-size: var(--font-sizes-2xl);
1663
1814
  }
@@ -1674,23 +1825,10 @@ body {
1674
1825
  letter-spacing: 0.005em;
1675
1826
  }
1676
1827
 
1677
- .us_none {
1678
- -webkit-user-select: none;
1679
- user-select: none;
1680
- }
1681
-
1682
- .fs_md {
1683
- font-size: var(--font-sizes-md);
1684
- }
1685
-
1686
1828
  .bx-sh_0_4px_16px_-4px_rgba\(15\,23\,42\,0\.1\)\,_0_8px_24px_-8px_rgba\(15\,23\,42\,0\.08\)\,_0_1px_2px_0_rgba\(15\,23\,42\,0\.04\) {
1687
1829
  box-shadow: 0 4px 16px -4px rgba(15,23,42,0.1), 0 8px 24px -8px rgba(15,23,42,0.08), 0 1px 2px 0 rgba(15,23,42,0.04);
1688
1830
  }
1689
1831
 
1690
- .pos_fixed {
1691
- position: fixed;
1692
- }
1693
-
1694
1832
  .w_9 {
1695
1833
  width: var(--sizes-9);
1696
1834
  }
@@ -1739,6 +1877,46 @@ body {
1739
1877
  padding-right: var(--spacing-1);
1740
1878
  }
1741
1879
 
1880
+ .w_8 {
1881
+ width: var(--sizes-8);
1882
+ }
1883
+
1884
+ .h_8 {
1885
+ height: var(--sizes-8);
1886
+ }
1887
+
1888
+ .w_10 {
1889
+ width: var(--sizes-10);
1890
+ }
1891
+
1892
+ .h_10 {
1893
+ height: var(--sizes-10);
1894
+ }
1895
+
1896
+ .w_12 {
1897
+ width: var(--sizes-12);
1898
+ }
1899
+
1900
+ .h_12 {
1901
+ height: var(--sizes-12);
1902
+ }
1903
+
1904
+ .w_14 {
1905
+ width: var(--sizes-14);
1906
+ }
1907
+
1908
+ .h_14 {
1909
+ height: var(--sizes-14);
1910
+ }
1911
+
1912
+ .w_full {
1913
+ width: var(--sizes-full);
1914
+ }
1915
+
1916
+ .h_full {
1917
+ height: var(--sizes-full);
1918
+ }
1919
+
1742
1920
  .min-w_0 {
1743
1921
  min-width: var(--sizes-0);
1744
1922
  }
@@ -1767,6 +1945,50 @@ body {
1767
1945
  height: var(--sizes-2\.5);
1768
1946
  }
1769
1947
 
1948
+ .pb_4 {
1949
+ padding-bottom: var(--spacing-4);
1950
+ }
1951
+
1952
+ .pb_6 {
1953
+ padding-bottom: var(--spacing-6);
1954
+ }
1955
+
1956
+ .pt_3 {
1957
+ padding-top: var(--spacing-3);
1958
+ }
1959
+
1960
+ .bd-t-w_1px {
1961
+ border-top-width: 1px;
1962
+ }
1963
+
1964
+ .bd-t-c_border\.soft {
1965
+ border-top-color: var(--colors-border-soft);
1966
+ }
1967
+
1968
+ .max-h_calc\(100dvh_-_2rem\) {
1969
+ max-height: calc(100dvh - 2rem);
1970
+ }
1971
+
1972
+ .top_50\% {
1973
+ top: 50%;
1974
+ }
1975
+
1976
+ .left_50\% {
1977
+ left: 50%;
1978
+ }
1979
+
1980
+ .w_380px {
1981
+ width: 380px;
1982
+ }
1983
+
1984
+ .w_480px {
1985
+ width: 480px;
1986
+ }
1987
+
1988
+ .w_640px {
1989
+ width: 640px;
1990
+ }
1991
+
1770
1992
  .w_fit-content {
1771
1993
  width: fit-content;
1772
1994
  }
@@ -1811,6 +2033,46 @@ body {
1811
2033
  height: 4.75rem;
1812
2034
  }
1813
2035
 
2036
+ .bottom_4 {
2037
+ bottom: var(--spacing-4);
2038
+ }
2039
+
2040
+ .right_4 {
2041
+ right: var(--spacing-4);
2042
+ }
2043
+
2044
+ .w_360px {
2045
+ width: 360px;
2046
+ }
2047
+
2048
+ .max-w_calc\(100vw_-_2rem\) {
2049
+ max-width: calc(100vw - 2rem);
2050
+ }
2051
+
2052
+ .top_3 {
2053
+ top: var(--spacing-3);
2054
+ }
2055
+
2056
+ .right_3 {
2057
+ right: var(--spacing-3);
2058
+ }
2059
+
2060
+ .w_6 {
2061
+ width: var(--sizes-6);
2062
+ }
2063
+
2064
+ .h_6 {
2065
+ height: var(--sizes-6);
2066
+ }
2067
+
2068
+ .w_5 {
2069
+ width: var(--sizes-5);
2070
+ }
2071
+
2072
+ .h_5 {
2073
+ height: var(--sizes-5);
2074
+ }
2075
+
1814
2076
  .max-w_100\% {
1815
2077
  max-width: 100%;
1816
2078
  }
@@ -1859,6 +2121,10 @@ body {
1859
2121
  right: var(--spacing-0);
1860
2122
  }
1861
2123
 
2124
+ [data-theme="dark"] .dark\:bg_rgba\(0\,_0\,_0\,_0\.5\) {
2125
+ background: rgba(0, 0, 0, 0.5);
2126
+ }
2127
+
1862
2128
  [data-theme="dark"] .dark\:bg_rgba\(138\,_180\,_255\,_0\.2\) {
1863
2129
  background: rgba(138, 180, 255, 0.2);
1864
2130
  }
@@ -1883,6 +2149,18 @@ body {
1883
2149
  background: rgba(255, 255, 255, 0.04);
1884
2150
  }
1885
2151
 
2152
+ .\[\&\[data-state\=\"open\"\]\]\:anim_toastSlideIn_240ms_cubic-bezier\(0\.16\,_1\,_0\.3\,_1\)[data-state="open"] {
2153
+ animation: toastSlideIn 240ms cubic-bezier(0.16, 1, 0.3, 1);
2154
+ }
2155
+
2156
+ .\[\&\[data-state\=\"closed\"\]\]\:anim_toastFadeOut_160ms_cubic-bezier\(0\.25\,_0\.1\,_0\.25\,_1\)[data-state="closed"] {
2157
+ animation: toastFadeOut 160ms cubic-bezier(0.25, 0.1, 0.25, 1);
2158
+ }
2159
+
2160
+ .\[\&\[data-swipe\=\"end\"\]\]\:anim_toastSwipeOut_100ms_ease-out[data-swipe="end"] {
2161
+ animation: toastSwipeOut 100ms ease-out;
2162
+ }
2163
+
1886
2164
  [data-theme="dark"] .dark\:bd-c_border\.default {
1887
2165
  border-color: var(--colors-border-default);
1888
2166
  }
@@ -1895,10 +2173,18 @@ body {
1895
2173
  border-color: var(--colors-border-accent);
1896
2174
  }
1897
2175
 
2176
+ .\[\&\[data-swipe\=\"cancel\"\]\]\:trs_transform_200ms_ease-out[data-swipe="cancel"] {
2177
+ transition: transform 200ms ease-out;
2178
+ }
2179
+
1898
2180
  [data-theme="dark"] .dark\:bd-c_border\.subtle {
1899
2181
  border-color: var(--colors-border-subtle);
1900
2182
  }
1901
2183
 
2184
+ [data-theme="dark"] .dark\:bx-sh_0_16px_48px_-8px_rgba\(0\,_0\,_0\,_0\.56\)\,_0_4px_16px_-4px_rgba\(0\,_0\,_0\,_0\.32\) {
2185
+ box-shadow: 0 16px 48px -8px rgba(0, 0, 0, 0.56), 0 4px 16px -4px rgba(0, 0, 0, 0.32);
2186
+ }
2187
+
1902
2188
  [data-theme="dark"] .dark\:c_text\.accent {
1903
2189
  color: var(--colors-text-accent);
1904
2190
  }
@@ -1915,6 +2201,18 @@ body {
1915
2201
  transform: translateX(-100%);
1916
2202
  }
1917
2203
 
2204
+ [data-theme="dark"] .dark\:bx-sh_0_4px_12px_-4px_rgba\(0\,_0\,_0\,_0\.4\)\,_0_1px_2px_0_rgba\(0\,_0\,_0\,_0\.24\) {
2205
+ box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.24);
2206
+ }
2207
+
2208
+ .\[\&\[data-swipe\=\"move\"\]\]\:trf_translateX\(var\(--reka-toast-swipe-move-x\)\)[data-swipe="move"] {
2209
+ transform: translateX(var(--reka-toast-swipe-move-x));
2210
+ }
2211
+
2212
+ .\[\&\[data-swipe\=\"cancel\"\]\]\:trf_translateX\(0\)[data-swipe="cancel"] {
2213
+ transform: translateX(0);
2214
+ }
2215
+
1918
2216
  [data-theme="dark"] .dark\:scr-bar-c_rgba\(255\,_255\,_255\,_0\.12\)_transparent {
1919
2217
  scrollbar-color: rgba(255, 255, 255, 0.12) transparent;
1920
2218
  }
@@ -1935,6 +2233,10 @@ body {
1935
2233
  color: var(--colors-text-inverse);
1936
2234
  }
1937
2235
 
2236
+ [data-theme="dark"] .dark\:c_text\.error {
2237
+ color: var(--colors-text-error);
2238
+ }
2239
+
1938
2240
  [data-theme="dark"] .dark\:bx-sh_0_4px_16px_-4px_rgba\(0\,0\,0\,0\.32\)\,_0_8px_24px_-8px_rgba\(0\,0\,0\,0\.24\)\,_0_1px_2px_0_rgba\(0\,0\,0\,0\.16\) {
1939
2241
  box-shadow: 0 4px 16px -4px rgba(0,0,0,0.32), 0 8px 24px -8px rgba(0,0,0,0.24), 0 1px 2px 0 rgba(0,0,0,0.16);
1940
2242
  }
@@ -1951,20 +2253,20 @@ body {
1951
2253
  border-color: var(--colors-border-accent);
1952
2254
  }
1953
2255
 
1954
- .focusVisible\:ring-c_text\.accent:is(:focus-visible, [data-focus-visible]) {
1955
- outline-color: var(--colors-text-accent);
2256
+ .focusVisible\:ring-c_border\.accent:is(:focus-visible, [data-focus-visible]) {
2257
+ outline-color: var(--colors-border-accent);
1956
2258
  }
1957
2259
 
1958
2260
  .focusVisible\:ring-o_2px:is(:focus-visible, [data-focus-visible]) {
1959
2261
  outline-offset: 2px;
1960
2262
  }
1961
2263
 
1962
- .focusVisible\:ring-o_-2px:is(:focus-visible, [data-focus-visible]) {
1963
- outline-offset: -2px;
2264
+ .focusVisible\:ring-c_text\.accent:is(:focus-visible, [data-focus-visible]) {
2265
+ outline-color: var(--colors-text-accent);
1964
2266
  }
1965
2267
 
1966
- .focusVisible\:ring-c_border\.accent:is(:focus-visible, [data-focus-visible]) {
1967
- outline-color: var(--colors-border-accent);
2268
+ .focusVisible\:ring-o_-2px:is(:focus-visible, [data-focus-visible]) {
2269
+ outline-offset: -2px;
1968
2270
  }
1969
2271
 
1970
2272
  .focusVisible\:bx-sh_0_0_0_3px_rgba\(82\,_121\,_255\,_0\.18\):is(:focus-visible, [data-focus-visible]) {
@@ -1975,14 +2277,14 @@ body {
1975
2277
  box-shadow: 0 0 0 3px var(--colors-bg-accentSoft, rgba(49, 94, 255, 0.12));
1976
2278
  }
1977
2279
 
1978
- .hover\:bg_bg\.accentStrong:is(:hover, [data-hover]) {
1979
- background: var(--colors-bg-accent-strong);
1980
- }
1981
-
1982
2280
  .hover\:bg_bg\.hover:is(:hover, [data-hover]) {
1983
2281
  background: var(--colors-bg-hover);
1984
2282
  }
1985
2283
 
2284
+ .hover\:bg_bg\.accentStrong:is(:hover, [data-hover]) {
2285
+ background: var(--colors-bg-accent-strong);
2286
+ }
2287
+
1986
2288
  .hover\:bg_bg\.cardStrong:is(:hover, [data-hover]) {
1987
2289
  background: var(--colors-bg-card-strong);
1988
2290
  }
@@ -2063,6 +2365,10 @@ body {
2063
2365
  box-shadow: 0 2px 8px -2px rgba(255, 142, 127, 0.3);
2064
2366
  }
2065
2367
 
2368
+ [data-theme="dark"] .hover\:dark\:c_text\.error:is(:hover, [data-hover]) {
2369
+ color: var(--colors-text-error);
2370
+ }
2371
+
2066
2372
  @media screen and (min-width: 48rem) {
2067
2373
  .md\:p_5 {
2068
2374
  padding: var(--spacing-5);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aggc/ui",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Shared Vue UI primitives, patterns, and tokens for AGGC desktop and web.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -94,7 +94,8 @@
94
94
  "dependencies": {
95
95
  "@fontsource/ibm-plex-sans": "^5.2.5",
96
96
  "@fontsource/space-grotesk": "^5.2.6",
97
- "lucide-vue-next": "^0.525.0"
97
+ "lucide-vue-next": "^0.525.0",
98
+ "reka-ui": "^2.9.10"
98
99
  },
99
100
  "devDependencies": {
100
101
  "@changesets/changelog-github": "^0.6.0",
@@ -0,0 +1,81 @@
1
+ import { css, cva } from "@styled/css";
2
+
3
+ export const uiAvatarRootClass = cva({
4
+ base: {
5
+ display: "inline-flex",
6
+ alignItems: "center",
7
+ justifyContent: "center",
8
+ overflow: "hidden",
9
+ userSelect: "none",
10
+ flexShrink: "0",
11
+ bg: "bg.accentSoft",
12
+ transition: "background-color 160ms cubic-bezier(0.25, 0.1, 0.25, 1)",
13
+ },
14
+ variants: {
15
+ size: {
16
+ sm: { w: "8", h: "8" },
17
+ md: { w: "10", h: "10" },
18
+ lg: { w: "12", h: "12" },
19
+ xl: { w: "14", h: "14" },
20
+ },
21
+ shape: {
22
+ circle: { borderRadius: "full" },
23
+ square: { borderRadius: "lg" },
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ size: "md",
28
+ shape: "circle",
29
+ },
30
+ });
31
+
32
+ export const uiAvatarImageClass = css({
33
+ w: "full",
34
+ h: "full",
35
+ objectFit: "cover",
36
+ });
37
+
38
+ export const uiAvatarFallbackClass = cva({
39
+ base: {
40
+ fontFamily: "heading",
41
+ fontWeight: "600",
42
+ color: "text.accent",
43
+ lineHeight: "1",
44
+ display: "flex",
45
+ alignItems: "center",
46
+ justifyContent: "center",
47
+ w: "full",
48
+ h: "full",
49
+ },
50
+ variants: {
51
+ size: {
52
+ sm: { fontSize: "xs" },
53
+ md: { fontSize: "sm" },
54
+ lg: { fontSize: "md" },
55
+ xl: { fontSize: "lg" },
56
+ },
57
+ },
58
+ defaultVariants: {
59
+ size: "md",
60
+ },
61
+ });
62
+
63
+ export const uiAvatarIconFallbackClass = cva({
64
+ base: {
65
+ color: "text.muted",
66
+ display: "flex",
67
+ alignItems: "center",
68
+ justifyContent: "center",
69
+ },
70
+ variants: {
71
+ size: {
72
+ sm: {},
73
+ md: {},
74
+ lg: {},
75
+ xl: {},
76
+ },
77
+ },
78
+ defaultVariants: {
79
+ size: "md",
80
+ },
81
+ });