@remix-run/ui 0.3.0 → 0.5.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 (434) hide show
  1. package/README.md +116 -157
  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/animate-layout-mixin.js +1 -1
  11. package/dist/animation/animate-layout-mixin.js.map +1 -1
  12. package/dist/animation/animate-mixins.js +2 -2
  13. package/dist/animation/animate-mixins.js.map +1 -1
  14. package/dist/animation/demos/color-interpolation.js +1 -1
  15. package/dist/animation/demos/color-interpolation.js.map +1 -1
  16. package/dist/animation/demos/drag-release.d.ts +1 -1
  17. package/dist/animation/demos/hold-to-confirm.d.ts +3 -3
  18. package/dist/animation/demos/material-ripple.js +1 -3
  19. package/dist/animation/demos/material-ripple.js.map +1 -1
  20. package/dist/animation/demos/reordering.js +9 -6
  21. package/dist/animation/demos/reordering.js.map +1 -1
  22. package/dist/animation/index.js +4 -4
  23. package/dist/animation/spring.js.map +1 -1
  24. package/dist/{components/breadcrumbs/breadcrumbs.js → breadcrumbs/index.js} +19 -19
  25. package/dist/breadcrumbs/index.js.map +1 -0
  26. package/dist/button/index.d.ts +15 -0
  27. package/dist/button/index.js +128 -0
  28. package/dist/button/index.js.map +1 -0
  29. package/dist/checkbox/index.d.ts +14 -0
  30. package/dist/checkbox/index.js +127 -0
  31. package/dist/checkbox/index.js.map +1 -0
  32. package/dist/combobox/index.d.ts +21 -0
  33. package/dist/combobox/index.js +58 -0
  34. package/dist/combobox/index.js.map +1 -0
  35. package/dist/{components/combobox/combobox.d.ts → combobox/primitives.d.ts} +4 -8
  36. package/dist/{components/combobox/combobox.js → combobox/primitives.js} +8 -61
  37. package/dist/combobox/primitives.js.map +1 -0
  38. package/dist/dev/refresh.d.ts +1 -0
  39. package/dist/dev/refresh.js +2 -0
  40. package/dist/dev/refresh.js.map +1 -0
  41. package/dist/index.d.ts +1 -1
  42. package/dist/index.js +14 -14
  43. package/dist/input/index.d.ts +13 -0
  44. package/dist/input/index.js +121 -0
  45. package/dist/input/index.js.map +1 -0
  46. package/dist/jsx-runtime.js +2 -2
  47. package/dist/listbox/flash-attribute.js.map +1 -0
  48. package/dist/{components/listbox/listbox.d.ts → listbox/index.d.ts} +2 -6
  49. package/dist/{components/listbox/listbox.js → listbox/index.js} +4 -82
  50. package/dist/listbox/index.js.map +1 -0
  51. package/dist/menu/hover-aim.js.map +1 -0
  52. package/dist/menu/index.d.ts +42 -0
  53. package/dist/menu/index.js +250 -0
  54. package/dist/menu/index.js.map +1 -0
  55. package/dist/{components/menu/menu.d.ts → menu/primitives.d.ts} +4 -33
  56. package/dist/{components/menu/menu.js → menu/primitives.js} +98 -315
  57. package/dist/menu/primitives.js.map +1 -0
  58. package/dist/{components/popover/popover.d.ts → popover/index.d.ts} +2 -4
  59. package/dist/{components/popover/popover.js → popover/index.js} +5 -48
  60. package/dist/popover/index.js.map +1 -0
  61. package/dist/{interactions/outside-click/outside-click-mixin.js → popover/outside-click.js} +1 -1
  62. package/dist/popover/outside-click.js.map +1 -0
  63. package/dist/popover/scroll-lock.d.ts +1 -0
  64. package/dist/{utils → popover}/scroll-lock.js +0 -18
  65. package/dist/popover/scroll-lock.js.map +1 -0
  66. package/dist/radio/index.d.ts +12 -0
  67. package/dist/radio/index.js +77 -0
  68. package/dist/radio/index.js.map +1 -0
  69. package/dist/runtime/client-entry-boundary.d.ts +14 -0
  70. package/dist/runtime/client-entry-boundary.js +29 -0
  71. package/dist/runtime/client-entry-boundary.js.map +1 -0
  72. package/dist/runtime/component.d.ts +19 -4
  73. package/dist/runtime/component.js +39 -9
  74. package/dist/runtime/component.js.map +1 -1
  75. package/dist/runtime/core/attributes.js +36 -3
  76. package/dist/runtime/core/attributes.js.map +1 -1
  77. package/dist/runtime/core/children.d.ts +2 -0
  78. package/dist/runtime/core/children.js +26 -2
  79. package/dist/runtime/core/children.js.map +1 -1
  80. package/dist/runtime/core/props.js +2 -2
  81. package/dist/runtime/core/vnode.d.ts +3 -3
  82. package/dist/runtime/core/vnode.js +22 -1
  83. package/dist/runtime/core/vnode.js.map +1 -1
  84. package/dist/runtime/create-element.d.ts +2 -2
  85. package/dist/runtime/create-element.js +3 -2
  86. package/dist/runtime/create-element.js.map +1 -1
  87. package/dist/runtime/diff-dom.js +294 -219
  88. package/dist/runtime/diff-dom.js.map +1 -1
  89. package/dist/runtime/diff-props.js +3 -3
  90. package/dist/runtime/dom.d.ts +12 -0
  91. package/dist/runtime/element-function.d.ts +3 -0
  92. package/dist/runtime/element-function.js +2 -0
  93. package/dist/runtime/element-function.js.map +1 -0
  94. package/dist/runtime/form-navigation.d.ts +25 -0
  95. package/dist/runtime/form-navigation.js +132 -0
  96. package/dist/runtime/form-navigation.js.map +1 -0
  97. package/dist/runtime/frame-resolution.d.ts +5 -0
  98. package/dist/runtime/frame-resolution.js +10 -0
  99. package/dist/runtime/frame-resolution.js.map +1 -0
  100. package/dist/runtime/frame.d.ts +58 -15
  101. package/dist/runtime/frame.js +367 -114
  102. package/dist/runtime/frame.js.map +1 -1
  103. package/dist/runtime/jsx.d.ts +1 -1
  104. package/dist/runtime/jsx.js +1 -1
  105. package/dist/runtime/jsx.js.map +1 -1
  106. package/dist/runtime/key.d.ts +1 -0
  107. package/dist/runtime/key.js +2 -0
  108. package/dist/runtime/key.js.map +1 -0
  109. package/dist/runtime/mixins/attrs-mixin.js +2 -2
  110. package/dist/runtime/mixins/link-mixin.js +4 -3
  111. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  112. package/dist/runtime/mixins/mixin.d.ts +15 -10
  113. package/dist/runtime/mixins/mixin.js +4 -4
  114. package/dist/runtime/mixins/mixin.js.map +1 -1
  115. package/dist/runtime/mixins/on-mixin.js +1 -1
  116. package/dist/runtime/mixins/ref-mixin.js +1 -1
  117. package/dist/runtime/navigation.d.ts +4 -1
  118. package/dist/runtime/navigation.js +157 -32
  119. package/dist/runtime/navigation.js.map +1 -1
  120. package/dist/runtime/reconcile.d.ts +11 -10
  121. package/dist/runtime/reconcile.js +557 -423
  122. package/dist/runtime/reconcile.js.map +1 -1
  123. package/dist/runtime/refresh.d.ts +28 -0
  124. package/dist/runtime/refresh.js +31 -0
  125. package/dist/runtime/refresh.js.map +1 -0
  126. package/dist/runtime/render.js +1 -1
  127. package/dist/runtime/render.js.map +1 -1
  128. package/dist/runtime/run.d.ts +3 -1
  129. package/dist/runtime/run.js +15 -7
  130. package/dist/runtime/run.js.map +1 -1
  131. package/dist/runtime/scheduler.js +8 -16
  132. package/dist/runtime/scheduler.js.map +1 -1
  133. package/dist/runtime/to-vnode.d.ts +2 -2
  134. package/dist/runtime/to-vnode.js +68 -20
  135. package/dist/runtime/to-vnode.js.map +1 -1
  136. package/dist/runtime/vdom.d.ts +4 -2
  137. package/dist/runtime/vdom.js +89 -41
  138. package/dist/runtime/vdom.js.map +1 -1
  139. package/dist/runtime/vnode.d.ts +138 -67
  140. package/dist/runtime/vnode.js +17 -12
  141. package/dist/runtime/vnode.js.map +1 -1
  142. package/dist/select/index.d.ts +19 -0
  143. package/dist/select/index.js +95 -0
  144. package/dist/select/index.js.map +1 -0
  145. package/dist/select/keydown.js.map +1 -0
  146. package/dist/{components/select/select.d.ts → select/primitives.d.ts} +5 -7
  147. package/dist/{components/select/select.js → select/primitives.js} +11 -63
  148. package/dist/select/primitives.js.map +1 -0
  149. package/dist/server/stream.js +22 -29
  150. package/dist/server/stream.js.map +1 -1
  151. package/dist/shared/focus-styles.d.ts +1 -0
  152. package/dist/shared/focus-styles.js +2 -0
  153. package/dist/shared/focus-styles.js.map +1 -0
  154. package/dist/shared/icons.d.ts +9 -0
  155. package/dist/shared/icons.js +42 -0
  156. package/dist/shared/icons.js.map +1 -0
  157. package/dist/shared/listbox-popover-styles.d.ts +6 -0
  158. package/dist/shared/listbox-popover-styles.js +137 -0
  159. package/dist/shared/listbox-popover-styles.js.map +1 -0
  160. package/dist/shared/style-values.d.ts +78 -0
  161. package/dist/shared/style-values.js +88 -0
  162. package/dist/shared/style-values.js.map +1 -0
  163. package/dist/{interactions/typeahead/typeahead-mixin.js → shared/typeahead.js} +1 -1
  164. package/dist/shared/typeahead.js.map +1 -0
  165. package/dist/shared/wait-for-css-transition.js.map +1 -0
  166. package/dist/shared/wait.js.map +1 -0
  167. package/dist/style/css-mixin.js +3 -3
  168. package/dist/style/index.js +2 -2
  169. package/dist/style/style.js +25 -6
  170. package/dist/style/style.js.map +1 -1
  171. package/dist/style/stylesheet.d.ts +0 -1
  172. package/dist/style/stylesheet.js +13 -54
  173. package/dist/style/stylesheet.js.map +1 -1
  174. package/dist/tabs/index.d.ts +32 -0
  175. package/dist/tabs/index.js +157 -0
  176. package/dist/tabs/index.js.map +1 -0
  177. package/dist/tabs/primitives.d.ts +57 -0
  178. package/dist/tabs/primitives.js +238 -0
  179. package/dist/tabs/primitives.js.map +1 -0
  180. package/dist/test.js +1 -1
  181. package/dist/toggle/index.d.ts +9 -0
  182. package/dist/toggle/index.js +108 -0
  183. package/dist/toggle/index.js.map +1 -0
  184. package/dist/toggle/primitives.d.ts +29 -0
  185. package/dist/toggle/primitives.js +127 -0
  186. package/dist/toggle/primitives.js.map +1 -0
  187. package/package.json +81 -49
  188. package/src/{components/accordion → accordion}/README.md +50 -14
  189. package/src/accordion/index.tsx +285 -0
  190. package/src/accordion/primitives.tsx +512 -0
  191. package/src/{components/anchor → anchor}/README.md +37 -2
  192. package/src/animation/animate-mixins.ts +3 -3
  193. package/src/animation/demos/color-interpolation.tsx +1 -1
  194. package/src/animation/demos/reordering.tsx +9 -6
  195. package/src/{components/breadcrumbs → breadcrumbs}/README.md +4 -4
  196. package/src/{components/breadcrumbs/breadcrumbs.tsx → breadcrumbs/index.tsx} +18 -18
  197. package/src/button/README.md +44 -0
  198. package/src/button/index.ts +168 -0
  199. package/src/checkbox/README.md +59 -0
  200. package/src/checkbox/index.ts +164 -0
  201. package/src/{components/combobox → combobox}/README.md +58 -9
  202. package/src/combobox/index.tsx +112 -0
  203. package/src/{components/combobox/combobox.tsx → combobox/primitives.tsx} +5 -91
  204. package/src/dev/refresh.ts +1 -0
  205. package/src/index.ts +1 -1
  206. package/src/input/README.md +52 -0
  207. package/src/input/index.ts +147 -0
  208. package/src/{components/listbox → listbox}/README.md +9 -41
  209. package/src/{components/listbox/listbox.ts → listbox/index.ts} +2 -87
  210. package/src/{components/menu → menu}/README.md +55 -14
  211. package/src/menu/index.tsx +354 -0
  212. package/src/{components/menu/menu.tsx → menu/primitives.tsx} +99 -413
  213. package/src/{components/popover → popover}/README.md +20 -39
  214. package/src/{components/popover/popover.ts → popover/index.ts} +3 -57
  215. package/src/{utils → popover}/scroll-lock.ts +0 -28
  216. package/src/radio/README.md +53 -0
  217. package/src/radio/index.ts +101 -0
  218. package/src/runtime/client-entry-boundary.ts +54 -0
  219. package/src/runtime/component.ts +65 -16
  220. package/src/runtime/core/attributes.ts +35 -1
  221. package/src/runtime/core/children.ts +24 -2
  222. package/src/runtime/core/vnode.ts +25 -4
  223. package/src/runtime/create-element.ts +6 -5
  224. package/src/runtime/demos/readme.demo.tsx +20 -18
  225. package/src/runtime/diff-dom.ts +358 -243
  226. package/src/runtime/dom.ts +331 -214
  227. package/src/runtime/element-function.ts +1 -0
  228. package/src/runtime/event-listeners.ts +1 -1
  229. package/src/runtime/form-navigation.ts +184 -0
  230. package/src/runtime/frame-resolution.ts +13 -0
  231. package/src/runtime/frame.ts +482 -124
  232. package/src/runtime/jsx.ts +3 -5
  233. package/src/runtime/key.ts +1 -0
  234. package/src/runtime/mixins/link-mixin.ts +1 -0
  235. package/src/runtime/mixins/mixin.ts +21 -18
  236. package/src/runtime/navigation.ts +204 -30
  237. package/src/runtime/reconcile.ts +769 -760
  238. package/src/runtime/refresh.ts +46 -0
  239. package/src/runtime/run.ts +12 -2
  240. package/src/runtime/scheduler.ts +9 -29
  241. package/src/runtime/to-vnode.ts +85 -23
  242. package/src/runtime/vdom.ts +91 -69
  243. package/src/runtime/vnode.ts +192 -88
  244. package/src/{components/select → select}/README.md +29 -19
  245. package/src/select/index.tsx +159 -0
  246. package/src/{components/select/select.tsx → select/primitives.tsx} +10 -98
  247. package/src/server/stream.ts +25 -31
  248. package/src/shared/focus-styles.ts +2 -0
  249. package/src/shared/icons.tsx +62 -0
  250. package/src/shared/listbox-popover-styles.ts +146 -0
  251. package/src/shared/style-values.ts +165 -0
  252. package/src/style/style.ts +25 -6
  253. package/src/style/stylesheet.ts +32 -57
  254. package/src/tabs/README.md +141 -0
  255. package/src/tabs/index.tsx +245 -0
  256. package/src/tabs/primitives.ts +365 -0
  257. package/src/test/README.md +151 -60
  258. package/src/toggle/README.md +56 -0
  259. package/src/toggle/index.tsx +136 -0
  260. package/src/toggle/primitives.ts +192 -0
  261. package/dist/animation/demos/animation.demo.d.ts +0 -5
  262. package/dist/animation/demos/animation.demo.js +0 -92
  263. package/dist/animation/demos/animation.demo.js.map +0 -1
  264. package/dist/animation/demos/spring.demo.d.ts +0 -6
  265. package/dist/animation/demos/spring.demo.js +0 -304
  266. package/dist/animation/demos/spring.demo.js.map +0 -1
  267. package/dist/components/accordion/accordion.d.ts +0 -92
  268. package/dist/components/accordion/accordion.js +0 -335
  269. package/dist/components/accordion/accordion.js.map +0 -1
  270. package/dist/components/accordion/demos/card.demo.d.ts +0 -7
  271. package/dist/components/accordion/demos/card.demo.js +0 -59
  272. package/dist/components/accordion/demos/card.demo.js.map +0 -1
  273. package/dist/components/accordion/demos/multiple.demo.d.ts +0 -7
  274. package/dist/components/accordion/demos/multiple.demo.js +0 -20
  275. package/dist/components/accordion/demos/multiple.demo.js.map +0 -1
  276. package/dist/components/accordion/demos/overview.demo.d.ts +0 -7
  277. package/dist/components/accordion/demos/overview.demo.js +0 -20
  278. package/dist/components/accordion/demos/overview.demo.js.map +0 -1
  279. package/dist/components/anchor/anchor.js.map +0 -1
  280. package/dist/components/breadcrumbs/basic.demo.d.ts +0 -6
  281. package/dist/components/breadcrumbs/basic.demo.js +0 -15
  282. package/dist/components/breadcrumbs/basic.demo.js.map +0 -1
  283. package/dist/components/breadcrumbs/breadcrumbs.js.map +0 -1
  284. package/dist/components/breadcrumbs/separator.demo.d.ts +0 -6
  285. package/dist/components/breadcrumbs/separator.demo.js +0 -15
  286. package/dist/components/breadcrumbs/separator.demo.js.map +0 -1
  287. package/dist/components/button/button.d.ts +0 -105
  288. package/dist/components/button/button.js +0 -207
  289. package/dist/components/button/button.js.map +0 -1
  290. package/dist/components/button/demos/aliases.demo.d.ts +0 -7
  291. package/dist/components/button/demos/aliases.demo.js +0 -19
  292. package/dist/components/button/demos/aliases.demo.js.map +0 -1
  293. package/dist/components/button/demos/basic.demo.d.ts +0 -7
  294. package/dist/components/button/demos/basic.demo.js +0 -20
  295. package/dist/components/button/demos/basic.demo.js.map +0 -1
  296. package/dist/components/button/demos/states.demo.d.ts +0 -7
  297. package/dist/components/button/demos/states.demo.js +0 -30
  298. package/dist/components/button/demos/states.demo.js.map +0 -1
  299. package/dist/components/combobox/combobox.js.map +0 -1
  300. package/dist/components/combobox/overview.demo.d.ts +0 -7
  301. package/dist/components/combobox/overview.demo.js +0 -154
  302. package/dist/components/combobox/overview.demo.js.map +0 -1
  303. package/dist/components/glyph/glyph.d.ts +0 -14
  304. package/dist/components/glyph/glyph.js +0 -65
  305. package/dist/components/glyph/glyph.js.map +0 -1
  306. package/dist/components/listbox/listbox.js.map +0 -1
  307. package/dist/components/listbox/overview.demo.d.ts +0 -7
  308. package/dist/components/listbox/overview.demo.js +0 -65
  309. package/dist/components/listbox/overview.demo.js.map +0 -1
  310. package/dist/components/menu/demos/bubbling.demo.d.ts +0 -6
  311. package/dist/components/menu/demos/bubbling.demo.js +0 -16
  312. package/dist/components/menu/demos/bubbling.demo.js.map +0 -1
  313. package/dist/components/menu/demos/context-trigger.demo.d.ts +0 -7
  314. package/dist/components/menu/demos/context-trigger.demo.js +0 -87
  315. package/dist/components/menu/demos/context-trigger.demo.js.map +0 -1
  316. package/dist/components/menu/demos/overview.demo.d.ts +0 -7
  317. package/dist/components/menu/demos/overview.demo.js +0 -33
  318. package/dist/components/menu/demos/overview.demo.js.map +0 -1
  319. package/dist/components/menu/hover-aim.js.map +0 -1
  320. package/dist/components/menu/menu.js.map +0 -1
  321. package/dist/components/popover/overview.demo.d.ts +0 -7
  322. package/dist/components/popover/overview.demo.js +0 -65
  323. package/dist/components/popover/overview.demo.js.map +0 -1
  324. package/dist/components/popover/popover.js.map +0 -1
  325. package/dist/components/select/deconstructed.demo.d.ts +0 -7
  326. package/dist/components/select/deconstructed.demo.js +0 -54
  327. package/dist/components/select/deconstructed.demo.js.map +0 -1
  328. package/dist/components/select/overview.demo.d.ts +0 -6
  329. package/dist/components/select/overview.demo.js +0 -28
  330. package/dist/components/select/overview.demo.js.map +0 -1
  331. package/dist/components/select/select.js.map +0 -1
  332. package/dist/components/separator/separator.d.ts +0 -2
  333. package/dist/components/separator/separator.js +0 -15
  334. package/dist/components/separator/separator.js.map +0 -1
  335. package/dist/components/tabs/tabs.d.ts +0 -78
  336. package/dist/components/tabs/tabs.js +0 -339
  337. package/dist/components/tabs/tabs.js.map +0 -1
  338. package/dist/interactions/keydown/keydown.js.map +0 -1
  339. package/dist/interactions/outside-click/outside-click-mixin.js.map +0 -1
  340. package/dist/interactions/typeahead/typeahead-mixin.js.map +0 -1
  341. package/dist/runtime/demos/basic.demo.d.ts +0 -6
  342. package/dist/runtime/demos/basic.demo.js +0 -16
  343. package/dist/runtime/demos/basic.demo.js.map +0 -1
  344. package/dist/runtime/demos/controlled-uncontrolled-values.demo.d.ts +0 -6
  345. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js +0 -77
  346. package/dist/runtime/demos/controlled-uncontrolled-values.demo.js.map +0 -1
  347. package/dist/runtime/demos/keyed-list.demo.d.ts +0 -6
  348. package/dist/runtime/demos/keyed-list.demo.js +0 -62
  349. package/dist/runtime/demos/keyed-list.demo.js.map +0 -1
  350. package/dist/runtime/demos/readme.demo.d.ts +0 -5
  351. package/dist/runtime/demos/readme.demo.js +0 -396
  352. package/dist/runtime/demos/readme.demo.js.map +0 -1
  353. package/dist/theme/contract.d.ts +0 -61
  354. package/dist/theme/contract.js +0 -131
  355. package/dist/theme/contract.js.map +0 -1
  356. package/dist/theme/glyph-contract.d.ts +0 -11
  357. package/dist/theme/glyph-contract.js +0 -34
  358. package/dist/theme/glyph-contract.js.map +0 -1
  359. package/dist/theme/presets/rmx-01/glyphs.d.ts +0 -2
  360. package/dist/theme/presets/rmx-01/glyphs.js +0 -252
  361. package/dist/theme/presets/rmx-01/glyphs.js.map +0 -1
  362. package/dist/theme/presets/rmx-01/index.d.ts +0 -4
  363. package/dist/theme/presets/rmx-01/index.js +0 -119
  364. package/dist/theme/presets/rmx-01/index.js.map +0 -1
  365. package/dist/theme/runtime.d.ts +0 -2
  366. package/dist/theme/runtime.js +0 -84
  367. package/dist/theme/runtime.js.map +0 -1
  368. package/dist/theme/theme.d.ts +0 -6
  369. package/dist/theme/theme.js +0 -5
  370. package/dist/theme/theme.js.map +0 -1
  371. package/dist/utils/flash-attribute.js.map +0 -1
  372. package/dist/utils/scroll-lock.d.ts +0 -3
  373. package/dist/utils/scroll-lock.js.map +0 -1
  374. package/dist/utils/wait-for-css-transition.js.map +0 -1
  375. package/dist/utils/wait.js.map +0 -1
  376. package/src/animation/demos/animation.demo.tsx +0 -194
  377. package/src/animation/demos/spring.demo.tsx +0 -385
  378. package/src/components/accordion/accordion.tsx +0 -565
  379. package/src/components/accordion/demos/card.demo.tsx +0 -114
  380. package/src/components/accordion/demos/multiple.demo.tsx +0 -57
  381. package/src/components/accordion/demos/overview.demo.tsx +0 -57
  382. package/src/components/breadcrumbs/basic.demo.tsx +0 -18
  383. package/src/components/breadcrumbs/separator.demo.tsx +0 -19
  384. package/src/components/button/README.md +0 -44
  385. package/src/components/button/button.tsx +0 -286
  386. package/src/components/button/demos/aliases.demo.tsx +0 -28
  387. package/src/components/button/demos/basic.demo.tsx +0 -31
  388. package/src/components/button/demos/states.demo.tsx +0 -53
  389. package/src/components/combobox/overview.demo.tsx +0 -200
  390. package/src/components/glyph/README.md +0 -72
  391. package/src/components/glyph/glyph.tsx +0 -110
  392. package/src/components/listbox/overview.demo.tsx +0 -102
  393. package/src/components/menu/demos/bubbling.demo.tsx +0 -35
  394. package/src/components/menu/demos/context-trigger.demo.tsx +0 -133
  395. package/src/components/menu/demos/overview.demo.tsx +0 -77
  396. package/src/components/popover/overview.demo.tsx +0 -144
  397. package/src/components/select/deconstructed.demo.tsx +0 -96
  398. package/src/components/select/overview.demo.tsx +0 -52
  399. package/src/components/separator/separator.ts +0 -19
  400. package/src/components/tabs/README.md +0 -105
  401. package/src/components/tabs/tabs.tsx +0 -504
  402. package/src/runtime/demos/basic.demo.tsx +0 -21
  403. package/src/runtime/demos/controlled-uncontrolled-values.demo.tsx +0 -177
  404. package/src/runtime/demos/keyed-list.demo.tsx +0 -94
  405. package/src/theme/README.md +0 -103
  406. package/src/theme/contract.ts +0 -215
  407. package/src/theme/glyph-contract.ts +0 -59
  408. package/src/theme/presets/rmx-01/glyphs.tsx +0 -308
  409. package/src/theme/presets/rmx-01/index.ts +0 -123
  410. package/src/theme/runtime.ts +0 -119
  411. package/src/theme/theme.ts +0 -15
  412. package/src/utils/scroll-lock/README.md +0 -33
  413. /package/dist/{components/anchor/anchor.d.ts → anchor/index.d.ts} +0 -0
  414. /package/dist/{components/breadcrumbs/breadcrumbs.d.ts → breadcrumbs/index.d.ts} +0 -0
  415. /package/dist/{utils → listbox}/flash-attribute.d.ts +0 -0
  416. /package/dist/{utils → listbox}/flash-attribute.js +0 -0
  417. /package/dist/{components/menu → menu}/hover-aim.d.ts +0 -0
  418. /package/dist/{components/menu → menu}/hover-aim.js +0 -0
  419. /package/dist/{interactions/outside-click/outside-click-mixin.d.ts → popover/outside-click.d.ts} +0 -0
  420. /package/dist/{interactions/keydown → select}/keydown.d.ts +0 -0
  421. /package/dist/{interactions/keydown → select}/keydown.js +0 -0
  422. /package/dist/{interactions/typeahead/typeahead-mixin.d.ts → shared/typeahead.d.ts} +0 -0
  423. /package/dist/{utils → shared}/wait-for-css-transition.d.ts +0 -0
  424. /package/dist/{utils → shared}/wait-for-css-transition.js +0 -0
  425. /package/dist/{utils → shared}/wait.d.ts +0 -0
  426. /package/dist/{utils → shared}/wait.js +0 -0
  427. /package/src/{components/anchor/anchor.ts → anchor/index.ts} +0 -0
  428. /package/src/{utils → listbox}/flash-attribute.ts +0 -0
  429. /package/src/{components/menu → menu}/hover-aim.ts +0 -0
  430. /package/src/{interactions/outside-click/outside-click-mixin.ts → popover/outside-click.ts} +0 -0
  431. /package/src/{interactions/keydown → select}/keydown.ts +0 -0
  432. /package/src/{interactions/typeahead/typeahead-mixin.ts → shared/typeahead.ts} +0 -0
  433. /package/src/{utils → shared}/wait-for-css-transition.ts +0 -0
  434. /package/src/{utils → shared}/wait.ts +0 -0
@@ -1,94 +0,0 @@
1
- import { on, type Handle } from '@remix-run/ui'
2
-
3
- type ListItem = {
4
- id: string
5
- label: string
6
- }
7
-
8
- /**
9
- * @name Keyed List
10
- * @description Exercises keyed DOM reconciliation with shuffling, reversing, and per-item controls.
11
- */
12
- export default function App(handle: Handle) {
13
- let items: ListItem[] = [
14
- { id: 'a', label: 'Item A' },
15
- { id: 'b', label: 'Item B' },
16
- { id: 'c', label: 'Item C' },
17
- { id: 'd', label: 'Item D' },
18
- ]
19
-
20
- let shuffleInterval: ReturnType<typeof setInterval> | null = null
21
-
22
- let moveUp = (index: number) => {
23
- if (index === 0) return
24
- let newItems = [...items]
25
- ;[newItems[index - 1], newItems[index]] = [newItems[index], newItems[index - 1]]
26
- items = newItems
27
- handle.update()
28
- }
29
-
30
- let moveDown = (index: number) => {
31
- if (index === items.length - 1) return
32
- let newItems = [...items]
33
- ;[newItems[index], newItems[index + 1]] = [newItems[index + 1], newItems[index]]
34
- items = newItems
35
- handle.update()
36
- }
37
-
38
- let reverse = () => {
39
- items = [...items].reverse()
40
- handle.update()
41
- }
42
-
43
- let shuffle = () => {
44
- let newItems = [...items]
45
- for (let i = newItems.length - 1; i > 0; i--) {
46
- let j = Math.floor(Math.random() * (i + 1))
47
- ;[newItems[i], newItems[j]] = [newItems[j], newItems[i]]
48
- }
49
- items = newItems
50
- handle.update()
51
- }
52
-
53
- let toggleAutoShuffle = () => {
54
- if (shuffleInterval !== null) {
55
- clearInterval(shuffleInterval)
56
- shuffleInterval = null
57
- } else {
58
- shuffleInterval = setInterval(() => {
59
- shuffle()
60
- }, 1000)
61
- }
62
- handle.update()
63
- }
64
-
65
- return () => (
66
- <div>
67
- <div className="controls">
68
- <button mix={[on('click', reverse)]}>Reverse List</button>
69
- <button mix={[on('click', shuffle)]}>Shuffle List</button>
70
- <button mix={[on('click', toggleAutoShuffle)]}>
71
- {shuffleInterval !== null ? 'Stop Auto-Shuffle' : 'Start Auto-Shuffle'}
72
- </button>
73
- </div>
74
-
75
- {items.map((item, index) => (
76
- <div key={item.id} className="list-item">
77
- <input type="text" placeholder={item.label} defaultValue={item.label} />
78
- <button
79
- // disabled={index === 0}
80
- mix={[on('click', () => moveUp(index))]}
81
- >
82
-
83
- </button>
84
- <button
85
- // disabled={index === items.length - 1}
86
- mix={[on('click', () => moveDown(index))]}
87
- >
88
-
89
- </button>
90
- </div>
91
- ))}
92
- </div>
93
- )
94
- }
@@ -1,103 +0,0 @@
1
- # theme
2
-
3
- `theme` provides Remix UI design tokens, theme creation, glyph contracts, and the built-in `RMX_01` preset. Use it to install CSS custom properties once and consume typed token references in component styles.
4
-
5
- ## Usage
6
-
7
- ```tsx
8
- import { createTheme, theme } from 'remix/ui/theme'
9
- import { css } from 'remix/ui'
10
-
11
- let Theme = createTheme({
12
- space: {
13
- none: '0px',
14
- px: '1px',
15
- xs: '2px',
16
- sm: '4px',
17
- md: '8px',
18
- lg: '12px',
19
- xl: '16px',
20
- xxl: '24px',
21
- },
22
- radius: { none: '0px', sm: '4px', md: '8px', lg: '12px', xl: '16px', full: '9999px' },
23
- fontFamily: { sans: 'Inter, sans-serif', mono: 'monospace' },
24
- fontSize: {
25
- xxxs: '10px',
26
- xxs: '11px',
27
- xs: '12px',
28
- sm: '14px',
29
- md: '16px',
30
- lg: '18px',
31
- xl: '20px',
32
- xxl: '28px',
33
- },
34
- lineHeight: { tight: '1.2', normal: '1.5', relaxed: '1.7' },
35
- letterSpacing: { tight: '-0.02em', normal: '0', meta: '0.06em', wide: '0.08em' },
36
- fontWeight: { normal: '400', medium: '500', semibold: '600', bold: '700' },
37
- control: { height: { sm: '28px', md: '32px', lg: '36px' } },
38
- surface: { lvl0: '#fff', lvl1: '#f8fafc', lvl2: '#f5f5f5', lvl3: '#f1f5f9', lvl4: '#e9eef6' },
39
- shadow: { xs: 'none', sm: 'none', md: 'none', lg: 'none', xl: 'none' },
40
- colors: {
41
- text: { primary: '#111827', secondary: '#374151', muted: '#6b7280', link: '#2563eb' },
42
- border: { subtle: '#e5e7eb', default: '#d1d5db', strong: '#9ca3af' },
43
- focus: { ring: '#3b82f6' },
44
- overlay: { scrim: 'rgb(0 0 0 / 0.45)' },
45
- action: {
46
- primary: {
47
- background: '#2563eb',
48
- backgroundHover: '#1d4ed8',
49
- backgroundActive: '#1e40af',
50
- foreground: '#fff',
51
- border: '#2563eb',
52
- },
53
- secondary: {
54
- background: '#fff',
55
- backgroundHover: '#f8fafc',
56
- backgroundActive: '#f1f5f9',
57
- foreground: '#111827',
58
- border: '#d1d5db',
59
- },
60
- danger: {
61
- background: '#dc2626',
62
- backgroundHover: '#b91c1c',
63
- backgroundActive: '#991b1b',
64
- foreground: '#fff',
65
- border: '#dc2626',
66
- },
67
- },
68
- },
69
- })
70
-
71
- let card = css({
72
- backgroundColor: theme.surface.lvl0,
73
- color: theme.colors.text.primary,
74
- })
75
-
76
- function Layout() {
77
- return (
78
- <body>
79
- <Theme />
80
- <article mix={card}>Project status</article>
81
- </body>
82
- )
83
- }
84
- ```
85
-
86
- ## `theme.*`
87
-
88
- - `theme`: typed CSS variable reference contract, such as `theme.space.md` and `theme.colors.text.primary`.
89
- - `createTheme(values, options?)`: creates a style component with `cssText`, `selector`, `values`, `vars`, and `Style`.
90
- - `RMX_01`: built-in theme component.
91
- - `RMX_01_GLYPHS`: built-in glyph sheet component.
92
- - `glyphContract` and `glyphNames`: stable glyph ids and supported glyph names.
93
- - `ThemeValues`, `ThemeVars`, `ThemeComponent`, `ThemeStyleProps`, `CreateThemeOptions`, and `ThemeMix`: public TypeScript types for custom themes.
94
- - `GlyphName`, `GlyphSymbol`, and `GlyphValues`: public TypeScript types for glyph contracts.
95
-
96
- ## Behavior Notes
97
-
98
- - `theme` values are CSS variable references, not raw token values.
99
- - `createTheme` serializes token values into CSS custom properties and renders a `<style data-rmx-theme>` tag.
100
- - The default selector is `:root`; pass `selector` for scoped themes.
101
- - The base reset is included by default, emitted in `rmx-reset`, and can be disabled with `reset: false`.
102
- - The built-in components consume this token contract through their style mixins.
103
- - Render `<RMX_01 />` and `<RMX_01_GLYPHS />` once when using the built-in theme and glyph preset.
@@ -1,215 +0,0 @@
1
- import type { css, Handle, MixinDescriptor, RemixElement } from '@remix-run/ui'
2
-
3
- export interface ThemeVariableTree {
4
- [key: string]: string | ThemeVariableTree
5
- }
6
-
7
- type ThemeVariableGroup<key extends string> = Readonly<Record<key, string>>
8
- type ThemeActionVariableGroup = ThemeVariableGroup<
9
- 'background' | 'backgroundHover' | 'backgroundActive' | 'foreground' | 'border'
10
- >
11
-
12
- type ThemeVariableNames = {
13
- readonly space: ThemeVariableGroup<'none' | 'px' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>
14
- readonly radius: ThemeVariableGroup<'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full'>
15
- readonly fontFamily: ThemeVariableGroup<'sans' | 'mono'>
16
- readonly fontSize: ThemeVariableGroup<'xxxs' | 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'>
17
- readonly lineHeight: ThemeVariableGroup<'tight' | 'normal' | 'relaxed'>
18
- readonly letterSpacing: ThemeVariableGroup<'tight' | 'normal' | 'meta' | 'wide'>
19
- readonly fontWeight: ThemeVariableGroup<'normal' | 'medium' | 'semibold' | 'bold'>
20
- readonly control: {
21
- readonly height: ThemeVariableGroup<'sm' | 'md' | 'lg'>
22
- }
23
- readonly surface: ThemeVariableGroup<'lvl0' | 'lvl1' | 'lvl2' | 'lvl3' | 'lvl4'>
24
- readonly shadow: ThemeVariableGroup<'xs' | 'sm' | 'md' | 'lg' | 'xl'>
25
- readonly colors: {
26
- readonly text: ThemeVariableGroup<'primary' | 'secondary' | 'muted' | 'link'>
27
- readonly border: ThemeVariableGroup<'subtle' | 'default' | 'strong'>
28
- readonly focus: ThemeVariableGroup<'ring'>
29
- readonly overlay: ThemeVariableGroup<'scrim'>
30
- readonly action: {
31
- readonly primary: ThemeActionVariableGroup
32
- readonly secondary: ThemeActionVariableGroup
33
- readonly danger: ThemeActionVariableGroup
34
- }
35
- }
36
- }
37
-
38
- const themeVariableNamesSource: ThemeVariableNames = {
39
- space: {
40
- none: '--rmx-space-none',
41
- px: '--rmx-space-px',
42
- xs: '--rmx-space-xs',
43
- sm: '--rmx-space-sm',
44
- md: '--rmx-space-md',
45
- lg: '--rmx-space-lg',
46
- xl: '--rmx-space-xl',
47
- xxl: '--rmx-space-xxl',
48
- },
49
- radius: {
50
- none: '--rmx-radius-none',
51
- sm: '--rmx-radius-sm',
52
- md: '--rmx-radius-md',
53
- lg: '--rmx-radius-lg',
54
- xl: '--rmx-radius-xl',
55
- full: '--rmx-radius-full',
56
- },
57
- fontFamily: {
58
- sans: '--rmx-font-family-sans',
59
- mono: '--rmx-font-family-mono',
60
- },
61
- fontSize: {
62
- xxxs: '--rmx-font-size-xxxs',
63
- xxs: '--rmx-font-size-xxs',
64
- xs: '--rmx-font-size-xs',
65
- sm: '--rmx-font-size-sm',
66
- md: '--rmx-font-size-md',
67
- lg: '--rmx-font-size-lg',
68
- xl: '--rmx-font-size-xl',
69
- xxl: '--rmx-font-size-xxl',
70
- },
71
- lineHeight: {
72
- tight: '--rmx-line-height-tight',
73
- normal: '--rmx-line-height-normal',
74
- relaxed: '--rmx-line-height-relaxed',
75
- },
76
- letterSpacing: {
77
- tight: '--rmx-letter-spacing-tight',
78
- normal: '--rmx-letter-spacing-normal',
79
- meta: '--rmx-letter-spacing-meta',
80
- wide: '--rmx-letter-spacing-wide',
81
- },
82
- fontWeight: {
83
- normal: '--rmx-font-weight-normal',
84
- medium: '--rmx-font-weight-medium',
85
- semibold: '--rmx-font-weight-semibold',
86
- bold: '--rmx-font-weight-bold',
87
- },
88
- control: {
89
- height: {
90
- sm: '--rmx-control-height-sm',
91
- md: '--rmx-control-height-md',
92
- lg: '--rmx-control-height-lg',
93
- },
94
- },
95
- surface: {
96
- lvl0: '--rmx-surface-lvl0',
97
- lvl1: '--rmx-surface-lvl1',
98
- lvl2: '--rmx-surface-lvl2',
99
- lvl3: '--rmx-surface-lvl3',
100
- lvl4: '--rmx-surface-lvl4',
101
- },
102
- shadow: {
103
- xs: '--rmx-shadow-xs',
104
- sm: '--rmx-shadow-sm',
105
- md: '--rmx-shadow-md',
106
- lg: '--rmx-shadow-lg',
107
- xl: '--rmx-shadow-xl',
108
- },
109
- colors: {
110
- text: {
111
- primary: '--rmx-color-text-primary',
112
- secondary: '--rmx-color-text-secondary',
113
- muted: '--rmx-color-text-muted',
114
- link: '--rmx-color-text-link',
115
- },
116
- border: {
117
- subtle: '--rmx-color-border-subtle',
118
- default: '--rmx-color-border-default',
119
- strong: '--rmx-color-border-strong',
120
- },
121
- focus: {
122
- ring: '--rmx-color-focus-ring',
123
- },
124
- overlay: {
125
- scrim: '--rmx-color-overlay-scrim',
126
- },
127
- action: {
128
- primary: {
129
- background: '--rmx-color-action-primary-background',
130
- backgroundHover: '--rmx-color-action-primary-background-hover',
131
- backgroundActive: '--rmx-color-action-primary-background-active',
132
- foreground: '--rmx-color-action-primary-foreground',
133
- border: '--rmx-color-action-primary-border',
134
- },
135
- secondary: {
136
- background: '--rmx-color-action-secondary-background',
137
- backgroundHover: '--rmx-color-action-secondary-background-hover',
138
- backgroundActive: '--rmx-color-action-secondary-background-active',
139
- foreground: '--rmx-color-action-secondary-foreground',
140
- border: '--rmx-color-action-secondary-border',
141
- },
142
- danger: {
143
- background: '--rmx-color-action-danger-background',
144
- backgroundHover: '--rmx-color-action-danger-background-hover',
145
- backgroundActive: '--rmx-color-action-danger-background-active',
146
- foreground: '--rmx-color-action-danger-foreground',
147
- border: '--rmx-color-action-danger-border',
148
- },
149
- },
150
- },
151
- } satisfies ThemeVariableTree
152
-
153
- export const themeVariableNames: ThemeVariableNames = themeVariableNamesSource
154
-
155
- type MapLeaves<source, leaf> = source extends string
156
- ? leaf
157
- : {
158
- [key in keyof source]: MapLeaves<source[key], leaf>
159
- }
160
-
161
- export type ThemeValue = string | number
162
- export type ThemeContract = MapLeaves<ThemeVariableNames, string>
163
- export type ThemeValues = MapLeaves<typeof themeVariableNames, ThemeValue>
164
- export type ThemeVars = Readonly<Record<string, string>>
165
- export type CreateThemeOptions = {
166
- selector?: string
167
- reset?: boolean
168
- }
169
- export type ThemeStyleProps = {
170
- nonce?: string
171
- }
172
-
173
- type ThemeRenderer = (handle: Handle<ThemeStyleProps>) => () => RemixElement
174
-
175
- export type ThemeComponent = ThemeRenderer & {
176
- Style: ThemeRenderer
177
- cssText: string
178
- selector: string
179
- values: ThemeValues
180
- vars: ThemeVars
181
- }
182
-
183
- export const theme: ThemeContract = createThemeContract(themeVariableNames)
184
-
185
- export type ThemeUtility = ReturnType<typeof css>
186
-
187
- type ThemeMixLeaf = MixinDescriptor<any, any, any>
188
- type PreviousThemeMixDepth = [0, 0, 1, 2, 3, 4]
189
- type NestedThemeMix<value, depth extends number = 4> = depth extends 0
190
- ? value | ReadonlyArray<value>
191
- : value | ReadonlyArray<NestedThemeMix<value, PreviousThemeMixDepth[depth]>>
192
-
193
- export type ThemeMix = NestedThemeMix<ThemeMixLeaf>
194
-
195
- function createThemeContract<tree extends ThemeVariableTree>(tree: tree): MapLeaves<tree, string> {
196
- return mapTreeLeaves(tree, (variableName) => `var(${variableName})`) as MapLeaves<tree, string>
197
- }
198
-
199
- function mapTreeLeaves(
200
- tree: ThemeVariableTree,
201
- mapLeaf: (value: string) => string,
202
- ): ThemeVariableTree {
203
- let output: ThemeVariableTree = {}
204
-
205
- for (let [key, value] of Object.entries(tree)) {
206
- if (typeof value === 'string') {
207
- output[key] = mapLeaf(value)
208
- continue
209
- }
210
-
211
- output[key] = mapTreeLeaves(value, mapLeaf)
212
- }
213
-
214
- return output
215
- }
@@ -1,59 +0,0 @@
1
- import type { RemixElement } from '@remix-run/ui'
2
-
3
- export const glyphNames = [
4
- 'add',
5
- 'alert',
6
- 'check',
7
- 'chevronDown',
8
- 'chevronVertical',
9
- 'chevronUp',
10
- 'chevronRight',
11
- 'close',
12
- 'copy',
13
- 'edit',
14
- 'expand',
15
- 'info',
16
- 'menu',
17
- 'open',
18
- 'search',
19
- 'spinner',
20
- 'trash',
21
- ] as const
22
-
23
- export type GlyphName = (typeof glyphNames)[number]
24
-
25
- export type GlyphSymbol = RemixElement
26
-
27
- export type GlyphValues = {
28
- readonly [key in GlyphName]: GlyphSymbol
29
- }
30
-
31
- export type GlyphContract = Readonly<Record<GlyphName, { id: string }>>
32
-
33
- const DEFAULT_GLYPH_ID_PREFIX = 'rmx-glyph'
34
-
35
- export const glyphContract: GlyphContract = Object.freeze(
36
- createGlyphContract(DEFAULT_GLYPH_ID_PREFIX),
37
- )
38
-
39
- function createGlyphIds(idPrefix: string): Record<GlyphName, string> {
40
- return Object.fromEntries(glyphNames.map((name) => [name, `${idPrefix}-${name}`])) as Record<
41
- GlyphName,
42
- string
43
- >
44
- }
45
-
46
- function createGlyphContract(idPrefix: string): GlyphContract {
47
- let ids = createGlyphIds(idPrefix)
48
-
49
- return Object.freeze(
50
- Object.fromEntries(
51
- glyphNames.map((name) => [
52
- name,
53
- {
54
- id: ids[name],
55
- },
56
- ]),
57
- ) as GlyphContract,
58
- )
59
- }