@remix-run/ui 0.1.0 → 0.1.2

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 (200) hide show
  1. package/README.md +24 -3
  2. package/dist/animation/animate-layout-mixin.js +66 -66
  3. package/dist/animation/animate-layout-mixin.js.map +1 -1
  4. package/dist/components/accordion/accordion.d.ts +3 -3
  5. package/dist/components/accordion/accordion.js +0 -2
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/accordion/demos/card.demo.d.ts +6 -0
  8. package/dist/components/accordion/demos/card.demo.js +58 -0
  9. package/dist/components/accordion/demos/card.demo.js.map +1 -0
  10. package/dist/components/accordion/demos/multiple.demo.d.ts +6 -0
  11. package/dist/components/accordion/demos/multiple.demo.js +19 -0
  12. package/dist/components/accordion/demos/multiple.demo.js.map +1 -0
  13. package/dist/components/accordion/demos/overview.demo.d.ts +6 -0
  14. package/dist/components/accordion/demos/overview.demo.js +19 -0
  15. package/dist/components/accordion/demos/overview.demo.js.map +1 -0
  16. package/dist/components/breadcrumbs/breadcrumbs.js +0 -2
  17. package/dist/components/breadcrumbs/breadcrumbs.js.map +1 -1
  18. package/dist/components/breadcrumbs/demos/basic.demo.d.ts +5 -0
  19. package/dist/components/breadcrumbs/demos/basic.demo.js +14 -0
  20. package/dist/components/breadcrumbs/demos/basic.demo.js.map +1 -0
  21. package/dist/components/breadcrumbs/demos/separator.demo.d.ts +5 -0
  22. package/dist/components/breadcrumbs/demos/separator.demo.js +14 -0
  23. package/dist/components/breadcrumbs/demos/separator.demo.js.map +1 -0
  24. package/dist/components/button/button.d.ts +82 -0
  25. package/dist/components/button/button.js +60 -2
  26. package/dist/components/button/button.js.map +1 -1
  27. package/dist/components/button/demos/aliases.demo.d.ts +6 -0
  28. package/dist/components/button/demos/aliases.demo.js +18 -0
  29. package/dist/components/button/demos/aliases.demo.js.map +1 -0
  30. package/dist/components/button/demos/basic.demo.d.ts +6 -0
  31. package/dist/components/button/demos/basic.demo.js +19 -0
  32. package/dist/components/button/demos/basic.demo.js.map +1 -0
  33. package/dist/components/button/demos/states.demo.d.ts +6 -0
  34. package/dist/components/button/demos/states.demo.js +29 -0
  35. package/dist/components/button/demos/states.demo.js.map +1 -0
  36. package/dist/components/combobox/combobox.d.ts +3 -3
  37. package/dist/components/combobox/combobox.js +0 -2
  38. package/dist/components/combobox/combobox.js.map +1 -1
  39. package/dist/components/combobox/demos/overview.demo.d.ts +6 -0
  40. package/dist/components/combobox/demos/overview.demo.js +153 -0
  41. package/dist/components/combobox/demos/overview.demo.js.map +1 -0
  42. package/dist/components/listbox/demos/overview.demo.d.ts +6 -0
  43. package/dist/components/listbox/demos/overview.demo.js +64 -0
  44. package/dist/components/listbox/demos/overview.demo.js.map +1 -0
  45. package/dist/components/listbox/listbox.d.ts +1 -6
  46. package/dist/components/listbox/listbox.js +21 -33
  47. package/dist/components/listbox/listbox.js.map +1 -1
  48. package/dist/components/menu/demos/bubbling.demo.d.ts +5 -0
  49. package/dist/components/menu/demos/bubbling.demo.js +15 -0
  50. package/dist/components/menu/demos/bubbling.demo.js.map +1 -0
  51. package/dist/components/menu/demos/overview.demo.d.ts +6 -0
  52. package/dist/components/menu/demos/overview.demo.js +32 -0
  53. package/dist/components/menu/demos/overview.demo.js.map +1 -0
  54. package/dist/components/menu/menu.d.ts +5 -14
  55. package/dist/components/menu/menu.js +23 -38
  56. package/dist/components/menu/menu.js.map +1 -1
  57. package/dist/components/popover/demos/overview.demo.d.ts +6 -0
  58. package/dist/components/popover/demos/overview.demo.js +64 -0
  59. package/dist/components/popover/demos/overview.demo.js.map +1 -0
  60. package/dist/components/select/demos/deconstructed.demo.d.ts +6 -0
  61. package/dist/components/select/demos/deconstructed.demo.js +53 -0
  62. package/dist/components/select/demos/deconstructed.demo.js.map +1 -0
  63. package/dist/components/select/demos/overview.demo.d.ts +5 -0
  64. package/dist/components/select/demos/overview.demo.js +27 -0
  65. package/dist/components/select/demos/overview.demo.js.map +1 -0
  66. package/dist/components/select/select.d.ts +3 -3
  67. package/dist/components/select/select.js +17 -26
  68. package/dist/components/select/select.js.map +1 -1
  69. package/dist/components/tabs/tabs.d.ts +3 -3
  70. package/dist/components/tabs/tabs.js +0 -2
  71. package/dist/components/tabs/tabs.js.map +1 -1
  72. package/dist/index.d.ts +1 -1
  73. package/dist/index.js.map +1 -1
  74. package/dist/runtime/component.d.ts +8 -5
  75. package/dist/runtime/component.js +84 -80
  76. package/dist/runtime/component.js.map +1 -1
  77. package/dist/runtime/core/attributes.d.ts +12 -0
  78. package/dist/runtime/core/attributes.js +85 -0
  79. package/dist/runtime/core/attributes.js.map +1 -0
  80. package/dist/runtime/core/children.d.ts +7 -0
  81. package/dist/runtime/core/children.js +30 -0
  82. package/dist/runtime/core/children.js.map +1 -0
  83. package/dist/runtime/core/props.d.ts +9 -0
  84. package/dist/runtime/core/props.js +169 -0
  85. package/dist/runtime/core/props.js.map +1 -0
  86. package/dist/runtime/core/vnode.d.ts +3 -0
  87. package/dist/runtime/core/vnode.js +39 -0
  88. package/dist/runtime/core/vnode.js.map +1 -0
  89. package/dist/runtime/create-element.js +2 -1
  90. package/dist/runtime/create-element.js.map +1 -1
  91. package/dist/runtime/diff-dom.js +47 -14
  92. package/dist/runtime/diff-dom.js.map +1 -1
  93. package/dist/runtime/diff-props.d.ts +1 -2
  94. package/dist/runtime/diff-props.js +2 -181
  95. package/dist/runtime/diff-props.js.map +1 -1
  96. package/dist/runtime/dom.d.ts +4 -0
  97. package/dist/runtime/frame.d.ts +23 -2
  98. package/dist/runtime/frame.js +51 -52
  99. package/dist/runtime/frame.js.map +1 -1
  100. package/dist/runtime/jsx.js +2 -27
  101. package/dist/runtime/jsx.js.map +1 -1
  102. package/dist/runtime/mixins/mixin.js +9 -4
  103. package/dist/runtime/mixins/mixin.js.map +1 -1
  104. package/dist/runtime/mixins/on-mixin.d.ts +15 -4
  105. package/dist/runtime/mixins/on-mixin.js +9 -2
  106. package/dist/runtime/mixins/on-mixin.js.map +1 -1
  107. package/dist/runtime/navigation.d.ts +6 -0
  108. package/dist/runtime/navigation.js +16 -3
  109. package/dist/runtime/navigation.js.map +1 -1
  110. package/dist/runtime/reconcile.js +444 -181
  111. package/dist/runtime/reconcile.js.map +1 -1
  112. package/dist/runtime/run.d.ts +17 -2
  113. package/dist/runtime/run.js.map +1 -1
  114. package/dist/runtime/scheduler.js +10 -0
  115. package/dist/runtime/scheduler.js.map +1 -1
  116. package/dist/runtime/stream-protocol.d.ts +8 -0
  117. package/dist/runtime/stream-protocol.js +20 -0
  118. package/dist/runtime/stream-protocol.js.map +1 -0
  119. package/dist/runtime/to-vnode.js +17 -18
  120. package/dist/runtime/to-vnode.js.map +1 -1
  121. package/dist/runtime/vnode.d.ts +5 -4
  122. package/dist/runtime/vnode.js +2 -3
  123. package/dist/runtime/vnode.js.map +1 -1
  124. package/dist/server/stream.js +80 -106
  125. package/dist/server/stream.js.map +1 -1
  126. package/dist/style/layers.d.ts +2 -0
  127. package/dist/style/layers.js +3 -0
  128. package/dist/style/layers.js.map +1 -0
  129. package/dist/style/stylesheet.d.ts +3 -1
  130. package/dist/style/stylesheet.js +69 -8
  131. package/dist/style/stylesheet.js.map +1 -1
  132. package/dist/theme/glyph-contract.d.ts +1 -1
  133. package/dist/theme/runtime.js +4 -1
  134. package/dist/theme/runtime.js.map +1 -1
  135. package/package.json +6 -7
  136. package/src/animation/README.md +314 -0
  137. package/src/animation/animate-layout-mixin.ts +79 -71
  138. package/src/components/accordion/README.md +166 -0
  139. package/src/components/accordion/accordion.tsx +8 -10
  140. package/src/components/accordion/demos/card.demo.tsx +113 -0
  141. package/src/components/accordion/demos/multiple.demo.tsx +56 -0
  142. package/src/components/accordion/demos/overview.demo.tsx +56 -0
  143. package/src/components/anchor/README.md +153 -0
  144. package/src/components/breadcrumbs/README.md +55 -0
  145. package/src/components/breadcrumbs/breadcrumbs.tsx +0 -2
  146. package/src/components/breadcrumbs/demos/basic.demo.tsx +17 -0
  147. package/src/components/breadcrumbs/demos/separator.demo.tsx +18 -0
  148. package/src/components/button/README.md +4 -4
  149. package/src/components/button/button.tsx +88 -2
  150. package/src/components/button/demos/aliases.demo.tsx +27 -0
  151. package/src/components/button/demos/basic.demo.tsx +30 -0
  152. package/src/components/button/demos/states.demo.tsx +52 -0
  153. package/src/components/combobox/combobox.tsx +8 -10
  154. package/src/components/combobox/demos/overview.demo.tsx +199 -0
  155. package/src/components/glyph/README.md +72 -0
  156. package/src/components/listbox/README.md +115 -0
  157. package/src/components/listbox/demos/overview.demo.tsx +101 -0
  158. package/src/components/listbox/listbox.ts +23 -32
  159. package/src/components/menu/README.md +96 -0
  160. package/src/components/menu/demos/bubbling.demo.tsx +34 -0
  161. package/src/components/menu/demos/overview.demo.tsx +76 -0
  162. package/src/components/menu/menu.tsx +35 -41
  163. package/src/components/popover/README.md +3 -3
  164. package/src/components/popover/demos/overview.demo.tsx +143 -0
  165. package/src/components/select/README.md +107 -0
  166. package/src/components/select/demos/deconstructed.demo.tsx +95 -0
  167. package/src/components/select/demos/overview.demo.tsx +51 -0
  168. package/src/components/select/select.tsx +28 -28
  169. package/src/components/tabs/tabs.tsx +10 -5
  170. package/src/index.ts +1 -1
  171. package/src/runtime/component.ts +94 -82
  172. package/src/runtime/core/attributes.ts +97 -0
  173. package/src/runtime/core/children.ts +42 -0
  174. package/src/runtime/core/props.ts +185 -0
  175. package/src/runtime/core/vnode.ts +48 -0
  176. package/src/runtime/create-element.ts +2 -1
  177. package/src/runtime/diff-dom.ts +59 -12
  178. package/src/runtime/diff-props.ts +2 -187
  179. package/src/runtime/dom.ts +4 -0
  180. package/src/runtime/frame.ts +84 -61
  181. package/src/runtime/jsx.ts +2 -30
  182. package/src/runtime/mixins/mixin.ts +9 -4
  183. package/src/runtime/mixins/on-mixin.ts +20 -12
  184. package/src/runtime/navigation.ts +24 -3
  185. package/src/runtime/reconcile.ts +552 -186
  186. package/src/runtime/run.ts +17 -1
  187. package/src/runtime/scheduler.ts +7 -0
  188. package/src/runtime/stream-protocol.ts +27 -0
  189. package/src/runtime/to-vnode.ts +15 -17
  190. package/src/runtime/vnode.ts +6 -9
  191. package/src/server/README.md +88 -0
  192. package/src/server/stream.ts +105 -117
  193. package/src/style/layers.ts +2 -0
  194. package/src/style/stylesheet.ts +75 -10
  195. package/src/test/README.md +107 -0
  196. package/src/test/utils.ts +3 -1
  197. package/src/theme/README.md +103 -0
  198. package/src/theme/runtime.ts +4 -1
  199. package/src/utils/scroll-lock/README.md +33 -0
  200. package/src/test/setup.ts +0 -7
@@ -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
1
  import { type CSSMixinDescriptor, type Handle, 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;
@@ -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":"AAAA,OAAO,EACL,KAAK,EACL,WAAW,EACX,GAAG,EACH,EAAE,GAIH,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EACL,eAAe,EACf,yBAAyB,GAE1B,MAAM,iDAAiD,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAsD/D,MAAM,OAAO,GAAuB,GAAG,CAAC;IACtC,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,QAAQ;IACvB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IACrC,6BAA6B,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IAC7C,+BAA+B,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;CACnD,CAAC,CAAA;AAEF,MAAM,OAAO,GAAuB,GAAG,CAAC;IACtC,OAAO,EAAE,MAAM;IACf,mBAAmB,EAAE,4BAA4B;IACjD,UAAU,EAAE,QAAQ;IACpB,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAClC,OAAO,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;IAC9C,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;IAC7B,eAAe,EAAE,aAAa;IAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;IAChC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI;IACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;IAC3B,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;IACnC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;IACnC,SAAS,EAAE,MAAM;IACjB,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,MAAM;IACxB,SAAS,EAAE;QACT,OAAO,EAAE,MAAM;KAChB;IACD,4BAA4B,EAAE;QAC5B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;QACvD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU;KAC9C;IACD,yBAAyB,EAAE;QACzB,OAAO,EAAE,GAAG;KACb;IACD,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IACjC,wCAAwC,EAAE,GAAG;IAC7C,WAAW,EAAE;QACX,OAAO,EAAE,MAAM;KAChB;IACD,0FAA0F,EAAE;QAC1F,eAAe,EAAE,aAAa;QAC9B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;KACjC;IACD,yBAAyB,EAAE;QACzB,wCAAwC,EAAE,GAAG;KAC9C;CACF,CAAC,CAAA;AAEF,MAAM,YAAY,GAAuB,GAAG,CAAC;IAC3C,UAAU,EAAE,GAAG;IACf,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,cAAc;IACrB,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,6CAA6C;IACtD,SAAS,EAAE;QACT,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;KACf;CACF,CAAC,CAAA;AAEF,MAAM,YAAY,GAAuB,GAAG,CAAC;IAC3C,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;IAC7B,gBAAgB,EAAE,MAAM;CACzB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,CAAA;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAA;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAA;AAEtC,SAAS,eAAe,CAAC,MAAoD;IAC3E,IAAI,OAAO,GAAuB,EAAE,CAAA;IACpC,IAAI,KAAK,GAAU,MAAM,CAAA;IAEzB,SAAS,SAAS,CAAC,KAAmB;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;IACzD,CAAC;IAED,SAAS,eAAe,CAAC,MAAoC;QAC3D,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IACtD,CAAC;IAED,SAAS,oBAAoB,CAAC,MAAoC;QAChE,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAA;IACrD,CAAC;IAED,SAAS,sBAAsB;QAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAC7C,CAAC;IAED,SAAS,oBAAoB,CAAC,MAAoC;QAChE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAM;QACR,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;YACzB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,SAAS;SAClB,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,eAAe,CAAC,IAAY,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW;QACzE,IAAI,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;QAClD,IAAI,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;QAErF,OAAO,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,EAAE;YAC1D,SAAS;YACT,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK;SAC9D,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAuB,CAAA;IAE3B,IAAI,GAAG,GAAe;QACpB,IAAI,MAAM;YACR,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QACD,SAAS,CAAC,KAAK;YACb,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QACD,oBAAoB,CAAC,IAAI;YACvB,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC;QACD,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW;YACxD,OAAO,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACzC,CAAC;QACD,aAAa;YACX,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC3B,CAAC;QACD,YAAY;YACV,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC1B,CAAC;QACD,YAAY;YACV,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC1B,CAAC;QACD,gBAAgB;YACd,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC9B,CAAC;QACD,0BAA0B;YACxB,OAAO,CAAC,0BAA0B,EAAE,CAAA;QACtC,CAAC;QACD,MAAM,CAAC,KAAK;YACV,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,YAAY;YACV,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACjD,CAAC;KACF,CAAA;IAED,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;QACpB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG;QACR,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAA;QAC3B,CAAC;QAED,IAAI,WAAW;YACb,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAA;QACjC,CAAC;QAED,cAAc,CAAC,MAAM;YACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC1B,OAAM;YACR,CAAC;YACD,KAAK,GAAG,WAAW,CAAA;YACnB,IAAI,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAC7B,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClC,KAAK,GAAG,MAAM,CAAA;gBACd,OAAM;YACR,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACpC,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC1C,MAAM,cAAc,CAClB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,oBAAoB,EAC5D,EAAE,CACH,CAAA;YACH,CAAC;YACD,MAAM,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YACnD,KAAK,GAAG,MAAM,CAAA;QAChB,CAAC;QAED,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAM;YACjC,IAAI,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAC7B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,oBAAoB,CAAC,IAAI;YACvB,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAM;YAEjC,IAAI,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAE5D,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAC9C,oBAAoB,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,QAA4B;YACnC,IAAI,KAAK,KAAK,WAAW;gBAAE,OAAM;YAEjC,IAAI,MAAoC,CAAA;YACxC,IAAI,mBAAmB,GAAG,sBAAsB,EAAE,CAAA;YAClD,IAAI,WAAW,GAAG,mBAAmB,CAAC,SAAS,CAC7C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,CACtD,CAAA;YAED,QAAQ,QAAQ,EAAE,CAAC;gBACjB,KAAK,MAAM;oBACT,MAAM,GAAG,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAA;oBACvE,MAAK;gBACP,KAAK,UAAU;oBACb,MAAM;wBACJ,WAAW,KAAK,CAAC,CAAC;4BAChB,CAAC,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;4BACrD,CAAC,CAAC,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;oBAC1C,MAAK;gBACP,KAAK,OAAO;oBACV,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;oBAC/B,MAAK;gBACP,KAAK,MAAM;oBACT,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC5D,MAAK;YACT,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAC9C,oBAAoB,CAAC,MAAM,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;QAED,0BAA0B;YACxB,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QAC3D,CAAC;KACF,CAAA;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAE3B,OAAO,GAAG,EAAE;QACV,OAAO,GAAG,EAAE,CAAA;QACZ,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAA;IAC9B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,WAAW,CAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/D,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACjD,OAAO;QACL,KAAK,CAAC;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;SAC9B,CAAC;QACF,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACf,OAAO,CAAC,0BAA0B,EAAE,CAAA;QACtC,CAAC,CAAC;QACF,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACtB,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;gBAClB,KAAK,WAAW;oBACd,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;oBACxB,MAAK;gBACP,KAAK,SAAS;oBACZ,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;oBAC5B,MAAK;gBACP,KAAK,KAAK;oBACR,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;oBACzB,MAAK;gBACP,KAAK,OAAO,CAAC;gBACb,KAAK,GAAG;oBACN,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,KAAK,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;oBACxC,MAAK;gBACP,KAAK,MAAM;oBACT,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;oBACzB,MAAK;gBACP,KAAK,KAAK;oBACR,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC,CAAC;QACF,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;QACpC,CAAC,CAAC;KACH,CAAA;AACH,CAAC,CAAC,CAAA;AAUF,MAAM,WAAW,GAAG,WAAW,CAAmD,CAAC,MAAM,EAAE,EAAE;IAC3F,IAAI,SAAkC,CAAA;IAEtC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QACjD,OAAO,CAAC,cAAc,CAAC;YACrB,GAAG,MAAM;YACT,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,MAAM;gBACR,OAAO,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;YACnC,CAAC;YACD,IAAI,IAAI;gBACN,OAAO,SAAwB,CAAA;YACjC,CAAC;SACF,CAAC,CAAA;QAEF,OAAO;YACL,KAAK,CAAC;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,eAAe,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBAClE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBACnD,kBAAkB,EAAE,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;aAC5E,CAAC;YACF,CAAC,MAAM,CAAC,QAAQ,IAAI;gBAClB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBACf,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC9B,CAAC,CAAC;gBACF,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;oBACnB,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK;wBAAE,OAAM;oBAChD,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACjC,CAAC,CAAC;gBACF,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;oBACpB,IAAI,OAAO,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK;wBAAE,OAAM;oBAChD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACzB,CAAC,CAAC;aACH;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAA;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAA;AAC7B,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,CAAA"}
@@ -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 { type CSSMixinDescriptor, type Dispatched, type ElementProps, type Handle, 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;
@@ -143,7 +134,7 @@ export declare const list: <boundNode extends HTMLElement = HTMLElement>() => im
143
134
  export { popoverMixin as popover };
144
135
  export declare const submenuTrigger: <boundNode extends HTMLElement = HTMLElement>(options: SubmenuTriggerOptions) => import("@remix-run/ui").MixinDescriptor<boundNode, [options: SubmenuTriggerOptions], ElementProps>;
145
136
  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>;
137
+ export declare function onMenuSelect<target extends HTMLElement>(handler: MenuSelectHandler<target>, captureBoolean?: boolean): import("@remix-run/ui").MixinDescriptor<target, ["rmx:menu-select", (event: import("../../runtime/event-listeners.ts").EnsureEvent<import("../../runtime/event-listeners.ts").EventMap<target>["rmx:menu-select"], target>, signal: AbortSignal) => void | Promise<void>, (boolean | undefined)?], ElementProps>;
147
138
  export interface MenuProps extends Omit<Props<'button'>, 'children'> {
148
139
  children?: RemixNode;
149
140
  label: RemixNode;
@@ -1,6 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@remix-run/ui/jsx-runtime";
2
- // @jsxRuntime classic
3
- // @jsx createElement
4
2
  import { attrs, createElement, createMixin, css, on, ref, } from '@remix-run/ui';
5
3
  import {} from "../anchor/anchor.js";
6
4
  import * as button from "../button/button.js";
@@ -182,19 +180,6 @@ export const itemSlotStyle = menuItemSlotCss;
182
180
  export const itemLabelStyle = menuItemLabelCss;
183
181
  export const itemGlyphStyle = menuItemGlyphCss;
184
182
  export const triggerGlyphStyle = menuTriggerGlyphCss;
185
- var NavigationStrategy;
186
- (function (NavigationStrategy) {
187
- NavigationStrategy[NavigationStrategy["Next"] = 0] = "Next";
188
- NavigationStrategy[NavigationStrategy["Previous"] = 1] = "Previous";
189
- NavigationStrategy[NavigationStrategy["First"] = 2] = "First";
190
- NavigationStrategy[NavigationStrategy["Last"] = 3] = "Last";
191
- })(NavigationStrategy || (NavigationStrategy = {}));
192
- var State;
193
- (function (State) {
194
- State["Idle"] = "idle";
195
- State["Dismissing"] = "dismissing";
196
- State["Selecting"] = "selecting";
197
- })(State || (State = {}));
198
183
  export class MenuSelectEvent extends Event {
199
184
  item;
200
185
  constructor(item) {
@@ -262,7 +247,7 @@ function MenuProvider(handle) {
262
247
  let items = [];
263
248
  let listRef;
264
249
  let open = false;
265
- let state = State.Idle;
250
+ let state = 'idle';
266
251
  let suppressNextPointerLeaveClear = false;
267
252
  let surfaceRef;
268
253
  let triggerId;
@@ -297,7 +282,7 @@ function MenuProvider(handle) {
297
282
  focusNode(activeItem.node);
298
283
  }
299
284
  async function openMenu({ strategy = 'list', focus = strategy !== 'none', } = {}) {
300
- if (state !== State.Idle) {
285
+ if (state !== 'idle') {
301
286
  return;
302
287
  }
303
288
  let updates = [];
@@ -336,10 +321,10 @@ function MenuProvider(handle) {
336
321
  open = false;
337
322
  if (animation === 'none') {
338
323
  activeId = null;
339
- state = State.Idle;
324
+ state = 'idle';
340
325
  }
341
- else if (wasOpen && state === State.Idle) {
342
- state = State.Dismissing;
326
+ else if (wasOpen && state === 'idle') {
327
+ state = 'dismissing';
343
328
  }
344
329
  updates.push(handle.update());
345
330
  }
@@ -355,8 +340,8 @@ function MenuProvider(handle) {
355
340
  activeId = null;
356
341
  shouldUpdate = true;
357
342
  }
358
- if (state !== State.Idle) {
359
- state = State.Idle;
343
+ if (state !== 'idle') {
344
+ state = 'idle';
360
345
  shouldUpdate = true;
361
346
  }
362
347
  if (closeAnimation !== 'none') {
@@ -411,7 +396,7 @@ function MenuProvider(handle) {
411
396
  }
412
397
  }
413
398
  function highlight(id, { focus = false } = {}) {
414
- if (state !== State.Idle) {
399
+ if (state !== 'idle') {
415
400
  return;
416
401
  }
417
402
  let nextItem = id ? getItem(id) : undefined;
@@ -443,29 +428,29 @@ function MenuProvider(handle) {
443
428
  });
444
429
  }
445
430
  function navigate(strategy) {
446
- if (state !== State.Idle) {
431
+ if (state !== 'idle') {
447
432
  return;
448
433
  }
449
434
  let interactableItems = getInteractableItems();
450
435
  let activeIndex = interactableItems.findIndex((item) => item.id === activeId);
451
436
  let nextItem;
452
437
  switch (strategy) {
453
- case NavigationStrategy.Next:
438
+ case 'next':
454
439
  nextItem =
455
440
  activeIndex === -1
456
441
  ? interactableItems[0]
457
442
  : (interactableItems[activeIndex + 1] ?? interactableItems[activeIndex]);
458
443
  break;
459
- case NavigationStrategy.Previous:
444
+ case 'previous':
460
445
  nextItem =
461
446
  activeIndex === -1
462
447
  ? interactableItems[interactableItems.length - 1]
463
448
  : interactableItems[activeIndex - 1];
464
449
  break;
465
- case NavigationStrategy.First:
450
+ case 'first':
466
451
  nextItem = interactableItems[0];
467
452
  break;
468
- case NavigationStrategy.Last:
453
+ case 'last':
469
454
  nextItem = interactableItems[interactableItems.length - 1];
470
455
  break;
471
456
  }
@@ -474,7 +459,7 @@ function MenuProvider(handle) {
474
459
  }
475
460
  }
476
461
  function highlightSearchMatch(text) {
477
- if (state !== State.Idle) {
462
+ if (state !== 'idle') {
478
463
  return;
479
464
  }
480
465
  let interactableItems = getInteractableItems();
@@ -490,7 +475,7 @@ function MenuProvider(handle) {
490
475
  }
491
476
  }
492
477
  async function activateItem(id) {
493
- if (state !== State.Idle) {
478
+ if (state !== 'idle') {
494
479
  return;
495
480
  }
496
481
  let item = getItem(id);
@@ -502,7 +487,7 @@ function MenuProvider(handle) {
502
487
  return;
503
488
  }
504
489
  let committedChecked = item.type === 'checkbox' ? !item.checked : item.type === 'radio' ? true : undefined;
505
- state = State.Selecting;
490
+ state = 'selecting';
506
491
  activeId = item.id;
507
492
  flashState = item.type === 'item' ? { id: item.id } : { checked: committedChecked, id: item.id };
508
493
  let signal = await handle.update();
@@ -527,7 +512,7 @@ function MenuProvider(handle) {
527
512
  return;
528
513
  }
529
514
  await closeAll();
530
- state = State.Idle;
515
+ state = 'idle';
531
516
  signal = await handle.update();
532
517
  if (signal.aborted) {
533
518
  return;
@@ -540,7 +525,7 @@ function MenuProvider(handle) {
540
525
  await activateItem(activeId);
541
526
  }
542
527
  async function openActiveSubmenu() {
543
- if (state !== State.Idle) {
528
+ if (state !== 'idle') {
544
529
  return;
545
530
  }
546
531
  if (!activeId) {
@@ -788,22 +773,22 @@ const listMixin = createMixin((handle) => {
788
773
  case 'ArrowDown':
789
774
  event.preventDefault();
790
775
  event.stopPropagation();
791
- context.navigate(NavigationStrategy.Next);
776
+ context.navigate('next');
792
777
  return;
793
778
  case 'ArrowUp':
794
779
  event.preventDefault();
795
780
  event.stopPropagation();
796
- context.navigate(NavigationStrategy.Previous);
781
+ context.navigate('previous');
797
782
  return;
798
783
  case 'Home':
799
784
  event.preventDefault();
800
785
  event.stopPropagation();
801
- context.navigate(NavigationStrategy.First);
786
+ context.navigate('first');
802
787
  return;
803
788
  case 'End':
804
789
  event.preventDefault();
805
790
  event.stopPropagation();
806
- context.navigate(NavigationStrategy.Last);
791
+ context.navigate('last');
807
792
  return;
808
793
  case 'Enter':
809
794
  case ' ':
@@ -971,7 +956,7 @@ const submenuTriggerMixin = createMixin((handle) => {
971
956
  'aria-disabled': options.disabled ? 'true' : undefined,
972
957
  'aria-expanded': childMenu.isOpen ? 'true' : 'false',
973
958
  'aria-haspopup': 'menu',
974
- 'data-submenu-state': childMenu.state === State.Idle ? undefined : childMenu.state,
959
+ 'data-submenu-state': childMenu.state === 'idle' ? undefined : childMenu.state,
975
960
  'data-highlighted': parent.activeId === handle.id ? 'true' : undefined,
976
961
  }),
977
962
  ref((node, signal) => {