@nous-research/ui 0.15.0 → 0.17.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 (258) hide show
  1. package/CHANGELOG.md +266 -0
  2. package/README.md +24 -4
  3. package/dist/fonts.js +1 -0
  4. package/dist/hooks/use-below-breakpoint.d.ts +2 -0
  5. package/dist/hooks/use-below-breakpoint.js +17 -0
  6. package/dist/hooks/use-capped-frame.js +1 -0
  7. package/dist/hooks/use-confirm-delete.d.ts +10 -0
  8. package/dist/hooks/use-confirm-delete.js +35 -0
  9. package/dist/hooks/use-css-var-dims.js +1 -0
  10. package/dist/hooks/use-gpu-tier.js +1 -0
  11. package/dist/hooks/use-render-loop.js +1 -0
  12. package/dist/hooks/use-smooth-controls.js +1 -0
  13. package/dist/hooks/use-toast.d.ts +7 -0
  14. package/dist/hooks/use-toast.js +21 -0
  15. package/dist/index.d.ts +11 -1
  16. package/dist/index.js +23 -1
  17. package/dist/ui/basic-page.js +1 -0
  18. package/dist/ui/components/animated-count.js +1 -0
  19. package/dist/ui/components/ascii.js +1 -0
  20. package/dist/ui/components/badge.js +2 -1
  21. package/dist/ui/components/badges/nous-girl.js +1 -0
  22. package/dist/ui/components/blend-mode.js +1 -0
  23. package/dist/ui/components/blink.js +1 -0
  24. package/dist/ui/components/bottom-sheet.d.ts +15 -0
  25. package/dist/ui/components/bottom-sheet.js +192 -0
  26. package/dist/ui/components/button.js +2 -1
  27. package/dist/ui/components/card.d.ts +5 -0
  28. package/dist/ui/components/card.js +74 -0
  29. package/dist/ui/components/checkbox.d.ts +1 -1
  30. package/dist/ui/components/checkbox.js +2 -1
  31. package/dist/ui/components/command-block.js +4 -3
  32. package/dist/ui/components/confirm-dialog.d.ts +13 -0
  33. package/dist/ui/components/confirm-dialog.js +113 -0
  34. package/dist/ui/components/cursor.js +1 -0
  35. package/dist/ui/components/dialog.d.ts +15 -0
  36. package/dist/ui/components/dialog.js +171 -0
  37. package/dist/ui/components/dropdown-menu.js +1 -0
  38. package/dist/ui/components/fit-text/index.js +1 -0
  39. package/dist/ui/components/graphs/bar-chart.js +1 -0
  40. package/dist/ui/components/graphs/index.js +1 -0
  41. package/dist/ui/components/graphs/line-chart.js +1 -0
  42. package/dist/ui/components/graphs/utils.js +1 -0
  43. package/dist/ui/components/grid/index.js +1 -0
  44. package/dist/ui/components/hover-bg.js +1 -0
  45. package/dist/ui/components/icons/arrow.js +1 -0
  46. package/dist/ui/components/icons/check.js +1 -0
  47. package/dist/ui/components/icons/chevron.js +1 -0
  48. package/dist/ui/components/icons/discord.js +1 -0
  49. package/dist/ui/components/icons/eye.js +1 -0
  50. package/dist/ui/components/icons/gear.js +1 -0
  51. package/dist/ui/components/icons/github.js +1 -0
  52. package/dist/ui/components/icons/hamburger.js +1 -0
  53. package/dist/ui/components/icons/heart.js +1 -0
  54. package/dist/ui/components/icons/index.js +1 -0
  55. package/dist/ui/components/icons/link.js +1 -0
  56. package/dist/ui/components/icons/minus.js +1 -0
  57. package/dist/ui/components/icons/search.js +1 -0
  58. package/dist/ui/components/image-distortion.js +1 -0
  59. package/dist/ui/components/input.d.ts +1 -0
  60. package/dist/ui/components/input.js +21 -0
  61. package/dist/ui/components/label.d.ts +1 -0
  62. package/dist/ui/components/label.js +18 -0
  63. package/dist/ui/components/leva-client.js +1 -0
  64. package/dist/ui/components/list-item.js +3 -2
  65. package/dist/ui/components/overlays/blend-modes.js +1 -0
  66. package/dist/ui/components/overlays/glitch.js +1 -0
  67. package/dist/ui/components/overlays/greys.js +1 -0
  68. package/dist/ui/components/overlays/index.js +1 -0
  69. package/dist/ui/components/overlays/lens-layers.js +1 -0
  70. package/dist/ui/components/overlays/lens.js +1 -0
  71. package/dist/ui/components/overlays/noise.js +1 -0
  72. package/dist/ui/components/overlays/vignette.js +1 -0
  73. package/dist/ui/components/poster.js +1 -0
  74. package/dist/ui/components/progress.js +1 -0
  75. package/dist/ui/components/scene-canvas.js +1 -0
  76. package/dist/ui/components/scramble.js +1 -0
  77. package/dist/ui/components/segmented.js +5 -4
  78. package/dist/ui/components/select.js +1 -0
  79. package/dist/ui/components/selection-switcher.js +1 -0
  80. package/dist/ui/components/separator.d.ts +5 -0
  81. package/dist/ui/components/separator.js +22 -0
  82. package/dist/ui/components/shader.js +1 -0
  83. package/dist/ui/components/socials.js +1 -0
  84. package/dist/ui/components/spinner.js +1 -0
  85. package/dist/ui/components/stats.js +2 -1
  86. package/dist/ui/components/switch.js +1 -0
  87. package/dist/ui/components/tabs.js +4 -3
  88. package/dist/ui/components/terminal-demo.js +2 -1
  89. package/dist/ui/components/theme-toggle.js +1 -0
  90. package/dist/ui/components/tier-card.js +2 -1
  91. package/dist/ui/components/toast.d.ts +8 -0
  92. package/dist/ui/components/toast.js +39 -0
  93. package/dist/ui/components/tv.js +1 -0
  94. package/dist/ui/components/typography/h1.js +1 -0
  95. package/dist/ui/components/typography/h2.js +1 -0
  96. package/dist/ui/components/typography/index.js +1 -0
  97. package/dist/ui/components/typography/legend.js +1 -0
  98. package/dist/ui/components/typography/small.js +1 -0
  99. package/dist/ui/components/watchlist.js +2 -1
  100. package/dist/ui/footer.js +1 -0
  101. package/dist/ui/globals.css +47 -3
  102. package/dist/ui/header.js +1 -0
  103. package/dist/ui/layout-wrapper.js +2 -1
  104. package/dist/utils/color.js +1 -0
  105. package/dist/utils/index.js +1 -0
  106. package/dist/utils/poly.js +1 -0
  107. package/package.json +5 -3
  108. package/src/assets/filler-bg0.webp +0 -0
  109. package/src/assets.d.ts +38 -0
  110. package/src/fonts/Collapse-Bold.woff2 +0 -0
  111. package/src/fonts/Collapse-BoldItalic.woff2 +0 -0
  112. package/src/fonts/Collapse-Italic.woff2 +0 -0
  113. package/src/fonts/Collapse-Light.woff2 +0 -0
  114. package/src/fonts/Collapse-LightItalic.woff2 +0 -0
  115. package/src/fonts/Collapse-Regular.woff2 +0 -0
  116. package/src/fonts/Collapse-Thin.woff2 +0 -0
  117. package/src/fonts/Collapse-ThinItalic.woff2 +0 -0
  118. package/src/fonts/Mondwest-Regular.woff2 +0 -0
  119. package/src/fonts/Neuebit-Bold.woff2 +0 -0
  120. package/src/fonts/RulesCompressed-Medium.woff2 +0 -0
  121. package/src/fonts/RulesCompressed-Regular.woff2 +0 -0
  122. package/src/fonts/RulesExpanded-Bold.woff2 +0 -0
  123. package/src/fonts/RulesExpanded-Regular.woff2 +0 -0
  124. package/src/fonts.ts +6 -0
  125. package/src/hooks/use-below-breakpoint.ts +21 -0
  126. package/src/hooks/use-capped-frame.ts +18 -0
  127. package/src/hooks/use-confirm-delete.ts +43 -0
  128. package/src/hooks/use-css-var-dims.ts +39 -0
  129. package/src/hooks/use-gpu-tier.ts +165 -0
  130. package/src/hooks/use-render-loop.ts +121 -0
  131. package/src/hooks/use-smooth-controls.ts +318 -0
  132. package/src/hooks/use-toast.ts +29 -0
  133. package/src/index.ts +130 -0
  134. package/src/ui/basic-page.tsx +34 -0
  135. package/src/ui/build.css +4 -0
  136. package/src/ui/components/animated-count.stories.tsx +67 -0
  137. package/src/ui/components/animated-count.tsx +168 -0
  138. package/src/ui/components/ascii.stories.tsx +30 -0
  139. package/src/ui/components/ascii.tsx +110 -0
  140. package/src/ui/components/badge.stories.tsx +31 -0
  141. package/src/ui/components/badge.tsx +60 -0
  142. package/src/ui/components/badges/nous-girl.tsx +52 -0
  143. package/src/ui/components/blend-mode.stories.tsx +33 -0
  144. package/src/ui/components/blend-mode.tsx +129 -0
  145. package/src/ui/components/blink.stories.tsx +32 -0
  146. package/src/ui/components/blink.tsx +21 -0
  147. package/src/ui/components/bottom-sheet.stories.tsx +43 -0
  148. package/src/ui/components/bottom-sheet.tsx +227 -0
  149. package/src/ui/components/button.stories.tsx +68 -0
  150. package/src/ui/components/button.tsx +170 -0
  151. package/src/ui/components/card.stories.tsx +63 -0
  152. package/src/ui/components/card.tsx +85 -0
  153. package/src/ui/components/checkbox.stories.tsx +113 -0
  154. package/src/ui/components/checkbox.tsx +36 -0
  155. package/src/ui/components/command-block.stories.tsx +52 -0
  156. package/src/ui/components/command-block.tsx +86 -0
  157. package/src/ui/components/confirm-dialog.stories.tsx +91 -0
  158. package/src/ui/components/confirm-dialog.tsx +130 -0
  159. package/src/ui/components/cursor.tsx +115 -0
  160. package/src/ui/components/dialog.stories.tsx +169 -0
  161. package/src/ui/components/dialog.tsx +177 -0
  162. package/src/ui/components/dropdown-menu.stories.tsx +52 -0
  163. package/src/ui/components/dropdown-menu.tsx +117 -0
  164. package/src/ui/components/fit-text/fit-text.css +42 -0
  165. package/src/ui/components/fit-text/index.stories.tsx +33 -0
  166. package/src/ui/components/fit-text/index.tsx +45 -0
  167. package/src/ui/components/forms.stories.tsx +173 -0
  168. package/src/ui/components/graphs/bar-chart.tsx +153 -0
  169. package/src/ui/components/graphs/index.stories.tsx +64 -0
  170. package/src/ui/components/graphs/index.tsx +4 -0
  171. package/src/ui/components/graphs/line-chart.tsx +213 -0
  172. package/src/ui/components/graphs/utils.tsx +265 -0
  173. package/src/ui/components/grid/grid.css +79 -0
  174. package/src/ui/components/grid/index.tsx +19 -0
  175. package/src/ui/components/hover-bg.stories.tsx +29 -0
  176. package/src/ui/components/hover-bg.tsx +15 -0
  177. package/src/ui/components/icons/arrow.tsx +42 -0
  178. package/src/ui/components/icons/check.tsx +14 -0
  179. package/src/ui/components/icons/chevron.tsx +45 -0
  180. package/src/ui/components/icons/discord.tsx +16 -0
  181. package/src/ui/components/icons/eye.tsx +12 -0
  182. package/src/ui/components/icons/gear.tsx +51 -0
  183. package/src/ui/components/icons/github.tsx +16 -0
  184. package/src/ui/components/icons/hamburger.tsx +52 -0
  185. package/src/ui/components/icons/heart.tsx +12 -0
  186. package/src/ui/components/icons/index.ts +12 -0
  187. package/src/ui/components/icons/link.tsx +14 -0
  188. package/src/ui/components/icons/minus.tsx +14 -0
  189. package/src/ui/components/icons/search.tsx +28 -0
  190. package/src/ui/components/image-distortion.stories.tsx +120 -0
  191. package/src/ui/components/image-distortion.tsx +498 -0
  192. package/src/ui/components/input.stories.tsx +39 -0
  193. package/src/ui/components/input.tsx +20 -0
  194. package/src/ui/components/label.stories.tsx +26 -0
  195. package/src/ui/components/label.tsx +16 -0
  196. package/src/ui/components/leva-client.tsx +14 -0
  197. package/src/ui/components/list-item.stories.tsx +83 -0
  198. package/src/ui/components/list-item.tsx +37 -0
  199. package/src/ui/components/overlays/blend-modes.ts +13 -0
  200. package/src/ui/components/overlays/glitch.tsx +243 -0
  201. package/src/ui/components/overlays/greys.tsx +386 -0
  202. package/src/ui/components/overlays/index.tsx +47 -0
  203. package/src/ui/components/overlays/lens-layers.tsx +119 -0
  204. package/src/ui/components/overlays/lens.ts +91 -0
  205. package/src/ui/components/overlays/noise.tsx +174 -0
  206. package/src/ui/components/overlays/vignette.tsx +60 -0
  207. package/src/ui/components/poster.stories.tsx +513 -0
  208. package/src/ui/components/poster.tsx +411 -0
  209. package/src/ui/components/progress.stories.tsx +48 -0
  210. package/src/ui/components/progress.tsx +56 -0
  211. package/src/ui/components/scene-canvas.tsx +254 -0
  212. package/src/ui/components/scramble.stories.tsx +49 -0
  213. package/src/ui/components/scramble.tsx +95 -0
  214. package/src/ui/components/segmented.stories.tsx +101 -0
  215. package/src/ui/components/segmented.tsx +81 -0
  216. package/src/ui/components/select.stories.tsx +88 -0
  217. package/src/ui/components/select.tsx +267 -0
  218. package/src/ui/components/selection-switcher.tsx +44 -0
  219. package/src/ui/components/separator.stories.tsx +33 -0
  220. package/src/ui/components/separator.tsx +24 -0
  221. package/src/ui/components/shader.tsx +83 -0
  222. package/src/ui/components/socials.tsx +42 -0
  223. package/src/ui/components/spinner.stories.tsx +101 -0
  224. package/src/ui/components/spinner.tsx +60 -0
  225. package/src/ui/components/stats.stories.tsx +24 -0
  226. package/src/ui/components/stats.tsx +53 -0
  227. package/src/ui/components/switch.stories.tsx +77 -0
  228. package/src/ui/components/switch.tsx +48 -0
  229. package/src/ui/components/tabs.stories.tsx +101 -0
  230. package/src/ui/components/tabs.tsx +66 -0
  231. package/src/ui/components/terminal-demo.stories.tsx +67 -0
  232. package/src/ui/components/terminal-demo.tsx +189 -0
  233. package/src/ui/components/theme-toggle.stories.tsx +47 -0
  234. package/src/ui/components/theme-toggle.tsx +66 -0
  235. package/src/ui/components/tier-card.stories.tsx +217 -0
  236. package/src/ui/components/tier-card.tsx +190 -0
  237. package/src/ui/components/toast.stories.tsx +55 -0
  238. package/src/ui/components/toast.tsx +49 -0
  239. package/src/ui/components/tv.stories.tsx +37 -0
  240. package/src/ui/components/tv.tsx +257 -0
  241. package/src/ui/components/typography/h1.tsx +18 -0
  242. package/src/ui/components/typography/h2.tsx +18 -0
  243. package/src/ui/components/typography/index.tsx +54 -0
  244. package/src/ui/components/typography/legend.tsx +24 -0
  245. package/src/ui/components/typography/small.tsx +11 -0
  246. package/src/ui/components/watchlist.stories.tsx +33 -0
  247. package/src/ui/components/watchlist.tsx +105 -0
  248. package/src/ui/fonts.css +63 -0
  249. package/src/ui/footer.tsx +111 -0
  250. package/src/ui/globals.css +395 -0
  251. package/src/ui/header.tsx +398 -0
  252. package/src/ui/layout-wrapper.tsx +11 -0
  253. package/src/utils/color.ts +21 -0
  254. package/src/utils/index.ts +62 -0
  255. package/src/utils/poly.ts +26 -0
  256. package/dist/ui/components/modal/index.d.ts +0 -8
  257. package/dist/ui/components/modal/index.js +0 -34
  258. package/dist/ui/components/modal/modal.css +0 -36
@@ -0,0 +1,395 @@
1
+ @source ".";
2
+ @import './components/fit-text/fit-text.css' layer(components);
3
+ @import './components/grid/grid.css' layer(components);
4
+ @view-transition {
5
+ navigation: auto;
6
+ }
7
+
8
+ @media (prefers-reduced-motion: reduce) {
9
+ @view-transition {
10
+ navigation: none;
11
+ }
12
+ }
13
+
14
+ ::view-transition-old(page),
15
+ ::view-transition-new(page) {
16
+ animation-duration: 0.25s;
17
+ animation-timing-function: ease-out;
18
+ }
19
+
20
+ ::view-transition-old(page) {
21
+ animation: fade-out 0.25s ease-out;
22
+ }
23
+
24
+ ::view-transition-new(page) {
25
+ animation: fade-in 0.25s ease-out;
26
+ }
27
+
28
+ @keyframes fade-out {
29
+ to {
30
+ opacity: 0;
31
+ }
32
+ }
33
+
34
+ @keyframes fade-in {
35
+ from {
36
+ opacity: 0;
37
+ }
38
+ }
39
+
40
+ @keyframes slide-down {
41
+ from {
42
+ opacity: 0;
43
+ transform: translateY(-6px);
44
+ }
45
+ }
46
+
47
+ @keyframes slide-up {
48
+ from {
49
+ opacity: 0;
50
+ transform: translateY(6px);
51
+ }
52
+ }
53
+
54
+ .animate-slide-down {
55
+ animation: slide-down 0.6s ease-out both;
56
+ }
57
+
58
+ .animate-slide-up {
59
+ animation: slide-up 0.6s ease-out both;
60
+ }
61
+
62
+ .animate-fade-in {
63
+ animation: fade-in 0.5s ease-out both;
64
+ }
65
+
66
+ @keyframes blink {
67
+ 0%,
68
+ 100% {
69
+ opacity: 1;
70
+ }
71
+ 50% {
72
+ opacity: 0;
73
+ }
74
+ }
75
+
76
+ @keyframes spin-slow {
77
+ from {
78
+ transform: rotate(0deg);
79
+ }
80
+ to {
81
+ transform: rotate(360deg);
82
+ }
83
+ }
84
+
85
+ .animate-spin-slow {
86
+ animation: spin-slow 12s linear infinite;
87
+ }
88
+
89
+ @keyframes march {
90
+ to {
91
+ background-position: 0.5rem 0;
92
+ }
93
+ }
94
+
95
+ .group:hover .blink {
96
+ animation: blink 1s step-end infinite;
97
+ }
98
+
99
+ .dither {
100
+ background: repeating-conic-gradient(currentColor 0% 25%, transparent 0% 50%)
101
+ 0 0 / 2px 2px;
102
+ }
103
+
104
+ @custom-variant dark (&:is(.dark *));
105
+
106
+ @theme inline {
107
+ --color-background: var(--background);
108
+ --color-background-base: var(--background-base);
109
+ --color-midground: var(--midground);
110
+ --color-midground-base: var(--midground-base);
111
+ --color-foreground: var(--foreground);
112
+ --color-foreground-base: var(--foreground-base);
113
+ --color-gesso: #eaeaea;
114
+
115
+ /* Semantic tokens — defaults for DS preview; consumers (e.g. shadcn-style
116
+ dashboards) can remap these via their own @theme inline. */
117
+ --color-destructive: var(--destructive, #fb2c36);
118
+ --color-destructive-foreground: var(--destructive-foreground, #ffffff);
119
+ --color-success: var(--success, #4ade80);
120
+ --color-warning: var(--warning, #ffbd38);
121
+
122
+ /* Text hierarchy — semantic tokens with WCAG AA-targeted defaults.
123
+ Consumers can override `--text-*` on `:root` (or any scope) without
124
+ touching DS internals. No value here goes below 0.65 effective alpha
125
+ for primary/secondary so stacked `/N` opacity is unnecessary. */
126
+ --color-text-primary: var(--text-primary, var(--midground));
127
+ --color-text-secondary: var(
128
+ --text-secondary,
129
+ color-mix(in srgb, var(--midground-base) 80%, transparent)
130
+ );
131
+ --color-text-tertiary: var(
132
+ --text-tertiary,
133
+ color-mix(in srgb, var(--midground-base) 65%, transparent)
134
+ );
135
+ --color-text-disabled: var(
136
+ --text-disabled,
137
+ color-mix(in srgb, var(--midground-base) 45%, transparent)
138
+ );
139
+ --color-text-on-accent: var(--text-on-accent, var(--background));
140
+ --color-text-display: var(--text-display, var(--midground));
141
+
142
+ --color-current: currentColor;
143
+ --color-transparent: transparent;
144
+
145
+ --gap-inherit: inherit;
146
+ --height-between-header-footer: max(
147
+ 400px,
148
+ calc(
149
+ 100dvh - 5rem -
150
+ (var(--header-height, 3.5rem) + var(--footer-height, 4.35rem))
151
+ )
152
+ );
153
+ }
154
+
155
+ :root {
156
+ --background: color-mix(in srgb, #170d02 100%, transparent);
157
+ --background-base: #170d02;
158
+ --background-alpha: 1;
159
+ --midground: color-mix(in srgb, #ffac02 100%, transparent);
160
+ --midground-base: #ffac02;
161
+ --midground-alpha: 1;
162
+ --foreground: color-mix(in srgb, #fff 100%, transparent);
163
+ --foreground-base: #fff;
164
+ --foreground-alpha: 1;
165
+ --font-sans: 'Collapse', sans-serif;
166
+ --font-mono: 'Courier Prime', monospace;
167
+ --font-rules-compressed: 'Rules Compressed', sans-serif;
168
+ --font-rules-expanded: 'Rules Expanded', sans-serif;
169
+ --font-mondwest: 'Mondwest', sans-serif;
170
+ --vsq: calc(0.5vw + 0.5vh);
171
+ }
172
+
173
+ @property --fit-captured-length {
174
+ syntax: '<length>';
175
+ initial-value: 0px;
176
+ inherits: true;
177
+ }
178
+
179
+ @utility font-compressed {
180
+ font-family: var(--font-rules-compressed);
181
+ }
182
+
183
+ @utility font-expanded {
184
+ font-family: var(--font-rules-expanded);
185
+ }
186
+
187
+ @utility font-mondwest {
188
+ font-family: var(--font-mondwest);
189
+ }
190
+
191
+ @utility font-courier {
192
+ font-family: 'Courier New', var(--font-mono), monospace;
193
+ }
194
+
195
+ /* Brand display style — opt-in uppercase + tracking. Purely typographic;
196
+ composes with any font utility (font-mondwest, font-compressed,
197
+ font-mono, font-courier) and any color utility. Use on chrome
198
+ (buttons, badges, nav section headings, page titles) where the brand
199
+ look is intentional. Body content should NOT use this utility.
200
+ Consumers wanting the canonical look apply `text-display font-mondwest`
201
+ together. */
202
+ @utility text-display {
203
+ text-transform: uppercase;
204
+ letter-spacing: 0.05em;
205
+ }
206
+
207
+ @utility font-serif {
208
+ font-family: 'Times New Roman', Times, serif;
209
+ }
210
+
211
+ @utility text-box-trim-none {
212
+ text-box-trim: none;
213
+ }
214
+
215
+ @utility text-box-trim-both {
216
+ text-box-trim: trim-both;
217
+ }
218
+
219
+ @utility text-box-trim-start {
220
+ text-box-trim: trim-start;
221
+ }
222
+
223
+ @utility text-box-trim-end {
224
+ text-box-trim: trim-end;
225
+ }
226
+
227
+ @utility grid-cols-auto-fit {
228
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
229
+ }
230
+
231
+ @utility h-between-header-footer {
232
+ min-height: var(--height-between-header-footer);
233
+ }
234
+
235
+ @utility w-fill {
236
+ width: -webkit-fill-available;
237
+ }
238
+
239
+ @utility h-fill {
240
+ height: -webkit-fill-available;
241
+ }
242
+
243
+ @utility antialiased {
244
+ -webkit-font-smoothing: antialiased;
245
+ -moz-osx-font-smoothing: grayscale;
246
+ text-rendering: optimizeLegibility;
247
+ }
248
+
249
+ @utility underline-from-font {
250
+ text-decoration-skip-ink: auto;
251
+ text-underline-position: from-font;
252
+ }
253
+
254
+ @keyframes toast-in {
255
+ from {
256
+ opacity: 0;
257
+ transform: translateX(1rem);
258
+ }
259
+ }
260
+
261
+ @keyframes toast-out {
262
+ to {
263
+ opacity: 0;
264
+ transform: translateX(1rem);
265
+ }
266
+ }
267
+
268
+ @keyframes gradient-stroke {
269
+ 0% {
270
+ background-position: 15% 15%;
271
+ }
272
+
273
+ 100% {
274
+ background-position: 75% 75%;
275
+ }
276
+ }
277
+
278
+ .arc-border {
279
+ --_t: clamp(0%, (0.5 - var(--foreground-alpha, 1)) * 99900%, 100%);
280
+ --arc-c0: color-mix(in srgb, var(--foreground) var(--_t), transparent);
281
+ --arc-c1: var(--midground);
282
+ --arc-c2: var(--background);
283
+ --arc-angle: 160deg;
284
+ --arc-width: 1.25px;
285
+ --arc-inset: -2px;
286
+ --arc-duration: 2.23s;
287
+ --arc-gradient: linear-gradient(
288
+ var(--arc-angle),
289
+ transparent 0%,
290
+ var(--arc-c0) 15%,
291
+ var(--arc-c1) 20%,
292
+ var(--arc-c2) 25%,
293
+ transparent 35%,
294
+ transparent 40%,
295
+ var(--arc-c0) 55%,
296
+ var(--arc-c1) 60%,
297
+ var(--arc-c2) 65%,
298
+ transparent 75%,
299
+ transparent 80%,
300
+ var(--arc-c0) 95%,
301
+ var(--arc-c1) 100%
302
+ );
303
+
304
+ @apply pointer-events-none absolute z-[-1] overflow-hidden rounded-[inherit];
305
+
306
+ inset: var(--arc-inset);
307
+ padding: var(--arc-width);
308
+ mask:
309
+ linear-gradient(#000 0 0) content-box,
310
+ linear-gradient(#000 0 0);
311
+ -webkit-mask-composite: xor;
312
+ mask-composite: exclude;
313
+
314
+ &::before {
315
+ content: '';
316
+ @apply absolute inset-0 rounded-[inherit];
317
+ background: var(--arc-gradient);
318
+ background-size: 300% 300%;
319
+ animation: gradient-stroke var(--arc-duration) linear infinite;
320
+ }
321
+ }
322
+
323
+ @layer base {
324
+ * {
325
+ @apply antialiased;
326
+
327
+ scrollbar-width: thin;
328
+ scrollbar-color: transparent transparent;
329
+
330
+ &:hover {
331
+ scrollbar-color: color-mix(in srgb, var(--midground) 20%, transparent)
332
+ transparent;
333
+ }
334
+ }
335
+
336
+ ::-webkit-scrollbar {
337
+ width: 0.25rem;
338
+ height: 0.25rem;
339
+ }
340
+
341
+ ::-webkit-scrollbar-track,
342
+ ::-webkit-scrollbar-button {
343
+ display: none;
344
+ }
345
+
346
+ ::-webkit-scrollbar-thumb {
347
+ background: transparent;
348
+ border-radius: 1rem;
349
+ min-height: 1rem;
350
+ }
351
+
352
+ *:hover::-webkit-scrollbar-thumb {
353
+ background: color-mix(in srgb, var(--midground) 20%, transparent);
354
+ }
355
+
356
+ html,
357
+ body {
358
+ scrollbar-color: color-mix(in srgb, var(--midground) 65%, transparent)
359
+ transparent;
360
+ }
361
+
362
+ html:hover,
363
+ body:hover {
364
+ scrollbar-color: color-mix(in srgb, var(--midground) 80%, transparent)
365
+ transparent;
366
+ }
367
+
368
+ html::-webkit-scrollbar-thumb,
369
+ body::-webkit-scrollbar-thumb {
370
+ background: color-mix(in srgb, var(--midground) 65%, transparent);
371
+ }
372
+
373
+ html:hover::-webkit-scrollbar-thumb,
374
+ body:hover::-webkit-scrollbar-thumb {
375
+ background: color-mix(in srgb, var(--midground) 80%, transparent);
376
+ }
377
+
378
+ html {
379
+ font-size: clamp(14px, calc(14px + 2 * ((100vw - 1400px) / 400)), 18px);
380
+ }
381
+
382
+ body {
383
+ @apply bg-background text-foreground;
384
+ }
385
+
386
+ .underline {
387
+ @apply underline-from-font underline decoration-current/25 decoration-solid decoration-auto underline-offset-1 transition-[text-decoration-color] hover:decoration-current;
388
+ }
389
+
390
+ *::selection,
391
+ code {
392
+ background: var(--selection-bg, var(--midground));
393
+ @apply text-background;
394
+ }
395
+ }