@react-native-reusables/cli 0.0.18 → 0.1.1

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 (139) hide show
  1. package/README.md +2 -37
  2. package/__generated/components/ui/accordion.tsx +30 -32
  3. package/__generated/components/ui/alert-dialog.tsx +19 -26
  4. package/__generated/components/ui/aspect-ratio.tsx +1 -1
  5. package/__generated/components/ui/avatar.tsx +31 -34
  6. package/__generated/components/ui/badge.tsx +2 -2
  7. package/__generated/components/ui/button.tsx +2 -5
  8. package/__generated/components/ui/card.tsx +39 -51
  9. package/__generated/components/ui/checkbox.tsx +25 -27
  10. package/__generated/components/ui/collapsible.tsx +1 -1
  11. package/__generated/components/ui/context-menu.tsx +28 -31
  12. package/__generated/components/ui/dialog.tsx +40 -43
  13. package/__generated/components/ui/dropdown-menu.tsx +27 -22
  14. package/__generated/components/ui/hover-card.tsx +3 -3
  15. package/__generated/components/ui/input.tsx +17 -18
  16. package/__generated/components/ui/label.tsx +21 -22
  17. package/__generated/components/ui/menubar.tsx +45 -47
  18. package/__generated/components/ui/navigation-menu.tsx +19 -17
  19. package/__generated/components/ui/popover.tsx +4 -4
  20. package/__generated/components/ui/progress.tsx +15 -11
  21. package/__generated/components/ui/radio-group.tsx +27 -29
  22. package/__generated/components/ui/select.tsx +55 -65
  23. package/__generated/components/ui/separator.tsx +16 -17
  24. package/__generated/components/ui/switch.tsx +59 -61
  25. package/__generated/components/ui/table.tsx +69 -76
  26. package/__generated/components/ui/tabs.tsx +49 -52
  27. package/__generated/components/ui/text.tsx +2 -2
  28. package/__generated/components/ui/textarea.tsx +20 -21
  29. package/__generated/components/ui/toggle-group.tsx +5 -7
  30. package/__generated/components/ui/toggle.tsx +4 -4
  31. package/__generated/components/ui/tooltip.tsx +4 -5
  32. package/__generated/components/ui/typography.tsx +2 -2
  33. package/dist/index.js +3 -3
  34. package/dist/index.js.map +1 -1
  35. package/package.json +2 -34
  36. package/__generated/components/primitives/accordion/accordion.tsx +0 -216
  37. package/__generated/components/primitives/accordion/accordion.web.tsx +0 -295
  38. package/__generated/components/primitives/accordion/index.ts +0 -1
  39. package/__generated/components/primitives/accordion/types.ts +0 -45
  40. package/__generated/components/primitives/alert-dialog/alert-dialog.tsx +0 -237
  41. package/__generated/components/primitives/alert-dialog/alert-dialog.web.tsx +0 -256
  42. package/__generated/components/primitives/alert-dialog/index.ts +0 -1
  43. package/__generated/components/primitives/alert-dialog/types.ts +0 -48
  44. package/__generated/components/primitives/aspect-ratio.tsx +0 -23
  45. package/__generated/components/primitives/avatar/index.tsx +0 -95
  46. package/__generated/components/primitives/avatar/types.ts +0 -10
  47. package/__generated/components/primitives/checkbox/checkbox.tsx +0 -101
  48. package/__generated/components/primitives/checkbox/checkbox.web.tsx +0 -114
  49. package/__generated/components/primitives/checkbox/index.ts +0 -1
  50. package/__generated/components/primitives/checkbox/types.ts +0 -11
  51. package/__generated/components/primitives/collapsible/collapsible.tsx +0 -119
  52. package/__generated/components/primitives/collapsible/collapsible.web.tsx +0 -157
  53. package/__generated/components/primitives/collapsible/index.ts +0 -1
  54. package/__generated/components/primitives/collapsible/types.ts +0 -18
  55. package/__generated/components/primitives/context-menu/context-menu.tsx +0 -648
  56. package/__generated/components/primitives/context-menu/context-menu.web.tsx +0 -533
  57. package/__generated/components/primitives/context-menu/index.ts +0 -1
  58. package/__generated/components/primitives/context-menu/types.ts +0 -90
  59. package/__generated/components/primitives/dialog/dialog.tsx +0 -211
  60. package/__generated/components/primitives/dialog/dialog.web.tsx +0 -197
  61. package/__generated/components/primitives/dialog/index.ts +0 -1
  62. package/__generated/components/primitives/dialog/types.ts +0 -60
  63. package/__generated/components/primitives/dropdown-menu/dropdown-menu.tsx +0 -608
  64. package/__generated/components/primitives/dropdown-menu/dropdown-menu.web.tsx +0 -550
  65. package/__generated/components/primitives/dropdown-menu/index.ts +0 -1
  66. package/__generated/components/primitives/dropdown-menu/types.ts +0 -72
  67. package/__generated/components/primitives/hooks/index.ts +0 -3
  68. package/__generated/components/primitives/hooks/useAugmentedRef.tsx +0 -29
  69. package/__generated/components/primitives/hooks/useControllableState.tsx +0 -75
  70. package/__generated/components/primitives/hooks/useRelativePosition.tsx +0 -227
  71. package/__generated/components/primitives/hover-card/hover-card.tsx +0 -279
  72. package/__generated/components/primitives/hover-card/hover-card.web.tsx +0 -150
  73. package/__generated/components/primitives/hover-card/index.ts +0 -1
  74. package/__generated/components/primitives/hover-card/types.ts +0 -51
  75. package/__generated/components/primitives/label/index.ts +0 -1
  76. package/__generated/components/primitives/label/label.tsx +0 -31
  77. package/__generated/components/primitives/label/label.web.tsx +0 -36
  78. package/__generated/components/primitives/label/types.ts +0 -15
  79. package/__generated/components/primitives/menubar/index.ts +0 -1
  80. package/__generated/components/primitives/menubar/menubar.tsx +0 -622
  81. package/__generated/components/primitives/menubar/menubar.web.tsx +0 -548
  82. package/__generated/components/primitives/menubar/types.ts +0 -77
  83. package/__generated/components/primitives/navigation-menu/index.ts +0 -1
  84. package/__generated/components/primitives/navigation-menu/navigation-menu.tsx +0 -315
  85. package/__generated/components/primitives/navigation-menu/navigation-menu.web.tsx +0 -264
  86. package/__generated/components/primitives/navigation-menu/types.ts +0 -49
  87. package/__generated/components/primitives/popover/index.ts +0 -1
  88. package/__generated/components/primitives/popover/popover.tsx +0 -290
  89. package/__generated/components/primitives/popover/popover.web.tsx +0 -191
  90. package/__generated/components/primitives/popover/types.ts +0 -24
  91. package/__generated/components/primitives/portal.tsx +0 -82
  92. package/__generated/components/primitives/progress/index.ts +0 -1
  93. package/__generated/components/primitives/progress/progress.tsx +0 -59
  94. package/__generated/components/primitives/progress/progress.web.tsx +0 -36
  95. package/__generated/components/primitives/progress/types.ts +0 -7
  96. package/__generated/components/primitives/radio-group/index.ts +0 -1
  97. package/__generated/components/primitives/radio-group/radio-group.tsx +0 -116
  98. package/__generated/components/primitives/radio-group/radio-group.web.tsx +0 -78
  99. package/__generated/components/primitives/radio-group/types.ts +0 -15
  100. package/__generated/components/primitives/select/index.ts +0 -1
  101. package/__generated/components/primitives/select/select.tsx +0 -466
  102. package/__generated/components/primitives/select/select.web.tsx +0 -332
  103. package/__generated/components/primitives/select/types.ts +0 -89
  104. package/__generated/components/primitives/separator/index.tsx +0 -23
  105. package/__generated/components/primitives/separator/types.ts +0 -6
  106. package/__generated/components/primitives/slider/index.ts +0 -1
  107. package/__generated/components/primitives/slider/slider.tsx +0 -89
  108. package/__generated/components/primitives/slider/slider.web.tsx +0 -67
  109. package/__generated/components/primitives/slider/types.ts +0 -24
  110. package/__generated/components/primitives/slot.tsx +0 -187
  111. package/__generated/components/primitives/switch/index.ts +0 -1
  112. package/__generated/components/primitives/switch/switch.tsx +0 -65
  113. package/__generated/components/primitives/switch/switch.web.tsx +0 -67
  114. package/__generated/components/primitives/switch/types.ts +0 -11
  115. package/__generated/components/primitives/table.tsx +0 -55
  116. package/__generated/components/primitives/tabs/index.ts +0 -1
  117. package/__generated/components/primitives/tabs/tabs.tsx +0 -133
  118. package/__generated/components/primitives/tabs/tabs.web.tsx +0 -97
  119. package/__generated/components/primitives/tabs/types.ts +0 -24
  120. package/__generated/components/primitives/toast/index.tsx +0 -128
  121. package/__generated/components/primitives/toast/types.ts +0 -7
  122. package/__generated/components/primitives/toggle/index.ts +0 -1
  123. package/__generated/components/primitives/toggle/toggle.tsx +0 -37
  124. package/__generated/components/primitives/toggle/toggle.web.tsx +0 -26
  125. package/__generated/components/primitives/toggle/types.ts +0 -7
  126. package/__generated/components/primitives/toggle-group/index.ts +0 -1
  127. package/__generated/components/primitives/toggle-group/toggle-group.tsx +0 -125
  128. package/__generated/components/primitives/toggle-group/toggle-group.web.tsx +0 -124
  129. package/__generated/components/primitives/toggle-group/types.ts +0 -37
  130. package/__generated/components/primitives/toolbar/index.ts +0 -1
  131. package/__generated/components/primitives/toolbar/toolbar.tsx +0 -125
  132. package/__generated/components/primitives/toolbar/toolbar.web.tsx +0 -129
  133. package/__generated/components/primitives/toolbar/types.ts +0 -39
  134. package/__generated/components/primitives/tooltip/index.ts +0 -1
  135. package/__generated/components/primitives/tooltip/tooltip.tsx +0 -277
  136. package/__generated/components/primitives/tooltip/tooltip.web.tsx +0 -181
  137. package/__generated/components/primitives/tooltip/types.ts +0 -42
  138. package/__generated/components/primitives/types.ts +0 -105
  139. package/__generated/components/primitives/utils.ts +0 -61
@@ -1,548 +0,0 @@
1
- import * as Menubar from '@radix-ui/react-menubar';
2
- import { useAugmentedRef, useControllableState } from '@rnr/hooks';
3
- import * as Slot from '@rnr/slot';
4
- import type {
5
- ForceMountable,
6
- PositionedContentProps,
7
- PressableRef,
8
- SlottablePressableProps,
9
- SlottableTextProps,
10
- SlottableViewProps,
11
- TextRef,
12
- ViewRef,
13
- } from '@rnr/types';
14
- import { EmptyGestureResponderEvent } from '@rnr/utils';
15
- import * as React from 'react';
16
- import { GestureResponderEvent, Pressable, Text, View } from 'react-native';
17
- import type {
18
- MenubarCheckboxItemProps,
19
- MenubarItemProps,
20
- MenubarMenuProps,
21
- MenubarOverlayProps,
22
- MenubarPortalProps,
23
- MenubarRadioGroupProps,
24
- MenubarRadioItemProps,
25
- MenubarRootProps,
26
- MenubarSeparatorProps,
27
- MenubarSubProps,
28
- MenubarSubTriggerProps,
29
- } from './types';
30
-
31
- const RootContext = React.createContext<MenubarRootProps | null>(null);
32
-
33
- const Root = React.forwardRef<ViewRef, SlottableViewProps & MenubarRootProps>(
34
- ({ asChild, value, onValueChange, ...viewProps }, ref) => {
35
- const Component = asChild ? Slot.View : View;
36
- return (
37
- <RootContext.Provider value={{ value, onValueChange }}>
38
- <Menubar.Root value={value} onValueChange={onValueChange}>
39
- <Component ref={ref} {...viewProps} />
40
- </Menubar.Root>
41
- </RootContext.Provider>
42
- );
43
- }
44
- );
45
-
46
- Root.displayName = 'RootWebMenubar';
47
-
48
- function useRootContext() {
49
- const context = React.useContext(RootContext);
50
- if (!context) {
51
- throw new Error('Menubar compound components cannot be rendered outside the Menubar component');
52
- }
53
- return context;
54
- }
55
-
56
- const MenuContext = React.createContext<MenubarMenuProps | null>(null);
57
-
58
- const Menu = React.forwardRef<ViewRef, SlottableViewProps & MenubarMenuProps>(
59
- ({ asChild, value, ...viewProps }, ref) => {
60
- const Component = asChild ? Slot.View : View;
61
- return (
62
- <MenuContext.Provider value={{ value }}>
63
- <Menubar.Menu value={value}>
64
- <Component ref={ref} {...viewProps} />
65
- </Menubar.Menu>
66
- </MenuContext.Provider>
67
- );
68
- }
69
- );
70
-
71
- Menu.displayName = 'MenuWebMenubar';
72
-
73
- function useMenuContext() {
74
- const context = React.useContext(MenuContext);
75
- if (!context) {
76
- throw new Error('Menubar compound components cannot be rendered outside the Menubar component');
77
- }
78
- return context;
79
- }
80
-
81
- const Trigger = React.forwardRef<PressableRef, SlottablePressableProps>(
82
- ({ asChild, disabled = false, ...props }, ref) => {
83
- const augmentedRef = useAugmentedRef({ ref });
84
- const { value: menuValue } = useMenuContext();
85
- const { value } = useRootContext();
86
-
87
- React.useLayoutEffect(() => {
88
- if (augmentedRef.current) {
89
- const augRef = augmentedRef.current as unknown as HTMLDivElement;
90
- augRef.dataset.state = value && menuValue === value ? 'open' : 'closed';
91
- }
92
- }, [open]);
93
-
94
- React.useLayoutEffect(() => {
95
- if (augmentedRef.current) {
96
- const augRef = augmentedRef.current as unknown as HTMLDivElement;
97
- if (disabled) {
98
- augRef.dataset.disabled = 'true';
99
- } else {
100
- augRef.dataset.disabled = undefined;
101
- }
102
- }
103
- }, [disabled]);
104
-
105
- const Component = asChild ? Slot.Pressable : Pressable;
106
- return (
107
- <Menubar.Trigger disabled={disabled ?? undefined} asChild>
108
- <Component ref={augmentedRef} disabled={disabled} {...props} />
109
- </Menubar.Trigger>
110
- );
111
- }
112
- );
113
-
114
- Trigger.displayName = 'TriggerWebMenubar';
115
-
116
- function Portal({ forceMount, container, children }: MenubarPortalProps) {
117
- return <Menubar.Portal forceMount={forceMount} container={container} children={children} />;
118
- }
119
-
120
- const Overlay = React.forwardRef<PressableRef, SlottablePressableProps & MenubarOverlayProps>(
121
- ({ asChild, ...props }, ref) => {
122
- const Component = asChild ? Slot.Pressable : Pressable;
123
- return <Component ref={ref} {...props} />;
124
- }
125
- );
126
-
127
- Overlay.displayName = 'OverlayWebMenubar';
128
-
129
- const MenubarContentContext = React.createContext<{
130
- close: () => void;
131
- } | null>(null);
132
-
133
- const Content = React.forwardRef<ViewRef, SlottableViewProps & PositionedContentProps>(
134
- (
135
- {
136
- asChild = false,
137
- forceMount,
138
- align,
139
- side,
140
- sideOffset,
141
- alignOffset = 0,
142
- avoidCollisions = true,
143
- insets,
144
- loop,
145
- onCloseAutoFocus,
146
- onEscapeKeyDown,
147
- onPointerDownOutside,
148
- onFocusOutside,
149
- onInteractOutside,
150
- collisionBoundary,
151
- sticky,
152
- hideWhenDetached,
153
- ...props
154
- },
155
- ref
156
- ) => {
157
- const itemRef = React.useRef<HTMLDivElement>(null);
158
-
159
- function close() {
160
- itemRef.current?.click();
161
- }
162
-
163
- const Component = asChild ? Slot.View : View;
164
- return (
165
- <MenubarContentContext.Provider value={{ close }}>
166
- <Menubar.Content
167
- forceMount={forceMount}
168
- alignOffset={alignOffset}
169
- avoidCollisions={avoidCollisions}
170
- collisionPadding={insets}
171
- loop={loop}
172
- onCloseAutoFocus={onCloseAutoFocus}
173
- onEscapeKeyDown={onEscapeKeyDown}
174
- onPointerDownOutside={onPointerDownOutside}
175
- onFocusOutside={onFocusOutside}
176
- onInteractOutside={onInteractOutside}
177
- collisionBoundary={collisionBoundary}
178
- sticky={sticky}
179
- hideWhenDetached={hideWhenDetached}
180
- align={align}
181
- side={side}
182
- sideOffset={sideOffset}
183
- >
184
- <Component ref={ref} {...props} />
185
- <Menubar.Item
186
- ref={itemRef}
187
- aria-hidden
188
- style={{ position: 'fixed', top: 0, left: 0, zIndex: -999999999 }}
189
- aria-disabled
190
- tabIndex={-1}
191
- hidden
192
- />
193
- </Menubar.Content>
194
- </MenubarContentContext.Provider>
195
- );
196
- }
197
- );
198
-
199
- Content.displayName = 'ContentWebMenubar';
200
-
201
- function useMenubarContentContext() {
202
- const context = React.useContext(MenubarContentContext);
203
- if (!context) {
204
- throw new Error(
205
- 'MenubarContent compound components cannot be rendered outside the MenubarContent component'
206
- );
207
- }
208
- return context;
209
- }
210
-
211
- const Item = React.forwardRef<PressableRef, SlottablePressableProps & MenubarItemProps>(
212
- (
213
- {
214
- asChild,
215
- textValue,
216
- closeOnPress = true,
217
- onPress: onPressProp,
218
- onKeyDown: onKeyDownProp,
219
- ...props
220
- },
221
- ref
222
- ) => {
223
- const { close } = useMenubarContentContext();
224
-
225
- function onKeyDown(ev: React.KeyboardEvent) {
226
- onKeyDownProp?.(ev);
227
- if (ev.key === 'Enter' || ev.key === ' ') {
228
- onPressProp?.(EmptyGestureResponderEvent);
229
- if (closeOnPress) {
230
- close();
231
- }
232
- }
233
- }
234
-
235
- function onPress(ev: GestureResponderEvent) {
236
- onPressProp?.(ev);
237
- if (closeOnPress) {
238
- close();
239
- }
240
- }
241
-
242
- const Component = asChild ? Slot.Pressable : Pressable;
243
- return (
244
- <Menubar.Item
245
- textValue={textValue}
246
- disabled={props.disabled ?? undefined}
247
- onSelect={closeOnPress ? undefined : onSelected}
248
- asChild
249
- >
250
- <Component
251
- ref={ref}
252
- // @ts-expect-error web only
253
- onKeyDown={onKeyDown}
254
- onPress={onPress}
255
- {...props}
256
- />
257
- </Menubar.Item>
258
- );
259
- }
260
- );
261
-
262
- Item.displayName = 'ItemWebMenubar';
263
-
264
- const Group = React.forwardRef<ViewRef, SlottableViewProps>(({ asChild, ...props }, ref) => {
265
- const Component = asChild ? Slot.View : View;
266
- return (
267
- <Menubar.Group asChild>
268
- <Component ref={ref} {...props} />
269
- </Menubar.Group>
270
- );
271
- });
272
-
273
- Group.displayName = 'GroupWebMenubar';
274
-
275
- const Label = React.forwardRef<TextRef, SlottableTextProps>(({ asChild, ...props }, ref) => {
276
- const Component = asChild ? Slot.Text : Text;
277
- return (
278
- <Menubar.Label asChild>
279
- <Component ref={ref} {...props} />
280
- </Menubar.Label>
281
- );
282
- });
283
-
284
- Label.displayName = 'LabelWebMenubar';
285
-
286
- const CheckboxItem = React.forwardRef<
287
- PressableRef,
288
- SlottablePressableProps & MenubarCheckboxItemProps
289
- >(
290
- (
291
- {
292
- asChild,
293
- checked,
294
- onCheckedChange,
295
- textValue,
296
- disabled = false,
297
- closeOnPress = true,
298
- onPress: onPressProp,
299
- onKeyDown: onKeyDownProp,
300
- ...props
301
- },
302
- ref
303
- ) => {
304
- function onKeyDown(ev: React.KeyboardEvent) {
305
- onKeyDownProp?.(ev);
306
- if (ev.key === 'Enter' || ev.key === ' ') {
307
- onPressProp?.(EmptyGestureResponderEvent);
308
- onCheckedChange?.(!checked);
309
- if (closeOnPress) {
310
- close();
311
- }
312
- }
313
- }
314
-
315
- function onPress(ev: GestureResponderEvent) {
316
- onPressProp?.(ev);
317
- onCheckedChange?.(!checked);
318
- if (closeOnPress) {
319
- close();
320
- }
321
- }
322
- const Component = asChild ? Slot.Pressable : Pressable;
323
- return (
324
- <Menubar.CheckboxItem
325
- textValue={textValue}
326
- checked={checked}
327
- onCheckedChange={onCheckedChange}
328
- onSelect={closeOnPress ? undefined : onSelected}
329
- disabled={disabled ?? undefined}
330
- asChild
331
- >
332
- <Component
333
- ref={ref}
334
- // @ts-expect-error web only
335
- onKeyDown={onKeyDown}
336
- onPress={onPress}
337
- role='button'
338
- {...props}
339
- />
340
- </Menubar.CheckboxItem>
341
- );
342
- }
343
- );
344
-
345
- CheckboxItem.displayName = 'CheckboxItemWebMenubar';
346
-
347
- const MenubarRadioGroupContext = React.createContext<{
348
- value?: string;
349
- onValueChange?: (value: string) => void;
350
- } | null>(null);
351
-
352
- const RadioGroup = React.forwardRef<ViewRef, SlottableViewProps & MenubarRadioGroupProps>(
353
- ({ asChild, value, onValueChange, ...props }, ref) => {
354
- const Component = asChild ? Slot.View : View;
355
- return (
356
- <MenubarRadioGroupContext.Provider value={{ value, onValueChange }}>
357
- <Menubar.RadioGroup value={value} onValueChange={onValueChange} asChild>
358
- <Component ref={ref} {...props} />
359
- </Menubar.RadioGroup>
360
- </MenubarRadioGroupContext.Provider>
361
- );
362
- }
363
- );
364
-
365
- RadioGroup.displayName = 'RadioGroupWebMenubar';
366
-
367
- function useMenubarRadioGroupContext() {
368
- const context = React.useContext(MenubarRadioGroupContext);
369
- if (!context) {
370
- throw new Error(
371
- 'MenubarRadioGroup compound components cannot be rendered outside the MenubarRadioGroup component'
372
- );
373
- }
374
- return context;
375
- }
376
-
377
- const RadioItem = React.forwardRef<PressableRef, SlottablePressableProps & MenubarRadioItemProps>(
378
- (
379
- {
380
- asChild,
381
- value,
382
- textValue,
383
- closeOnPress = true,
384
- onPress: onPressProp,
385
- onKeyDown: onKeyDownProp,
386
- ...props
387
- },
388
- ref
389
- ) => {
390
- const { onValueChange } = useMenubarRadioGroupContext();
391
- const { close } = useMenubarContentContext();
392
-
393
- function onKeyDown(ev: React.KeyboardEvent) {
394
- onKeyDownProp?.(ev);
395
- if (ev.key === 'Enter' || ev.key === ' ') {
396
- onValueChange?.(value);
397
- onPressProp?.(EmptyGestureResponderEvent);
398
- if (closeOnPress) {
399
- close();
400
- }
401
- }
402
- }
403
-
404
- function onPress(ev: GestureResponderEvent) {
405
- onValueChange?.(value);
406
- onPressProp?.(ev);
407
- if (closeOnPress) {
408
- close();
409
- }
410
- }
411
- const Component = asChild ? Slot.Pressable : Pressable;
412
- return (
413
- <Menubar.RadioItem
414
- value={value}
415
- textValue={textValue}
416
- disabled={props.disabled ?? undefined}
417
- onSelect={closeOnPress ? undefined : onSelected}
418
- asChild
419
- >
420
- <Component
421
- ref={ref}
422
- // @ts-expect-error web only
423
- onKeyDown={onKeyDown}
424
- onPress={onPress}
425
- {...props}
426
- />
427
- </Menubar.RadioItem>
428
- );
429
- }
430
- );
431
-
432
- RadioItem.displayName = 'RadioItemWebMenubar';
433
-
434
- const ItemIndicator = React.forwardRef<ViewRef, SlottableViewProps & ForceMountable>(
435
- ({ asChild, forceMount, ...props }, ref) => {
436
- const Component = asChild ? Slot.View : View;
437
- return (
438
- <Menubar.ItemIndicator forceMount={forceMount} asChild>
439
- <Component ref={ref} {...props} />
440
- </Menubar.ItemIndicator>
441
- );
442
- }
443
- );
444
-
445
- ItemIndicator.displayName = 'ItemIndicatorWebMenubar';
446
-
447
- const Separator = React.forwardRef<ViewRef, SlottableViewProps & MenubarSeparatorProps>(
448
- ({ asChild, decorative, ...props }, ref) => {
449
- const Component = asChild ? Slot.View : View;
450
- return (
451
- <Menubar.Separator asChild>
452
- <Component ref={ref} {...props} />
453
- </Menubar.Separator>
454
- );
455
- }
456
- );
457
-
458
- Separator.displayName = 'SeparatorWebMenubar';
459
-
460
- const MenubarSubContext = React.createContext<{
461
- open: boolean;
462
- onOpenChange: (open: boolean) => void;
463
- } | null>(null);
464
-
465
- const Sub = React.forwardRef<ViewRef, SlottableViewProps & MenubarSubProps>(
466
- ({ asChild, defaultOpen, open: openProp, onOpenChange: onOpenChangeProp, ...props }, ref) => {
467
- const [open = false, onOpenChange] = useControllableState({
468
- prop: openProp,
469
- defaultProp: defaultOpen,
470
- onChange: onOpenChangeProp,
471
- });
472
- const Component = asChild ? Slot.View : View;
473
- return (
474
- <MenubarSubContext.Provider value={{ open, onOpenChange }}>
475
- <Menubar.Sub open={open} onOpenChange={onOpenChange}>
476
- <Component ref={ref} {...props} />
477
- </Menubar.Sub>
478
- </MenubarSubContext.Provider>
479
- );
480
- }
481
- );
482
-
483
- Sub.displayName = 'SubWebMenubar';
484
-
485
- function useSubContext() {
486
- const context = React.useContext(MenubarSubContext);
487
- if (!context) {
488
- throw new Error(
489
- 'MenubarSub compound components cannot be rendered outside the MenubarSub component'
490
- );
491
- }
492
- return context;
493
- }
494
-
495
- const SubTrigger = React.forwardRef<PressableRef, SlottablePressableProps & MenubarSubTriggerProps>(
496
- ({ asChild, textValue, disabled = false, ...props }, ref) => {
497
- const Component = asChild ? Slot.Pressable : Pressable;
498
- return (
499
- <Menubar.SubTrigger disabled={disabled ?? undefined} textValue={textValue} asChild>
500
- <Component ref={ref} {...props} />
501
- </Menubar.SubTrigger>
502
- );
503
- }
504
- );
505
-
506
- SubTrigger.displayName = 'SubTriggerWebMenubar';
507
-
508
- const SubContent = React.forwardRef<ViewRef, SlottableViewProps & ForceMountable>(
509
- ({ asChild = false, forceMount, ...props }, ref) => {
510
- const Component = asChild ? Slot.View : View;
511
- return (
512
- <Menubar.Portal>
513
- <Menubar.SubContent forceMount={forceMount}>
514
- <Component ref={ref} {...props} />
515
- </Menubar.SubContent>
516
- </Menubar.Portal>
517
- );
518
- }
519
- );
520
-
521
- Content.displayName = 'ContentWebMenubar';
522
-
523
- export {
524
- CheckboxItem,
525
- Content,
526
- Group,
527
- Item,
528
- ItemIndicator,
529
- Label,
530
- Menu,
531
- Overlay,
532
- Portal,
533
- RadioGroup,
534
- RadioItem,
535
- Root,
536
- Separator,
537
- Sub,
538
- SubContent,
539
- SubTrigger,
540
- Trigger,
541
- useMenuContext,
542
- useRootContext,
543
- useSubContext,
544
- };
545
-
546
- function onSelected(ev: Event) {
547
- ev.preventDefault();
548
- }
@@ -1,77 +0,0 @@
1
- import { ForceMountable } from '@rnr/types';
2
-
3
- interface MenubarRootProps {
4
- value: string | undefined;
5
- onValueChange: (value: string | undefined) => void;
6
- }
7
-
8
- interface MenubarMenuProps {
9
- value: string | undefined;
10
- }
11
-
12
- interface MenubarPortalProps extends ForceMountable {
13
- children: React.ReactNode;
14
- /**
15
- * Platform: NATIVE ONLY
16
- */
17
- hostName?: string;
18
- /**
19
- * Platform: WEB ONLY
20
- */
21
- container?: HTMLElement | null | undefined;
22
- }
23
-
24
- interface MenubarOverlayProps extends ForceMountable {
25
- closeOnPress?: boolean;
26
- }
27
-
28
- interface MenubarItemProps {
29
- textValue?: string;
30
- closeOnPress?: boolean;
31
- }
32
-
33
- interface MenubarCheckboxItemProps {
34
- checked: boolean;
35
- onCheckedChange: (checked: boolean) => void;
36
- closeOnPress?: boolean;
37
- textValue?: string;
38
- }
39
-
40
- interface MenubarRadioGroupProps {
41
- value: string | undefined;
42
- onValueChange: (value: string) => void;
43
- }
44
-
45
- interface MenubarRadioItemProps {
46
- value: string;
47
- textValue?: string;
48
- closeOnPress?: boolean;
49
- }
50
-
51
- interface MenubarSeparatorProps {
52
- decorative?: boolean;
53
- }
54
-
55
- interface MenubarSubProps {
56
- defaultOpen?: boolean;
57
- open?: boolean;
58
- onOpenChange?: (value: boolean) => void;
59
- }
60
-
61
- interface MenubarSubTriggerProps {
62
- textValue?: string;
63
- }
64
-
65
- export type {
66
- MenubarCheckboxItemProps,
67
- MenubarItemProps,
68
- MenubarMenuProps,
69
- MenubarOverlayProps,
70
- MenubarPortalProps,
71
- MenubarRadioGroupProps,
72
- MenubarRadioItemProps,
73
- MenubarRootProps,
74
- MenubarSeparatorProps,
75
- MenubarSubProps,
76
- MenubarSubTriggerProps,
77
- };
@@ -1 +0,0 @@
1
- export * from './navigation-menu';