@remix-run/ui 0.3.0 → 0.4.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 (308) hide show
  1. package/README.md +50 -164
  2. package/dist/accordion/index.d.ts +46 -0
  3. package/dist/accordion/index.js +142 -0
  4. package/dist/accordion/index.js.map +1 -0
  5. package/dist/accordion/primitives.d.ts +104 -0
  6. package/dist/accordion/primitives.js +312 -0
  7. package/dist/accordion/primitives.js.map +1 -0
  8. package/dist/{components/anchor/anchor.js → anchor/index.js} +1 -1
  9. package/dist/anchor/index.js.map +1 -0
  10. package/dist/animation/demos/reordering.js +9 -6
  11. package/dist/animation/demos/reordering.js.map +1 -1
  12. package/dist/{components/breadcrumbs/breadcrumbs.js → breadcrumbs/index.js} +19 -19
  13. package/dist/breadcrumbs/index.js.map +1 -0
  14. package/dist/button/index.d.ts +15 -0
  15. package/dist/button/index.js +128 -0
  16. package/dist/button/index.js.map +1 -0
  17. package/dist/checkbox/index.d.ts +14 -0
  18. package/dist/checkbox/index.js +125 -0
  19. package/dist/checkbox/index.js.map +1 -0
  20. package/dist/combobox/index.d.ts +21 -0
  21. package/dist/combobox/index.js +58 -0
  22. package/dist/combobox/index.js.map +1 -0
  23. package/dist/{components/combobox/combobox.d.ts → combobox/primitives.d.ts} +3 -7
  24. package/dist/{components/combobox/combobox.js → combobox/primitives.js} +8 -61
  25. package/dist/combobox/primitives.js.map +1 -0
  26. package/dist/input/index.d.ts +13 -0
  27. package/dist/input/index.js +121 -0
  28. package/dist/input/index.js.map +1 -0
  29. package/dist/listbox/flash-attribute.js.map +1 -0
  30. package/dist/{components/listbox/listbox.d.ts → listbox/index.d.ts} +2 -6
  31. package/dist/{components/listbox/listbox.js → listbox/index.js} +4 -82
  32. package/dist/listbox/index.js.map +1 -0
  33. package/dist/menu/hover-aim.js.map +1 -0
  34. package/dist/menu/index.d.ts +42 -0
  35. package/dist/menu/index.js +250 -0
  36. package/dist/menu/index.js.map +1 -0
  37. package/dist/{components/menu/menu.d.ts → menu/primitives.d.ts} +3 -32
  38. package/dist/{components/menu/menu.js → menu/primitives.js} +97 -314
  39. package/dist/menu/primitives.js.map +1 -0
  40. package/dist/{components/popover/popover.d.ts → popover/index.d.ts} +2 -4
  41. package/dist/{components/popover/popover.js → popover/index.js} +5 -48
  42. package/dist/popover/index.js.map +1 -0
  43. package/dist/{interactions/outside-click/outside-click-mixin.js → popover/outside-click.js} +1 -1
  44. package/dist/popover/outside-click.js.map +1 -0
  45. package/dist/popover/scroll-lock.d.ts +1 -0
  46. package/dist/{utils → popover}/scroll-lock.js +0 -18
  47. package/dist/popover/scroll-lock.js.map +1 -0
  48. package/dist/radio/index.d.ts +12 -0
  49. package/dist/radio/index.js +77 -0
  50. package/dist/radio/index.js.map +1 -0
  51. package/dist/runtime/reconcile.js +11 -5
  52. package/dist/runtime/reconcile.js.map +1 -1
  53. package/dist/runtime/vdom.js +3 -0
  54. package/dist/runtime/vdom.js.map +1 -1
  55. package/dist/select/index.d.ts +19 -0
  56. package/dist/select/index.js +95 -0
  57. package/dist/select/index.js.map +1 -0
  58. package/dist/select/keydown.js.map +1 -0
  59. package/dist/{components/select/select.d.ts → select/primitives.d.ts} +4 -6
  60. package/dist/{components/select/select.js → select/primitives.js} +11 -63
  61. package/dist/select/primitives.js.map +1 -0
  62. package/dist/server/stream.js +2 -2
  63. package/dist/server/stream.js.map +1 -1
  64. package/dist/shared/focus-styles.d.ts +1 -0
  65. package/dist/shared/focus-styles.js +2 -0
  66. package/dist/shared/focus-styles.js.map +1 -0
  67. package/dist/shared/icons.d.ts +9 -0
  68. package/dist/shared/icons.js +42 -0
  69. package/dist/shared/icons.js.map +1 -0
  70. package/dist/shared/listbox-popover-styles.d.ts +6 -0
  71. package/dist/shared/listbox-popover-styles.js +137 -0
  72. package/dist/shared/listbox-popover-styles.js.map +1 -0
  73. package/dist/shared/style-values.d.ts +78 -0
  74. package/dist/{theme/presets/rmx-01/index.js → shared/style-values.js} +3 -34
  75. package/dist/shared/style-values.js.map +1 -0
  76. package/dist/{interactions/typeahead/typeahead-mixin.js → shared/typeahead.js} +1 -1
  77. package/dist/shared/typeahead.js.map +1 -0
  78. package/dist/shared/wait-for-css-transition.js.map +1 -0
  79. package/dist/shared/wait.js.map +1 -0
  80. package/dist/tabs/index.d.ts +32 -0
  81. package/dist/tabs/index.js +157 -0
  82. package/dist/tabs/index.js.map +1 -0
  83. package/dist/tabs/primitives.d.ts +57 -0
  84. package/dist/tabs/primitives.js +238 -0
  85. package/dist/tabs/primitives.js.map +1 -0
  86. package/dist/toggle/index.d.ts +9 -0
  87. package/dist/toggle/index.js +108 -0
  88. package/dist/toggle/index.js.map +1 -0
  89. package/dist/toggle/primitives.d.ts +29 -0
  90. package/dist/toggle/primitives.js +127 -0
  91. package/dist/toggle/primitives.js.map +1 -0
  92. package/package.json +73 -44
  93. package/src/{components/accordion → accordion}/README.md +50 -14
  94. package/src/accordion/index.tsx +285 -0
  95. package/src/accordion/primitives.tsx +512 -0
  96. package/src/{components/anchor → anchor}/README.md +37 -2
  97. package/src/animation/demos/reordering.tsx +9 -6
  98. package/src/{components/breadcrumbs → breadcrumbs}/README.md +4 -4
  99. package/src/{components/breadcrumbs/breadcrumbs.tsx → breadcrumbs/index.tsx} +18 -18
  100. package/src/button/README.md +44 -0
  101. package/src/button/index.ts +168 -0
  102. package/src/checkbox/README.md +59 -0
  103. package/src/checkbox/index.ts +162 -0
  104. package/src/{components/combobox → combobox}/README.md +58 -9
  105. package/src/combobox/index.tsx +112 -0
  106. package/src/{components/combobox/combobox.tsx → combobox/primitives.tsx} +5 -91
  107. package/src/input/README.md +52 -0
  108. package/src/input/index.ts +147 -0
  109. package/src/{components/listbox → listbox}/README.md +9 -41
  110. package/src/{components/listbox/listbox.ts → listbox/index.ts} +2 -87
  111. package/src/{components/menu → menu}/README.md +55 -14
  112. package/src/menu/index.tsx +354 -0
  113. package/src/{components/menu/menu.tsx → menu/primitives.tsx} +99 -413
  114. package/src/{components/popover → popover}/README.md +20 -39
  115. package/src/{components/popover/popover.ts → popover/index.ts} +3 -57
  116. package/src/{utils → popover}/scroll-lock.ts +0 -28
  117. package/src/radio/README.md +53 -0
  118. package/src/radio/index.ts +100 -0
  119. package/src/runtime/demos/readme.demo.tsx +16 -14
  120. package/src/runtime/reconcile.ts +11 -5
  121. package/src/runtime/vdom.ts +3 -0
  122. package/src/{components/select → select}/README.md +29 -19
  123. package/src/select/index.tsx +159 -0
  124. package/src/{components/select/select.tsx → select/primitives.tsx} +10 -98
  125. package/src/server/stream.ts +3 -3
  126. package/src/shared/focus-styles.ts +2 -0
  127. package/src/shared/icons.tsx +62 -0
  128. package/src/shared/listbox-popover-styles.ts +146 -0
  129. package/src/shared/style-values.ts +165 -0
  130. package/src/tabs/README.md +141 -0
  131. package/src/tabs/index.tsx +244 -0
  132. package/src/tabs/primitives.ts +365 -0
  133. package/src/toggle/README.md +56 -0
  134. package/src/toggle/index.tsx +134 -0
  135. package/src/toggle/primitives.ts +192 -0
  136. package/dist/animation/demos/animation.demo.d.ts +0 -5
  137. package/dist/animation/demos/animation.demo.js +0 -92
  138. package/dist/animation/demos/animation.demo.js.map +0 -1
  139. package/dist/animation/demos/spring.demo.d.ts +0 -6
  140. package/dist/animation/demos/spring.demo.js +0 -304
  141. package/dist/animation/demos/spring.demo.js.map +0 -1
  142. package/dist/components/accordion/accordion.d.ts +0 -92
  143. package/dist/components/accordion/accordion.js +0 -335
  144. package/dist/components/accordion/accordion.js.map +0 -1
  145. package/dist/components/accordion/demos/card.demo.d.ts +0 -7
  146. package/dist/components/accordion/demos/card.demo.js +0 -59
  147. package/dist/components/accordion/demos/card.demo.js.map +0 -1
  148. package/dist/components/accordion/demos/multiple.demo.d.ts +0 -7
  149. package/dist/components/accordion/demos/multiple.demo.js +0 -20
  150. package/dist/components/accordion/demos/multiple.demo.js.map +0 -1
  151. package/dist/components/accordion/demos/overview.demo.d.ts +0 -7
  152. package/dist/components/accordion/demos/overview.demo.js +0 -20
  153. package/dist/components/accordion/demos/overview.demo.js.map +0 -1
  154. package/dist/components/anchor/anchor.js.map +0 -1
  155. package/dist/components/breadcrumbs/basic.demo.d.ts +0 -6
  156. package/dist/components/breadcrumbs/basic.demo.js +0 -15
  157. package/dist/components/breadcrumbs/basic.demo.js.map +0 -1
  158. package/dist/components/breadcrumbs/breadcrumbs.js.map +0 -1
  159. package/dist/components/breadcrumbs/separator.demo.d.ts +0 -6
  160. package/dist/components/breadcrumbs/separator.demo.js +0 -15
  161. package/dist/components/breadcrumbs/separator.demo.js.map +0 -1
  162. package/dist/components/button/button.d.ts +0 -105
  163. package/dist/components/button/button.js +0 -207
  164. package/dist/components/button/button.js.map +0 -1
  165. package/dist/components/button/demos/aliases.demo.d.ts +0 -7
  166. package/dist/components/button/demos/aliases.demo.js +0 -19
  167. package/dist/components/button/demos/aliases.demo.js.map +0 -1
  168. package/dist/components/button/demos/basic.demo.d.ts +0 -7
  169. package/dist/components/button/demos/basic.demo.js +0 -20
  170. package/dist/components/button/demos/basic.demo.js.map +0 -1
  171. package/dist/components/button/demos/states.demo.d.ts +0 -7
  172. package/dist/components/button/demos/states.demo.js +0 -30
  173. package/dist/components/button/demos/states.demo.js.map +0 -1
  174. package/dist/components/combobox/combobox.js.map +0 -1
  175. package/dist/components/combobox/overview.demo.d.ts +0 -7
  176. package/dist/components/combobox/overview.demo.js +0 -154
  177. package/dist/components/combobox/overview.demo.js.map +0 -1
  178. package/dist/components/glyph/glyph.d.ts +0 -14
  179. package/dist/components/glyph/glyph.js +0 -65
  180. package/dist/components/glyph/glyph.js.map +0 -1
  181. package/dist/components/listbox/listbox.js.map +0 -1
  182. package/dist/components/listbox/overview.demo.d.ts +0 -7
  183. package/dist/components/listbox/overview.demo.js +0 -65
  184. package/dist/components/listbox/overview.demo.js.map +0 -1
  185. package/dist/components/menu/demos/bubbling.demo.d.ts +0 -6
  186. package/dist/components/menu/demos/bubbling.demo.js +0 -16
  187. package/dist/components/menu/demos/bubbling.demo.js.map +0 -1
  188. package/dist/components/menu/demos/context-trigger.demo.d.ts +0 -7
  189. package/dist/components/menu/demos/context-trigger.demo.js +0 -87
  190. package/dist/components/menu/demos/context-trigger.demo.js.map +0 -1
  191. package/dist/components/menu/demos/overview.demo.d.ts +0 -7
  192. package/dist/components/menu/demos/overview.demo.js +0 -33
  193. package/dist/components/menu/demos/overview.demo.js.map +0 -1
  194. package/dist/components/menu/hover-aim.js.map +0 -1
  195. package/dist/components/menu/menu.js.map +0 -1
  196. package/dist/components/popover/overview.demo.d.ts +0 -7
  197. package/dist/components/popover/overview.demo.js +0 -65
  198. package/dist/components/popover/overview.demo.js.map +0 -1
  199. package/dist/components/popover/popover.js.map +0 -1
  200. package/dist/components/select/deconstructed.demo.d.ts +0 -7
  201. package/dist/components/select/deconstructed.demo.js +0 -54
  202. package/dist/components/select/deconstructed.demo.js.map +0 -1
  203. package/dist/components/select/overview.demo.d.ts +0 -6
  204. package/dist/components/select/overview.demo.js +0 -28
  205. package/dist/components/select/overview.demo.js.map +0 -1
  206. package/dist/components/select/select.js.map +0 -1
  207. package/dist/components/separator/separator.d.ts +0 -2
  208. package/dist/components/separator/separator.js +0 -15
  209. package/dist/components/separator/separator.js.map +0 -1
  210. package/dist/components/tabs/tabs.d.ts +0 -78
  211. package/dist/components/tabs/tabs.js +0 -339
  212. package/dist/components/tabs/tabs.js.map +0 -1
  213. package/dist/interactions/keydown/keydown.js.map +0 -1
  214. package/dist/interactions/outside-click/outside-click-mixin.js.map +0 -1
  215. package/dist/interactions/typeahead/typeahead-mixin.js.map +0 -1
  216. package/dist/runtime/demos/basic.demo.d.ts +0 -6
  217. package/dist/runtime/demos/basic.demo.js +0 -16
  218. package/dist/runtime/demos/basic.demo.js.map +0 -1
  219. package/dist/runtime/demos/controlled-uncontrolled-values.demo.d.ts +0 -6
  220. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js +0 -77
  221. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js.map +0 -1
  222. package/dist/runtime/demos/keyed-list.demo.d.ts +0 -6
  223. package/dist/runtime/demos/keyed-list.demo.js +0 -62
  224. package/dist/runtime/demos/keyed-list.demo.js.map +0 -1
  225. package/dist/runtime/demos/readme.demo.d.ts +0 -5
  226. package/dist/runtime/demos/readme.demo.js +0 -396
  227. package/dist/runtime/demos/readme.demo.js.map +0 -1
  228. package/dist/theme/contract.d.ts +0 -61
  229. package/dist/theme/contract.js +0 -131
  230. package/dist/theme/contract.js.map +0 -1
  231. package/dist/theme/glyph-contract.d.ts +0 -11
  232. package/dist/theme/glyph-contract.js +0 -34
  233. package/dist/theme/glyph-contract.js.map +0 -1
  234. package/dist/theme/presets/rmx-01/glyphs.d.ts +0 -2
  235. package/dist/theme/presets/rmx-01/glyphs.js +0 -252
  236. package/dist/theme/presets/rmx-01/glyphs.js.map +0 -1
  237. package/dist/theme/presets/rmx-01/index.d.ts +0 -4
  238. package/dist/theme/presets/rmx-01/index.js.map +0 -1
  239. package/dist/theme/runtime.d.ts +0 -2
  240. package/dist/theme/runtime.js +0 -84
  241. package/dist/theme/runtime.js.map +0 -1
  242. package/dist/theme/theme.d.ts +0 -6
  243. package/dist/theme/theme.js +0 -5
  244. package/dist/theme/theme.js.map +0 -1
  245. package/dist/utils/flash-attribute.js.map +0 -1
  246. package/dist/utils/scroll-lock.d.ts +0 -3
  247. package/dist/utils/scroll-lock.js.map +0 -1
  248. package/dist/utils/wait-for-css-transition.js.map +0 -1
  249. package/dist/utils/wait.js.map +0 -1
  250. package/src/animation/demos/animation.demo.tsx +0 -194
  251. package/src/animation/demos/spring.demo.tsx +0 -385
  252. package/src/components/accordion/accordion.tsx +0 -565
  253. package/src/components/accordion/demos/card.demo.tsx +0 -114
  254. package/src/components/accordion/demos/multiple.demo.tsx +0 -57
  255. package/src/components/accordion/demos/overview.demo.tsx +0 -57
  256. package/src/components/breadcrumbs/basic.demo.tsx +0 -18
  257. package/src/components/breadcrumbs/separator.demo.tsx +0 -19
  258. package/src/components/button/README.md +0 -44
  259. package/src/components/button/button.tsx +0 -286
  260. package/src/components/button/demos/aliases.demo.tsx +0 -28
  261. package/src/components/button/demos/basic.demo.tsx +0 -31
  262. package/src/components/button/demos/states.demo.tsx +0 -53
  263. package/src/components/combobox/overview.demo.tsx +0 -200
  264. package/src/components/glyph/README.md +0 -72
  265. package/src/components/glyph/glyph.tsx +0 -110
  266. package/src/components/listbox/overview.demo.tsx +0 -102
  267. package/src/components/menu/demos/bubbling.demo.tsx +0 -35
  268. package/src/components/menu/demos/context-trigger.demo.tsx +0 -133
  269. package/src/components/menu/demos/overview.demo.tsx +0 -77
  270. package/src/components/popover/overview.demo.tsx +0 -144
  271. package/src/components/select/deconstructed.demo.tsx +0 -96
  272. package/src/components/select/overview.demo.tsx +0 -52
  273. package/src/components/separator/separator.ts +0 -19
  274. package/src/components/tabs/README.md +0 -105
  275. package/src/components/tabs/tabs.tsx +0 -504
  276. package/src/runtime/demos/basic.demo.tsx +0 -21
  277. package/src/runtime/demos/controlled-uncontrolled-values.demo.tsx +0 -177
  278. package/src/runtime/demos/keyed-list.demo.tsx +0 -94
  279. package/src/theme/README.md +0 -103
  280. package/src/theme/contract.ts +0 -215
  281. package/src/theme/glyph-contract.ts +0 -59
  282. package/src/theme/presets/rmx-01/glyphs.tsx +0 -308
  283. package/src/theme/presets/rmx-01/index.ts +0 -123
  284. package/src/theme/runtime.ts +0 -119
  285. package/src/theme/theme.ts +0 -15
  286. package/src/utils/scroll-lock/README.md +0 -33
  287. /package/dist/{components/anchor/anchor.d.ts → anchor/index.d.ts} +0 -0
  288. /package/dist/{components/breadcrumbs/breadcrumbs.d.ts → breadcrumbs/index.d.ts} +0 -0
  289. /package/dist/{utils → listbox}/flash-attribute.d.ts +0 -0
  290. /package/dist/{utils → listbox}/flash-attribute.js +0 -0
  291. /package/dist/{components/menu → menu}/hover-aim.d.ts +0 -0
  292. /package/dist/{components/menu → menu}/hover-aim.js +0 -0
  293. /package/dist/{interactions/outside-click/outside-click-mixin.d.ts → popover/outside-click.d.ts} +0 -0
  294. /package/dist/{interactions/keydown → select}/keydown.d.ts +0 -0
  295. /package/dist/{interactions/keydown → select}/keydown.js +0 -0
  296. /package/dist/{interactions/typeahead/typeahead-mixin.d.ts → shared/typeahead.d.ts} +0 -0
  297. /package/dist/{utils → shared}/wait-for-css-transition.d.ts +0 -0
  298. /package/dist/{utils → shared}/wait-for-css-transition.js +0 -0
  299. /package/dist/{utils → shared}/wait.d.ts +0 -0
  300. /package/dist/{utils → shared}/wait.js +0 -0
  301. /package/src/{components/anchor/anchor.ts → anchor/index.ts} +0 -0
  302. /package/src/{utils → listbox}/flash-attribute.ts +0 -0
  303. /package/src/{components/menu → menu}/hover-aim.ts +0 -0
  304. /package/src/{interactions/outside-click/outside-click-mixin.ts → popover/outside-click.ts} +0 -0
  305. /package/src/{interactions/keydown → select}/keydown.ts +0 -0
  306. /package/src/{interactions/typeahead/typeahead-mixin.ts → shared/typeahead.ts} +0 -0
  307. /package/src/{utils → shared}/wait-for-css-transition.ts +0 -0
  308. /package/src/{utils → shared}/wait.ts +0 -0
@@ -1,304 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
- import { addEventListeners, css, on, ref } from '@remix-run/ui';
3
- import { dragVelocityEvents } from "./drag-release.js";
4
- import { spring } from '@remix-run/ui/animation';
5
- function PointerTrail(handle) {
6
- let canvas;
7
- let points = [];
8
- let isDown = false;
9
- let releaseTime = 0;
10
- let animationId = null;
11
- let maxAge = 150; // ms - how long points stay in the trail while dragging
12
- let fadeDuration = 800; // ms - how long the trail fades after release
13
- function draw() {
14
- if (!canvas)
15
- return;
16
- let ctx = canvas.getContext('2d');
17
- if (!ctx)
18
- return;
19
- let now = performance.now();
20
- ctx.clearRect(0, 0, canvas.width, canvas.height);
21
- // Calculate overall opacity based on release time
22
- let overallOpacity = 1;
23
- if (!isDown && releaseTime > 0) {
24
- let elapsed = now - releaseTime;
25
- overallOpacity = Math.max(0, 1 - elapsed / fadeDuration);
26
- if (overallOpacity <= 0) {
27
- points = [];
28
- animationId = null;
29
- return;
30
- }
31
- }
32
- // Filter out old points while dragging
33
- if (isDown) {
34
- points = points.filter((p) => now - p.time < maxAge);
35
- }
36
- if (points.length < 2) {
37
- if (isDown || overallOpacity > 0) {
38
- animationId = requestAnimationFrame(draw);
39
- }
40
- else {
41
- animationId = null;
42
- }
43
- return;
44
- }
45
- // Draw the trail as a tapered path
46
- ctx.beginPath();
47
- ctx.lineCap = 'round';
48
- ctx.lineJoin = 'round';
49
- for (let i = 1; i < points.length; i++) {
50
- let prev = points[i - 1];
51
- let curr = points[i];
52
- // Age-based opacity (older = more transparent)
53
- let age = isDown ? (now - prev.time) / maxAge : 0;
54
- let segmentOpacity = (1 - age) * overallOpacity;
55
- // Thickness tapers from thin (old) to thick (new)
56
- let progress = i / (points.length - 1);
57
- let thickness = 2 + progress * 8;
58
- ctx.beginPath();
59
- ctx.moveTo(prev.x, prev.y);
60
- ctx.lineTo(curr.x, curr.y);
61
- ctx.strokeStyle = `rgba(14, 165, 233, ${segmentOpacity * 0.6})`;
62
- ctx.lineWidth = thickness;
63
- ctx.stroke();
64
- }
65
- // Draw a red glow at the end to show direction
66
- if (points.length > 0) {
67
- let last = points[points.length - 1];
68
- let gradient = ctx.createRadialGradient(last.x, last.y, 0, last.x, last.y, 20);
69
- gradient.addColorStop(0, `rgba(239, 68, 68, ${overallOpacity * 0.6})`);
70
- gradient.addColorStop(1, 'rgba(239, 68, 68, 0)');
71
- ctx.fillStyle = gradient;
72
- ctx.beginPath();
73
- ctx.arc(last.x, last.y, 20, 0, Math.PI * 2);
74
- ctx.fill();
75
- }
76
- animationId = requestAnimationFrame(draw);
77
- }
78
- function startDrawing() {
79
- if (!animationId) {
80
- animationId = requestAnimationFrame(draw);
81
- }
82
- }
83
- if (typeof document !== 'undefined') {
84
- addEventListeners(document, handle.signal, {
85
- pointerdown(event) {
86
- if (!event.target.closest('.draggable'))
87
- return;
88
- isDown = true;
89
- releaseTime = 0;
90
- points = [{ x: event.clientX, y: event.clientY, time: performance.now() }];
91
- startDrawing();
92
- },
93
- pointermove(event) {
94
- if (!isDown)
95
- return;
96
- points.push({ x: event.clientX, y: event.clientY, time: performance.now() });
97
- },
98
- pointerup() {
99
- if (!isDown)
100
- return;
101
- isDown = false;
102
- releaseTime = performance.now();
103
- },
104
- pointercancel() {
105
- isDown = false;
106
- releaseTime = performance.now();
107
- },
108
- });
109
- }
110
- return () => (_jsx("canvas", { mix: [
111
- ref((node) => {
112
- canvas = node;
113
- canvas.width = window.innerWidth;
114
- canvas.height = window.innerHeight;
115
- }),
116
- css({
117
- position: 'absolute',
118
- inset: 0,
119
- pointerEvents: 'none',
120
- zIndex: 5,
121
- }),
122
- ] }));
123
- }
124
- /**
125
- * @name Spring Drag Release
126
- * @description A full-screen spring physics playground with click targets and drag-release velocity.
127
- */
128
- export default function SpringDemo(handle) {
129
- let viewportWidth = globalThis.window?.innerWidth ?? 1000;
130
- let viewportHeight = globalThis.window?.innerHeight ?? 700;
131
- // Target circle position (click to move)
132
- let targetX = viewportWidth / 2;
133
- let targetY = viewportHeight / 2;
134
- // Draggable circle state
135
- let dragX = viewportWidth / 2 - 150;
136
- let dragY = viewportHeight / 2;
137
- let isDragging = false;
138
- let isAnimating = false;
139
- // Current spring transitions (separate for X and Y to capture 2D velocity)
140
- let transitionX = '';
141
- let transitionY = '';
142
- let selectedPreset = 'bouncy';
143
- // Get default spring transition for target circle
144
- let springValue = spring(selectedPreset);
145
- if (typeof document !== 'undefined') {
146
- addEventListeners(document, handle.signal, {
147
- click(event) {
148
- // Ignore clicks on controls or when dragging
149
- if (event.target.closest('.controls'))
150
- return;
151
- if (event.target.closest('.draggable'))
152
- return;
153
- targetX = event.clientX;
154
- targetY = event.clientY;
155
- handle.update();
156
- },
157
- });
158
- }
159
- return () => (_jsxs("div", { mix: [
160
- css({
161
- position: 'fixed',
162
- inset: 0,
163
- backgroundColor: '#1a1a2e',
164
- cursor: 'crosshair',
165
- overflow: 'hidden',
166
- }),
167
- ], children: [_jsx(PointerTrail, {}), _jsx("div", { mix: [
168
- css({
169
- position: 'absolute',
170
- width: '80px',
171
- height: '80px',
172
- borderRadius: '50%',
173
- backgroundColor: 'transparent',
174
- border: '3px dashed rgba(233, 69, 96, 0.5)',
175
- transform: 'translate(-50%, -50%)',
176
- pointerEvents: 'none',
177
- }),
178
- ], style: {
179
- left: `${targetX}px`,
180
- top: `${targetY}px`,
181
- transition: `left ${springValue}, top ${springValue}`,
182
- } }), _jsx("div", { className: "draggable", mix: [
183
- css({
184
- position: 'absolute',
185
- width: '60px',
186
- height: '60px',
187
- borderRadius: '50%',
188
- backgroundColor: '#0ea5e9',
189
- boxShadow: '0 0 20px rgba(14, 165, 233, 0.5)',
190
- transform: 'translate(-50%, -50%)',
191
- userSelect: 'none',
192
- touchAction: 'none',
193
- zIndex: 10,
194
- }),
195
- on('transitionend', () => {
196
- isAnimating = false;
197
- handle.update();
198
- }),
199
- on('pointerdown', (event) => {
200
- event.preventDefault();
201
- isDragging = true;
202
- isAnimating = false;
203
- handle.update();
204
- }),
205
- on('pointermove', (event) => {
206
- if (!isDragging)
207
- return;
208
- dragX = event.clientX;
209
- dragY = event.clientY;
210
- handle.update();
211
- }),
212
- dragVelocityEvents(),
213
- on(dragVelocityEvents.release, (event) => {
214
- isDragging = false;
215
- // Calculate distance to target on each axis
216
- let distX = targetX - dragX;
217
- let distY = targetY - dragY;
218
- if (Math.abs(distX) < 1 && Math.abs(distY) < 1) {
219
- handle.update();
220
- return;
221
- }
222
- // Create separate springs for X and Y with their own normalized velocities
223
- // normalizedVelocity = velocity / distance (with sign!) for each axis
224
- // The sign matters: positive = moving toward target, negative = moving away
225
- if (Math.abs(distX) >= 1) {
226
- let normalizedVelocityX = event.velocityX / distX;
227
- normalizedVelocityX = Math.max(-20, Math.min(20, normalizedVelocityX));
228
- transitionX = String(spring(selectedPreset, { velocity: normalizedVelocityX }));
229
- }
230
- else {
231
- transitionX = String(spring(selectedPreset));
232
- }
233
- if (Math.abs(distY) >= 1) {
234
- let normalizedVelocityY = event.velocityY / distY;
235
- normalizedVelocityY = Math.max(-20, Math.min(20, normalizedVelocityY));
236
- transitionY = String(spring(selectedPreset, { velocity: normalizedVelocityY }));
237
- }
238
- else {
239
- transitionY = String(spring(selectedPreset));
240
- }
241
- // Animate to target
242
- isAnimating = true;
243
- dragX = targetX;
244
- dragY = targetY;
245
- handle.update();
246
- }),
247
- ], style: {
248
- left: `${dragX}px`,
249
- top: `${dragY}px`,
250
- cursor: isDragging ? 'grabbing' : 'grab',
251
- transition: isAnimating ? `left ${transitionX}, top ${transitionY}` : 'none',
252
- } }), _jsx("div", { className: "controls", mix: [
253
- css({
254
- position: 'absolute',
255
- top: '20px',
256
- left: '50%',
257
- transform: 'translateX(-50%)',
258
- display: 'flex',
259
- gap: '4px',
260
- padding: '4px',
261
- backgroundColor: 'rgba(255, 255, 255, 0.1)',
262
- borderRadius: '8px',
263
- fontFamily: 'system-ui, sans-serif',
264
- fontSize: '14px',
265
- cursor: 'default',
266
- }),
267
- ], children: Object.keys(spring.presets).map((preset) => (_jsxs("label", { mix: [
268
- css({
269
- display: 'flex',
270
- alignItems: 'center',
271
- gap: '6px',
272
- padding: '8px 12px',
273
- borderRadius: '6px',
274
- color: '#fff',
275
- cursor: 'pointer',
276
- transition: 'background-color 150ms ease',
277
- '&:hover': {
278
- backgroundColor: 'rgba(255, 255, 255, 0.1)',
279
- },
280
- '&:has(input:checked)': {
281
- backgroundColor: 'rgba(14, 165, 233, 0.3)',
282
- },
283
- }),
284
- ], children: [_jsx("input", { type: "radio", name: "spring-preset", value: preset, checked: selectedPreset === preset, mix: [
285
- css({ accentColor: '#0ea5e9' }),
286
- on('change', () => {
287
- selectedPreset = preset;
288
- springValue = spring(selectedPreset);
289
- handle.update();
290
- }),
291
- ] }), preset] }, preset))) }), _jsx("div", { mix: [
292
- css({
293
- position: 'absolute',
294
- bottom: '20px',
295
- left: '50%',
296
- transform: 'translateX(-50%)',
297
- color: '#ffffff80',
298
- fontFamily: 'system-ui, sans-serif',
299
- fontSize: '14px',
300
- textAlign: 'center',
301
- }),
302
- ], children: "Click to move target \u2022 Drag the blue circle and release to see velocity-based spring" })] }));
303
- }
304
- //# sourceMappingURL=spring.demo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spring.demo.js","sourceRoot":"","sources":["../../../src/animation/demos/spring.demo.tsx"],"names":[],"mappings":"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"}
@@ -1,92 +0,0 @@
1
- import { on, type CSSMixinDescriptor, type Handle, type Props, type RemixNode, type Dispatched } from '@remix-run/ui';
2
- declare const ACCORDION_CHANGE_EVENT: "rmx:accordion-change";
3
- type AccordionChangeHandler<target extends HTMLElement> = (event: Dispatched<AccordionChangeEvent, target>, signal: AbortSignal) => void | Promise<void>;
4
- declare global {
5
- interface HTMLElementEventMap {
6
- [ACCORDION_CHANGE_EVENT]: AccordionChangeEvent;
7
- }
8
- }
9
- export declare class AccordionChangeEvent extends Event {
10
- accordionType: AccordionType;
11
- itemValue: string;
12
- value: string | null | string[];
13
- constructor(value: string | null | string[], init: {
14
- accordionType: AccordionType;
15
- itemValue: string;
16
- });
17
- }
18
- type AccordionType = 'single' | 'multiple';
19
- type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
20
- type AccordionBaseProps = Omit<Props<'div'>, 'children'> & {
21
- children?: RemixNode;
22
- disabled?: boolean;
23
- headingLevel?: HeadingLevel;
24
- };
25
- export type AccordionSingleProps = AccordionBaseProps & {
26
- type?: 'single';
27
- value?: string | null;
28
- defaultValue?: string | null;
29
- onValueChange?: (value: string | null) => void;
30
- collapsible?: boolean;
31
- };
32
- export type AccordionMultipleProps = AccordionBaseProps & {
33
- type: 'multiple';
34
- value?: string[];
35
- defaultValue?: string[];
36
- onValueChange?: (value: string[]) => void;
37
- };
38
- export type AccordionProps = AccordionSingleProps | AccordionMultipleProps;
39
- export type AccordionItemProps = Omit<Props<'div'>, 'children'> & {
40
- children?: RemixNode;
41
- disabled?: boolean;
42
- value: string;
43
- };
44
- export type AccordionTriggerProps = Omit<Props<'button'>, 'children' | 'type'> & {
45
- children?: RemixNode;
46
- indicator?: RemixNode | null;
47
- type?: 'button' | 'submit' | 'reset';
48
- };
49
- export type AccordionContentProps = Omit<Props<'div'>, 'children'> & {
50
- children?: RemixNode;
51
- };
52
- type RegisteredItem = {
53
- disabled: boolean;
54
- getTriggerNode(): HTMLButtonElement | null;
55
- value: string;
56
- };
57
- type AccordionContext = {
58
- collapsible: boolean;
59
- disabled: boolean;
60
- focusItem(value: string, direction: FocusDirection): void;
61
- getPanelId(value: string): string | undefined;
62
- getTriggerId(value: string): string | undefined;
63
- headingLevel: HeadingLevel;
64
- isOpen(value: string): boolean;
65
- registerItem(item: RegisteredItem): void;
66
- toggleItem(value: string): void;
67
- type: AccordionType;
68
- };
69
- type AccordionItemContext = {
70
- disabled: boolean;
71
- headingLevel: HeadingLevel;
72
- lockedOpen: boolean;
73
- open: boolean;
74
- panelId: string;
75
- setTriggerNode(node: HTMLButtonElement | null): void;
76
- triggerId: string;
77
- value: string;
78
- };
79
- type FocusDirection = 'first' | 'last' | 'next' | 'previous';
80
- export declare const rootStyle: CSSMixinDescriptor;
81
- export declare const itemStyle: CSSMixinDescriptor;
82
- export declare const triggerStyle: CSSMixinDescriptor;
83
- export declare const indicatorStyle: CSSMixinDescriptor;
84
- export declare const panelStyle: CSSMixinDescriptor;
85
- export declare const bodyStyle: CSSMixinDescriptor;
86
- declare function AccordionImpl(handle: Handle<AccordionProps, AccordionContext>): () => RemixNode;
87
- export declare function onAccordionChange<target extends HTMLElement>(handler: AccordionChangeHandler<target>, captureBoolean?: boolean): ReturnType<typeof on<target, typeof ACCORDION_CHANGE_EVENT>>;
88
- export declare const Accordion: typeof AccordionImpl;
89
- export declare function AccordionItem(handle: Handle<AccordionItemProps, AccordionItemContext>): () => RemixNode;
90
- export declare function AccordionTrigger(handle: Handle<AccordionTriggerProps>): () => RemixNode;
91
- export declare function AccordionContent(handle: Handle<AccordionContentProps>): () => RemixNode;
92
- export {};