@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,77 +0,0 @@
1
- import { type Handle } from '@remix-run/ui'
2
- import { Menu, MenuItem, onMenuSelect, Submenu } from '@remix-run/ui/menu'
3
- import { separatorStyle } from '@remix-run/ui/separator'
4
-
5
- /**
6
- * @name Menu Overview
7
- * @description A hierarchical menu with checkboxes, radio groups, submenus, and separators.
8
- * @layout center
9
- */
10
- export default function Example(handle: Handle) {
11
- type Density = 'comfortable' | 'compact'
12
- let wordWrap = true
13
- let minimap = false
14
- let showGutter = true
15
- let density: Density = 'comfortable'
16
-
17
- return () => (
18
- <Menu
19
- label="View"
20
- menuLabel="View options"
21
- mix={onMenuSelect((event) => {
22
- switch (event.item.name) {
23
- case 'wordWrap':
24
- wordWrap = !wordWrap
25
- break
26
- case 'minimap':
27
- minimap = !minimap
28
- break
29
- case 'showGutter':
30
- showGutter = !showGutter
31
- break
32
- case 'density':
33
- density = event.item.value as Density
34
- break
35
- }
36
- handle.update()
37
- })}
38
- >
39
- <MenuItem name="wordWrap" type="checkbox" checked={wordWrap}>
40
- Word wrap
41
- </MenuItem>
42
- <MenuItem name="minimap" type="checkbox" checked={minimap}>
43
- Minimap
44
- </MenuItem>
45
- <MenuItem name="showGutter" type="checkbox" checked={showGutter}>
46
- Show gutter
47
- </MenuItem>
48
-
49
- <hr mix={separatorStyle} />
50
- <Submenu label="Zoom">
51
- <MenuItem name="zoomIn" value="zoom-in">
52
- Zoom In
53
- </MenuItem>
54
- <MenuItem name="zoomOut" value="zoom-out">
55
- Zoom Out
56
- </MenuItem>
57
- <MenuItem name="resetZoom" value="reset-zoom">
58
- Reset Zoom
59
- </MenuItem>
60
- </Submenu>
61
-
62
- <Submenu label="Density">
63
- <MenuItem
64
- name="density"
65
- type="radio"
66
- value="comfortable"
67
- checked={density === 'comfortable'}
68
- >
69
- Comfortable
70
- </MenuItem>
71
- <MenuItem name="density" type="radio" value="compact" checked={density === 'compact'}>
72
- Compact
73
- </MenuItem>
74
- </Submenu>
75
- </Menu>
76
- )
77
- }
@@ -1,144 +0,0 @@
1
- import { css, on, type Handle } from '@remix-run/ui'
2
- import { Button } from '@remix-run/ui/button'
3
- import { Glyph } from '@remix-run/ui/glyph'
4
- import * as popover from '@remix-run/ui/popover'
5
- import { Option, Select } from '@remix-run/ui/select'
6
- import { theme } from '@remix-run/ui/theme'
7
-
8
- /**
9
- * @name Popover Overview
10
- * @description A popover panel anchored to a trigger button, containing form controls and a close action.
11
- * @layout center
12
- */
13
- export default function Example(handle: Handle) {
14
- let open = false
15
-
16
- function closePopover() {
17
- open = false
18
- void handle.update()
19
- }
20
-
21
- return () => (
22
- <popover.Context>
23
- <div mix={buttonRowCss}>
24
- <Button
25
- endIcon={<Glyph name="chevronDown" />}
26
- mix={[
27
- popover.anchor({ placement: 'bottom' }),
28
- popover.focusOnHide(),
29
- on('click', () => {
30
- open = !open
31
- void handle.update()
32
- }),
33
- ]}
34
- tone="secondary"
35
- >
36
- View options
37
- </Button>
38
- </div>
39
-
40
- <div
41
- mix={[
42
- popover.surfaceStyle,
43
- popover.surface({
44
- closeOnAnchorClick: false,
45
- open,
46
- onHide() {
47
- closePopover()
48
- },
49
- }),
50
- ]}
51
- >
52
- <div mix={[popover.contentStyle, panelCss]}>
53
- <div mix={fieldCss}>
54
- <label for={`${handle.id}-grouping`} mix={labelCss}>
55
- Grouping
56
- </label>
57
- <Select
58
- id={`${handle.id}-grouping`}
59
- defaultLabel="No grouping"
60
- defaultValue="none"
61
- mix={[fieldSelectCss, popover.focusOnShow()]}
62
- >
63
- <Option label="No grouping" value="none" />
64
- <Option label="Status" value="status" />
65
- <Option label="Priority" value="priority" />
66
- </Select>
67
- </div>
68
-
69
- <div mix={fieldCss}>
70
- <label for={`${handle.id}-ordering`} mix={labelCss}>
71
- Ordering
72
- </label>
73
- <Select
74
- id={`${handle.id}-ordering`}
75
- defaultLabel="Manual"
76
- defaultValue="manual"
77
- mix={fieldSelectCss}
78
- >
79
- <Option label="Manual" value="manual" />
80
- <Option label="Newest first" value="newest" />
81
- <Option label="Oldest first" value="oldest" />
82
- </Select>
83
- </div>
84
-
85
- <div mix={fieldCss}>
86
- <label for={`${handle.id}-closed-projects`} mix={labelCss}>
87
- Show closed projects
88
- </label>
89
- <Select
90
- id={`${handle.id}-closed-projects`}
91
- defaultLabel="All"
92
- defaultValue="all"
93
- mix={fieldSelectCss}
94
- >
95
- <Option label="All" value="all" />
96
- <Option label="Open only" value="open" />
97
- <Option label="Closed only" value="closed" />
98
- </Select>
99
- </div>
100
-
101
- <div mix={actionsCss}>
102
- <Button mix={on('click', closePopover)} tone="ghost">
103
- Done
104
- </Button>
105
- </div>
106
- </div>
107
- </div>
108
- </popover.Context>
109
- )
110
- }
111
-
112
- const buttonRowCss = css({
113
- display: 'flex',
114
- justifyContent: 'flex-start',
115
- })
116
-
117
- const panelCss = css({
118
- display: 'grid',
119
- gap: theme.space.md,
120
- width: '22rem',
121
- padding: theme.space.lg,
122
- })
123
-
124
- const fieldCss = css({
125
- display: 'grid',
126
- gap: theme.space.px,
127
- })
128
-
129
- const labelCss = css({
130
- margin: 0,
131
- fontSize: theme.fontSize.xs,
132
- fontWeight: theme.fontWeight.semibold,
133
- color: theme.colors.text.primary,
134
- })
135
-
136
- const fieldSelectCss = css({
137
- width: '100%',
138
- })
139
-
140
- const actionsCss = css({
141
- display: 'flex',
142
- justifyContent: 'flex-end',
143
- paddingTop: theme.space.xs,
144
- })
@@ -1,96 +0,0 @@
1
- import { css, type Handle } from '@remix-run/ui'
2
- import * as button from '@remix-run/ui/button'
3
- import { Glyph } from '@remix-run/ui/glyph'
4
- import * as listbox from '@remix-run/ui/listbox'
5
- import * as popover from '@remix-run/ui/popover'
6
- import * as select from '@remix-run/ui/select'
7
- import { theme } from '@remix-run/ui/theme'
8
-
9
- /**
10
- * @name Select Deconstructed
11
- * @description Build a fully custom select by composing the select, popover, and listbox primitives directly.
12
- * @layout center
13
- */
14
- export default function Example(handle: Handle) {
15
- let label = 'Local'
16
- let value = 'local'
17
- let triggerId = `${handle.id}-trigger`
18
-
19
- return () => (
20
- <div
21
- mix={[
22
- stackCss,
23
- select.onSelectChange((event) => {
24
- label = event.label ?? 'Select an environment'
25
- value = event.value ?? 'null'
26
- void handle.update()
27
- }),
28
- ]}
29
- >
30
- <p mix={labelCss}>Environment</p>
31
-
32
- <select.Context defaultLabel="Local" defaultValue="local" name="environment">
33
- <button
34
- id={triggerId}
35
- type="button"
36
- mix={[button.baseStyle, select.triggerStyle, select.trigger(), selectCss]}
37
- >
38
- <span mix={button.labelStyle}>{label}</span>
39
- <Glyph mix={button.iconStyle} name="chevronVertical" />
40
- </button>
41
-
42
- <popover.Context>
43
- <div mix={[popover.surfaceStyle, select.popover()]}>
44
- <div
45
- aria-labelledby={triggerId}
46
- mix={[popover.contentStyle, listbox.listStyle, select.list()]}
47
- >
48
- {environmentOptions.map((option) => (
49
- <div key={option.value} mix={[listbox.optionStyle, select.option(option)]}>
50
- <Glyph mix={listbox.glyphStyle} name="check" />
51
- <span mix={listbox.labelStyle}>{option.label}</span>
52
- </div>
53
- ))}
54
- </div>
55
- </div>
56
- </popover.Context>
57
-
58
- <input mix={select.hiddenInput()} />
59
- </select.Context>
60
-
61
- <p mix={valueCss}>{`value=${value}`}</p>
62
- </div>
63
- )
64
- }
65
-
66
- const environmentOptions = [
67
- { label: 'Local', value: 'local' },
68
- { label: 'Staging', value: 'staging' },
69
- { label: 'Production', value: 'production' },
70
- { disabled: true, label: 'Archived', value: 'archived' },
71
- ] as const
72
-
73
- const selectCss = css({
74
- width: '16rem',
75
- })
76
-
77
- const stackCss = css({
78
- display: 'flex',
79
- flexDirection: 'column',
80
- gap: theme.space.sm,
81
- width: '100%',
82
- })
83
-
84
- const labelCss = css({
85
- margin: 0,
86
- fontSize: theme.fontSize.xs,
87
- fontWeight: theme.fontWeight.semibold,
88
- color: theme.colors.text.primary,
89
- })
90
-
91
- const valueCss = css({
92
- margin: 0,
93
- fontFamily: theme.fontFamily.mono,
94
- fontSize: theme.fontSize.xs,
95
- color: theme.colors.text.secondary,
96
- })
@@ -1,52 +0,0 @@
1
- import { css } from '@remix-run/ui'
2
- import { Option, Select } from '@remix-run/ui/select'
3
- import { theme } from '@remix-run/ui/theme'
4
-
5
- /**
6
- * @name Select Overview
7
- * @description A styled select control with a searchable dropdown and accessible label.
8
- * @layout center
9
- */
10
- export default function Example() {
11
- return () => (
12
- <div mix={stackCss}>
13
- <label for="fruit-select" mix={labelCss}>
14
- Choose a fruit
15
- </label>
16
- <Select
17
- id="fruit-select"
18
- defaultLabel="Banana"
19
- defaultValue="banana"
20
- name="fruit"
21
- mix={selectCss}
22
- >
23
- <Option label="Apple" value="apple" />
24
- <Option label="Apricot" value="apricot" />
25
- <Option label="Banana" value="banana" />
26
- <Option label="Blackberry" value="blackberry" />
27
- <Option label="Blackcurrant" value="blackcurrant" />
28
- <Option label="Blueberry" value="blueberry" />
29
- <Option label="Boysenberry" value="boysenberry" />
30
- <Option label="Cantaloupe" value="cantaloupe" />
31
- </Select>
32
- </div>
33
- )
34
- }
35
-
36
- const selectCss = css({
37
- width: '16rem',
38
- })
39
-
40
- const stackCss = css({
41
- display: 'flex',
42
- flexDirection: 'column',
43
- gap: theme.space.sm,
44
- width: '100%',
45
- })
46
-
47
- const labelCss = css({
48
- margin: 0,
49
- fontSize: theme.fontSize.xs,
50
- fontWeight: theme.fontWeight.semibold,
51
- color: theme.colors.text.primary,
52
- })
@@ -1,19 +0,0 @@
1
- import { css, type CSSMixinDescriptor } from '@remix-run/ui'
2
-
3
- import { theme } from '../../theme/theme.ts'
4
-
5
- const itemInset = `var(--rmx-ui-item-inset, ${theme.space.sm})`
6
- const itemIndicatorHalfInset =
7
- 'calc((var(--rmx-ui-item-indicator-width, 0px) + var(--rmx-ui-item-indicator-gap, 0px)) / 2)'
8
-
9
- const separatorCss: CSSMixinDescriptor = css({
10
- flexShrink: 0,
11
- margin: 0,
12
- marginBlock: theme.space.xs,
13
- marginInlineStart: `calc(${itemInset} + ${itemIndicatorHalfInset})`,
14
- marginInlineEnd: itemInset,
15
- border: 0,
16
- borderTop: `1px solid ${theme.colors.border.subtle}`,
17
- })
18
-
19
- export const separatorStyle = separatorCss
@@ -1,105 +0,0 @@
1
- # Tabs
2
-
3
- `tabs` is a primitive for building accessible tabs with automatic activation and simple default styling.
4
-
5
- Use it when you need a tablist, tab triggers, and tab panels. `tabs.listStyle` and `tabs.triggerStyle` style the tab row and triggers, but panel presentation stays app-owned.
6
-
7
- ## Usage
8
-
9
- ```tsx
10
- import { css, type Handle } from 'remix/ui'
11
- import { Tab, Tabs, TabsList, TabsPanel } from 'remix/ui/tabs'
12
-
13
- let panel = css({
14
- padding: '16px',
15
- border: '1px solid #d6d6d6',
16
- borderRadius: '16px',
17
- })
18
-
19
- export function ProjectTabs(_handle: Handle) {
20
- return () => (
21
- <Tabs defaultValue="overview">
22
- <TabsList aria-label="Project sections">
23
- <Tab value="overview">Overview</Tab>
24
- <Tab value="analytics">Analytics</Tab>
25
- <Tab value="reports">Reports</Tab>
26
- <Tab value="settings">Settings</Tab>
27
- </TabsList>
28
-
29
- <TabsPanel mix={panel} value="overview">
30
- View your key metrics and recent project activity.
31
- </TabsPanel>
32
- <TabsPanel mix={panel} value="analytics">
33
- Track trends and compare performance over time.
34
- </TabsPanel>
35
- <TabsPanel mix={panel} value="reports">
36
- Export and review your latest reports.
37
- </TabsPanel>
38
- <TabsPanel mix={panel} value="settings">
39
- Manage project preferences and defaults.
40
- </TabsPanel>
41
- </Tabs>
42
- )
43
- }
44
- ```
45
-
46
- ## `tabs.*`
47
-
48
- ### `tabs.Context`
49
-
50
- Provides the shared coordinator for one tabs instance.
51
-
52
- - Owns the selected tab value for uncontrolled usage.
53
- - Accepts controlled `value` plus `onValueChange` when the app owns selection state.
54
- - Accepts `orientation="vertical"` when the tablist should use `ArrowUp` and `ArrowDown`.
55
-
56
- ### `tabs.list()`
57
-
58
- Turns the host into the tablist.
59
-
60
- - Wires `role="tablist"`.
61
- - Adds `aria-orientation="vertical"` when needed.
62
-
63
- ### `tabs.trigger({ value, disabled })`
64
-
65
- Registers one tab trigger.
66
-
67
- - Wires `role="tab"`, `aria-selected`, `aria-controls`, and roving `tabIndex`.
68
- - Selects on press.
69
- - Supports `ArrowLeft` and `ArrowRight` for horizontal lists.
70
- - Supports `ArrowUp` and `ArrowDown` for vertical lists.
71
- - Supports `Home` and `End`.
72
-
73
- ### `tabs.panel({ value })`
74
-
75
- Turns the host into the panel for one tab value.
76
-
77
- - Wires `role="tabpanel"` and `aria-labelledby`.
78
- - Hides inactive panels with `hidden`.
79
-
80
- ### `onTabsChange(...)`
81
-
82
- The listener mixin for bubbled tab selection changes.
83
-
84
- - `event.value` is the newly selected tab value.
85
- - `event.previousValue` is the previously selected value, or `null`.
86
-
87
- ## Convenience Components
88
-
89
- - `Tabs` is a thin wrapper around `tabs.Context`.
90
- - `TabsList` applies `tabs.list()` with `tabs.listStyle`.
91
- - `Tab` applies `tabs.trigger(...)` with `button.baseStyle` and `tabs.triggerStyle`.
92
- - `TabsPanel` applies `tabs.panel(...)` without adding panel styling.
93
-
94
- ## Behavior Notes
95
-
96
- - When you do not provide `defaultValue` or controlled `value`, the first enabled tab becomes selected automatically.
97
- - Arrow-key navigation wraps and skips disabled tabs.
98
- - Selection follows focus during arrow-key navigation.
99
- - The default panel contract is behavioral only. Apps own spacing, borders, backgrounds, and layout for tab panels.
100
-
101
- ## When To Use Something Else
102
-
103
- - Use `accordion` when sections should expand and collapse independently instead of switching a single active panel.
104
- - Use `select` or `listbox` when the control chooses a form value instead of changing visible page sections.
105
- - Use `menu` for action lists and command surfaces.