@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,59 +1,50 @@
1
- @use '/shared';
1
+ @use 'sass:list';
2
2
  @use '/tokens';
3
+ @use 'css-utilities/anchor';
4
+ @use 'css-utilities/surface';
3
5
  @use 'variables';
4
6
 
5
- // Zero specificity so paired classes (e.g. '.card') still win over the dialog UA reset.
6
- :where(dialog.overlay) {
7
- background: transparent;
8
- border: 0;
9
- color: inherit;
10
- inset: 0;
11
- max-height: calc(100% - (var(--margin-vertical) * 2));
12
- max-width: 100%;
13
- padding: 0;
14
- // Only non-modal overlays stay out of the top layer and need it.
15
- z-index: 9;
16
- }
17
7
 
18
- // Outranks pairings like '.card { position: relative }'. Modal overlays pin to the viewport; non-modal ones
19
- // sit in their positioned container, which may be the viewport too via an inline 'position: fixed'.
20
- dialog.overlay {
21
- position: fixed;
8
+ // How far the edge fill reaches past each placement's sides, top, right, bottom and left.
9
+ $edge-fill: (
10
+ e: (0 50vw 0 0),
11
+ n: (50vh 0 0 0),
12
+ ne: (50vh 50vw 0 0),
13
+ nw: (50vh 0 0 50vw),
14
+ s: (0 0 50vh 0),
15
+ se: (0 50vw 50vh 0),
16
+ sw: (0 0 50vh 50vw),
17
+ w: (0 0 0 50vw)
18
+ );
22
19
 
23
- &:not(:modal) {
24
- position: absolute;
25
- }
26
20
 
27
- // A flow overlay occupies a row in its parent instead of covering that parent's content.
28
- &.overlay--flow:not(:modal) {
29
- align-self: start;
30
- inset: auto;
31
- margin: 0;
32
- max-height: none;
33
- max-width: none;
34
- min-height: 0;
35
- position: relative;
36
- width: 100%;
37
- z-index: auto;
21
+ // Each side that reaches out, 1px deeper so it tucks under the box's edge.
22
+ @function edge-fill-width($sides) {
23
+ $widths: ();
38
24
 
39
- // Keep its natural height available to the parent's collapsing grid while it is closed.
40
- &:not([open]) {
41
- display: block;
42
- visibility: hidden;
25
+ @each $side in $sides {
26
+ @if $side == 0 {
27
+ $widths: list.append($widths, 0);
28
+ }
29
+ @else {
30
+ $widths: list.append($widths, calc(#{$side} + 1px));
43
31
  }
44
32
  }
33
+
34
+ @return $widths;
45
35
  }
46
36
 
37
+
47
38
  .overlay {
48
39
  @extend %anchor;
49
40
  margin: auto;
41
+ transform-origin: center;
50
42
  transition:
51
43
  filter var(--transition-duration) var(--transition-timing-function),
52
44
  opacity var(--transition-duration) var(--transition-timing-function),
53
45
  scale var(--transition-duration) var(--transition-timing-function),
54
46
  transform var(--transition-duration) var(--transition-timing-function),
55
47
  translate var(--transition-duration) var(--transition-timing-function);
56
- transform-origin: center;
57
48
  width: min(var(--max-width), calc(100% - (var(--margin-horizontal) * 2)));
58
49
 
59
50
  @include tokens.state(inactive) {
@@ -87,7 +78,7 @@ dialog.overlay {
87
78
  }
88
79
 
89
80
 
90
- @each $placement in shared.$anchor-placements {
81
+ @each $placement in anchor.$placements {
91
82
  &--#{$placement} {
92
83
  @extend %anchor--#{$placement};
93
84
  }
@@ -98,9 +89,8 @@ dialog.overlay {
98
89
  backdrop-filter: blur(var(--blur));
99
90
  }
100
91
 
101
- &--e,
102
- &--w {
103
- height: calc(100% - (var(--margin-vertical) * 2));
92
+ &--e {
93
+ transform-origin: right;
104
94
  }
105
95
 
106
96
  // Pinned to the edges its placement names, squaring the corners that meet them unless floating; a corner
@@ -116,6 +106,15 @@ dialog.overlay {
116
106
  }
117
107
  }
118
108
 
109
+ &--e,
110
+ &--w {
111
+ height: calc(100% - (var(--margin-vertical) * 2));
112
+ }
113
+
114
+ &--n {
115
+ transform-origin: top;
116
+ }
117
+
119
118
  &--n,
120
119
  &--ne,
121
120
  &--nw {
@@ -127,6 +126,18 @@ dialog.overlay {
127
126
  }
128
127
  }
129
128
 
129
+ &--ne {
130
+ transform-origin: top right;
131
+ }
132
+
133
+ &--nw {
134
+ transform-origin: top left;
135
+ }
136
+
137
+ &--s {
138
+ transform-origin: bottom;
139
+ }
140
+
130
141
  &--s,
131
142
  &--se,
132
143
  &--sw {
@@ -138,6 +149,18 @@ dialog.overlay {
138
149
  }
139
150
  }
140
151
 
152
+ &--se {
153
+ transform-origin: bottom right;
154
+ }
155
+
156
+ &--sw {
157
+ transform-origin: bottom left;
158
+ }
159
+
160
+ &--w {
161
+ transform-origin: left;
162
+ }
163
+
141
164
  &--w,
142
165
  &--nw,
143
166
  &--sw {
@@ -149,38 +172,57 @@ dialog.overlay {
149
172
  }
150
173
  }
151
174
 
152
- &--e {
153
- transform-origin: right;
154
- }
155
175
 
156
- &--n {
157
- transform-origin: top;
158
- }
176
+ &-handle {
177
+ background: var(--handle-color);
178
+ border-radius: var(--handle-thickness);
179
+ height: var(--handle-thickness);
180
+ position: absolute;
181
+ touch-action: none;
182
+ width: var(--handle-length);
159
183
 
160
- &--ne {
161
- transform-origin: top right;
162
- }
184
+ .overlay--e > & {
185
+ left: var(--handle-offset);
186
+ }
163
187
 
164
- &--nw {
165
- transform-origin: top left;
166
- }
188
+ .overlay--e > &,
189
+ .overlay--w > & {
190
+ height: var(--handle-length);
191
+ top: 50%;
192
+ translate: 0 -50%;
193
+ width: var(--handle-thickness);
194
+ }
167
195
 
168
- &--s {
169
- transform-origin: bottom;
170
- }
196
+ .overlay--n > &,
197
+ .overlay--ne > &,
198
+ .overlay--nw > & {
199
+ bottom: var(--handle-offset);
200
+ }
171
201
 
172
- &--se {
173
- transform-origin: bottom right;
174
- }
202
+ .overlay--n > &,
203
+ .overlay--ne > &,
204
+ .overlay--nw > &,
205
+ .overlay--s > &,
206
+ .overlay--se > &,
207
+ .overlay--sw > & {
208
+ left: 50%;
209
+ translate: -50% 0;
210
+ }
175
211
 
176
- &--sw {
177
- transform-origin: bottom left;
178
- }
212
+ .overlay--s > &,
213
+ .overlay--se > &,
214
+ .overlay--sw > & {
215
+ top: var(--handle-offset);
216
+ }
179
217
 
180
- &--w {
181
- transform-origin: left;
182
- }
218
+ .overlay--w > & {
219
+ right: var(--handle-offset);
220
+ }
183
221
 
222
+ .overlay:not(.overlay--e, .overlay--n, .overlay--ne, .overlay--nw, .overlay--s, .overlay--se, .overlay--sw, .overlay--w) > & {
223
+ display: none;
224
+ }
225
+ }
184
226
 
185
227
  // '--depth' is how many layers are open above this one, fractional while the top one is dragged away.
186
228
  &.overlay--covered {
@@ -206,48 +248,40 @@ dialog.overlay {
206
248
  }
207
249
  }
208
250
 
209
- // Border paint reaches outside a scrolling surface without adding overflow or using its pseudo-elements.
210
- // Matching width and outset keeps the fill entirely outside the original border box.
211
- &.overlay--edge-fill {
212
- border-image-source: linear-gradient(var(--edge-background), var(--edge-background));
213
- border-image-slice: 1;
214
- border-image-width: var(--edge-fill);
215
- border-image-outset: var(--edge-fill);
216
- border-image-repeat: stretch;
217
-
218
- &.overlay--e {
219
- --edge-fill: 0 50vw 0 0;
220
- }
221
-
222
- &.overlay--n {
223
- --edge-fill: 50vh 0 0 0;
224
- }
225
-
226
- &.overlay--ne {
227
- --edge-fill: 50vh 50vw 0 0;
228
- }
229
-
230
- &.overlay--nw {
231
- --edge-fill: 50vh 0 0 50vw;
232
- }
233
-
234
- &.overlay--s {
235
- --edge-fill: 0 0 50vh 0;
236
- }
251
+ // Fades with the drag, in step with its backdrop.
252
+ &.overlay--dragging {
253
+ cursor: grabbing;
254
+ opacity: calc(1 - var(--progress, 0));
255
+ }
237
256
 
238
- &.overlay--se {
239
- --edge-fill: 0 50vw 50vh 0;
257
+ // Following the finger: the layers beneath the dragged one track it too, so neither may ease.
258
+ &.overlay--dragging,
259
+ &.overlay--tracking {
260
+ &,
261
+ &::backdrop {
262
+ transition: none;
240
263
  }
264
+ }
241
265
 
242
- &.overlay--sw {
243
- --edge-fill: 0 0 50vh 50vw;
244
- }
266
+ // Border paint reaches outside a scrolling surface without adding overflow or using its pseudo-elements. The
267
+ // fill reaches 1px past its outset into the box, under the content: two paints meeting on one fractional edge
268
+ // each antialias it, and the page shows through the seam.
269
+ &.overlay--edge-fill {
270
+ border-image-outset: var(--edge-fill);
271
+ border-image-repeat: stretch;
272
+ border-image-slice: 1;
273
+ border-image-source: linear-gradient(var(--edge-background), var(--edge-background));
274
+ border-image-width: var(--edge-fill-width);
245
275
 
246
- &.overlay--w {
247
- --edge-fill: 0 0 0 50vw;
276
+ @each $placement, $sides in $edge-fill {
277
+ &.overlay--#{$placement} {
278
+ --edge-fill: #{$sides};
279
+ --edge-fill-width: #{edge-fill-width($sides)};
280
+ }
248
281
  }
249
282
  }
250
283
 
284
+
251
285
  // Always open; '--active' expands it. Rows keep their width and are clipped rather than reflowed, so the
252
286
  // collapsed rail shows whatever leads each row (usually an icon).
253
287
  &.overlay--rail {
@@ -272,73 +306,6 @@ dialog.overlay {
272
306
  }
273
307
  }
274
308
 
275
- // Fades with the drag, in step with its backdrop.
276
- &.overlay--dragging {
277
- cursor: grabbing;
278
- opacity: calc(1 - var(--progress, 0));
279
- }
280
-
281
- // Following the finger: the layers beneath the dragged one track it too, so neither may ease.
282
- &.overlay--dragging,
283
- &.overlay--tracking {
284
- &,
285
- &::backdrop {
286
- transition: none;
287
- }
288
- }
289
-
290
-
291
- &-handle {
292
- background: var(--handle-color);
293
- border-radius: var(--handle-thickness);
294
- height: var(--handle-thickness);
295
- position: absolute;
296
- touch-action: none;
297
- width: var(--handle-length);
298
-
299
- .overlay:not(.overlay--e, .overlay--n, .overlay--ne, .overlay--nw, .overlay--s, .overlay--se, .overlay--sw, .overlay--w) > & {
300
- display: none;
301
- }
302
-
303
- .overlay--e > &,
304
- .overlay--w > & {
305
- height: var(--handle-length);
306
- top: 50%;
307
- translate: 0 -50%;
308
- width: var(--handle-thickness);
309
- }
310
-
311
- .overlay--e > & {
312
- left: var(--handle-offset);
313
- }
314
-
315
- .overlay--n > &,
316
- .overlay--ne > &,
317
- .overlay--nw > &,
318
- .overlay--s > &,
319
- .overlay--se > &,
320
- .overlay--sw > & {
321
- left: 50%;
322
- translate: -50% 0;
323
- }
324
-
325
- .overlay--n > &,
326
- .overlay--ne > &,
327
- .overlay--nw > & {
328
- bottom: var(--handle-offset);
329
- }
330
-
331
- .overlay--s > &,
332
- .overlay--se > &,
333
- .overlay--sw > & {
334
- top: var(--handle-offset);
335
- }
336
-
337
- .overlay--w > & {
338
- right: var(--handle-offset);
339
- }
340
- }
341
-
342
309
  // Every placement fades in place instead of travelling.
343
310
  @media (prefers-reduced-motion: reduce) {
344
311
  --opacity: 0;
@@ -351,14 +318,14 @@ dialog.overlay {
351
318
  opacity var(--transition-duration) var(--transition-timing-function);
352
319
  }
353
320
 
354
- &::backdrop {
355
- transition: opacity var(--transition-duration) var(--transition-timing-function);
356
- }
357
-
358
321
  &.overlay--covered {
359
322
  scale: none;
360
323
  translate: none;
361
324
  }
325
+
326
+ &::backdrop {
327
+ transition: opacity var(--transition-duration) var(--transition-timing-function);
328
+ }
362
329
  }
363
330
  }
364
331
 
@@ -388,3 +355,47 @@ dialog.overlay {
388
355
  }
389
356
  }
390
357
  }
358
+
359
+ // Zero specificity so paired classes (e.g. '.card') still win over the dialog UA reset.
360
+ :where(dialog.overlay) {
361
+ background: transparent;
362
+ border: 0;
363
+ color: inherit;
364
+ inset: 0;
365
+ max-height: calc(100% - (var(--margin-vertical) * 2));
366
+ max-width: 100%;
367
+ padding: 0;
368
+ // Only non-modal overlays stay out of the top layer and need it.
369
+ z-index: 9;
370
+ }
371
+
372
+ // Outranks pairings like '.card { position: relative }'. Modal overlays pin to the viewport; non-modal ones
373
+ // sit in their positioned container, which may be the viewport too via an inline 'position: fixed'.
374
+ dialog.overlay {
375
+ // A fresh surface stack above everything; outranks a paired surface, such as '.card', that would count up instead.
376
+ @extend %surface-root-level;
377
+ position: fixed;
378
+
379
+ // A flow overlay occupies a row in its parent instead of covering that parent's content.
380
+ &.overlay--flow:not(:modal) {
381
+ align-self: start;
382
+ inset: auto;
383
+ margin: 0;
384
+ max-height: none;
385
+ max-width: none;
386
+ min-height: 0;
387
+ position: relative;
388
+ width: 100%;
389
+ z-index: auto;
390
+
391
+ // Keep its natural height available to the parent's collapsing grid while it is closed.
392
+ &:not([open]) {
393
+ display: block;
394
+ visibility: hidden;
395
+ }
396
+ }
397
+
398
+ &:not(:modal) {
399
+ position: absolute;
400
+ }
401
+ }
@@ -1,20 +1,18 @@
1
- // The same curve run backwards, so an exit plays its entrance in reverse.
2
- @function reversed($x1, $y1, $x2, $y2) {
3
- @return cubic-bezier(1 - $x2, 1 - $y2, 1 - $x1, 1 - $y1);
4
- }
5
-
6
-
7
1
  .overlay {
8
2
  --backdrop: color-mix(in srgb, var(--color-black-500) 64%, transparent);
3
+ --close-duration: var(--duration-slow-exit);
4
+ // Read by JS for a flow overlay's space, which grows and gives way without bouncing.
5
+ --ease: var(--easing-spring);
9
6
  // Read by JS: the longest a dragged-away overlay is thrown for.
10
7
  --fling-duration: 500ms;
11
- --handle-color: var(--color-border-300);
8
+ --handle-color: var(--surface-border-default);
12
9
  --handle-length: 40px;
13
10
  --handle-offset: var(--size-200);
14
11
  --handle-thickness: 6px;
15
12
  --margin-horizontal: 0px;
16
13
  --margin-vertical: 0px;
17
14
  --max-width: 480px;
15
+ --open-duration: var(--duration-slow);
18
16
  --scale: 1;
19
17
  --stack-dim: 0.2;
20
18
  --stack-peek: 18px;
@@ -22,6 +20,8 @@
22
20
  // Covered layers scale about their anchor, so the far edge moves back by '--stack-span' of the size before it
23
21
  // peeks.
24
22
  --stack-shift: calc(var(--depth, 0) * var(--stack-peek) + (1 - pow(var(--stack-scale), var(--depth, 0))) * var(--stack-span));
23
+ --transition-duration: var(--open-duration);
24
+ --transition-timing-function: var(--easing-spring-bounce);
25
25
  --width-closed: 64px;
26
26
 
27
27
  // Dragged away, it fades where it was let go.
@@ -29,60 +29,23 @@
29
29
  --fling-duration: 0s;
30
30
  }
31
31
 
32
- // The root curve, reversed.
33
- &:where(:not(.--active)) {
34
- --transition-timing-function: #{reversed(0.4, 0, 0.2, 1)};
35
- }
36
-
37
- &--e,
38
- &--n,
39
- &--ne,
40
- &--nw,
41
- &--s,
42
- &--se,
43
- &--sw,
44
- &--w {
45
- --close-duration: 0.3s;
46
- // The iOS drawer curve: fast out of the gate, long gentle settle.
47
- --ease: cubic-bezier(0.32, 0.72, 0, 1);
48
- --open-duration: 0.5s;
49
- --transition-duration: var(--open-duration);
50
- --transition-timing-function: var(--ease);
51
-
52
- // Exits get out of the way faster than entrances arrive.
53
- &:where(:not(.--active)) {
54
- --transition-duration: var(--close-duration);
55
- }
56
- }
57
-
58
- &--e,
59
- &--w {
60
- --max-width: 320px;
61
- }
62
-
63
- &--floating {
64
- --margin-horizontal: var(--size-100);
65
- --margin-vertical: var(--size-100);
66
- }
67
-
68
32
  // Motion modifiers follow placement so they win when paired with an edge.
69
33
  &--alert {
70
34
  --backdrop: rgb(0 0 0 / 10%);
71
- --blur: 4px;
35
+ --blur: var(--blur-400);
72
36
  --opacity: 0;
73
37
  --scale: 0.95;
74
- --transition-duration: 100ms;
75
- --transition-timing-function: ease;
76
38
  --translate: 0px;
77
-
78
- &:where(:not(.--active)) {
79
- --transition-timing-function: #{reversed(0.25, 0.1, 0.25, 1)};
80
- }
81
39
  }
82
40
 
83
41
  &--blur {
84
42
  --backdrop: color-mix(in srgb, var(--color-black-500) 32%, transparent);
85
- --blur: 8px;
43
+ --blur: var(--blur-500);
44
+ }
45
+
46
+ &--e,
47
+ &--w {
48
+ --max-width: 320px;
86
49
  }
87
50
 
88
51
  &--fade {
@@ -90,6 +53,11 @@
90
53
  --translate: 0px;
91
54
  }
92
55
 
56
+ &--floating {
57
+ --margin-horizontal: var(--size-100);
58
+ --margin-vertical: var(--size-100);
59
+ }
60
+
93
61
  &--scale {
94
62
  --opacity: 0;
95
63
  --scale: 0.92;
@@ -99,12 +67,13 @@
99
67
  &--spring {
100
68
  --opacity: 0;
101
69
  --scale: 0.8;
102
- --transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
103
70
  --translate: 0px;
71
+ }
104
72
 
105
- &:where(:not(.--active)) {
106
- --transition-timing-function: #{reversed(0.34, 1.56, 0.64, 1)};
107
- }
73
+ // Exits get out of the way faster than entrances arrive, and settle without the bounce.
74
+ &:where(:not(.--active)) {
75
+ --transition-duration: var(--close-duration);
76
+ --transition-timing-function: var(--easing-spring);
108
77
  }
109
78
  }
110
79
 
@@ -112,6 +81,6 @@
112
81
  --dim: 0.2;
113
82
  --peek: 18px;
114
83
  --scale: 0.94;
115
- --transition-duration: 0.5s;
116
- --transition-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
84
+ --transition-duration: var(--duration-slow);
85
+ --transition-timing-function: var(--easing-spring);
117
86
  }
@@ -1,13 +1,19 @@
1
1
  @use 'variables';
2
2
 
3
3
  .page {
4
- display: flex;
5
- flex-flow: column;
6
- gap: var(--gap-vertical) 0px;
7
- min-height: 100svh;
8
- position: relative;
9
- width: 100%;
4
+ &,
5
+ &-header {
6
+ display: flex;
7
+ flex-flow: column;
8
+ gap: var(--gap-vertical) var(--gap-horizontal);
9
+ position: relative;
10
+ width: 100%;
11
+ }
10
12
 
13
+ &-subtitle,
14
+ &-suptitle {
15
+ font-size: var(--font-size);
16
+ }
11
17
 
12
18
  &-subtitle,
13
19
  &-suptitle,
@@ -19,11 +25,6 @@
19
25
  z-index: 1;
20
26
  }
21
27
 
22
- &-subtitle,
23
- &-suptitle {
24
- font-size: var(--font-size);
25
- }
26
-
27
28
  &-title {
28
29
  text-wrap: balance;
29
30
  }
@@ -2,6 +2,11 @@
2
2
  --gap-horizontal: 0px;
3
3
  --gap-vertical: 0px;
4
4
 
5
+ &-header {
6
+ --gap-horizontal: var(--size-400);
7
+ --gap-vertical: var(--size-100);
8
+ }
9
+
5
10
  &-subtitle,
6
11
  &-suptitle {
7
12
  --color: var(--color-default);
@@ -0,0 +1,58 @@
1
+ import { html, type Attributes } from '@esportsplus/template';
2
+ import icon from '~/components/icon';
3
+ import next from '@esportsplus/ui/svg/arrow-right.svg';
4
+ import previous from '@esportsplus/ui/svg/arrow-left.svg';
5
+
6
+
7
+ type A = Attributes & {
8
+ 'aria-label'?: string;
9
+ next?: Link;
10
+ previous?: Link;
11
+ };
12
+
13
+ type Link = {
14
+ // A line under the title; cards only.
15
+ description?: string;
16
+ href: string;
17
+ // The small line above the title, 'Previous' or 'Next' when omitted; cards only.
18
+ label?: string;
19
+ title: string;
20
+ };
21
+
22
+
23
+ function arrow(direction: 'next' | 'previous', link?: Link) {
24
+ let graphic = icon({ 'aria-hidden': 'true', class: 'pagination-arrow-icon' }, direction === 'next' ? next : previous),
25
+ name = direction === 'next' ? 'Next' : 'Previous';
26
+
27
+ if (!link) {
28
+ return html`
29
+ <button aria-label='${name}' class='pagination-arrow pagination-arrow--${direction} --disabled' disabled type='button'>
30
+ ${graphic}
31
+ </button>
32
+ `;
33
+ }
34
+
35
+ return html`
36
+ <a
37
+ aria-label='${name}: ${link.title}'
38
+ class='pagination-arrow pagination-arrow--${direction}'
39
+ href='${link.href}'
40
+ rel='${direction === 'next' ? 'next' : 'prev'}'
41
+ title='${name}: ${link.title}'
42
+ >
43
+ ${graphic}
44
+ </a>
45
+ `;
46
+ }
47
+
48
+
49
+ // Both stay in place with a missing side disabled, so the pair never shifts between pages.
50
+ export default ({ 'aria-label': label = 'Pagination', next, previous, ...attributes }: A) => html`
51
+ <nav aria-label='${label}' class='pagination pagination--arrows' ${attributes}>
52
+ ${arrow('previous', previous)}
53
+ ${arrow('next', next)}
54
+ </nav>
55
+ `;
56
+
57
+
58
+ export type { Link };