@campxdev/react-native-blueprint 0.1.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.
- package/LICENSE +20 -0
- package/README.md +358 -0
- package/lib/module/app/_layout.js +23 -0
- package/lib/module/app/_layout.js.map +1 -0
- package/lib/module/assets/icons/weather_icons/drizzle.png +0 -0
- package/lib/module/assets/icons/weather_icons/foggy.png +0 -0
- package/lib/module/assets/icons/weather_icons/freezing_rain.png +0 -0
- package/lib/module/assets/icons/weather_icons/partly_cloudy.png +0 -0
- package/lib/module/assets/icons/weather_icons/rainy.png +0 -0
- package/lib/module/assets/icons/weather_icons/showers.png +0 -0
- package/lib/module/assets/icons/weather_icons/sunny_weather.png +0 -0
- package/lib/module/assets/icons/weather_icons/thunderstorm.png +0 -0
- package/lib/module/assets/icons/weather_icons/thunderstorm_hail.png +0 -0
- package/lib/module/components/theme-config.js +265 -0
- package/lib/module/components/theme-config.js.map +1 -0
- package/lib/module/components/ui/Accordion.js +228 -0
- package/lib/module/components/ui/Accordion.js.map +1 -0
- package/lib/module/components/ui/Alert-Dialog.js +266 -0
- package/lib/module/components/ui/Alert-Dialog.js.map +1 -0
- package/lib/module/components/ui/Alert.js +107 -0
- package/lib/module/components/ui/Alert.js.map +1 -0
- package/lib/module/components/ui/AppBar.js +403 -0
- package/lib/module/components/ui/AppBar.js.map +1 -0
- package/lib/module/components/ui/Aspect-Ratio.js +27 -0
- package/lib/module/components/ui/Aspect-Ratio.js.map +1 -0
- package/lib/module/components/ui/Avatar.js +97 -0
- package/lib/module/components/ui/Avatar.js.map +1 -0
- package/lib/module/components/ui/Badge.js +127 -0
- package/lib/module/components/ui/Badge.js.map +1 -0
- package/lib/module/components/ui/Bottom-Sheet.js +144 -0
- package/lib/module/components/ui/Bottom-Sheet.js.map +1 -0
- package/lib/module/components/ui/Button.js +88 -0
- package/lib/module/components/ui/Button.js.map +1 -0
- package/lib/module/components/ui/Card.js +176 -0
- package/lib/module/components/ui/Card.js.map +1 -0
- package/lib/module/components/ui/Checkbox.js +65 -0
- package/lib/module/components/ui/Checkbox.js.map +1 -0
- package/lib/module/components/ui/Collapsible.js +42 -0
- package/lib/module/components/ui/Collapsible.js.map +1 -0
- package/lib/module/components/ui/Context-Menu.js +287 -0
- package/lib/module/components/ui/Context-Menu.js.map +1 -0
- package/lib/module/components/ui/Custom-Card.js +202 -0
- package/lib/module/components/ui/Custom-Card.js.map +1 -0
- package/lib/module/components/ui/Dialog.js +202 -0
- package/lib/module/components/ui/Dialog.js.map +1 -0
- package/lib/module/components/ui/Dropdown-Menu.js +421 -0
- package/lib/module/components/ui/Dropdown-Menu.js.map +1 -0
- package/lib/module/components/ui/Floating-Action.js +50 -0
- package/lib/module/components/ui/Floating-Action.js.map +1 -0
- package/lib/module/components/ui/Greeting-Card.js +392 -0
- package/lib/module/components/ui/Greeting-Card.js.map +1 -0
- package/lib/module/components/ui/Hover-Card.js +96 -0
- package/lib/module/components/ui/Hover-Card.js.map +1 -0
- package/lib/module/components/ui/Icon.js +73 -0
- package/lib/module/components/ui/Icon.js.map +1 -0
- package/lib/module/components/ui/Input.js +74 -0
- package/lib/module/components/ui/Input.js.map +1 -0
- package/lib/module/components/ui/Label.js +44 -0
- package/lib/module/components/ui/Label.js.map +1 -0
- package/lib/module/components/ui/Menubar.js +375 -0
- package/lib/module/components/ui/Menubar.js.map +1 -0
- package/lib/module/components/ui/Native-Only-Animated-View.js +41 -0
- package/lib/module/components/ui/Native-Only-Animated-View.js.map +1 -0
- package/lib/module/components/ui/NavBar.js +352 -0
- package/lib/module/components/ui/NavBar.js.map +1 -0
- package/lib/module/components/ui/Popover.js +101 -0
- package/lib/module/components/ui/Popover.js.map +1 -0
- package/lib/module/components/ui/Progress.js +124 -0
- package/lib/module/components/ui/Progress.js.map +1 -0
- package/lib/module/components/ui/Radio-Group.js +75 -0
- package/lib/module/components/ui/Radio-Group.js.map +1 -0
- package/lib/module/components/ui/Select.js +269 -0
- package/lib/module/components/ui/Select.js.map +1 -0
- package/lib/module/components/ui/Separator.js +58 -0
- package/lib/module/components/ui/Separator.js.map +1 -0
- package/lib/module/components/ui/SizedBox.js +101 -0
- package/lib/module/components/ui/SizedBox.js.map +1 -0
- package/lib/module/components/ui/Skeleton.js +57 -0
- package/lib/module/components/ui/Skeleton.js.map +1 -0
- package/lib/module/components/ui/Slider.js +169 -0
- package/lib/module/components/ui/Slider.js.map +1 -0
- package/lib/module/components/ui/Switch.js +55 -0
- package/lib/module/components/ui/Switch.js.map +1 -0
- package/lib/module/components/ui/Table.js +150 -0
- package/lib/module/components/ui/Table.js.map +1 -0
- package/lib/module/components/ui/Tabs.js +106 -0
- package/lib/module/components/ui/Tabs.js.map +1 -0
- package/lib/module/components/ui/Text.js +69 -0
- package/lib/module/components/ui/Text.js.map +1 -0
- package/lib/module/components/ui/Textarea.js +88 -0
- package/lib/module/components/ui/Textarea.js.map +1 -0
- package/lib/module/components/ui/Theme-Toggle.js +156 -0
- package/lib/module/components/ui/Theme-Toggle.js.map +1 -0
- package/lib/module/components/ui/Toast.js +101 -0
- package/lib/module/components/ui/Toast.js.map +1 -0
- package/lib/module/components/ui/Toggle-Group.js +129 -0
- package/lib/module/components/ui/Toggle-Group.js.map +1 -0
- package/lib/module/components/ui/Toggle.js +106 -0
- package/lib/module/components/ui/Toggle.js.map +1 -0
- package/lib/module/components/ui/Tooltip.js +106 -0
- package/lib/module/components/ui/Tooltip.js.map +1 -0
- package/lib/module/components/ui/index.js +45 -0
- package/lib/module/components/ui/index.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/ThemeProvider.js +173 -0
- package/lib/module/lib/ThemeProvider.js.map +1 -0
- package/lib/module/lib/cornerRadius.js +164 -0
- package/lib/module/lib/cornerRadius.js.map +1 -0
- package/lib/module/lib/fonts.js +25 -0
- package/lib/module/lib/fonts.js.map +1 -0
- package/lib/module/lib/theme.js +212 -0
- package/lib/module/lib/theme.js.map +1 -0
- package/lib/module/lib/utils.js +137 -0
- package/lib/module/lib/utils.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/package.json +208 -0
- package/src/app/_layout.tsx +25 -0
- package/src/assets/icons/weather_icons/drizzle.png +0 -0
- package/src/assets/icons/weather_icons/foggy.png +0 -0
- package/src/assets/icons/weather_icons/freezing_rain.png +0 -0
- package/src/assets/icons/weather_icons/partly_cloudy.png +0 -0
- package/src/assets/icons/weather_icons/rainy.png +0 -0
- package/src/assets/icons/weather_icons/showers.png +0 -0
- package/src/assets/icons/weather_icons/sunny_weather.png +0 -0
- package/src/assets/icons/weather_icons/thunderstorm.png +0 -0
- package/src/assets/icons/weather_icons/thunderstorm_hail.png +0 -0
- package/src/components/theme-config.ts +331 -0
- package/src/components/ui/Accordion.tsx +253 -0
- package/src/components/ui/Alert-Dialog.tsx +295 -0
- package/src/components/ui/Alert.tsx +137 -0
- package/src/components/ui/AppBar.tsx +551 -0
- package/src/components/ui/Aspect-Ratio.tsx +25 -0
- package/src/components/ui/Avatar.tsx +103 -0
- package/src/components/ui/Badge.tsx +121 -0
- package/src/components/ui/Bottom-Sheet.tsx +224 -0
- package/src/components/ui/Button.tsx +100 -0
- package/src/components/ui/Card.tsx +185 -0
- package/src/components/ui/Checkbox.tsx +81 -0
- package/src/components/ui/Collapsible.tsx +40 -0
- package/src/components/ui/Context-Menu.tsx +407 -0
- package/src/components/ui/Custom-Card.tsx +226 -0
- package/src/components/ui/Dialog.tsx +240 -0
- package/src/components/ui/Dropdown-Menu.tsx +544 -0
- package/src/components/ui/Floating-Action.tsx +54 -0
- package/src/components/ui/Greeting-Card.tsx +471 -0
- package/src/components/ui/Hover-Card.tsx +101 -0
- package/src/components/ui/Icon.tsx +75 -0
- package/src/components/ui/Input.tsx +90 -0
- package/src/components/ui/Label.tsx +48 -0
- package/src/components/ui/Menubar.tsx +509 -0
- package/src/components/ui/Native-Only-Animated-View.tsx +37 -0
- package/src/components/ui/NavBar.tsx +397 -0
- package/src/components/ui/Popover.tsx +110 -0
- package/src/components/ui/Progress.tsx +138 -0
- package/src/components/ui/Radio-Group.tsx +79 -0
- package/src/components/ui/Select.tsx +344 -0
- package/src/components/ui/Separator.tsx +68 -0
- package/src/components/ui/SizedBox.tsx +116 -0
- package/src/components/ui/Skeleton.tsx +55 -0
- package/src/components/ui/Slider.tsx +222 -0
- package/src/components/ui/Switch.tsx +67 -0
- package/src/components/ui/Table.tsx +170 -0
- package/src/components/ui/Tabs.tsx +119 -0
- package/src/components/ui/Text.tsx +73 -0
- package/src/components/ui/Textarea.tsx +93 -0
- package/src/components/ui/Theme-Toggle.tsx +204 -0
- package/src/components/ui/Toast.tsx +127 -0
- package/src/components/ui/Toggle-Group.tsx +160 -0
- package/src/components/ui/Toggle.tsx +122 -0
- package/src/components/ui/Tooltip.tsx +117 -0
- package/src/components/ui/index.ts +42 -0
- package/src/index.tsx +24 -0
- package/src/lib/ThemeProvider.tsx +204 -0
- package/src/lib/cornerRadius.ts +160 -0
- package/src/lib/fonts.ts +28 -0
- package/src/lib/theme.ts +151 -0
- package/src/lib/utils.ts +146 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Icon } from "./Icon.js";
|
|
4
|
+
import { NativeOnlyAnimatedView } from "./Native-Only-Animated-View.js";
|
|
5
|
+
import { cn } from "../../lib/utils.js";
|
|
6
|
+
import * as DialogPrimitive from '@rn-primitives/dialog';
|
|
7
|
+
import { X } from 'lucide-react-native';
|
|
8
|
+
import * as React from 'react';
|
|
9
|
+
import { Platform, Text, View } from 'react-native';
|
|
10
|
+
import { cssInterop } from 'nativewind';
|
|
11
|
+
import { FadeIn, FadeOut } from 'react-native-reanimated';
|
|
12
|
+
import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
|
|
13
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
cssInterop(View, {
|
|
15
|
+
className: 'style'
|
|
16
|
+
});
|
|
17
|
+
cssInterop(Text, {
|
|
18
|
+
className: 'style'
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Root dialog container
|
|
23
|
+
*
|
|
24
|
+
* A modal window that overlays the main content and requires user interaction.
|
|
25
|
+
* Unlike AlertDialog, this is for non-critical content that doesn't require immediate action.
|
|
26
|
+
*
|
|
27
|
+
* @component
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* <Dialog>
|
|
31
|
+
* <DialogTrigger asChild>
|
|
32
|
+
* <Button><Text>Open Dialog</Text></Button>
|
|
33
|
+
* </DialogTrigger>
|
|
34
|
+
* <DialogContent>
|
|
35
|
+
* <DialogHeader>
|
|
36
|
+
* <DialogTitle><Text>Edit Profile</Text></DialogTitle>
|
|
37
|
+
* <DialogDescription><Text>Make changes to your profile</Text></DialogDescription>
|
|
38
|
+
* </DialogHeader>
|
|
39
|
+
* <DialogFooter>
|
|
40
|
+
* <Button><Text>Save</Text></Button>
|
|
41
|
+
* </DialogFooter>
|
|
42
|
+
* </DialogContent>
|
|
43
|
+
* </Dialog>
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
const Dialog = DialogPrimitive.Root;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Trigger button that opens the dialog
|
|
50
|
+
*/
|
|
51
|
+
const DialogTrigger = DialogPrimitive.Trigger;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Portal component for rendering dialog outside DOM hierarchy
|
|
55
|
+
*/
|
|
56
|
+
const DialogPortal = DialogPrimitive.Portal;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Close button component for manually closing the dialog
|
|
60
|
+
*/
|
|
61
|
+
const DialogClose = DialogPrimitive.Close;
|
|
62
|
+
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Semi-transparent overlay behind the dialog
|
|
66
|
+
*
|
|
67
|
+
* Provides backdrop that dims background content. Uses platform-specific
|
|
68
|
+
* full window overlay on iOS for proper z-index layering.
|
|
69
|
+
*/
|
|
70
|
+
function DialogOverlay({
|
|
71
|
+
className,
|
|
72
|
+
children,
|
|
73
|
+
...props
|
|
74
|
+
}) {
|
|
75
|
+
return /*#__PURE__*/_jsx(FullWindowOverlay, {
|
|
76
|
+
children: /*#__PURE__*/_jsx(DialogPrimitive.Overlay, {
|
|
77
|
+
className: cn('absolute bottom-0 left-0 right-0 top-0 z-50 flex items-center justify-center bg-black/50 p-2', Platform.select({
|
|
78
|
+
web: 'animate-in fade-in-0 fixed cursor-default [&>*]:cursor-auto'
|
|
79
|
+
}), className),
|
|
80
|
+
...props,
|
|
81
|
+
asChild: Platform.OS !== 'web',
|
|
82
|
+
children: /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
83
|
+
entering: FadeIn.duration(200),
|
|
84
|
+
exiting: FadeOut.duration(150),
|
|
85
|
+
children: /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
86
|
+
entering: FadeIn.delay(50),
|
|
87
|
+
exiting: FadeOut.duration(150),
|
|
88
|
+
children: /*#__PURE__*/_jsx(_Fragment, {
|
|
89
|
+
children: children
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Main dialog content container
|
|
99
|
+
*
|
|
100
|
+
* Contains the actual dialog UI with automatic close button in top-right corner.
|
|
101
|
+
* Includes smooth fade and zoom animations.
|
|
102
|
+
*
|
|
103
|
+
* @param {string} [portalHost] - Optional portal host name for custom rendering location
|
|
104
|
+
* @param {string} [className] - Additional Tailwind classes
|
|
105
|
+
*/
|
|
106
|
+
function DialogContent({
|
|
107
|
+
className,
|
|
108
|
+
portalHost,
|
|
109
|
+
children,
|
|
110
|
+
...props
|
|
111
|
+
}) {
|
|
112
|
+
return /*#__PURE__*/_jsx(DialogPortal, {
|
|
113
|
+
hostName: portalHost,
|
|
114
|
+
children: /*#__PURE__*/_jsx(DialogOverlay, {
|
|
115
|
+
children: /*#__PURE__*/_jsxs(DialogPrimitive.Content, {
|
|
116
|
+
className: cn('bg-background border-border z-50 mx-auto flex w-full max-w-[calc(100%-2rem)] flex-col gap-4 rounded-lg border p-6 shadow-lg shadow-black/5 sm:max-w-lg', Platform.select({
|
|
117
|
+
web: 'animate-in fade-in-0 zoom-in-95 duration-200'
|
|
118
|
+
}), className),
|
|
119
|
+
...props,
|
|
120
|
+
children: [/*#__PURE__*/_jsx(_Fragment, {
|
|
121
|
+
children: children
|
|
122
|
+
}), /*#__PURE__*/_jsxs(DialogPrimitive.Close, {
|
|
123
|
+
className: cn('absolute right-4 top-4 rounded opacity-70 active:opacity-100', Platform.select({
|
|
124
|
+
web: 'ring-offset-background focus:ring-ring data-[state=open]:bg-accent transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-offset-2'
|
|
125
|
+
})),
|
|
126
|
+
hitSlop: 12,
|
|
127
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
128
|
+
as: X,
|
|
129
|
+
className: cn('text-accent-foreground web:pointer-events-none size-4 shrink-0')
|
|
130
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
131
|
+
className: "sr-only",
|
|
132
|
+
children: "Close"
|
|
133
|
+
})]
|
|
134
|
+
})]
|
|
135
|
+
})
|
|
136
|
+
})
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Dialog header container
|
|
142
|
+
*
|
|
143
|
+
* Contains title and description with appropriate spacing and alignment.
|
|
144
|
+
* Centered on mobile, left-aligned on larger screens.
|
|
145
|
+
*/
|
|
146
|
+
function DialogHeader({
|
|
147
|
+
className,
|
|
148
|
+
...props
|
|
149
|
+
}) {
|
|
150
|
+
return /*#__PURE__*/_jsx(View, {
|
|
151
|
+
className: cn('flex flex-col gap-2 text-center sm:text-left', className),
|
|
152
|
+
...props
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Dialog footer container
|
|
158
|
+
*
|
|
159
|
+
* Contains action buttons. Stacked vertically on mobile (reverse order),
|
|
160
|
+
* horizontal row on larger screens (right-aligned).
|
|
161
|
+
*/
|
|
162
|
+
function DialogFooter({
|
|
163
|
+
className,
|
|
164
|
+
...props
|
|
165
|
+
}) {
|
|
166
|
+
return /*#__PURE__*/_jsx(View, {
|
|
167
|
+
className: cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className),
|
|
168
|
+
...props
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Dialog title component
|
|
174
|
+
*
|
|
175
|
+
* Large, semibold heading for the dialog. Automatically announced by screen readers.
|
|
176
|
+
*/
|
|
177
|
+
function DialogTitle({
|
|
178
|
+
className,
|
|
179
|
+
...props
|
|
180
|
+
}) {
|
|
181
|
+
return /*#__PURE__*/_jsx(DialogPrimitive.Title, {
|
|
182
|
+
className: cn('text-foreground text-lg font-semibold leading-none', className),
|
|
183
|
+
...props
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Dialog description component
|
|
189
|
+
*
|
|
190
|
+
* Muted text providing additional context or instructions for the dialog.
|
|
191
|
+
*/
|
|
192
|
+
function DialogDescription({
|
|
193
|
+
className,
|
|
194
|
+
...props
|
|
195
|
+
}) {
|
|
196
|
+
return /*#__PURE__*/_jsx(DialogPrimitive.Description, {
|
|
197
|
+
className: cn('text-muted-foreground text-sm', className),
|
|
198
|
+
...props
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
|
|
202
|
+
//# sourceMappingURL=Dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Icon","NativeOnlyAnimatedView","cn","DialogPrimitive","X","React","Platform","Text","View","cssInterop","FadeIn","FadeOut","FullWindowOverlay","RNFullWindowOverlay","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","className","Dialog","Root","DialogTrigger","Trigger","DialogPortal","Portal","DialogClose","Close","OS","DialogOverlay","children","props","Overlay","select","web","asChild","entering","duration","exiting","delay","DialogContent","portalHost","hostName","Content","hitSlop","as","DialogHeader","DialogFooter","DialogTitle","Title","DialogDescription","Description"],"sourceRoot":"../../../../src","sources":["components/ui/Dialog.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Icon } from "./Icon.js";
|
|
4
|
+
import { NativeOnlyAnimatedView } from "./Native-Only-Animated-View.js";
|
|
5
|
+
import { TextClassContext } from "./Text.js";
|
|
6
|
+
import { cn } from "../../lib/utils.js";
|
|
7
|
+
import * as DropdownMenuPrimitive from '@rn-primitives/dropdown-menu';
|
|
8
|
+
import { Check, ChevronDown, ChevronRight, ChevronUp } from 'lucide-react-native';
|
|
9
|
+
import * as React from 'react';
|
|
10
|
+
import { Platform, StyleSheet, Text, View } from 'react-native';
|
|
11
|
+
import { cssInterop } from 'nativewind';
|
|
12
|
+
import { FadeIn } from 'react-native-reanimated';
|
|
13
|
+
import { FullWindowOverlay as RNFullWindowOverlay } from 'react-native-screens';
|
|
14
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
cssInterop(View, {
|
|
16
|
+
className: 'style'
|
|
17
|
+
});
|
|
18
|
+
cssInterop(Text, {
|
|
19
|
+
className: 'style'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Root component for dropdown menu - provides context for all dropdown menu children
|
|
24
|
+
*
|
|
25
|
+
* @component
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <DropdownMenu>
|
|
29
|
+
* <DropdownMenuTrigger>
|
|
30
|
+
* <Button variant="outline">
|
|
31
|
+
* <Text>Open Menu</Text>
|
|
32
|
+
* </Button>
|
|
33
|
+
* </DropdownMenuTrigger>
|
|
34
|
+
* <DropdownMenuContent>
|
|
35
|
+
* <DropdownMenuItem>
|
|
36
|
+
* <Text>Profile</Text>
|
|
37
|
+
* </DropdownMenuItem>
|
|
38
|
+
* </DropdownMenuContent>
|
|
39
|
+
* </DropdownMenu>
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Trigger component that opens the dropdown menu when pressed
|
|
46
|
+
*
|
|
47
|
+
* @component
|
|
48
|
+
*/
|
|
49
|
+
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Groups related menu items together
|
|
53
|
+
*
|
|
54
|
+
* @component
|
|
55
|
+
*/
|
|
56
|
+
const DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Portal component to render menu content outside the DOM hierarchy
|
|
60
|
+
*
|
|
61
|
+
* @component
|
|
62
|
+
*/
|
|
63
|
+
const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Root component for nested submenu
|
|
67
|
+
*
|
|
68
|
+
* @component
|
|
69
|
+
*/
|
|
70
|
+
const DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Groups radio items together with single selection
|
|
74
|
+
*
|
|
75
|
+
* @component
|
|
76
|
+
*/
|
|
77
|
+
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Trigger for opening a nested submenu
|
|
81
|
+
*
|
|
82
|
+
* Displays a chevron icon that indicates expandable content. The icon direction
|
|
83
|
+
* changes based on platform and submenu state.
|
|
84
|
+
*
|
|
85
|
+
* @component
|
|
86
|
+
* @example
|
|
87
|
+
* ```tsx
|
|
88
|
+
* <DropdownMenuSub>
|
|
89
|
+
* <DropdownMenuSubTrigger>
|
|
90
|
+
* <Text>More Options</Text>
|
|
91
|
+
* </DropdownMenuSubTrigger>
|
|
92
|
+
* <DropdownMenuSubContent>
|
|
93
|
+
* <DropdownMenuItem>
|
|
94
|
+
* <Text>Nested Item</Text>
|
|
95
|
+
* </DropdownMenuItem>
|
|
96
|
+
* </DropdownMenuSubContent>
|
|
97
|
+
* </DropdownMenuSub>
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
function DropdownMenuSubTrigger({
|
|
101
|
+
className: _className,
|
|
102
|
+
inset,
|
|
103
|
+
children,
|
|
104
|
+
iconClassName,
|
|
105
|
+
...props
|
|
106
|
+
}) {
|
|
107
|
+
const {
|
|
108
|
+
open
|
|
109
|
+
} = DropdownMenuPrimitive.useSubContext();
|
|
110
|
+
const icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown;
|
|
111
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
112
|
+
value: cn('text-sm select-none group-active:text-accent-foreground', open && 'text-accent-foreground'),
|
|
113
|
+
children: /*#__PURE__*/_jsxs(DropdownMenuPrimitive.SubTrigger, {
|
|
114
|
+
className: cn('active:bg-accent group flex flex-row items-center rounded-sm px-2 py-2 sm:py-1.5', Platform.select({
|
|
115
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none [&_svg]:pointer-events-none'
|
|
116
|
+
}), open && 'bg-accent', inset && 'pl-8'),
|
|
117
|
+
...props,
|
|
118
|
+
children: [/*#__PURE__*/_jsx(_Fragment, {
|
|
119
|
+
children: children
|
|
120
|
+
}), /*#__PURE__*/_jsx(Icon, {
|
|
121
|
+
as: icon,
|
|
122
|
+
className: cn('text-foreground ml-auto size-4 shrink-0', iconClassName)
|
|
123
|
+
})]
|
|
124
|
+
})
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Content container for nested submenu items
|
|
130
|
+
*
|
|
131
|
+
* @component
|
|
132
|
+
* @example
|
|
133
|
+
* ```tsx
|
|
134
|
+
* <DropdownMenuSubContent>
|
|
135
|
+
* <DropdownMenuItem>
|
|
136
|
+
* <Text>Submenu Item</Text>
|
|
137
|
+
* </DropdownMenuItem>
|
|
138
|
+
* </DropdownMenuSubContent>
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
function DropdownMenuSubContent({
|
|
142
|
+
className,
|
|
143
|
+
...props
|
|
144
|
+
}) {
|
|
145
|
+
return /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
146
|
+
entering: FadeIn,
|
|
147
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.SubContent, {
|
|
148
|
+
className: cn('bg-popover border-border overflow-hidden rounded-md border p-1 shadow-lg shadow-black/5', Platform.select({
|
|
149
|
+
web: 'animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 fade-in-0 data-[state=closed]:zoom-out-95 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-context-menu-content-transform-origin) z-50 min-w-[8rem]'
|
|
150
|
+
}), className),
|
|
151
|
+
...props
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Full window overlay wrapper for iOS, Fragment for other platforms
|
|
158
|
+
*/
|
|
159
|
+
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Main content container for dropdown menu items
|
|
163
|
+
*
|
|
164
|
+
* Renders menu items in a popover with proper positioning, animations,
|
|
165
|
+
* and overlay handling. Uses a portal to render outside the parent hierarchy.
|
|
166
|
+
*
|
|
167
|
+
* @component
|
|
168
|
+
* @example
|
|
169
|
+
* ```tsx
|
|
170
|
+
* <DropdownMenuContent>
|
|
171
|
+
* <DropdownMenuItem>
|
|
172
|
+
* <Text>Profile</Text>
|
|
173
|
+
* </DropdownMenuItem>
|
|
174
|
+
* <DropdownMenuSeparator />
|
|
175
|
+
* <DropdownMenuItem>
|
|
176
|
+
* <Text>Settings</Text>
|
|
177
|
+
* </DropdownMenuItem>
|
|
178
|
+
* </DropdownMenuContent>
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* @accessibility
|
|
182
|
+
* - Properly handles focus management
|
|
183
|
+
* - Supports keyboard navigation
|
|
184
|
+
* - Screen reader friendly menu structure
|
|
185
|
+
*/
|
|
186
|
+
function DropdownMenuContent({
|
|
187
|
+
className,
|
|
188
|
+
overlayClassName,
|
|
189
|
+
overlayStyle,
|
|
190
|
+
portalHost,
|
|
191
|
+
...props
|
|
192
|
+
}) {
|
|
193
|
+
return /*#__PURE__*/_jsx(DropdownMenuPrimitive.Portal, {
|
|
194
|
+
hostName: portalHost,
|
|
195
|
+
children: /*#__PURE__*/_jsx(FullWindowOverlay, {
|
|
196
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.Overlay, {
|
|
197
|
+
style: Platform.select({
|
|
198
|
+
web: overlayStyle ?? undefined,
|
|
199
|
+
native: overlayStyle ? StyleSheet.flatten([StyleSheet.absoluteFill, overlayStyle]) : StyleSheet.absoluteFill
|
|
200
|
+
}),
|
|
201
|
+
className: overlayClassName,
|
|
202
|
+
children: /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
203
|
+
entering: FadeIn,
|
|
204
|
+
children: /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
205
|
+
value: "text-popover-foreground",
|
|
206
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.Content, {
|
|
207
|
+
className: cn('bg-popover border-border min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg shadow-black/5', Platform.select({
|
|
208
|
+
web: cn('animate-in fade-in-0 zoom-in-95 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) z-50 cursor-default', props.side === 'bottom' && 'slide-in-from-top-2', props.side === 'top' && 'slide-in-from-bottom-2')
|
|
209
|
+
}), className),
|
|
210
|
+
...props
|
|
211
|
+
})
|
|
212
|
+
})
|
|
213
|
+
})
|
|
214
|
+
})
|
|
215
|
+
})
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Individual menu item component
|
|
221
|
+
*
|
|
222
|
+
* Supports both default and destructive variants for different actions.
|
|
223
|
+
* Includes proper hover, active, and focus states.
|
|
224
|
+
*
|
|
225
|
+
* @component
|
|
226
|
+
* @example
|
|
227
|
+
* ```tsx
|
|
228
|
+
* <DropdownMenuItem onSelect={() => console.log('Selected')}>
|
|
229
|
+
* <Text>Edit Profile</Text>
|
|
230
|
+
* </DropdownMenuItem>
|
|
231
|
+
*
|
|
232
|
+
* <DropdownMenuItem variant="destructive">
|
|
233
|
+
* <Text>Delete Account</Text>
|
|
234
|
+
* </DropdownMenuItem>
|
|
235
|
+
* ```
|
|
236
|
+
*
|
|
237
|
+
* @accessibility
|
|
238
|
+
* - Disabled items cannot be interacted with
|
|
239
|
+
* - Proper focus indicators on web
|
|
240
|
+
*/
|
|
241
|
+
function DropdownMenuItem({
|
|
242
|
+
className,
|
|
243
|
+
inset,
|
|
244
|
+
variant,
|
|
245
|
+
...props
|
|
246
|
+
}) {
|
|
247
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
248
|
+
value: cn('select-none text-sm text-popover-foreground group-active:text-popover-foreground', variant === 'destructive' && 'text-destructive group-active:text-destructive'),
|
|
249
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.Item, {
|
|
250
|
+
className: cn('active:bg-accent group relative flex flex-row items-center gap-2 rounded-sm px-2 py-2 sm:py-1.5', Platform.select({
|
|
251
|
+
web: cn('focus:bg-accent focus:text-accent-foreground cursor-default outline-none data-[disabled]:pointer-events-none', variant === 'destructive' && 'focus:bg-destructive/10 dark:focus:bg-destructive/20')
|
|
252
|
+
}), variant === 'destructive' && 'active:bg-destructive/10 dark:active:bg-destructive/20', props.disabled && 'opacity-50', inset && 'pl-8', className),
|
|
253
|
+
...props
|
|
254
|
+
})
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Menu item with checkbox for multi-selection
|
|
260
|
+
*
|
|
261
|
+
* Shows a checkmark when selected. Useful for toggling multiple options.
|
|
262
|
+
*
|
|
263
|
+
* @component
|
|
264
|
+
* @example
|
|
265
|
+
* ```tsx
|
|
266
|
+
* <DropdownMenuCheckboxItem
|
|
267
|
+
* checked={showPanel}
|
|
268
|
+
* onCheckedChange={setShowPanel}
|
|
269
|
+
* >
|
|
270
|
+
* <Text>Show Side Panel</Text>
|
|
271
|
+
* </DropdownMenuCheckboxItem>
|
|
272
|
+
* ```
|
|
273
|
+
*/
|
|
274
|
+
function DropdownMenuCheckboxItem({
|
|
275
|
+
className,
|
|
276
|
+
children,
|
|
277
|
+
...props
|
|
278
|
+
}) {
|
|
279
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
280
|
+
value: "text-sm text-popover-foreground select-none group-active:text-accent-foreground",
|
|
281
|
+
children: /*#__PURE__*/_jsxs(DropdownMenuPrimitive.CheckboxItem, {
|
|
282
|
+
className: cn('active:bg-accent group relative flex flex-row items-center gap-2 rounded-sm py-2 pl-8 pr-2 sm:py-1.5', Platform.select({
|
|
283
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none data-[disabled]:pointer-events-none'
|
|
284
|
+
}), props.disabled && 'opacity-50', className),
|
|
285
|
+
...props,
|
|
286
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
287
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
288
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.ItemIndicator, {
|
|
289
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
290
|
+
as: Check,
|
|
291
|
+
className: cn('text-foreground size-4', Platform.select({
|
|
292
|
+
web: 'pointer-events-none'
|
|
293
|
+
}))
|
|
294
|
+
})
|
|
295
|
+
})
|
|
296
|
+
}), /*#__PURE__*/_jsx(_Fragment, {
|
|
297
|
+
children: children
|
|
298
|
+
})]
|
|
299
|
+
})
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Menu item with radio button for single selection within a group
|
|
305
|
+
*
|
|
306
|
+
* Shows a filled circle when selected. Use within DropdownMenuRadioGroup.
|
|
307
|
+
*
|
|
308
|
+
* @component
|
|
309
|
+
* @example
|
|
310
|
+
* ```tsx
|
|
311
|
+
* <DropdownMenuRadioGroup value={sortBy} onValueChange={setSortBy}>
|
|
312
|
+
* <DropdownMenuRadioItem value="name">
|
|
313
|
+
* <Text>Sort by Name</Text>
|
|
314
|
+
* </DropdownMenuRadioItem>
|
|
315
|
+
* <DropdownMenuRadioItem value="date">
|
|
316
|
+
* <Text>Sort by Date</Text>
|
|
317
|
+
* </DropdownMenuRadioItem>
|
|
318
|
+
* </DropdownMenuRadioGroup>
|
|
319
|
+
* ```
|
|
320
|
+
*/
|
|
321
|
+
function DropdownMenuRadioItem({
|
|
322
|
+
className,
|
|
323
|
+
children,
|
|
324
|
+
...props
|
|
325
|
+
}) {
|
|
326
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
327
|
+
value: "text-sm text-popover-foreground select-none group-active:text-accent-foreground",
|
|
328
|
+
children: /*#__PURE__*/_jsxs(DropdownMenuPrimitive.RadioItem, {
|
|
329
|
+
className: cn('active:bg-accent group relative flex flex-row items-center gap-2 rounded-sm py-2 pl-8 pr-2 sm:py-1.5', Platform.select({
|
|
330
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none data-[disabled]:pointer-events-none'
|
|
331
|
+
}), props.disabled && 'opacity-50', className),
|
|
332
|
+
...props,
|
|
333
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
334
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
335
|
+
children: /*#__PURE__*/_jsx(DropdownMenuPrimitive.ItemIndicator, {
|
|
336
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
337
|
+
className: "bg-foreground h-2 w-2 rounded-full"
|
|
338
|
+
})
|
|
339
|
+
})
|
|
340
|
+
}), /*#__PURE__*/_jsx(_Fragment, {
|
|
341
|
+
children: children
|
|
342
|
+
})]
|
|
343
|
+
})
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Label component for grouping and describing menu sections
|
|
349
|
+
*
|
|
350
|
+
* @component
|
|
351
|
+
* @example
|
|
352
|
+
* ```tsx
|
|
353
|
+
* <DropdownMenuLabel>
|
|
354
|
+
* <Text>Account</Text>
|
|
355
|
+
* </DropdownMenuLabel>
|
|
356
|
+
* <DropdownMenuItem>
|
|
357
|
+
* <Text>Profile</Text>
|
|
358
|
+
* </DropdownMenuItem>
|
|
359
|
+
* ```
|
|
360
|
+
*/
|
|
361
|
+
function DropdownMenuLabel({
|
|
362
|
+
className,
|
|
363
|
+
inset,
|
|
364
|
+
...props
|
|
365
|
+
}) {
|
|
366
|
+
return /*#__PURE__*/_jsx(DropdownMenuPrimitive.Label, {
|
|
367
|
+
className: cn('text-foreground px-2 py-2 text-sm font-medium sm:py-1.5', inset && 'pl-8', className),
|
|
368
|
+
...props
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* Visual separator between menu items or sections
|
|
374
|
+
*
|
|
375
|
+
* @component
|
|
376
|
+
* @example
|
|
377
|
+
* ```tsx
|
|
378
|
+
* <DropdownMenuItem>
|
|
379
|
+
* <Text>Edit</Text>
|
|
380
|
+
* </DropdownMenuItem>
|
|
381
|
+
* <DropdownMenuSeparator />
|
|
382
|
+
* <DropdownMenuItem variant="destructive">
|
|
383
|
+
* <Text>Delete</Text>
|
|
384
|
+
* </DropdownMenuItem>
|
|
385
|
+
* ```
|
|
386
|
+
*/
|
|
387
|
+
function DropdownMenuSeparator({
|
|
388
|
+
className,
|
|
389
|
+
...props
|
|
390
|
+
}) {
|
|
391
|
+
return /*#__PURE__*/_jsx(DropdownMenuPrimitive.Separator, {
|
|
392
|
+
className: cn('bg-border -mx-1 my-1 h-px', className),
|
|
393
|
+
...props
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Displays keyboard shortcut hint for menu items
|
|
399
|
+
*
|
|
400
|
+
* @component
|
|
401
|
+
* @example
|
|
402
|
+
* ```tsx
|
|
403
|
+
* <DropdownMenuItem>
|
|
404
|
+
* <Text>Save</Text>
|
|
405
|
+
* <DropdownMenuShortcut>
|
|
406
|
+
* <Text>⌘S</Text>
|
|
407
|
+
* </DropdownMenuShortcut>
|
|
408
|
+
* </DropdownMenuItem>
|
|
409
|
+
* ```
|
|
410
|
+
*/
|
|
411
|
+
function DropdownMenuShortcut({
|
|
412
|
+
className,
|
|
413
|
+
...props
|
|
414
|
+
}) {
|
|
415
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
416
|
+
className: cn('text-muted-foreground ml-auto text-xs tracking-widest', className),
|
|
417
|
+
...props
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
|
|
421
|
+
//# sourceMappingURL=Dropdown-Menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Icon","NativeOnlyAnimatedView","TextClassContext","cn","DropdownMenuPrimitive","Check","ChevronDown","ChevronRight","ChevronUp","React","Platform","StyleSheet","Text","View","cssInterop","FadeIn","FullWindowOverlay","RNFullWindowOverlay","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","className","DropdownMenu","Root","DropdownMenuTrigger","Trigger","DropdownMenuGroup","Group","DropdownMenuPortal","Portal","DropdownMenuSub","Sub","DropdownMenuRadioGroup","RadioGroup","DropdownMenuSubTrigger","_className","inset","children","iconClassName","props","open","useSubContext","icon","OS","Provider","value","SubTrigger","select","web","as","DropdownMenuSubContent","entering","SubContent","DropdownMenuContent","overlayClassName","overlayStyle","portalHost","hostName","Overlay","style","undefined","native","flatten","absoluteFill","Content","side","DropdownMenuItem","variant","Item","disabled","DropdownMenuCheckboxItem","CheckboxItem","ItemIndicator","DropdownMenuRadioItem","RadioItem","DropdownMenuLabel","Label","DropdownMenuSeparator","Separator","DropdownMenuShortcut"],"sourceRoot":"../../../../src","sources":["components/ui/Dropdown-Menu.tsx"],"mappings":"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","ignoreList":[]}
|