@esportsplus/ui 0.57.0 → 0.58.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 (490) hide show
  1. package/README.md +123 -39
  2. package/build/components/accordion/group.d.ts +14 -0
  3. package/build/components/accordion/group.js +21 -0
  4. package/build/components/accordion/index.d.ts +9 -0
  5. package/build/components/accordion/index.js +20 -3
  6. package/build/components/accordion/scss/index.scss +1 -1
  7. package/build/components/announcement/scss/index.scss +1 -1
  8. package/build/components/breadcrumb/scss/index.scss +1 -1
  9. package/build/components/button/scss/index.scss +1 -1
  10. package/build/components/button/sidebar.d.ts +3 -0
  11. package/build/components/button/sidebar.js +40 -10
  12. package/build/components/capslock/index.js +1 -1
  13. package/build/components/capslock/scss/index.scss +1 -1
  14. package/build/components/card/scss/index.scss +1 -1
  15. package/build/components/cc/scss/index.scss +1 -1
  16. package/build/components/chat-minimap/scss/index.scss +1 -1
  17. package/build/components/checkbox/scss/index.scss +1 -1
  18. package/build/components/color-picker/index.d.ts +1 -0
  19. package/build/components/color-picker/index.js +166 -136
  20. package/build/components/color-picker/scss/index.scss +1 -1
  21. package/build/components/command/index.d.ts +0 -1
  22. package/build/components/command/index.js +3 -2
  23. package/build/components/command/scss/index.scss +1 -1
  24. package/build/components/copy/scss/index.scss +1 -1
  25. package/build/components/counter/scss/index.scss +1 -1
  26. package/build/components/datalist/index.js +3 -3
  27. package/build/components/datalist/scss/index.scss +1 -1
  28. package/build/components/dock/scss/index.scss +1 -1
  29. package/build/components/editor/code/index.d.ts +0 -1
  30. package/build/components/editor/code/index.js +0 -1
  31. package/build/components/editor/code/minimap.d.ts +2 -1
  32. package/build/components/editor/code/minimap.js +5 -2
  33. package/build/components/editor/code/view.d.ts +3 -1
  34. package/build/components/editor/code/view.js +37 -26
  35. package/build/components/editor/diffs/index.d.ts +0 -1
  36. package/build/components/editor/diffs/index.js +0 -1
  37. package/build/components/editor/diffs/merge.js +7 -3
  38. package/build/components/editor/diffs/view.js +3 -1
  39. package/build/components/editor/index.d.ts +4 -1
  40. package/build/components/editor/index.js +2 -1
  41. package/build/components/editor/markdown/editing.js +22 -3
  42. package/build/components/editor/markdown/erase.d.ts +9 -0
  43. package/build/components/editor/markdown/erase.js +78 -0
  44. package/build/components/editor/markdown/index.d.ts +0 -1
  45. package/build/components/editor/markdown/index.js +0 -1
  46. package/build/components/editor/markdown/layout.d.ts +2 -9
  47. package/build/components/editor/markdown/layout.js +2 -7
  48. package/build/components/editor/markdown/render.d.ts +0 -1
  49. package/build/components/editor/markdown/render.js +287 -235
  50. package/build/components/editor/markdown/view.js +566 -667
  51. package/build/components/editor/viewer/index.d.ts +27 -0
  52. package/build/components/editor/viewer/index.js +250 -0
  53. package/build/components/editor/viewer/model.d.ts +15 -0
  54. package/build/components/editor/viewer/model.js +73 -0
  55. package/build/components/editor/workspace/index.d.ts +6 -2
  56. package/build/components/editor/workspace/index.js +243 -137
  57. package/build/components/editor/workspace/keybindings.d.ts +37 -0
  58. package/build/components/editor/workspace/keybindings.js +288 -0
  59. package/build/components/editor/workspace/model.d.ts +55 -2
  60. package/build/components/editor/workspace/model.js +141 -3
  61. package/build/components/editor/workspace/navigate.d.ts +19 -0
  62. package/build/components/editor/workspace/navigate.js +118 -0
  63. package/build/components/editor/workspace/session.d.ts +29 -0
  64. package/build/components/editor/workspace/session.js +373 -0
  65. package/build/components/editor/workspace/shortcuts.d.ts +19 -0
  66. package/build/components/editor/workspace/shortcuts.js +185 -0
  67. package/build/components/editor/workspace/status.d.ts +34 -0
  68. package/build/components/editor/workspace/status.js +193 -0
  69. package/build/components/editor/workspace/statusbar.d.ts +15 -0
  70. package/build/components/editor/workspace/statusbar.js +190 -0
  71. package/build/components/editor/workspace/strip.d.ts +27 -0
  72. package/build/components/editor/workspace/strip.js +239 -0
  73. package/build/components/editor/workspace/tabs.d.ts +15 -0
  74. package/build/components/editor/workspace/tabs.js +63 -0
  75. package/build/components/error/index.js +1 -1
  76. package/build/components/error/scss/index.scss +1 -1
  77. package/build/components/filter/index.js +5 -3
  78. package/build/components/filter/scss/index.scss +1 -1
  79. package/build/components/frame/scss/index.scss +1 -1
  80. package/build/components/heatmap/index.js +3 -3
  81. package/build/components/heatmap/scss/index.scss +1 -1
  82. package/build/components/highlight/scss/index.scss +1 -1
  83. package/build/components/icon/scss/index.scss +1 -1
  84. package/build/components/image/scss/index.scss +1 -1
  85. package/build/components/index.d.ts +2 -0
  86. package/build/components/index.js +2 -0
  87. package/build/components/inline-edit/scss/index.scss +1 -1
  88. package/build/components/input/scss/index.scss +1 -1
  89. package/build/components/link/scss/index.scss +1 -1
  90. package/build/components/loading/scss/index.scss +1 -1
  91. package/build/components/marquee/scss/index.scss +1 -1
  92. package/build/components/metric/scss/index.scss +1 -1
  93. package/build/components/nav/index.d.ts +1 -1
  94. package/build/components/nav/scss/index.scss +1 -1
  95. package/build/components/nav/tree.d.ts +3 -1
  96. package/build/components/nav/tree.js +30 -60
  97. package/build/components/notification/scss/index.scss +1 -1
  98. package/build/components/overlay/scss/index.scss +1 -1
  99. package/build/components/page/scss/index.scss +1 -1
  100. package/build/components/pagination/arrows.d.ts +15 -0
  101. package/build/components/pagination/arrows.js +65 -0
  102. package/build/components/pagination/cards.d.ts +23 -0
  103. package/build/components/pagination/cards.js +66 -0
  104. package/build/components/pagination/index.d.ts +5 -0
  105. package/build/components/pagination/index.js +3 -1
  106. package/build/components/pagination/scss/index.scss +1 -1
  107. package/build/components/progress/scss/index.scss +1 -1
  108. package/build/components/pull-to-refresh/scss/index.scss +1 -1
  109. package/build/components/range/index.js +1 -1
  110. package/build/components/range/scss/index.scss +1 -1
  111. package/build/components/relative-time/scss/index.scss +1 -1
  112. package/build/components/root/scss/index.scss +1 -1
  113. package/build/components/section/scss/index.scss +2 -0
  114. package/build/components/select/index.d.ts +1 -0
  115. package/build/components/select/index.js +16 -11
  116. package/build/components/select/scss/index.scss +1 -1
  117. package/build/components/shortcut-recorder/scss/index.scss +1 -1
  118. package/build/components/sortable/scss/index.scss +1 -1
  119. package/build/components/sticky-header/index.js +3 -3
  120. package/build/components/sticky-header/scss/index.scss +1 -1
  121. package/build/components/story/scss/index.scss +1 -1
  122. package/build/components/surface-field/scss/index.scss +1 -1
  123. package/build/components/tasklist/scss/index.scss +1 -1
  124. package/build/components/text/scss/index.scss +1 -1
  125. package/build/components/textarea/scss/index.scss +1 -1
  126. package/build/{css-utilities → components}/theme/index.d.ts +1 -1
  127. package/build/{css-utilities → components}/theme/index.js +15 -5
  128. package/build/components/theme/scss/index.scss +2 -0
  129. package/build/components/theme-picker/index.d.ts +52 -0
  130. package/build/components/theme-picker/index.js +167 -0
  131. package/build/components/theme-picker/scss/index.scss +2 -0
  132. package/build/components/toast/index.js +3 -5
  133. package/build/components/toast/scss/index.scss +1 -1
  134. package/build/components/tooltip/menu.js +3 -1
  135. package/build/components/tooltip/scss/index.scss +1 -1
  136. package/build/components/typewriter/scss/index.scss +1 -1
  137. package/build/components/uptime/scss/index.scss +1 -1
  138. package/build/components/usage-meter/scss/index.scss +1 -1
  139. package/build/{css-utilities → modifiers}/glass/index.d.ts +2 -2
  140. package/build/modifiers/glass/index.js +28 -0
  141. package/build/modifiers/glass/scss/index.scss +2 -0
  142. package/build/{css-utilities → modifiers}/index.d.ts +0 -1
  143. package/build/{css-utilities → modifiers}/index.js +0 -1
  144. package/build/modifiers/scrollbar/index.d.ts +72 -0
  145. package/build/{css-utilities → modifiers}/scrollbar/index.js +52 -19
  146. package/build/modifiers/scrollbar/scss/index.scss +2 -0
  147. package/build/normalize/scss/index.scss +1 -2
  148. package/layer.scss +1 -1
  149. package/package.json +11 -18
  150. package/scripts/code-editor-markdown.test.mjs +45 -14
  151. package/scripts/code-viewer.test.mjs +69 -0
  152. package/scripts/workspace-keybindings.test.mjs +273 -0
  153. package/scripts/workspace-session.test.mjs +349 -0
  154. package/scripts/workspace-status.test.mjs +229 -0
  155. package/scripts/workspace-tabs.test.mjs +142 -0
  156. package/src/components/accordion/group.ts +39 -0
  157. package/src/components/accordion/index.ts +32 -6
  158. package/src/components/accordion/scss/index.scss +12 -21
  159. package/src/components/accordion/scss/variables.scss +18 -3
  160. package/src/components/announcement/scss/index.scss +4 -4
  161. package/src/components/announcement/scss/variables.scss +6 -6
  162. package/src/components/banner/scss/index.scss +1 -1
  163. package/src/components/breadcrumb/scss/index.scss +35 -50
  164. package/src/components/breadcrumb/scss/variables.scss +23 -31
  165. package/src/components/button/scss/_fan.scss +39 -43
  166. package/src/components/button/scss/_morph.scss +66 -78
  167. package/src/components/button/scss/_sidebar.scss +41 -30
  168. package/src/components/button/scss/_split.scss +9 -9
  169. package/src/components/button/scss/index.scss +23 -19
  170. package/src/components/button/scss/variables.scss +94 -90
  171. package/src/components/button/sidebar.ts +36 -24
  172. package/src/components/capslock/index.ts +2 -2
  173. package/src/components/capslock/scss/index.scss +11 -6
  174. package/src/components/capslock/scss/variables.scss +3 -5
  175. package/src/components/card/scss/_expand.scss +58 -64
  176. package/src/components/card/scss/index.scss +40 -21
  177. package/src/components/card/scss/variables.scss +40 -31
  178. package/src/components/cc/scss/index.scss +68 -68
  179. package/src/components/cc/scss/variables.scss +13 -14
  180. package/src/components/chat-minimap/scss/index.scss +24 -16
  181. package/src/components/chat-minimap/scss/variables.scss +37 -37
  182. package/src/components/checkbox/scss/index.scss +54 -52
  183. package/src/components/checkbox/scss/variables.scss +37 -39
  184. package/src/components/color-picker/index.ts +157 -120
  185. package/src/components/color-picker/scss/index.scss +159 -96
  186. package/src/components/color-picker/scss/variables.scss +33 -15
  187. package/src/components/command/index.ts +3 -2
  188. package/src/components/command/scss/index.scss +10 -14
  189. package/src/components/command/scss/variables.scss +12 -35
  190. package/src/components/copy/scss/index.scss +6 -6
  191. package/src/components/copy/scss/variables.scss +12 -15
  192. package/src/components/counter/scss/index.scss +14 -14
  193. package/src/components/counter/scss/variables.scss +1 -1
  194. package/src/components/datalist/index.ts +3 -3
  195. package/src/components/datalist/scss/index.scss +7 -6
  196. package/src/components/datalist/scss/variables.scss +7 -3
  197. package/src/components/dock/scss/index.scss +10 -15
  198. package/src/components/dock/scss/variables.scss +29 -25
  199. package/src/components/editor/code/index.ts +0 -1
  200. package/src/components/editor/code/minimap.ts +13 -5
  201. package/src/components/editor/code/scss/_editor.scss +83 -81
  202. package/src/components/editor/code/scss/_features.scss +106 -97
  203. package/src/components/editor/code/scss/_services.scss +27 -25
  204. package/src/components/editor/code/scss/index.scss +0 -1
  205. package/src/components/editor/code/scss/variables.scss +30 -26
  206. package/src/components/editor/code/view.ts +14 -5
  207. package/src/components/editor/diffs/index.ts +0 -1
  208. package/src/components/editor/diffs/merge.ts +2 -1
  209. package/src/components/editor/diffs/scss/_diffs.scss +67 -57
  210. package/src/components/editor/diffs/scss/_merge.scss +17 -14
  211. package/src/components/editor/diffs/scss/index.scss +0 -1
  212. package/src/components/editor/diffs/scss/variables.scss +25 -18
  213. package/src/components/editor/diffs/view.ts +2 -1
  214. package/src/components/editor/index.ts +7 -1
  215. package/src/components/editor/markdown/editing.ts +38 -3
  216. package/src/components/editor/markdown/erase.ts +124 -0
  217. package/src/components/editor/markdown/index.ts +0 -1
  218. package/src/components/editor/markdown/layout.ts +3 -12
  219. package/src/components/editor/markdown/render.ts +65 -37
  220. package/src/components/editor/markdown/scss/index.scss +92 -124
  221. package/src/components/editor/markdown/scss/variables.scss +39 -19
  222. package/src/components/editor/markdown/view.ts +737 -786
  223. package/src/components/editor/tree/scss/index.scss +121 -110
  224. package/src/components/editor/tree/scss/variables.scss +48 -54
  225. package/src/components/editor/viewer/index.ts +321 -0
  226. package/src/components/editor/viewer/model.ts +130 -0
  227. package/src/components/editor/viewer/scss/_viewer.scss +302 -0
  228. package/src/components/editor/viewer/scss/index.scss +2 -0
  229. package/src/components/editor/viewer/scss/variables.scss +69 -0
  230. package/src/components/editor/workspace/index.ts +159 -31
  231. package/src/components/editor/workspace/keybindings.ts +447 -0
  232. package/src/components/editor/workspace/model.ts +233 -3
  233. package/src/components/editor/workspace/navigate.ts +194 -0
  234. package/src/components/editor/workspace/scss/index.scss +72 -59
  235. package/src/components/editor/workspace/scss/keybindings.scss +190 -0
  236. package/src/components/editor/workspace/scss/status.scss +122 -0
  237. package/src/components/editor/workspace/scss/tabs.scss +56 -0
  238. package/src/components/editor/workspace/session.ts +551 -0
  239. package/src/components/editor/workspace/shortcuts.ts +255 -0
  240. package/src/components/editor/workspace/status.ts +259 -0
  241. package/src/components/editor/workspace/statusbar.ts +255 -0
  242. package/src/components/editor/workspace/strip.ts +273 -0
  243. package/src/components/editor/workspace/tabs.ts +106 -0
  244. package/src/components/error/index.ts +1 -1
  245. package/src/components/error/scss/index.scss +19 -19
  246. package/src/components/error/scss/variables.scss +2 -2
  247. package/src/components/filter/index.ts +7 -2
  248. package/src/components/filter/scss/index.scss +1 -1
  249. package/src/components/filter/scss/variables.scss +11 -10
  250. package/src/components/frame/scss/index.scss +12 -12
  251. package/src/components/frame/scss/variables.scss +8 -8
  252. package/src/components/heatmap/index.ts +3 -3
  253. package/src/components/heatmap/scss/index.scss +28 -26
  254. package/src/components/heatmap/scss/variables.scss +18 -17
  255. package/src/components/highlight/scss/index.scss +17 -13
  256. package/src/components/highlight/scss/variables.scss +8 -10
  257. package/src/components/icon/scss/index.scss +10 -0
  258. package/src/components/icon/scss/variables.scss +5 -0
  259. package/src/components/image/scss/index.scss +9 -9
  260. package/src/components/image/scss/variables.scss +7 -2
  261. package/src/components/index.ts +2 -0
  262. package/src/components/inline-edit/scss/index.scss +99 -104
  263. package/src/components/inline-edit/scss/variables.scss +40 -39
  264. package/src/components/input/scss/_field.scss +6 -20
  265. package/src/components/input/scss/_scrub.scss +10 -8
  266. package/src/components/input/scss/_tag.scss +35 -37
  267. package/src/components/input/scss/variables.scss +100 -99
  268. package/src/components/link/scss/index.scss +4 -1
  269. package/src/components/loading/scss/index.scss +1 -1
  270. package/src/components/loading/scss/variables.scss +1 -1
  271. package/src/components/marquee/scss/index.scss +9 -5
  272. package/src/components/marquee/scss/variables.scss +3 -1
  273. package/src/components/metric/scss/_flash.scss +3 -1
  274. package/src/components/metric/scss/index.scss +8 -6
  275. package/src/components/metric/scss/variables.scss +26 -20
  276. package/src/components/nav/index.ts +1 -1
  277. package/src/components/nav/scss/index.scss +12 -40
  278. package/src/components/nav/scss/variables.scss +30 -11
  279. package/src/components/nav/tree.ts +19 -62
  280. package/src/components/notification/scss/index.scss +7 -7
  281. package/src/components/notification/scss/variables.scss +7 -9
  282. package/src/components/overlay/scss/index.scss +181 -170
  283. package/src/components/overlay/scss/variables.scss +26 -57
  284. package/src/components/page/scss/index.scss +12 -11
  285. package/src/components/page/scss/variables.scss +5 -0
  286. package/src/components/pagination/arrows.ts +58 -0
  287. package/src/components/pagination/cards.ts +57 -0
  288. package/src/components/pagination/index.ts +4 -1
  289. package/src/components/pagination/scss/_arrows.scss +69 -0
  290. package/src/components/pagination/scss/_cards.scss +121 -0
  291. package/src/components/pagination/scss/_dots.scss +2 -5
  292. package/src/components/pagination/scss/index.scss +8 -6
  293. package/src/components/pagination/scss/variables.scss +87 -37
  294. package/src/components/progress/scss/_text.scss +21 -18
  295. package/src/components/progress/scss/index.scss +1 -1
  296. package/src/components/progress/scss/variables.scss +12 -12
  297. package/src/components/pull-to-refresh/scss/index.scss +2 -1
  298. package/src/components/pull-to-refresh/scss/variables.scss +11 -6
  299. package/src/components/range/index.ts +1 -1
  300. package/src/components/range/scss/_filter.scss +62 -51
  301. package/src/components/range/scss/_slider.scss +78 -75
  302. package/src/components/range/scss/_vertical.scss +6 -6
  303. package/src/components/range/scss/index.scss +3 -2
  304. package/src/components/range/scss/variables.scss +26 -23
  305. package/src/components/relative-time/scss/index.scss +27 -27
  306. package/src/components/relative-time/scss/variables.scss +10 -12
  307. package/src/components/root/scss/index.scss +71 -43
  308. package/src/components/root/scss/variables.scss +35 -31
  309. package/src/components/section/scss/index.scss +31 -0
  310. package/src/components/section/scss/variables.scss +21 -0
  311. package/src/components/select/index.ts +11 -6
  312. package/src/components/select/scss/index.scss +21 -32
  313. package/src/components/select/scss/variables.scss +25 -18
  314. package/src/components/shortcut-recorder/scss/index.scss +13 -12
  315. package/src/components/shortcut-recorder/scss/variables.scss +12 -13
  316. package/src/components/sortable/scss/index.scss +47 -44
  317. package/src/components/sortable/scss/variables.scss +4 -5
  318. package/src/components/sticky-header/index.ts +4 -4
  319. package/src/components/sticky-header/scss/index.scss +14 -13
  320. package/src/components/sticky-header/scss/variables.scss +9 -9
  321. package/src/components/story/scss/index.scss +26 -30
  322. package/src/components/story/scss/variables.scss +16 -9
  323. package/src/components/surface-field/scss/index.scss +45 -40
  324. package/src/components/surface-field/scss/variables.scss +5 -6
  325. package/src/components/tasklist/scss/index.scss +19 -19
  326. package/src/components/tasklist/scss/variables.scss +26 -29
  327. package/src/components/text/scss/index.scss +2 -1
  328. package/src/components/textarea/scss/variables.scss +1 -1
  329. package/src/{css-utilities → components}/theme/index.ts +17 -3
  330. package/src/components/theme/scss/index.scss +1 -0
  331. package/src/components/theme/scss/variables.scss +78 -0
  332. package/src/components/theme-picker/index.ts +231 -0
  333. package/src/components/theme-picker/scss/index.scss +264 -0
  334. package/src/components/toast/index.ts +28 -30
  335. package/src/components/toast/scss/index.scss +87 -87
  336. package/src/components/toast/scss/variables.scss +39 -39
  337. package/src/components/tooltip/menu.ts +4 -1
  338. package/src/components/tooltip/scss/_east.scss +10 -10
  339. package/src/components/tooltip/scss/_menu.scss +284 -269
  340. package/src/components/tooltip/scss/_north.scss +10 -10
  341. package/src/components/tooltip/scss/_shared.scss +7 -7
  342. package/src/components/tooltip/scss/_south.scss +10 -10
  343. package/src/components/tooltip/scss/_west.scss +10 -10
  344. package/src/components/tooltip/scss/index.scss +21 -20
  345. package/src/components/tooltip/scss/variables.scss +104 -96
  346. package/src/components/typewriter/scss/_retype.scss +12 -11
  347. package/src/components/typewriter/scss/_rotate.scss +2 -1
  348. package/src/components/typewriter/scss/variables.scss +41 -39
  349. package/src/components/uptime/scss/index.scss +15 -15
  350. package/src/components/uptime/scss/variables.scss +8 -8
  351. package/src/components/usage-meter/scss/index.scss +3 -1
  352. package/src/components/usage-meter/scss/variables.scss +5 -5
  353. package/src/css-utilities/absolute.scss +64 -0
  354. package/src/css-utilities/background.scss +43 -0
  355. package/src/css-utilities/border.scss +45 -0
  356. package/src/css-utilities/box-shadow.scss +29 -0
  357. package/src/css-utilities/color.scss +41 -0
  358. package/src/css-utilities/flex.scss +64 -0
  359. package/src/css-utilities/font/geist/{scss/index.scss → index.scss} +12 -4
  360. package/src/css-utilities/font/montserrat/Montserrat-Italic-Variable.woff2 +0 -0
  361. package/src/css-utilities/font/montserrat/Montserrat-Variable.woff2 +0 -0
  362. package/src/css-utilities/font/montserrat/OFL.txt +93 -0
  363. package/src/css-utilities/font/montserrat/index.scss +38 -0
  364. package/src/{shared/scss → css-utilities}/icon.scss +1 -1
  365. package/src/css-utilities/{inline/scss/index.scss → inline.scss} +1 -1
  366. package/src/css-utilities/{skeleton/scss/index.scss → skeleton.scss} +11 -11
  367. package/src/css-utilities/surface.scss +266 -0
  368. package/src/css-utilities/text.scss +191 -0
  369. package/src/modifiers/glass/index.ts +44 -0
  370. package/src/{css-utilities → modifiers}/glass/scss/index.scss +6 -6
  371. package/src/{css-utilities → modifiers}/glass/scss/variables.scss +1 -1
  372. package/src/{css-utilities → modifiers}/index.ts +0 -1
  373. package/src/{css-utilities → modifiers}/scrollbar/index.ts +92 -17
  374. package/src/{css-utilities → modifiers}/scrollbar/scss/index.scss +178 -177
  375. package/src/{css-utilities → modifiers}/scrollbar/scss/variables.scss +28 -21
  376. package/src/normalize/scss/index.scss +4 -2
  377. package/src/shared/scss/color-weights.scss +19 -0
  378. package/src/shared/scss/index.scss +1 -12
  379. package/src/tokens/scss/blur.scss +5 -0
  380. package/src/tokens/scss/color.scss +74 -50
  381. package/src/tokens/scss/index.scss +1 -2
  382. package/src/tokens/scss/size.scss +0 -2
  383. package/src/tokens/scss/state.scss +3 -2
  384. package/src/tokens/scss/transition.scss +19 -2
  385. package/storage/svg/monitor.svg +1 -0
  386. package/storage/svg/moon.svg +1 -0
  387. package/storage/svg/pin.svg +1 -0
  388. package/storage/svg/sun.svg +1 -0
  389. package/vite.config.ts +33 -8
  390. package/build/css-utilities/background/scss/index.scss +0 -2
  391. package/build/css-utilities/border/scss/index.scss +0 -2
  392. package/build/css-utilities/color/scss/index.scss +0 -2
  393. package/build/css-utilities/flex/scss/index.scss +0 -2
  394. package/build/css-utilities/font/geist/index.d.ts +0 -1
  395. package/build/css-utilities/font/geist/index.js +0 -1
  396. package/build/css-utilities/font/geist/scss/index.scss +0 -2
  397. package/build/css-utilities/font/montserrat/index.d.ts +0 -1
  398. package/build/css-utilities/font/montserrat/index.js +0 -1
  399. package/build/css-utilities/font/montserrat/scss/Montserrat-Bold.woff +0 -0
  400. package/build/css-utilities/font/montserrat/scss/Montserrat-Bold.woff2 +0 -0
  401. package/build/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff +0 -0
  402. package/build/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff2 +0 -0
  403. package/build/css-utilities/font/montserrat/scss/Montserrat-Italic.woff +0 -0
  404. package/build/css-utilities/font/montserrat/scss/Montserrat-Italic.woff2 +0 -0
  405. package/build/css-utilities/font/montserrat/scss/Montserrat-Medium.woff +0 -0
  406. package/build/css-utilities/font/montserrat/scss/Montserrat-Medium.woff2 +0 -0
  407. package/build/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff +0 -0
  408. package/build/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff2 +0 -0
  409. package/build/css-utilities/font/montserrat/scss/Montserrat-Regular.woff +0 -0
  410. package/build/css-utilities/font/montserrat/scss/Montserrat-Regular.woff2 +0 -0
  411. package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff +0 -0
  412. package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff2 +0 -0
  413. package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff +0 -0
  414. package/build/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff2 +0 -0
  415. package/build/css-utilities/font/montserrat/scss/index.scss +0 -2
  416. package/build/css-utilities/glass/index.js +0 -26
  417. package/build/css-utilities/glass/scss/index.scss +0 -2
  418. package/build/css-utilities/index.scss +0 -2
  419. package/build/css-utilities/inline/scss/index.scss +0 -2
  420. package/build/css-utilities/scrollbar/index.d.ts +0 -42
  421. package/build/css-utilities/scrollbar/scss/index.scss +0 -2
  422. package/build/css-utilities/skeleton/scss/index.scss +0 -2
  423. package/build/css-utilities/text/scss/index.scss +0 -2
  424. package/build/themes/dark/index.d.ts +0 -3
  425. package/build/themes/dark/index.js +0 -3
  426. package/build/themes/dark/input.d.ts +0 -3
  427. package/build/themes/dark/input.js +0 -12
  428. package/build/themes/dark/select.d.ts +0 -3
  429. package/build/themes/dark/select.js +0 -23
  430. package/build/themes/dark/textarea.d.ts +0 -2186
  431. package/build/themes/dark/textarea.js +0 -11
  432. package/src/css-utilities/background/scss/index.scss +0 -1
  433. package/src/css-utilities/background/scss/variables.scss +0 -18
  434. package/src/css-utilities/border/scss/index.scss +0 -1
  435. package/src/css-utilities/border/scss/variables.scss +0 -23
  436. package/src/css-utilities/color/scss/index.scss +0 -1
  437. package/src/css-utilities/color/scss/variables.scss +0 -17
  438. package/src/css-utilities/flex/scss/index.scss +0 -57
  439. package/src/css-utilities/flex/scss/variables.scss +0 -16
  440. package/src/css-utilities/font/geist/index.ts +0 -1
  441. package/src/css-utilities/font/montserrat/index.ts +0 -1
  442. package/src/css-utilities/font/montserrat/scss/Montserrat-Bold.woff +0 -0
  443. package/src/css-utilities/font/montserrat/scss/Montserrat-Bold.woff2 +0 -0
  444. package/src/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff +0 -0
  445. package/src/css-utilities/font/montserrat/scss/Montserrat-BoldItalic.woff2 +0 -0
  446. package/src/css-utilities/font/montserrat/scss/Montserrat-Italic.woff +0 -0
  447. package/src/css-utilities/font/montserrat/scss/Montserrat-Italic.woff2 +0 -0
  448. package/src/css-utilities/font/montserrat/scss/Montserrat-Medium.woff +0 -0
  449. package/src/css-utilities/font/montserrat/scss/Montserrat-Medium.woff2 +0 -0
  450. package/src/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff +0 -0
  451. package/src/css-utilities/font/montserrat/scss/Montserrat-MediumItalic.woff2 +0 -0
  452. package/src/css-utilities/font/montserrat/scss/Montserrat-Regular.woff +0 -0
  453. package/src/css-utilities/font/montserrat/scss/Montserrat-Regular.woff2 +0 -0
  454. package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff +0 -0
  455. package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBold.woff2 +0 -0
  456. package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff +0 -0
  457. package/src/css-utilities/font/montserrat/scss/Montserrat-SemiBoldItalic.woff2 +0 -0
  458. package/src/css-utilities/font/montserrat/scss/index.scss +0 -94
  459. package/src/css-utilities/glass/index.ts +0 -42
  460. package/src/css-utilities/index.scss +0 -13
  461. package/src/css-utilities/skeleton/scss/variables.scss +0 -3
  462. package/src/css-utilities/text/scss/index.scss +0 -152
  463. package/src/css-utilities/text/scss/variables.scss +0 -22
  464. package/src/shared/scss/absolute.scss +0 -28
  465. package/src/shared/scss/background.scss +0 -21
  466. package/src/shared/scss/border.scss +0 -21
  467. package/src/shared/scss/color.scss +0 -21
  468. package/src/shared/scss/position.scss +0 -55
  469. package/src/shared/scss/text.scss +0 -31
  470. package/src/themes/dark/index.ts +0 -3
  471. package/src/themes/dark/input.ts +0 -16
  472. package/src/themes/dark/select.ts +0 -28
  473. package/src/themes/dark/textarea.ts +0 -13
  474. package/src/tokens/scss/box-shadow.scss +0 -23
  475. package/src/tokens/scss/font-family.scss +0 -5
  476. package/storage/code.md +0 -180
  477. package/storage/editor-features.md +0 -227
  478. package/build/css-utilities/font/geist/{scss/Geist-Italic-Variable.woff2 → Geist-Italic-Variable.woff2} +0 -0
  479. package/build/css-utilities/font/geist/{scss/Geist-Variable.woff2 → Geist-Variable.woff2} +0 -0
  480. package/build/css-utilities/font/geist/{scss/GeistMono-Italic-Variable.woff2 → GeistMono-Italic-Variable.woff2} +0 -0
  481. package/build/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2} +0 -0
  482. package/src/{shared/scss → css-utilities}/anchor.scss +6 -6
  483. package/src/{shared/scss → css-utilities}/drag.scss +0 -0
  484. package/src/css-utilities/font/geist/{scss/Geist-Italic-Variable.woff2 → Geist-Italic-Variable.woff2} +0 -0
  485. package/src/css-utilities/font/geist/{scss/Geist-Variable.woff2 → Geist-Variable.woff2} +0 -0
  486. package/src/css-utilities/font/geist/{scss/GeistMono-Italic-Variable.woff2 → GeistMono-Italic-Variable.woff2} +0 -0
  487. package/src/css-utilities/font/geist/{scss/GeistMono-Variable.woff2 → GeistMono-Variable.woff2} +0 -0
  488. package/src/{shared/scss → css-utilities}/hidden.scss +11 -11
  489. /package/src/{shared/scss → css-utilities}/layer.scss +0 -0
  490. /package/src/{shared/scss → css-utilities}/reset.scss +0 -0
@@ -1,12 +1,17 @@
1
- @use '/shared';
1
+ @use 'css-utilities/background';
2
+ @use 'css-utilities/border';
3
+ @use 'css-utilities/box-shadow';
4
+ @use 'css-utilities/layer';
2
5
  @use 'expand';
3
6
  @use 'variables';
4
7
  @use '../../frame/scss/index';
5
8
 
6
9
  .card {
7
- @extend %background-state, %border-state;
10
+ @extend %background-state, %border-state, %box-shadow-state;
8
11
  background: var(--background);
12
+ border: var(--border-width) solid var(--border-color);
9
13
  border-radius: var(--border-radius);
14
+ box-shadow: var(--box-shadow);
10
15
  padding-block: max(0px, calc(var(--padding-vertical) - var(--border-width)));
11
16
  padding-inline: max(0px, calc(var(--padding-horizontal) - var(--border-width)));
12
17
  position: relative;
@@ -20,12 +25,6 @@
20
25
  width: var(--width);
21
26
 
22
27
 
23
- // Pseudo Element Box Shadow
24
- &::after {
25
- @extend %layer-box-shadow;
26
- }
27
-
28
-
29
28
  // A shell that morphs between stacked layers, one shown at a time. The consumer sizes it to the active
30
29
  // layer through '--morph-width' and '--morph-height'; the layers are 'frame--swap's, so marking one
31
30
  // '--active', with the active index in '--i' on the viewport and each layer's own in '--n', slides the
@@ -56,21 +55,41 @@
56
55
  }
57
56
  }
58
57
 
58
+
59
+ // A soft halo in place of the card's elevation. Keyboard focus shows it as hover does. Restated because the
60
+ // placeholder's own declaration is emitted ahead of '.card' and loses to it.
61
+ &--ring {
62
+ @extend %box-shadow-outline;
63
+ box-shadow: 0 0 0 var(--box-shadow-width) var(--box-shadow);
64
+
65
+ &:focus-visible {
66
+ --box-shadow: var(--box-shadow-hover);
67
+ }
68
+ }
69
+
70
+
59
71
  // Pinned to its natural size, so text never reflows while the shell morphs around it.
60
- &-morph-layer {
61
- left: 0;
62
- padding-block: var(--padding-vertical);
63
- padding-inline: var(--padding-horizontal);
64
- position: absolute;
65
- top: 0;
66
- width: max-content;
72
+ &-morph {
73
+ &-layer {
74
+ left: 0;
75
+ padding-block: var(--padding-vertical);
76
+ padding-inline: var(--padding-horizontal);
77
+ position: absolute;
78
+ top: 0;
79
+ width: max-content;
80
+ }
81
+
82
+ &-viewport {
83
+ border-radius: inherit;
84
+ height: 100%;
85
+ overflow: clip;
86
+ position: relative;
87
+ width: 100%;
88
+ }
67
89
  }
68
90
 
69
- &-morph-viewport {
70
- border-radius: inherit;
71
- height: 100%;
72
- overflow: clip;
73
- position: relative;
74
- width: 100%;
91
+ // Pseudo Element Box Shadow
92
+ &::after {
93
+ @extend %layer-box-shadow;
75
94
  }
76
95
  }
@@ -1,47 +1,51 @@
1
+ @use 'css-utilities/surface';
2
+
3
+
1
4
  // Shared with the view transition pseudos, which hang off the root and can't read the card's own variables.
2
5
  $expand-border-radius: 18px;
3
- $expand-box-shadow:
4
- 0 0 0 var(--border-width-400) oklch(from var(--color-black-500) l c h / 0.06),
5
- 0 1px 2px oklch(from var(--color-black-500) l c h / 0.06),
6
- 0 6px 16px -6px oklch(from var(--color-black-500) l c h / 0.12);
6
+ // The pseudos sit above the themed element too, so they see no theme colors: theirs is a constant black shadow.
7
+ $expand-transition-box-shadow:
8
+ 0 0 0 var(--border-width-400) oklch(from var(--color-black-300) l c h / 0.06),
9
+ 0 2px 3px -2px oklch(from var(--color-black-300) l c h / 0.07),
10
+ 0 4px 12px -4px oklch(from var(--color-black-300) l c h / 0.06);
7
11
 
12
+
13
+ // A surface: a level above whatever it sits in, painted and lifted to match.
8
14
  .card {
15
+ @extend %surface-raised-level;
16
+ --background-default: var(--surface-background-default);
9
17
  --border-color-default: var(--background);
10
- // The card draws no border of its own; a consumer adding one sets this, so the box keeps its size.
18
+ // No border until a consumer sets a width; the padding insets by it, so the box keeps its size.
11
19
  --border-width: 0px;
12
- --box-shadow: var(--box-shadow-default);
13
- --box-shadow-default: none;
14
- --padding-horizontal: 0px;
15
- --padding-vertical: 0px;
20
+ --box-shadow-default: var(--surface-shadow-default);
16
21
  --width: auto;
17
22
 
18
23
 
24
+ &--expand {
25
+ --padding-horizontal: 18px;
26
+ --padding-vertical: var(--size-400);
27
+ --width: 100%;
28
+ }
29
+
19
30
  &--expand,
20
31
  &-expand-dialog {
21
- --background-default: var(--surface-background);
32
+ --background-default: var(--expand-background);
22
33
  --border-radius: #{$expand-border-radius};
23
34
  --border-width: 0px;
24
- --box-shadow-default: #{$expand-box-shadow};
25
- }
26
-
27
- &--expand {
28
- --padding-horizontal: 18px;
29
- --padding-vertical: 16px;
30
- --pressed-scale: 0.96;
31
- --width: 100%;
35
+ --box-shadow-default: var(--surface-shadow-default);
32
36
  }
33
37
 
34
38
  &--morph {
35
- --morph-blur: 4px;
36
- --morph-duration: 0.3s;
39
+ --morph-blur: var(--blur-400);
40
+ --morph-duration: var(--duration-moderate);
37
41
  // The outgoing layer clears out faster than the incoming one arrives, so the two never read as
38
42
  // overlapping text.
39
- --morph-enter-duration: 0.25s;
43
+ --morph-enter-duration: var(--duration-moderate);
40
44
  --morph-exit-duration: 0.18s;
41
45
  --morph-fade-duration: var(--transition-duration);
42
46
  --morph-fade-timing-function: var(--transition-timing-function);
43
47
  --morph-shift: 48px;
44
- --morph-swap-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
48
+ --morph-swap-timing-function: var(--easing-out);
45
49
  // Critically damped spring: an overshooting shell would uncover empty space.
46
50
  --morph-timing-function: linear(0, 0.0432 4.2%, 0.1402 8.3%, 0.2575 12.5%, 0.3764 16.7%, 0.4867 20.8%, 0.584 25%, 0.667 29.2%, 0.7361 33.3%, 0.7925 37.5%, 0.838 41.7%, 0.8743 45.8%, 0.9029 50%, 0.9254 54.2%, 0.9428 58.3%, 0.9564 62.5%, 0.9668 66.7%, 0.9748 70.8%, 0.9809 75%, 0.9856 79.2%, 0.9892 83.3%, 0.9918 87.5%, 0.9939 91.7%, 0.9954 95.8%, 1);
47
51
 
@@ -53,21 +57,28 @@ $expand-box-shadow:
53
57
  }
54
58
  }
55
59
 
60
+ // Doubled class so the ring's colors outrank consumers' elevation shadows (e.g. 'pagination-card--tactile').
61
+ &--ring {
62
+ --box-shadow-active: var(--surface-border-active);
63
+ --box-shadow-default: transparent;
64
+ --box-shadow-hover: var(--surface-border-hover);
65
+ --box-shadow-pressed: var(--surface-shadow-pressed);
66
+ }
67
+
56
68
  &-expand {
57
- --dialog-backdrop: oklch(from var(--color-text-500) l c h / 0.15);
69
+ --dialog-backdrop: oklch(from var(--surface-shadow-color) 0 0 0 / calc(alpha + 0.06));
58
70
  --dialog-width: 440px;
59
- --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
60
- --focus-ring-color: oklch(from var(--color-text-500) l c h / 0.38);
71
+ --ease-out: var(--easing-out);
72
+ --expand-background: var(--surface-background-default);
73
+ --focus-ring-color: var(--surface-border-pressed);
61
74
  --list-gap: 12px;
62
75
  --max-width: 400px;
63
76
  --muted-color: var(--color-text-300);
64
- --slot-background: oklch(from var(--color-text-500) l c h / 0.03);
65
- --slot-border-color: var(--color-border-300);
66
- --surface-background: var(--color-grey-400);
77
+ --slot-border-color: var(--surface-border-default);
67
78
  --text-color: var(--color-text-500);
68
79
 
69
80
  &-close {
70
- --background-hover: var(--color-white-300);
81
+ --background-hover: var(--surface-background-hover);
71
82
  --border-radius: 999px;
72
83
  --border-width: 0px;
73
84
  --color-default: var(--muted-color);
@@ -82,8 +93,6 @@ $expand-box-shadow:
82
93
  --margin-horizontal: 1rem;
83
94
  --max-width: var(--dialog-width);
84
95
  --padding: 24px;
85
- --transition-duration: 0.2s;
86
- --transition-timing-function: var(--ease-out);
87
96
  --width: min(var(--max-width), calc(100% - (var(--margin-horizontal) * 2)));
88
97
  }
89
98
  }
@@ -1,19 +1,24 @@
1
- @use '/shared';
2
1
  @use '/tokens';
2
+ @use 'css-utilities/absolute';
3
+ @use 'css-utilities/font/geist';
4
+ @use 'css-utilities/hidden';
5
+ @use 'css-utilities/icon';
6
+ @use 'css-utilities/surface';
7
+ @use 'css-utilities/text';
3
8
  @use 'variables';
4
9
 
5
10
  .cc {
6
11
  color: var(--color);
7
12
  display: flex;
8
13
  flex-direction: column;
9
- gap: 20px;
14
+ gap: var(--size-500);
10
15
  width: var(--width);
11
16
 
12
17
 
13
18
  &-actions {
14
19
  display: flex;
15
20
  flex-direction: column;
16
- gap: 10px;
21
+ gap: var(--size-200);
17
22
  }
18
23
 
19
24
  // A sprite <svg> has no viewBox of its own, so the cell must be definite for the marks' 100% to resolve.
@@ -50,8 +55,7 @@
50
55
  }
51
56
 
52
57
  &-caption {
53
- font-size: 12px;
54
- letter-spacing: 0.025em;
58
+ font-size: var(--font-size-300);
55
59
  opacity: 0.6;
56
60
  text-transform: uppercase;
57
61
  }
@@ -104,33 +108,33 @@
104
108
  }
105
109
 
106
110
  &--roll-1 {
107
- animation: cc-digit-1 var(--digit-duration) ease-out;
111
+ animation: cc-digit-1 var(--digit-duration) var(--easing-out);
108
112
  }
109
113
 
110
114
  &--roll-2 {
111
- animation: cc-digit-2 var(--digit-duration) ease-out;
115
+ animation: cc-digit-2 var(--digit-duration) var(--easing-out);
112
116
  }
113
117
  }
114
118
 
115
119
  &-disclaimer {
116
- font-size: 12px;
120
+ font-size: var(--font-size-300);
117
121
  margin: auto 0 0;
118
122
  opacity: 0.6;
119
- padding: 0 24px 20px;
123
+ padding: 0 24px var(--size-500);
120
124
  }
121
125
 
122
126
  // Shares the label's row, so showing it never shifts the fields below.
123
127
  &-error {
124
128
  @extend %text-truncate;
125
129
  color: var(--error-color);
126
- font-size: 13px;
130
+ font-size: var(--font-size-300);
127
131
  transition:
128
- filter 200ms cubic-bezier(0.23, 1, 0.32, 1),
129
- opacity 200ms cubic-bezier(0.23, 1, 0.32, 1),
130
- translate 200ms cubic-bezier(0.23, 1, 0.32, 1);
132
+ filter var(--duration-fast) var(--easing-spring),
133
+ opacity var(--duration-fast) var(--easing-spring),
134
+ translate var(--duration-fast) var(--easing-spring);
131
135
 
132
136
  @starting-style {
133
- filter: blur(4px);
137
+ filter: blur(var(--blur-400));
134
138
  opacity: 0;
135
139
  translate: 0 2px;
136
140
  }
@@ -140,26 +144,27 @@
140
144
  display: flex;
141
145
  flex-direction: column;
142
146
  flex-shrink: 0;
143
- gap: 4px;
147
+ gap: calc(var(--size-100) / 2);
144
148
 
145
149
  &-value {
146
- font-family: var(--font-family-mono);
147
- font-size: 15px;
150
+ @extend %font-geist-mono;
151
+ font-family: var(--font-family);
152
+ font-size: var(--font-size-400);
148
153
  font-weight: var(--font-weight-500);
149
154
  }
150
155
  }
151
156
 
152
157
  &-face {
153
- @extend %absolute-full;
158
+ @extend %absolute-full, %surface-raised-level;
154
159
  backface-visibility: hidden;
155
160
  background: var(--card-background);
156
161
  border-radius: var(--card-border-radius);
157
- box-shadow: var(--card-shadow);
162
+ box-shadow: var(--surface-shadow-default);
158
163
  color: var(--card-color);
159
164
  display: flex;
160
165
  flex-direction: column;
161
166
  overflow: hidden;
162
- transition: opacity 200ms ease-out;
167
+ transition: opacity var(--duration-moderate) var(--easing-out);
163
168
 
164
169
  &--back {
165
170
  transform: rotateY(180deg);
@@ -189,7 +194,8 @@
189
194
  &--cvc,
190
195
  &--expiry,
191
196
  &--number {
192
- font-family: var(--font-family-mono);
197
+ @extend %font-geist-mono;
198
+ font-family: var(--font-family);
193
199
  }
194
200
 
195
201
  &--number.input {
@@ -203,35 +209,35 @@
203
209
  min-height: 0;
204
210
  outline: none;
205
211
  padding-block: 0;
206
- transition: border-color 150ms ease-out;
212
+ transition: border-color var(--duration-fast) var(--easing-spring);
213
+
214
+ &::placeholder {
215
+ color: oklch(from var(--muted-color) l c h / 0.7);
216
+ }
207
217
 
208
218
  &:focus-visible {
209
219
  outline: var(--border-width-500) solid var(--outline-color);
210
220
  outline-offset: -1px;
211
221
  }
212
-
213
- &::placeholder {
214
- color: oklch(from var(--muted-color) l c h / 0.7);
215
- }
216
222
  }
217
223
  }
218
224
 
219
225
  &-fields {
220
226
  display: flex;
221
227
  flex-direction: column;
222
- gap: 16px;
228
+ gap: var(--size-400);
223
229
  }
224
230
 
225
231
  &-holder {
226
232
  display: flex;
227
233
  flex: 1;
228
234
  flex-direction: column;
229
- gap: 4px;
235
+ gap: calc(var(--size-100) / 2);
230
236
  min-width: 0;
231
237
 
232
238
  &-value {
233
239
  @extend %text-truncate;
234
- font-size: 15px;
240
+ font-size: var(--font-size-400);
235
241
  font-weight: var(--font-weight-500);
236
242
  text-transform: uppercase;
237
243
  }
@@ -251,8 +257,8 @@
251
257
  align-items: center;
252
258
  color: var(--muted-color);
253
259
  display: flex;
254
- font-size: 13px;
255
- gap: 6px;
260
+ font-size: var(--font-size-300);
261
+ gap: calc(var(--size-300) / 2);
256
262
  justify-content: center;
257
263
  margin: 0;
258
264
 
@@ -264,10 +270,10 @@
264
270
  }
265
271
 
266
272
  &-number {
273
+ @extend %font-geist-mono;
267
274
  align-self: flex-start;
268
- font-family: var(--font-family-mono);
275
+ font-family: var(--font-family);
269
276
  font-size: var(--card-number-font-size);
270
- letter-spacing: 0.025em;
271
277
  white-space: nowrap;
272
278
  }
273
279
 
@@ -291,7 +297,7 @@
291
297
  transition:
292
298
  height var(--ring-duration) var(--spring),
293
299
  left var(--ring-duration) var(--spring),
294
- opacity 120ms ease-out,
300
+ opacity var(--duration-fast) var(--easing-out),
295
301
  top var(--ring-duration) var(--spring),
296
302
  width var(--ring-duration) var(--spring);
297
303
 
@@ -300,7 +306,7 @@
300
306
  transition:
301
307
  height var(--ring-duration) var(--spring),
302
308
  left var(--ring-duration) var(--spring),
303
- opacity 200ms ease-out,
309
+ opacity var(--duration-moderate) var(--easing-out),
304
310
  top var(--ring-duration) var(--spring),
305
311
  width var(--ring-duration) var(--spring);
306
312
  }
@@ -315,13 +321,13 @@
315
321
  &-shell {
316
322
  display: flex;
317
323
  flex-direction: column;
318
- gap: 8px;
324
+ gap: var(--size-100);
319
325
  min-width: 0;
320
326
 
321
327
  &-header {
322
328
  align-items: baseline;
323
329
  display: flex;
324
- gap: 8px;
330
+ gap: var(--size-100);
325
331
  justify-content: space-between;
326
332
  }
327
333
  }
@@ -330,17 +336,18 @@
330
336
  align-items: center;
331
337
  display: flex;
332
338
  gap: 12px;
333
- padding: 20px 24px 0;
339
+ padding: var(--size-500) 24px 0;
334
340
 
335
341
  &-value {
342
+ @extend %font-geist-mono;
336
343
  align-items: center;
337
344
  background: var(--card-color);
338
345
  border-radius: var(--border-radius-300);
339
346
  color: var(--card-background);
340
347
  display: flex;
341
348
  flex: 1;
342
- font-family: var(--font-family-mono);
343
- font-size: 15px;
349
+ font-family: var(--font-family);
350
+ font-size: var(--font-size-400);
344
351
  font-style: italic;
345
352
  height: 40px;
346
353
  justify-content: flex-end;
@@ -359,22 +366,17 @@
359
366
  border: 0;
360
367
  height: var(--field-height);
361
368
  outline: none;
362
- transition: scale 150ms ease-out;
363
-
364
- &:active {
365
- scale: 0.96;
366
- }
367
369
 
368
370
  &:focus-visible {
369
371
  outline: var(--border-width-500) solid var(--outline-color);
370
- outline-offset: 2px;
372
+ outline-offset: calc(var(--size-100) / 4);
371
373
  }
372
374
  }
373
375
  }
374
376
 
375
377
  @keyframes cc-digit-1 {
376
378
  from {
377
- filter: blur(2px);
379
+ filter: blur(var(--blur-300));
378
380
  opacity: 0;
379
381
  translate: 0 -4px;
380
382
  }
@@ -382,7 +384,7 @@
382
384
 
383
385
  @keyframes cc-digit-2 {
384
386
  from {
385
- filter: blur(2px);
387
+ filter: blur(var(--blur-300));
386
388
  opacity: 0;
387
389
  translate: 0 -4px;
388
390
  }
@@ -390,6 +392,24 @@
390
392
 
391
393
  // No half turn: the faces cross-fade in place and every blur, slide and scale drops to a plain fade.
392
394
  @media (prefers-reduced-motion: reduce) {
395
+ .cc {
396
+ &-error {
397
+ @starting-style {
398
+ filter: none;
399
+ translate: 0 0;
400
+ }
401
+ }
402
+
403
+ &-face--back {
404
+ opacity: var(--face-back-opacity, 0);
405
+ transform: none;
406
+ }
407
+
408
+ &-face--front {
409
+ opacity: var(--face-front-opacity, 1);
410
+ }
411
+ }
412
+
393
413
  .cc-card--flipped {
394
414
  --face-back-opacity: 1;
395
415
  --face-front-opacity: 0;
@@ -400,26 +420,6 @@
400
420
  .cc-digit--roll-2 {
401
421
  animation-name: cc-fade;
402
422
  }
403
-
404
- .cc-error {
405
- @starting-style {
406
- filter: none;
407
- translate: 0 0;
408
- }
409
- }
410
-
411
- .cc-face--back {
412
- opacity: var(--face-back-opacity, 0);
413
- transform: none;
414
- }
415
-
416
- .cc-face--front {
417
- opacity: var(--face-front-opacity, 1);
418
- }
419
-
420
- .cc-submit.button:active {
421
- scale: 1;
422
- }
423
423
  }
424
424
 
425
425
  @keyframes cc-fade {
@@ -1,16 +1,15 @@
1
1
  .cc {
2
- --card-background: var(--color-text-500);
2
+ // A physical card keeps its dark face in both modes.
3
+ --card-background: var(--color-black-300);
3
4
  --card-border-radius: var(--border-radius-700);
4
5
  --card-color: var(--color-white-300);
5
6
  --card-number-font-size: clamp(16px, 5.2vw, 21px);
6
- --card-shadow: var(--box-shadow-300);
7
7
  --color: var(--color-text-500);
8
- --digit-duration: 150ms;
8
+ --digit-duration: var(--duration-fast);
9
9
  --error-color: var(--color-red-400);
10
- --field-background: var(--color-white-300);
11
- --field-border-color: var(--color-border-300);
10
+ --field-border-color: var(--surface-border-default);
12
11
  --field-border-radius: var(--border-radius-600);
13
- --field-font-size: 15px;
12
+ --field-font-size: var(--font-size-400);
14
13
  --field-height: 44px;
15
14
  // A half turn across the card's full width reads as a rush under ~400ms, and nobody waits on it.
16
15
  --flip-duration: 764ms;
@@ -20,12 +19,12 @@
20
19
  --label-font-size: var(--font-size-300);
21
20
  --label-font-weight: var(--font-weight-500);
22
21
  --muted-color: var(--color-text-300);
23
- --outline-color: var(--color-text-500);
24
- --ring-duration: 300ms;
22
+ --outline-color: var(--color-primary-500);
23
+ --ring-duration: var(--duration-moderate);
25
24
  --spring: linear(0, 0.035, 0.118, 0.216, 0.319, 0.424, 0.515, 0.6, 0.669, 0.728, 0.781, 0.822, 0.856, 0.885, 0.908, 0.927, 0.942, 0.954, 0.964, 0.971, 0.977, 0.982, 0.986, 0.989, 0.991, 0.993, 0.995, 0.996, 0.997, 0.997, 1);
26
- --submit-background: var(--color-text-500);
27
- --submit-color: var(--color-white-300);
28
- --swap-duration: 300ms;
25
+ --submit-background: var(--color-primary-500);
26
+ --submit-color: var(--color-surface);
27
+ --swap-duration: var(--duration-moderate);
29
28
  --width: min(400px, 100%);
30
29
 
31
30
  // The ring jumps between fields, still fading in and out.
@@ -57,12 +56,12 @@
57
56
  --border-radius: var(--field-border-radius);
58
57
  --color-default: var(--submit-color);
59
58
  --face-duration: var(--swap-duration);
60
- --face-gap: 8px;
59
+ --face-gap: var(--size-100);
61
60
  --face-timing-function: var(--spring);
62
61
  --font-size: var(--field-font-size);
63
62
  --font-weight: var(--font-weight-500);
64
- --icon-size: 16px;
65
- --padding-horizontal: 20px;
63
+ --icon-size: var(--size-400);
64
+ --padding-horizontal: var(--size-500);
66
65
  --padding-vertical: 0px;
67
66
  }
68
67
  }
@@ -1,4 +1,5 @@
1
- @use '/shared';
1
+ @use 'css-utilities/color';
2
+ @use 'css-utilities/hidden';
2
3
  @use 'variables';
3
4
 
4
5
  // One line per turn, stacked with no gaps, so the pointer never falls between two lines and the card glides
@@ -23,17 +24,17 @@
23
24
  &-card {
24
25
  display: flex;
25
26
  flex-direction: column;
26
- gap: 2px;
27
+ gap: calc(var(--size-100) / 4);
27
28
  padding: 12px;
28
29
  width: var(--card-width);
29
30
  }
30
31
 
31
32
  &-description {
32
33
  -webkit-box-orient: vertical;
34
+ -webkit-line-clamp: 2;
33
35
  color: var(--card-description-color);
34
36
  display: -webkit-box;
35
37
  font-size: var(--font-size-300);
36
- -webkit-line-clamp: 2;
37
38
  line-clamp: 2;
38
39
  overflow: hidden;
39
40
  }
@@ -82,10 +83,14 @@
82
83
 
83
84
  // Out of the way until wanted: shown on its own hover or focus, and always on touch, which can't hover to find it.
84
85
  &-nav {
86
+ @extend %color-state;
87
+ --color-default: var(--color-text-300);
88
+ --color-hover: var(--nav-color-hover);
89
+ --color-pressed: var(--color-hover);
85
90
  align-items: center;
86
91
  background: none;
87
92
  border: 0;
88
- color: var(--color-text-300);
93
+ color: var(--color);
89
94
  cursor: pointer;
90
95
  display: flex;
91
96
  height: var(--nav-height);
@@ -93,8 +98,8 @@
93
98
  outline: none;
94
99
  padding: 0 var(--inset);
95
100
  transition:
96
- color var(--nav-duration) ease-out,
97
- opacity var(--nav-duration) ease-out;
101
+ color var(--nav-duration) var(--easing-spring),
102
+ opacity var(--nav-duration) var(--easing-spring);
98
103
  width: var(--item-width);
99
104
 
100
105
  &:disabled {
@@ -102,10 +107,8 @@
102
107
  pointer-events: none;
103
108
  }
104
109
 
105
- &:focus-visible,
106
- &:hover {
107
- color: var(--color-active);
108
- opacity: 1;
110
+ &:focus-visible {
111
+ --color: var(--color-hover);
109
112
  }
110
113
 
111
114
  &:focus-visible {
@@ -114,6 +117,11 @@
114
117
  outline-offset: -1px;
115
118
  }
116
119
 
120
+ &:focus-visible,
121
+ &:hover {
122
+ opacity: 1;
123
+ }
124
+
117
125
  @media (pointer: coarse) {
118
126
  opacity: 1;
119
127
 
@@ -121,17 +129,17 @@
121
129
  opacity: 0.4;
122
130
  }
123
131
  }
124
- }
125
132
 
126
- &-nav-icon {
127
- flex-shrink: 0;
128
- height: 12px;
129
- width: 12px;
133
+ &-icon {
134
+ flex-shrink: 0;
135
+ height: 12px;
136
+ width: 12px;
137
+ }
130
138
  }
131
139
 
132
140
  &-title {
133
141
  color: var(--card-title-color);
134
- font-size: 0.875rem;
142
+ font-size: var(--font-size-300);
135
143
  font-weight: var(--font-weight-500);
136
144
  overflow: hidden;
137
145
  text-overflow: ellipsis;