@remix-run/ui 0.1.1 → 0.2.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 (243) hide show
  1. package/README.md +33 -10
  2. package/dist/animation/animate-layout-mixin.js +66 -66
  3. package/dist/animation/animate-layout-mixin.js.map +1 -1
  4. package/dist/animation/spring.d.ts +6 -35
  5. package/dist/animation/spring.js +9 -8
  6. package/dist/animation/spring.js.map +1 -1
  7. package/dist/components/accordion/accordion.d.ts +7 -7
  8. package/dist/components/accordion/accordion.js +0 -2
  9. package/dist/components/accordion/accordion.js.map +1 -1
  10. package/dist/components/accordion/demos/card.demo.d.ts +6 -0
  11. package/dist/components/accordion/demos/card.demo.js +58 -0
  12. package/dist/components/accordion/demos/card.demo.js.map +1 -0
  13. package/dist/components/accordion/demos/multiple.demo.d.ts +6 -0
  14. package/dist/components/accordion/demos/multiple.demo.js +19 -0
  15. package/dist/components/accordion/demos/multiple.demo.js.map +1 -0
  16. package/dist/components/accordion/demos/overview.demo.d.ts +6 -0
  17. package/dist/components/accordion/demos/overview.demo.js +19 -0
  18. package/dist/components/accordion/demos/overview.demo.js.map +1 -0
  19. package/dist/components/breadcrumbs/breadcrumbs.d.ts +1 -1
  20. package/dist/components/breadcrumbs/breadcrumbs.js +0 -2
  21. package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -1
  22. package/dist/components/breadcrumbs/demos/basic.demo.d.ts +5 -0
  23. package/dist/components/breadcrumbs/demos/basic.demo.js +14 -0
  24. package/dist/components/breadcrumbs/demos/basic.demo.js.map +1 -0
  25. package/dist/components/breadcrumbs/demos/separator.demo.d.ts +5 -0
  26. package/dist/components/breadcrumbs/demos/separator.demo.js +14 -0
  27. package/dist/components/breadcrumbs/demos/separator.demo.js.map +1 -0
  28. package/dist/components/button/button.d.ts +86 -4
  29. package/dist/components/button/button.js +63 -3
  30. package/dist/components/button/button.js.map +1 -1
  31. package/dist/components/button/demos/aliases.demo.d.ts +6 -0
  32. package/dist/components/button/demos/aliases.demo.js +18 -0
  33. package/dist/components/button/demos/aliases.demo.js.map +1 -0
  34. package/dist/components/button/demos/basic.demo.d.ts +6 -0
  35. package/dist/components/button/demos/basic.demo.js +19 -0
  36. package/dist/components/button/demos/basic.demo.js.map +1 -0
  37. package/dist/components/button/demos/states.demo.d.ts +6 -0
  38. package/dist/components/button/demos/states.demo.js +29 -0
  39. package/dist/components/button/demos/states.demo.js.map +1 -0
  40. package/dist/components/combobox/combobox.d.ts +11 -11
  41. package/dist/components/combobox/combobox.js +0 -2
  42. package/dist/components/combobox/combobox.js.map +1 -1
  43. package/dist/components/combobox/demos/overview.demo.d.ts +6 -0
  44. package/dist/components/combobox/demos/overview.demo.js +153 -0
  45. package/dist/components/combobox/demos/overview.demo.js.map +1 -0
  46. package/dist/components/listbox/demos/overview.demo.d.ts +6 -0
  47. package/dist/components/listbox/demos/overview.demo.js +64 -0
  48. package/dist/components/listbox/demos/overview.demo.js.map +1 -0
  49. package/dist/components/listbox/listbox.d.ts +4 -9
  50. package/dist/components/listbox/listbox.js +21 -33
  51. package/dist/components/listbox/listbox.js.map +1 -1
  52. package/dist/components/menu/demos/bubbling.demo.d.ts +5 -0
  53. package/dist/components/menu/demos/bubbling.demo.js +15 -0
  54. package/dist/components/menu/demos/bubbling.demo.js.map +1 -0
  55. package/dist/components/menu/demos/overview.demo.d.ts +6 -0
  56. package/dist/components/menu/demos/overview.demo.js +32 -0
  57. package/dist/components/menu/demos/overview.demo.js.map +1 -0
  58. package/dist/components/menu/menu.d.ts +15 -24
  59. package/dist/components/menu/menu.js +23 -38
  60. package/dist/components/menu/menu.js.map +1 -1
  61. package/dist/components/popover/demos/overview.demo.d.ts +6 -0
  62. package/dist/components/popover/demos/overview.demo.js +64 -0
  63. package/dist/components/popover/demos/overview.demo.js.map +1 -0
  64. package/dist/components/popover/popover.d.ts +5 -5
  65. package/dist/components/popover/popover.js.map +1 -1
  66. package/dist/components/select/demos/deconstructed.demo.d.ts +6 -0
  67. package/dist/components/select/demos/deconstructed.demo.js +53 -0
  68. package/dist/components/select/demos/deconstructed.demo.js.map +1 -0
  69. package/dist/components/select/demos/overview.demo.d.ts +5 -0
  70. package/dist/components/select/demos/overview.demo.js +27 -0
  71. package/dist/components/select/demos/overview.demo.js.map +1 -0
  72. package/dist/components/select/select.d.ts +11 -11
  73. package/dist/components/select/select.js +17 -26
  74. package/dist/components/select/select.js.map +1 -1
  75. package/dist/components/tabs/tabs.d.ts +6 -6
  76. package/dist/components/tabs/tabs.js +0 -2
  77. package/dist/components/tabs/tabs.js.map +1 -1
  78. package/dist/index.d.ts +2 -2
  79. package/dist/index.js.map +1 -1
  80. package/dist/interactions/keydown/keydown.d.ts +1 -1
  81. package/dist/interactions/outside-click/outside-click-mixin.d.ts +2 -1
  82. package/dist/interactions/typeahead/typeahead-mixin.d.ts +3 -1
  83. package/dist/runtime/component.d.ts +18 -12
  84. package/dist/runtime/component.js +93 -80
  85. package/dist/runtime/component.js.map +1 -1
  86. package/dist/runtime/core/attributes.d.ts +14 -0
  87. package/dist/runtime/core/attributes.js +103 -0
  88. package/dist/runtime/core/attributes.js.map +1 -0
  89. package/dist/runtime/core/children.d.ts +7 -0
  90. package/dist/runtime/core/children.js +30 -0
  91. package/dist/runtime/core/children.js.map +1 -0
  92. package/dist/runtime/core/props.d.ts +9 -0
  93. package/dist/runtime/core/props.js +170 -0
  94. package/dist/runtime/core/props.js.map +1 -0
  95. package/dist/runtime/core/vnode.d.ts +3 -0
  96. package/dist/runtime/core/vnode.js +39 -0
  97. package/dist/runtime/core/vnode.js.map +1 -0
  98. package/dist/runtime/create-element.js +2 -1
  99. package/dist/runtime/create-element.js.map +1 -1
  100. package/dist/runtime/diff-dom.js +47 -14
  101. package/dist/runtime/diff-dom.js.map +1 -1
  102. package/dist/runtime/diff-props.d.ts +1 -2
  103. package/dist/runtime/diff-props.js +2 -181
  104. package/dist/runtime/diff-props.js.map +1 -1
  105. package/dist/runtime/dom.d.ts +20 -9
  106. package/dist/runtime/frame.d.ts +23 -2
  107. package/dist/runtime/frame.js +41 -47
  108. package/dist/runtime/frame.js.map +1 -1
  109. package/dist/runtime/jsx.d.ts +1 -1
  110. package/dist/runtime/jsx.js +2 -28
  111. package/dist/runtime/jsx.js.map +1 -1
  112. package/dist/runtime/mixins/link-mixin.d.ts +5 -1
  113. package/dist/runtime/mixins/link-mixin.js.map +1 -1
  114. package/dist/runtime/mixins/mixin.d.ts +2 -1
  115. package/dist/runtime/mixins/mixin.js +9 -4
  116. package/dist/runtime/mixins/mixin.js.map +1 -1
  117. package/dist/runtime/mixins/on-mixin.d.ts +15 -4
  118. package/dist/runtime/mixins/on-mixin.js +9 -2
  119. package/dist/runtime/mixins/on-mixin.js.map +1 -1
  120. package/dist/runtime/mixins/ref-mixin.d.ts +2 -1
  121. package/dist/runtime/mixins/ref-mixin.js.map +1 -1
  122. package/dist/runtime/navigation.js +9 -1
  123. package/dist/runtime/navigation.js.map +1 -1
  124. package/dist/runtime/reconcile.d.ts +1 -1
  125. package/dist/runtime/reconcile.js +452 -197
  126. package/dist/runtime/reconcile.js.map +1 -1
  127. package/dist/runtime/run.d.ts +17 -2
  128. package/dist/runtime/run.js.map +1 -1
  129. package/dist/runtime/scheduler.d.ts +10 -10
  130. package/dist/runtime/scheduler.js +1 -1
  131. package/dist/runtime/scheduler.js.map +1 -1
  132. package/dist/runtime/stream-protocol.d.ts +8 -0
  133. package/dist/runtime/stream-protocol.js +20 -0
  134. package/dist/runtime/stream-protocol.js.map +1 -0
  135. package/dist/runtime/svg-attributes.js +1 -0
  136. package/dist/runtime/svg-attributes.js.map +1 -1
  137. package/dist/runtime/to-vnode.js +7 -11
  138. package/dist/runtime/to-vnode.js.map +1 -1
  139. package/dist/runtime/vnode.d.ts +11 -5
  140. package/dist/runtime/vnode.js +6 -3
  141. package/dist/runtime/vnode.js.map +1 -1
  142. package/dist/server/stream.d.ts +2 -0
  143. package/dist/server/stream.js +154 -114
  144. package/dist/server/stream.js.map +1 -1
  145. package/dist/style/css-mixin.d.ts +2 -1
  146. package/dist/style/css-mixin.js.map +1 -1
  147. package/dist/style/index.d.ts +1 -1
  148. package/dist/style/layers.d.ts +2 -0
  149. package/dist/style/layers.js +3 -0
  150. package/dist/style/layers.js.map +1 -0
  151. package/dist/style/stylesheet.d.ts +13 -11
  152. package/dist/style/stylesheet.js +69 -8
  153. package/dist/style/stylesheet.js.map +1 -1
  154. package/dist/theme/contract.d.ts +24 -222
  155. package/dist/theme/contract.js +2 -2
  156. package/dist/theme/contract.js.map +1 -1
  157. package/dist/theme/glyph-contract.d.ts +1 -3
  158. package/dist/theme/glyph-contract.js.map +1 -1
  159. package/dist/theme/presets/rmx-01/index.d.ts +4 -2
  160. package/dist/theme/presets/rmx-01/index.js.map +1 -1
  161. package/dist/theme/runtime.js +4 -1
  162. package/dist/theme/runtime.js.map +1 -1
  163. package/dist/utils/scroll-lock.d.ts +3 -3
  164. package/dist/utils/scroll-lock.js.map +1 -1
  165. package/package.json +3 -3
  166. package/src/animation/README.md +316 -0
  167. package/src/animation/animate-layout-mixin.ts +79 -71
  168. package/src/animation/spring.ts +21 -9
  169. package/src/components/accordion/README.md +166 -0
  170. package/src/components/accordion/accordion.tsx +14 -14
  171. package/src/components/accordion/demos/card.demo.tsx +113 -0
  172. package/src/components/accordion/demos/multiple.demo.tsx +56 -0
  173. package/src/components/accordion/demos/overview.demo.tsx +56 -0
  174. package/src/components/anchor/README.md +153 -0
  175. package/src/components/anchor/anchor.ts +1 -1
  176. package/src/components/breadcrumbs/README.md +55 -0
  177. package/src/components/breadcrumbs/breadcrumbs.tsx +1 -3
  178. package/src/components/breadcrumbs/demos/basic.demo.tsx +17 -0
  179. package/src/components/breadcrumbs/demos/separator.demo.tsx +18 -0
  180. package/src/components/button/README.md +4 -4
  181. package/src/components/button/button.tsx +118 -20
  182. package/src/components/button/demos/aliases.demo.tsx +27 -0
  183. package/src/components/button/demos/basic.demo.tsx +30 -0
  184. package/src/components/button/demos/states.demo.tsx +52 -0
  185. package/src/components/combobox/README.md +1 -1
  186. package/src/components/combobox/combobox.tsx +37 -21
  187. package/src/components/combobox/demos/overview.demo.tsx +199 -0
  188. package/src/components/glyph/README.md +72 -0
  189. package/src/components/glyph/glyph.tsx +2 -2
  190. package/src/components/listbox/README.md +115 -0
  191. package/src/components/listbox/demos/overview.demo.tsx +101 -0
  192. package/src/components/listbox/listbox.ts +106 -110
  193. package/src/components/menu/README.md +96 -0
  194. package/src/components/menu/demos/bubbling.demo.tsx +34 -0
  195. package/src/components/menu/demos/overview.demo.tsx +76 -0
  196. package/src/components/menu/menu.tsx +61 -55
  197. package/src/components/popover/README.md +3 -3
  198. package/src/components/popover/demos/overview.demo.tsx +143 -0
  199. package/src/components/popover/popover.ts +90 -79
  200. package/src/components/select/README.md +107 -0
  201. package/src/components/select/demos/deconstructed.demo.tsx +95 -0
  202. package/src/components/select/demos/overview.demo.tsx +51 -0
  203. package/src/components/select/select.tsx +53 -36
  204. package/src/components/tabs/tabs.tsx +10 -5
  205. package/src/index.ts +2 -1
  206. package/src/runtime/component.ts +122 -88
  207. package/src/runtime/core/attributes.ts +118 -0
  208. package/src/runtime/core/children.ts +42 -0
  209. package/src/runtime/core/props.ts +187 -0
  210. package/src/runtime/core/vnode.ts +48 -0
  211. package/src/runtime/create-element.ts +2 -1
  212. package/src/runtime/diff-dom.ts +59 -12
  213. package/src/runtime/diff-props.ts +2 -187
  214. package/src/runtime/dom.ts +20 -9
  215. package/src/runtime/frame.ts +71 -55
  216. package/src/runtime/jsx.ts +3 -30
  217. package/src/runtime/mixins/link-mixin.ts +88 -86
  218. package/src/runtime/mixins/mixin.ts +18 -5
  219. package/src/runtime/mixins/on-mixin.ts +20 -12
  220. package/src/runtime/mixins/ref-mixin.ts +4 -5
  221. package/src/runtime/navigation.ts +10 -1
  222. package/src/runtime/reconcile.ts +563 -223
  223. package/src/runtime/run.ts +17 -1
  224. package/src/runtime/scheduler.ts +20 -20
  225. package/src/runtime/stream-protocol.ts +27 -0
  226. package/src/runtime/svg-attributes.ts +1 -0
  227. package/src/runtime/to-vnode.ts +7 -10
  228. package/src/runtime/vnode.ts +16 -9
  229. package/src/server/README.md +90 -0
  230. package/src/server/stream.ts +176 -124
  231. package/src/style/css-mixin.ts +6 -1
  232. package/src/style/index.ts +1 -2
  233. package/src/style/layers.ts +2 -0
  234. package/src/style/stylesheet.ts +88 -11
  235. package/src/test/README.md +107 -0
  236. package/src/test/utils.ts +3 -1
  237. package/src/theme/README.md +103 -0
  238. package/src/theme/contract.ts +37 -5
  239. package/src/theme/glyph-contract.ts +3 -1
  240. package/src/theme/presets/rmx-01/index.ts +4 -2
  241. package/src/theme/runtime.ts +4 -1
  242. package/src/utils/scroll-lock/README.md +33 -0
  243. package/src/utils/scroll-lock.ts +7 -3
@@ -0,0 +1,6 @@
1
+ import { type Handle } from '@remix-run/ui';
2
+ /**
3
+ * @name Combobox Overview
4
+ * @description A searchable combobox with keyboard navigation. Try typing airport names or codes like ord, lax, or jfk.
5
+ */
6
+ export default function Example(handle: Handle): () => import("@remix-run/ui").RemixElement;
@@ -0,0 +1,153 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
+ import { css } from '@remix-run/ui';
3
+ import { Combobox, ComboboxOption, onComboboxChange } from '@remix-run/ui/combobox';
4
+ import { theme } from '@remix-run/ui/theme';
5
+ /**
6
+ * @name Combobox Overview
7
+ * @description A searchable combobox with keyboard navigation. Try typing airport names or codes like ord, lax, or jfk.
8
+ */
9
+ export default function Example(handle) {
10
+ let value = null;
11
+ return () => (_jsxs("div", { mix: stackCss, children: [_jsxs("div", { mix: fieldCss, children: [_jsx("label", { for: "airport-combobox", mix: labelCss, children: "Airport" }), _jsx(Combobox, { inputId: "airport-combobox", mix: [
12
+ comboboxCss,
13
+ onComboboxChange((event) => {
14
+ value = event.value;
15
+ void handle.update();
16
+ }),
17
+ ], name: "airport", placeholder: "Search airports or codes", children: airportOptions.map((airport) => (_jsx(ComboboxOption, { disabled: airport.disabled, label: airport.label, searchValue: airport.searchValue, value: airport.value }, airport.value))) }), _jsx("div", { mix: helpCss, children: "Try typing `san`, `wash`, or airport codes like `ord`, `lax`, or `jfk`, then use ArrowDown and Enter." })] }), _jsx("p", { mix: valueCss, children: `value=${value ?? 'null'}` })] }));
18
+ }
19
+ const airportOptions = [
20
+ {
21
+ label: 'Hartsfield-Jackson Atlanta International',
22
+ searchValue: ['atl', 'atlanta', 'hartsfield-jackson atlanta international'],
23
+ value: 'ATL',
24
+ },
25
+ {
26
+ label: 'Austin-Bergstrom International',
27
+ searchValue: ['aus', 'austin', 'austin-bergstrom international'],
28
+ value: 'AUS',
29
+ },
30
+ {
31
+ label: 'Boston Logan International',
32
+ searchValue: ['bos', 'boston', 'boston logan international'],
33
+ value: 'BOS',
34
+ },
35
+ {
36
+ label: 'Baltimore/Washington International',
37
+ searchValue: ['bwi', 'baltimore', 'washington', 'baltimore/washington international'],
38
+ value: 'BWI',
39
+ },
40
+ {
41
+ label: 'Ronald Reagan Washington National',
42
+ searchValue: ['dca', 'reagan', 'washington', 'ronald reagan washington national'],
43
+ value: 'DCA',
44
+ },
45
+ {
46
+ label: 'Denver International',
47
+ searchValue: ['den', 'denver', 'denver international'],
48
+ value: 'DEN',
49
+ },
50
+ {
51
+ label: 'Dallas/Fort Worth International',
52
+ searchValue: ['dfw', 'dallas', 'fort worth', 'dallas/fort worth international'],
53
+ value: 'DFW',
54
+ },
55
+ {
56
+ label: 'Newark Liberty International',
57
+ searchValue: ['ewr', 'newark', 'newark liberty international'],
58
+ value: 'EWR',
59
+ },
60
+ {
61
+ label: 'Daniel K. Inouye International',
62
+ searchValue: ['hnl', 'honolulu', 'daniel k. inouye international'],
63
+ value: 'HNL',
64
+ },
65
+ {
66
+ label: 'Washington Dulles International',
67
+ searchValue: ['iad', 'dulles', 'washington', 'washington dulles international'],
68
+ value: 'IAD',
69
+ },
70
+ {
71
+ label: 'John F. Kennedy International',
72
+ searchValue: ['jfk', 'kennedy', 'new york', 'john f. kennedy international'],
73
+ value: 'JFK',
74
+ },
75
+ {
76
+ label: 'Harry Reid International',
77
+ searchValue: ['las', 'las vegas', 'harry reid international'],
78
+ value: 'LAS',
79
+ },
80
+ {
81
+ label: 'Los Angeles International',
82
+ searchValue: ['lax', 'los angeles', 'los angeles international'],
83
+ value: 'LAX',
84
+ },
85
+ {
86
+ label: 'Orlando International',
87
+ searchValue: ['mco', 'orlando', 'orlando international'],
88
+ value: 'MCO',
89
+ },
90
+ {
91
+ label: 'Miami International',
92
+ searchValue: ['mia', 'miami', 'miami international'],
93
+ value: 'MIA',
94
+ },
95
+ {
96
+ label: "Chicago O'Hare International",
97
+ searchValue: ['ord', 'ohare', 'chicago', "chicago o'hare international"],
98
+ value: 'ORD',
99
+ },
100
+ {
101
+ label: 'Portland International',
102
+ searchValue: ['pdx', 'portland', 'portland international'],
103
+ value: 'PDX',
104
+ },
105
+ {
106
+ label: 'San Diego International',
107
+ searchValue: ['san', 'san diego', 'san diego international'],
108
+ value: 'SAN',
109
+ },
110
+ {
111
+ label: 'San Francisco International',
112
+ searchValue: ['sfo', 'san francisco', 'san francisco international'],
113
+ value: 'SFO',
114
+ },
115
+ {
116
+ disabled: true,
117
+ label: 'San Jose Mineta International',
118
+ searchValue: ['sjc', 'san jose', 'san jose mineta international'],
119
+ value: 'SJC',
120
+ },
121
+ ];
122
+ const comboboxCss = css({
123
+ width: '16rem',
124
+ });
125
+ const stackCss = css({
126
+ display: 'flex',
127
+ flexDirection: 'column',
128
+ gap: theme.space.sm,
129
+ width: '100%',
130
+ });
131
+ const fieldCss = css({
132
+ display: 'flex',
133
+ flexDirection: 'column',
134
+ gap: theme.space.xs,
135
+ });
136
+ const labelCss = css({
137
+ margin: 0,
138
+ fontSize: theme.fontSize.xs,
139
+ fontWeight: theme.fontWeight.semibold,
140
+ color: theme.colors.text.primary,
141
+ });
142
+ const helpCss = css({
143
+ fontSize: theme.fontSize.xs,
144
+ lineHeight: theme.lineHeight.relaxed,
145
+ color: theme.colors.text.secondary,
146
+ });
147
+ const valueCss = css({
148
+ margin: 0,
149
+ fontFamily: theme.fontFamily.mono,
150
+ fontSize: theme.fontSize.xs,
151
+ color: theme.colors.text.secondary,
152
+ });
153
+ //# sourceMappingURL=overview.demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.demo.js","sourceRoot":"","sources":["../../../../src/components/combobox/demos/overview.demo.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type Handle } from '@remix-run/ui';
2
+ /**
3
+ * @name Listbox Overview
4
+ * @description A keyboard-navigable listbox with selection, highlighting, and an optional flash-selection animation.
5
+ */
6
+ export default function Example(handle: Handle): () => import("@remix-run/ui").RemixElement;
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
+ import { css, on } from '@remix-run/ui';
3
+ import { Glyph } from '@remix-run/ui/glyph';
4
+ import * as listbox from '@remix-run/ui/listbox';
5
+ import { theme } from '@remix-run/ui/theme';
6
+ /**
7
+ * @name Listbox Overview
8
+ * @description A keyboard-navigable listbox with selection, highlighting, and an optional flash-selection animation.
9
+ */
10
+ export default function Example(handle) {
11
+ let value = options[0].value;
12
+ let activeValue = options[0].value;
13
+ let flashSelection = false;
14
+ return () => {
15
+ return (_jsxs("div", { mix: stackCss, children: [_jsx(listbox.Context, { value: value, activeValue: activeValue, flashSelection: flashSelection, onSelect: (nextValue) => {
16
+ value = nextValue;
17
+ handle.update();
18
+ }, onHighlight: (nextActiveValue) => {
19
+ activeValue = nextActiveValue;
20
+ handle.update();
21
+ }, children: _jsx("div", { tabIndex: 0, mix: [listbox.listStyle, listbox.list(), containerCss], children: options.map((option) => (_jsxs("div", { mix: [listbox.optionStyle, listbox.option(option)], children: [_jsx(Glyph, { mix: listbox.glyphStyle, name: "check" }), _jsx("span", { mix: listbox.labelStyle, children: option.label })] }, option.value))) }) }), _jsxs("div", { mix: controlsCss, children: [_jsxs("label", { mix: checkboxLabelCss, children: [_jsx("input", { type: "checkbox", defaultChecked: flashSelection, mix: on('change', (event) => {
22
+ flashSelection = event.currentTarget.checked;
23
+ handle.update();
24
+ }) }), ' ', "Flash selection"] }), _jsx("p", { mix: valueCss, children: `value=${value ?? 'null'}` })] })] }));
25
+ };
26
+ }
27
+ const options = [
28
+ { label: 'Apple', value: 'apple' },
29
+ { label: 'Banana', value: 'banana' },
30
+ { label: 'Cherry', value: 'cherry' },
31
+ { label: 'Date', value: 'date' },
32
+ { label: 'Elderberry', value: 'elderberry' },
33
+ { label: 'Fig', value: 'fig' },
34
+ { label: 'Grape', value: 'grape' },
35
+ ];
36
+ const containerCss = css({
37
+ borderColor: theme.colors.border.subtle,
38
+ padding: theme.space.xs,
39
+ borderRadius: theme.radius.lg,
40
+ borderStyle: 'solid',
41
+ });
42
+ const stackCss = css({
43
+ display: 'flex',
44
+ flexDirection: 'column',
45
+ gap: theme.space.md,
46
+ width: '100%',
47
+ });
48
+ const controlsCss = css({
49
+ display: 'flex',
50
+ flexDirection: 'column',
51
+ gap: theme.space.xs,
52
+ });
53
+ const checkboxLabelCss = css({
54
+ fontSize: theme.fontSize.sm,
55
+ lineHeight: theme.lineHeight.normal,
56
+ color: theme.colors.text.secondary,
57
+ });
58
+ const valueCss = css({
59
+ margin: 0,
60
+ fontFamily: theme.fontFamily.mono,
61
+ fontSize: theme.fontSize.xs,
62
+ color: theme.colors.text.secondary,
63
+ });
64
+ //# sourceMappingURL=overview.demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.demo.js","sourceRoot":"","sources":["../../../../src/components/listbox/demos/overview.demo.tsx"],"names":[],"mappings":"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"}
@@ -1,12 +1,7 @@
1
- import { type CSSMixinDescriptor, type Handle, type RemixNode } from '@remix-run/ui';
1
+ import { type CSSMixinDescriptor, type ElementProps, type Handle, type MixinFactory, type RemixNode } from '@remix-run/ui';
2
2
  import { type SearchValue } from '../../interactions/typeahead/typeahead-mixin.ts';
3
3
  export type ListboxValue = string | null;
4
- declare enum NavigationStrategy {
5
- Next = 0,
6
- Previous = 1,
7
- First = 2,
8
- Last = 3
9
- }
4
+ type NavigationStrategy = 'next' | 'previous' | 'first' | 'last';
10
5
  interface Values {
11
6
  value: ListboxValue;
12
7
  activeValue: ListboxValue;
@@ -62,6 +57,6 @@ export interface ListboxOption {
62
57
  textValue?: SearchValue;
63
58
  }
64
59
  export declare const Context: typeof ListboxProvider;
65
- export declare const list: <boundNode extends HTMLElement = HTMLElement>() => import("@remix-run/ui").MixinDescriptor<boundNode, [], import("@remix-run/ui").ElementProps>;
66
- export declare const option: <boundNode extends HTMLElement = HTMLElement>(option: Omit<ListboxOption, "id">) => import("@remix-run/ui").MixinDescriptor<boundNode, [option: Omit<ListboxOption, "id">], import("@remix-run/ui").ElementProps>;
60
+ export declare const list: MixinFactory<HTMLElement, [], ElementProps>;
61
+ export declare const option: MixinFactory<HTMLElement, [option: Omit<ListboxOption, "id">], ElementProps>;
67
62
  export {};
@@ -2,18 +2,6 @@ import { attrs, createMixin, css, on, } from '@remix-run/ui';
2
2
  import { theme } from "../../theme/theme.js";
3
3
  import { hiddenTypeahead, matchNextItemBySearchText, } from "../../interactions/typeahead/typeahead-mixin.js";
4
4
  import { flashAttribute } from "../../utils/flash-attribute.js";
5
- var NavigationStrategy;
6
- (function (NavigationStrategy) {
7
- NavigationStrategy[NavigationStrategy["Next"] = 0] = "Next";
8
- NavigationStrategy[NavigationStrategy["Previous"] = 1] = "Previous";
9
- NavigationStrategy[NavigationStrategy["First"] = 2] = "First";
10
- NavigationStrategy[NavigationStrategy["Last"] = 3] = "Last";
11
- })(NavigationStrategy || (NavigationStrategy = {}));
12
- var State;
13
- (function (State) {
14
- State["Idle"] = "idle";
15
- State["Selecting"] = "selecting";
16
- })(State || (State = {}));
17
5
  const listCss = css({
18
6
  display: 'flex',
19
7
  flexDirection: 'column',
@@ -93,7 +81,7 @@ export const glyphStyle = itemGlyphCss;
93
81
  export const labelStyle = itemLabelCss;
94
82
  function ListboxProvider(handle) {
95
83
  let options = [];
96
- let state = State.Idle;
84
+ let state = 'idle';
97
85
  function getOption(value) {
98
86
  return options.find((option) => option.value === value);
99
87
  }
@@ -144,16 +132,16 @@ function ListboxProvider(handle) {
144
132
  return findSearchMatch(text, fromValue);
145
133
  },
146
134
  navigateFirst() {
147
- context.navigate(NavigationStrategy.First);
135
+ context.navigate('first');
148
136
  },
149
137
  navigateLast() {
150
- context.navigate(NavigationStrategy.Last);
138
+ context.navigate('last');
151
139
  },
152
140
  navigateNext() {
153
- context.navigate(NavigationStrategy.Next);
141
+ context.navigate('next');
154
142
  },
155
143
  navigatePrevious() {
156
- context.navigate(NavigationStrategy.Previous);
144
+ context.navigate('previous');
157
145
  },
158
146
  scrollActiveOptionIntoView() {
159
147
  context.scrollActiveOptionIntoView();
@@ -179,13 +167,13 @@ function ListboxProvider(handle) {
179
167
  options.push(option);
180
168
  },
181
169
  async select(value) {
182
- if (state === State.Selecting) {
170
+ if (state === 'selecting') {
183
171
  return;
184
172
  }
185
- state = State.Selecting;
173
+ state = 'selecting';
186
174
  let option = getOption(value);
187
175
  if (!isInteractableOption(option)) {
188
- state = State.Idle;
176
+ state = 'idle';
189
177
  return;
190
178
  }
191
179
  handle.props.onSelect(value, option);
@@ -193,16 +181,16 @@ function ListboxProvider(handle) {
193
181
  await flashAttribute(option.node, handle.props.selectionFlashAttribute ?? 'data-listbox-flash', 60);
194
182
  }
195
183
  await handle.props.onSelectSettled?.(value, option);
196
- state = State.Idle;
184
+ state = 'idle';
197
185
  },
198
186
  highlight(value) {
199
- if (state === State.Selecting)
187
+ if (state === 'selecting')
200
188
  return;
201
189
  let option = getOption(value);
202
190
  handle.props.onHighlight(value, option);
203
191
  },
204
192
  highlightSearchMatch(text) {
205
- if (state === State.Selecting)
193
+ if (state === 'selecting')
206
194
  return;
207
195
  let option = findSearchMatch(text, handle.props.activeValue);
208
196
  if (option) {
@@ -211,25 +199,25 @@ function ListboxProvider(handle) {
211
199
  }
212
200
  },
213
201
  navigate(strategy) {
214
- if (state === State.Selecting)
202
+ if (state === 'selecting')
215
203
  return;
216
204
  let option;
217
205
  let interactableOptions = getInteractableOptions();
218
206
  let activeIndex = interactableOptions.findIndex((option) => option.value === handle.props.activeValue);
219
207
  switch (strategy) {
220
- case NavigationStrategy.Next:
208
+ case 'next':
221
209
  option = interactableOptions[activeIndex + 1] ?? interactableOptions[0];
222
210
  break;
223
- case NavigationStrategy.Previous:
211
+ case 'previous':
224
212
  option =
225
213
  activeIndex === -1
226
214
  ? interactableOptions[interactableOptions.length - 1]
227
215
  : interactableOptions[activeIndex - 1];
228
216
  break;
229
- case NavigationStrategy.First:
217
+ case 'first':
230
218
  option = interactableOptions[0];
231
219
  break;
232
- case NavigationStrategy.Last:
220
+ case 'last':
233
221
  option = interactableOptions[interactableOptions.length - 1];
234
222
  break;
235
223
  }
@@ -262,15 +250,15 @@ const listMixin = createMixin((handle) => (props) => {
262
250
  switch (event.key) {
263
251
  case 'ArrowDown':
264
252
  event.preventDefault();
265
- context.navigate(NavigationStrategy.Next);
253
+ context.navigate('next');
266
254
  break;
267
255
  case 'ArrowUp':
268
256
  event.preventDefault();
269
- context.navigate(NavigationStrategy.Previous);
257
+ context.navigate('previous');
270
258
  break;
271
259
  case 'Tab':
272
260
  event.preventDefault();
273
- context.navigate(NavigationStrategy.First);
261
+ context.navigate('first');
274
262
  break;
275
263
  case 'Enter':
276
264
  case ' ':
@@ -279,11 +267,11 @@ const listMixin = createMixin((handle) => (props) => {
279
267
  break;
280
268
  case 'Home':
281
269
  event.preventDefault();
282
- context.navigate(NavigationStrategy.First);
270
+ context.navigate('first');
283
271
  break;
284
272
  case 'End':
285
273
  event.preventDefault();
286
- context.navigate(NavigationStrategy.Last);
274
+ context.navigate('last');
287
275
  }
288
276
  }),
289
277
  hiddenTypeahead((text) => {
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.js","sourceRoot":"","sources":["../../../src/components/listbox/listbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listbox.js","sourceRoot":"","sources":["../../../src/components/listbox/listbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @name Menu Event Bubbling
3
+ * @description Item-level handlers fire before the root handler, letting individual items intercept events while others bubble up.
4
+ */
5
+ export default function Example(): () => import("@remix-run/ui").RemixElement;
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
+ import { on } from '@remix-run/ui';
3
+ import { Menu, MenuItem, onMenuSelect } from '@remix-run/ui/menu';
4
+ /**
5
+ * @name Menu Event Bubbling
6
+ * @description Item-level handlers fire before the root handler, letting individual items intercept events while others bubble up.
7
+ */
8
+ export default function Example() {
9
+ return () => (_jsxs(Menu, { label: "Project", menuLabel: "Project actions", mix: onMenuSelect((event) => {
10
+ console.log('Menu root handler:', event.item);
11
+ }), children: [_jsx(MenuItem, { name: "open", value: "open-project", children: "Open project" }), _jsx(MenuItem, { name: "rename", value: "rename-project", mix: onMenuSelect((event) => {
12
+ console.log('Menu item handler:', event.item);
13
+ }), children: "Rename project" }), _jsx(MenuItem, { name: "duplicate", value: "duplicate-project", children: "Duplicate project" })] }));
14
+ }
15
+ //# sourceMappingURL=bubbling.demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bubbling.demo.js","sourceRoot":"","sources":["../../../../src/components/menu/demos/bubbling.demo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO;IAC7B,OAAO,GAAG,EAAE,CAAC,CACX,MAAC,IAAI,IACH,KAAK,EAAC,SAAS,EACf,SAAS,EAAC,iBAAiB,EAC3B,GAAG,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC,CAAC,aAEF,KAAC,QAAQ,IAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,6BAE/B,EACX,KAAC,QAAQ,IACP,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,gBAAgB,EACtB,GAAG,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC/C,CAAC,CAAC,+BAGO,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,mBAAmB,kCAEzC,IACN,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Handle } from '@remix-run/ui';
2
+ /**
3
+ * @name Menu Overview
4
+ * @description A hierarchical menu with checkboxes, radio groups, submenus, and separators.
5
+ */
6
+ export default function Example(handle: Handle): () => import("@remix-run/ui").RemixElement;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
+ import {} from '@remix-run/ui';
3
+ import { Menu, MenuItem, onMenuSelect, Submenu } from '@remix-run/ui/menu';
4
+ import { separatorStyle } from '@remix-run/ui/separator';
5
+ /**
6
+ * @name Menu Overview
7
+ * @description A hierarchical menu with checkboxes, radio groups, submenus, and separators.
8
+ */
9
+ export default function Example(handle) {
10
+ let wordWrap = true;
11
+ let minimap = false;
12
+ let showGutter = true;
13
+ let density = 'comfortable';
14
+ return () => (_jsxs(Menu, { label: "View", menuLabel: "View options", mix: onMenuSelect((event) => {
15
+ switch (event.item.name) {
16
+ case 'wordWrap':
17
+ wordWrap = !wordWrap;
18
+ break;
19
+ case 'minimap':
20
+ minimap = !minimap;
21
+ break;
22
+ case 'showGutter':
23
+ showGutter = !showGutter;
24
+ break;
25
+ case 'density':
26
+ density = event.item.value;
27
+ break;
28
+ }
29
+ handle.update();
30
+ }), children: [_jsx(MenuItem, { name: "wordWrap", type: "checkbox", checked: wordWrap, children: "Word wrap" }), _jsx(MenuItem, { name: "minimap", type: "checkbox", checked: minimap, children: "Minimap" }), _jsx(MenuItem, { name: "showGutter", type: "checkbox", checked: showGutter, children: "Show gutter" }), _jsx("hr", { mix: separatorStyle }), _jsxs(Submenu, { label: "Zoom", children: [_jsx(MenuItem, { name: "zoomIn", value: "zoom-in", children: "Zoom In" }), _jsx(MenuItem, { name: "zoomOut", value: "zoom-out", children: "Zoom Out" }), _jsx(MenuItem, { name: "resetZoom", value: "reset-zoom", children: "Reset Zoom" })] }), _jsxs(Submenu, { label: "Density", children: [_jsx(MenuItem, { name: "density", type: "radio", value: "comfortable", checked: density === 'comfortable', children: "Comfortable" }), _jsx(MenuItem, { name: "density", type: "radio", value: "compact", checked: density === 'compact', children: "Compact" })] })] }));
31
+ }
32
+ //# sourceMappingURL=overview.demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overview.demo.js","sourceRoot":"","sources":["../../../../src/components/menu/demos/overview.demo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAe,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,MAAc;IAE5C,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,UAAU,GAAG,IAAI,CAAA;IACrB,IAAI,OAAO,GAAY,aAAa,CAAA;IAEpC,OAAO,GAAG,EAAE,CAAC,CACX,MAAC,IAAI,IACH,KAAK,EAAC,MAAM,EACZ,SAAS,EAAC,cAAc,EACxB,GAAG,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxB,KAAK,UAAU;oBACb,QAAQ,GAAG,CAAC,QAAQ,CAAA;oBACpB,MAAK;gBACP,KAAK,SAAS;oBACZ,OAAO,GAAG,CAAC,OAAO,CAAA;oBAClB,MAAK;gBACP,KAAK,YAAY;oBACf,UAAU,GAAG,CAAC,UAAU,CAAA;oBACxB,MAAK;gBACP,KAAK,SAAS;oBACZ,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAgB,CAAA;oBACrC,MAAK;YACT,CAAC;YACD,MAAM,CAAC,MAAM,EAAE,CAAA;QACjB,CAAC,CAAC,aAEF,KAAC,QAAQ,IAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,QAAQ,0BAEhD,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,OAAO,wBAE9C,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,UAAU,4BAEpD,EAEX,aAAI,GAAG,EAAE,cAAc,GAAI,EAC3B,MAAC,OAAO,IAAC,KAAK,EAAC,MAAM,aACnB,KAAC,QAAQ,IAAC,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,wBAE5B,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAC,UAAU,yBAE9B,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAC,YAAY,2BAElC,IACH,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,SAAS,aACtB,KAAC,QAAQ,IACP,IAAI,EAAC,SAAS,EACd,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,aAAa,EACnB,OAAO,EAAE,OAAO,KAAK,aAAa,4BAGzB,EACX,KAAC,QAAQ,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,OAAO,KAAK,SAAS,wBAEzE,IACH,IACL,CACR,CAAA;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
- import { type CSSMixinDescriptor, type ElementProps, type Handle, type Props, type RemixNode } from '@remix-run/ui';
1
+ import { on, type CSSMixinDescriptor, type Dispatched, type ElementProps, type Handle, type MixinFactory, type Props, type RemixNode } from '@remix-run/ui';
2
2
  import { type AnchorOptions } from '../anchor/anchor.ts';
3
3
  import { type SearchValue } from '../../interactions/typeahead/typeahead-mixin.ts';
4
4
  declare const MENU_SELECT_EVENT: "rmx:menu-select";
5
- type MenuSelectHandler = (event: MenuSelectEvent, signal: AbortSignal) => void | Promise<void>;
5
+ type MenuSelectHandler<target extends HTMLElement> = (event: Dispatched<MenuSelectEvent, target>, signal: AbortSignal) => void | Promise<void>;
6
6
  export declare const buttonStyle: CSSMixinDescriptor;
7
7
  export declare const popoverStyle: CSSMixinDescriptor;
8
8
  export declare const listStyle: CSSMixinDescriptor;
@@ -19,17 +19,8 @@ declare global {
19
19
  type MenuItemType = 'item' | 'checkbox' | 'radio';
20
20
  type CloseAnimation = 'fade' | 'none';
21
21
  type OpenStrategy = 'first' | 'last' | 'list' | 'none';
22
- declare enum NavigationStrategy {
23
- Next = 0,
24
- Previous = 1,
25
- First = 2,
26
- Last = 3
27
- }
28
- declare enum State {
29
- Idle = "idle",
30
- Dismissing = "dismissing",
31
- Selecting = "selecting"
32
- }
22
+ type NavigationStrategy = 'next' | 'previous' | 'first' | 'last';
23
+ type State = 'idle' | 'dismissing' | 'selecting';
33
24
  export interface MenuSelectItem {
34
25
  checked?: boolean;
35
26
  id: string;
@@ -132,18 +123,18 @@ interface MenuContextValue {
132
123
  unregisterSurface: (node: HTMLElement) => void;
133
124
  unregisterTrigger: (node: HTMLElement) => void;
134
125
  }
135
- declare function MenuProvider(handle: Handle<MenuProviderProps, MenuContextValue>): () => import("@remix-run/ui").RemixElement;
136
- declare const popoverMixin: <boundNode extends HTMLElement = HTMLElement>() => import("@remix-run/ui").MixinDescriptor<boundNode, [], ElementProps>;
126
+ declare function MenuProvider(handle: Handle<MenuProviderProps, MenuContextValue>): () => RemixNode;
127
+ declare const popoverMixin: MixinFactory<HTMLElement, [], ElementProps>;
137
128
  export interface MenuListProps extends Props<'div'> {
138
129
  }
139
130
  type MenuListChildProps = Omit<JSX.LibraryManagedAttributes<typeof MenuList, MenuListProps>, 'children'>;
140
131
  export declare const Context: typeof MenuProvider;
141
- export declare const item: <boundNode extends HTMLElement = HTMLElement>(options: MenuItemOptions) => import("@remix-run/ui").MixinDescriptor<boundNode, [options: MenuItemOptions], ElementProps>;
142
- export declare const list: <boundNode extends HTMLElement = HTMLElement>() => import("@remix-run/ui").MixinDescriptor<boundNode, [], ElementProps>;
132
+ export declare const item: MixinFactory<HTMLElement, [options: MenuItemOptions], ElementProps>;
133
+ export declare const list: MixinFactory<HTMLElement, [], ElementProps>;
143
134
  export { popoverMixin as popover };
144
- export declare const submenuTrigger: <boundNode extends HTMLElement = HTMLElement>(options: SubmenuTriggerOptions) => import("@remix-run/ui").MixinDescriptor<boundNode, [options: SubmenuTriggerOptions], ElementProps>;
145
- export declare const trigger: <boundNode extends HTMLElement = HTMLElement>(options?: MenuTriggerOptions | undefined) => import("@remix-run/ui").MixinDescriptor<boundNode, [options?: MenuTriggerOptions | undefined], ElementProps>;
146
- export declare function onMenuSelect(handler: MenuSelectHandler, captureBoolean?: boolean): import("@remix-run/ui").MixinDescriptor<HTMLElement, ["rmx:menu-select", (event: import("@remix-run/ui").Dispatched<MenuSelectEvent, HTMLElement>, signal: AbortSignal) => void | Promise<void>, (boolean | undefined)?], ElementProps>;
135
+ export declare const submenuTrigger: MixinFactory<HTMLElement, [options: SubmenuTriggerOptions], ElementProps>;
136
+ export declare const trigger: MixinFactory<HTMLElement, [options?: MenuTriggerOptions | undefined], ElementProps>;
137
+ export declare function onMenuSelect<target extends HTMLElement>(handler: MenuSelectHandler<target>, captureBoolean?: boolean): ReturnType<typeof on<target, typeof MENU_SELECT_EVENT>>;
147
138
  export interface MenuProps extends Omit<Props<'button'>, 'children'> {
148
139
  children?: RemixNode;
149
140
  label: RemixNode;
@@ -158,7 +149,7 @@ export interface SubmenuProps extends Omit<Props<'div'>, 'children' | 'name' | '
158
149
  listProps?: MenuListChildProps;
159
150
  menuLabel?: string;
160
151
  }
161
- export declare function Menu(handle: Handle<MenuProps>): () => import("@remix-run/ui").RemixElement;
162
- export declare function MenuList(handle: Handle<MenuListProps>): () => import("@remix-run/ui").RemixElement;
163
- export declare function MenuItem(handle: Handle<MenuItemProps>): () => import("@remix-run/ui").RemixElement;
164
- export declare function Submenu(handle: Handle<SubmenuProps>): () => import("@remix-run/ui").RemixElement;
152
+ export declare function Menu(handle: Handle<MenuProps>): () => RemixNode;
153
+ export declare function MenuList(handle: Handle<MenuListProps>): () => RemixNode;
154
+ export declare function MenuItem(handle: Handle<MenuItemProps>): () => RemixNode;
155
+ export declare function Submenu(handle: Handle<SubmenuProps>): () => RemixNode;