@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,287 @@
|
|
|
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 ContextMenuPrimitive from '@rn-primitives/context-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 context menu component
|
|
24
|
+
*
|
|
25
|
+
* @component
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* <ContextMenu>
|
|
29
|
+
* <ContextMenuTrigger>
|
|
30
|
+
* <View><Text>Right-click me</Text></View>
|
|
31
|
+
* </ContextMenuTrigger>
|
|
32
|
+
* <ContextMenuContent>
|
|
33
|
+
* <ContextMenuItem><Text>Edit</Text></ContextMenuItem>
|
|
34
|
+
* <ContextMenuItem><Text>Delete</Text></ContextMenuItem>
|
|
35
|
+
* </ContextMenuContent>
|
|
36
|
+
* </ContextMenu>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const ContextMenu = ContextMenuPrimitive.Root;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Trigger component that opens context menu on right-click or long-press
|
|
43
|
+
* @component
|
|
44
|
+
*/
|
|
45
|
+
const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Groups related context menu items
|
|
49
|
+
* @component
|
|
50
|
+
*/
|
|
51
|
+
const ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Root component for nested submenu
|
|
55
|
+
* @component
|
|
56
|
+
*/
|
|
57
|
+
const ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Groups radio items for single selection
|
|
61
|
+
* @component
|
|
62
|
+
*/
|
|
63
|
+
const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Trigger for opening a nested submenu
|
|
67
|
+
* @component
|
|
68
|
+
*/
|
|
69
|
+
function ContextMenuSubTrigger({
|
|
70
|
+
className: _className,
|
|
71
|
+
inset,
|
|
72
|
+
children,
|
|
73
|
+
iconClassName,
|
|
74
|
+
...props
|
|
75
|
+
}) {
|
|
76
|
+
const {
|
|
77
|
+
open
|
|
78
|
+
} = ContextMenuPrimitive.useSubContext();
|
|
79
|
+
const icon = Platform.OS === 'web' ? ChevronRight : open ? ChevronUp : ChevronDown;
|
|
80
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
81
|
+
value: cn('text-sm select-none group-active:text-accent-foreground', open && 'text-accent-foreground'),
|
|
82
|
+
children: /*#__PURE__*/_jsxs(ContextMenuPrimitive.SubTrigger, {
|
|
83
|
+
className: cn('active:bg-accent group flex flex-row items-center rounded-sm px-2 py-2 sm:py-1.5', Platform.select({
|
|
84
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none [&_svg]:pointer-events-none'
|
|
85
|
+
}), open && cn('bg-accent', Platform.select({
|
|
86
|
+
native: 'mb-1'
|
|
87
|
+
})), inset && 'pl-8'),
|
|
88
|
+
...props,
|
|
89
|
+
children: [/*#__PURE__*/_jsx(_Fragment, {
|
|
90
|
+
children: children
|
|
91
|
+
}), /*#__PURE__*/_jsx(Icon, {
|
|
92
|
+
as: icon,
|
|
93
|
+
className: cn('text-foreground ml-auto size-4 shrink-0', iconClassName)
|
|
94
|
+
})]
|
|
95
|
+
})
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Content container for nested submenu items
|
|
101
|
+
* @component
|
|
102
|
+
*/
|
|
103
|
+
function ContextMenuSubContent({
|
|
104
|
+
className,
|
|
105
|
+
...props
|
|
106
|
+
}) {
|
|
107
|
+
return /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
108
|
+
entering: FadeIn,
|
|
109
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.SubContent, {
|
|
110
|
+
className: cn('bg-popover border-border overflow-hidden rounded-md border p-1 shadow-lg shadow-black/5', Platform.select({
|
|
111
|
+
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]'
|
|
112
|
+
}), className),
|
|
113
|
+
...props
|
|
114
|
+
})
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Full window overlay wrapper for iOS
|
|
120
|
+
*/
|
|
121
|
+
const FullWindowOverlay = Platform.OS === 'ios' ? RNFullWindowOverlay : React.Fragment;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Main content container for context menu items
|
|
125
|
+
* @component
|
|
126
|
+
*/
|
|
127
|
+
function ContextMenuContent({
|
|
128
|
+
className,
|
|
129
|
+
overlayClassName,
|
|
130
|
+
overlayStyle,
|
|
131
|
+
portalHost,
|
|
132
|
+
...props
|
|
133
|
+
}) {
|
|
134
|
+
return /*#__PURE__*/_jsx(ContextMenuPrimitive.Portal, {
|
|
135
|
+
hostName: portalHost,
|
|
136
|
+
children: /*#__PURE__*/_jsx(FullWindowOverlay, {
|
|
137
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.Overlay, {
|
|
138
|
+
style: Platform.select({
|
|
139
|
+
web: overlayStyle ?? undefined,
|
|
140
|
+
native: overlayStyle ? StyleSheet.flatten([StyleSheet.absoluteFill, overlayStyle]) : StyleSheet.absoluteFill
|
|
141
|
+
}),
|
|
142
|
+
className: overlayClassName,
|
|
143
|
+
children: /*#__PURE__*/_jsx(NativeOnlyAnimatedView, {
|
|
144
|
+
entering: FadeIn,
|
|
145
|
+
children: /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
146
|
+
value: "text-popover-foreground",
|
|
147
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.Content, {
|
|
148
|
+
className: cn('bg-popover border-border min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg shadow-black/5', Platform.select({
|
|
149
|
+
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')
|
|
150
|
+
}), className),
|
|
151
|
+
...props
|
|
152
|
+
})
|
|
153
|
+
})
|
|
154
|
+
})
|
|
155
|
+
})
|
|
156
|
+
})
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Individual context menu item
|
|
162
|
+
* @component
|
|
163
|
+
*/
|
|
164
|
+
function ContextMenuItem({
|
|
165
|
+
className,
|
|
166
|
+
inset,
|
|
167
|
+
variant,
|
|
168
|
+
...props
|
|
169
|
+
}) {
|
|
170
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
171
|
+
value: cn('select-none text-sm text-popover-foreground group-active:text-popover-foreground', variant === 'destructive' && 'text-destructive group-active:text-destructive'),
|
|
172
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.Item, {
|
|
173
|
+
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({
|
|
174
|
+
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')
|
|
175
|
+
}), variant === 'destructive' && 'active:bg-destructive/10 dark:active:bg-destructive/20', props.disabled && 'opacity-50', inset && 'pl-8', className),
|
|
176
|
+
...props
|
|
177
|
+
})
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Menu item with checkbox for multi-selection
|
|
183
|
+
* @component
|
|
184
|
+
*/
|
|
185
|
+
function ContextMenuCheckboxItem({
|
|
186
|
+
className,
|
|
187
|
+
children,
|
|
188
|
+
...props
|
|
189
|
+
}) {
|
|
190
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
191
|
+
value: "text-sm text-popover-foreground select-none group-active:text-accent-foreground",
|
|
192
|
+
children: /*#__PURE__*/_jsxs(ContextMenuPrimitive.CheckboxItem, {
|
|
193
|
+
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({
|
|
194
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none data-[disabled]:pointer-events-none'
|
|
195
|
+
}), props.disabled && 'opacity-50', className),
|
|
196
|
+
...props,
|
|
197
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
198
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
199
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.ItemIndicator, {
|
|
200
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
201
|
+
as: Check,
|
|
202
|
+
className: cn('text-foreground size-4', Platform.select({
|
|
203
|
+
web: 'pointer-events-none'
|
|
204
|
+
}))
|
|
205
|
+
})
|
|
206
|
+
})
|
|
207
|
+
}), /*#__PURE__*/_jsx(_Fragment, {
|
|
208
|
+
children: children
|
|
209
|
+
})]
|
|
210
|
+
})
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Menu item with radio button for single selection
|
|
216
|
+
* @component
|
|
217
|
+
*/
|
|
218
|
+
function ContextMenuRadioItem({
|
|
219
|
+
className,
|
|
220
|
+
children,
|
|
221
|
+
...props
|
|
222
|
+
}) {
|
|
223
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
224
|
+
value: "text-sm text-popover-foreground select-none group-active:text-accent-foreground",
|
|
225
|
+
children: /*#__PURE__*/_jsxs(ContextMenuPrimitive.RadioItem, {
|
|
226
|
+
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({
|
|
227
|
+
web: 'focus:bg-accent focus:text-accent-foreground cursor-default outline-none data-[disabled]:pointer-events-none'
|
|
228
|
+
}), props.disabled && 'opacity-50', className),
|
|
229
|
+
...props,
|
|
230
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
231
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
232
|
+
children: /*#__PURE__*/_jsx(ContextMenuPrimitive.ItemIndicator, {
|
|
233
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
234
|
+
className: "bg-foreground h-2 w-2 rounded-full"
|
|
235
|
+
})
|
|
236
|
+
})
|
|
237
|
+
}), /*#__PURE__*/_jsx(_Fragment, {
|
|
238
|
+
children: children
|
|
239
|
+
})]
|
|
240
|
+
})
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Label for grouping context menu sections
|
|
246
|
+
* @component
|
|
247
|
+
*/
|
|
248
|
+
function ContextMenuLabel({
|
|
249
|
+
className,
|
|
250
|
+
inset,
|
|
251
|
+
...props
|
|
252
|
+
}) {
|
|
253
|
+
return /*#__PURE__*/_jsx(ContextMenuPrimitive.Label, {
|
|
254
|
+
className: cn('text-foreground px-2 py-2 text-sm font-medium sm:py-1.5', inset && 'pl-8', className),
|
|
255
|
+
...props
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Visual separator between menu items
|
|
261
|
+
* @component
|
|
262
|
+
*/
|
|
263
|
+
function ContextMenuSeparator({
|
|
264
|
+
className,
|
|
265
|
+
...props
|
|
266
|
+
}) {
|
|
267
|
+
return /*#__PURE__*/_jsx(ContextMenuPrimitive.Separator, {
|
|
268
|
+
className: cn('bg-border -mx-1 my-1 h-px', className),
|
|
269
|
+
...props
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Displays keyboard shortcut hint for menu items
|
|
275
|
+
* @component
|
|
276
|
+
*/
|
|
277
|
+
function ContextMenuShortcut({
|
|
278
|
+
className,
|
|
279
|
+
...props
|
|
280
|
+
}) {
|
|
281
|
+
return /*#__PURE__*/_jsx(Text, {
|
|
282
|
+
className: cn('text-muted-foreground ml-auto text-xs tracking-widest', className),
|
|
283
|
+
...props
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
|
|
287
|
+
//# sourceMappingURL=Context-Menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Icon","NativeOnlyAnimatedView","TextClassContext","cn","ContextMenuPrimitive","Check","ChevronDown","ChevronRight","ChevronUp","React","Platform","StyleSheet","Text","View","cssInterop","FadeIn","FullWindowOverlay","RNFullWindowOverlay","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","className","ContextMenu","Root","ContextMenuTrigger","Trigger","ContextMenuGroup","Group","ContextMenuSub","Sub","ContextMenuRadioGroup","RadioGroup","ContextMenuSubTrigger","_className","inset","children","iconClassName","props","open","useSubContext","icon","OS","Provider","value","SubTrigger","select","web","native","as","ContextMenuSubContent","entering","SubContent","ContextMenuContent","overlayClassName","overlayStyle","portalHost","Portal","hostName","Overlay","style","undefined","flatten","absoluteFill","Content","side","ContextMenuItem","variant","Item","disabled","ContextMenuCheckboxItem","CheckboxItem","ItemIndicator","ContextMenuRadioItem","RadioItem","ContextMenuLabel","Label","ContextMenuSeparator","Separator","ContextMenuShortcut"],"sourceRoot":"../../../../src","sources":["components/ui/Context-Menu.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as Slot from '@rn-primitives/slot';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { View, useColorScheme } from 'react-native';
|
|
6
|
+
import { SquircleView } from 'react-native-figma-squircle';
|
|
7
|
+
import { cn } from "../../lib/utils.js";
|
|
8
|
+
import { TextClassContext } from "./Text.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* CustomCard container component with squircle shape
|
|
12
|
+
*
|
|
13
|
+
* Provides elevated container with smooth squircle corners (iOS-like rounded corners),
|
|
14
|
+
* border, and shadow. Uses Figma's squircle algorithm for premium look.
|
|
15
|
+
* Use with CardHeader, CardTitle, CardDescription, CardContent, and CardFooter
|
|
16
|
+
* for a complete card structure.
|
|
17
|
+
*
|
|
18
|
+
* @component
|
|
19
|
+
* @example
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <CustomCard>
|
|
22
|
+
* <CardHeader>
|
|
23
|
+
* <CardTitle><Text>Title</Text></CardTitle>
|
|
24
|
+
* <CardDescription><Text>Description</Text></CardDescription>
|
|
25
|
+
* </CardHeader>
|
|
26
|
+
* <CardContent>
|
|
27
|
+
* <Text>Card content goes here</Text>
|
|
28
|
+
* </CardContent>
|
|
29
|
+
* <CardFooter>
|
|
30
|
+
* <Button>Action</Button>
|
|
31
|
+
* </CardFooter>
|
|
32
|
+
* </CustomCard>
|
|
33
|
+
*
|
|
34
|
+
* // With custom corner smoothing
|
|
35
|
+
* <CustomCard cornerSmoothing={1}>
|
|
36
|
+
* <Text>Extra smooth corners</Text>
|
|
37
|
+
* </CustomCard>
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
41
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
42
|
+
* @property {number} [cornerRadius=16] - Corner radius in pixels
|
|
43
|
+
* @property {number} [cornerSmoothing=0.8] - Smoothing factor (0-1), higher = more iOS-like
|
|
44
|
+
*/
|
|
45
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
46
|
+
const CustomCard = /*#__PURE__*/React.forwardRef(({
|
|
47
|
+
className: _className,
|
|
48
|
+
asChild = false,
|
|
49
|
+
cornerRadius = 16,
|
|
50
|
+
cornerSmoothing = 1.0,
|
|
51
|
+
children,
|
|
52
|
+
...props
|
|
53
|
+
}, ref) => {
|
|
54
|
+
const colorScheme = useColorScheme();
|
|
55
|
+
const isDark = colorScheme === 'dark';
|
|
56
|
+
if (asChild) {
|
|
57
|
+
const Component = Slot.View;
|
|
58
|
+
return /*#__PURE__*/_jsx(Component, {
|
|
59
|
+
ref: ref,
|
|
60
|
+
...props,
|
|
61
|
+
children: children
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Use SquircleView directly as the container with inner View for content
|
|
66
|
+
return /*#__PURE__*/_jsx(SquircleView, {
|
|
67
|
+
squircleParams: {
|
|
68
|
+
cornerRadius,
|
|
69
|
+
cornerSmoothing,
|
|
70
|
+
fillColor: isDark ? 'hsl(224 71.4% 4.1%)' : 'hsl(0 0% 100%)',
|
|
71
|
+
strokeColor: isDark ? 'hsl(215 27.9% 16.9%)' : 'hsl(214.3 31.8% 91.4%)',
|
|
72
|
+
strokeWidth: 1
|
|
73
|
+
},
|
|
74
|
+
...props,
|
|
75
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
76
|
+
ref: ref,
|
|
77
|
+
className: "px-4",
|
|
78
|
+
children: children
|
|
79
|
+
})
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
CustomCard.displayName = 'CustomCard';
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* CustomCardHeader - Container for card title and description
|
|
86
|
+
*
|
|
87
|
+
* Provides proper spacing for title and description elements at the top of a card.
|
|
88
|
+
*
|
|
89
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
90
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
91
|
+
*/
|
|
92
|
+
const CustomCardHeader = /*#__PURE__*/React.forwardRef(({
|
|
93
|
+
className,
|
|
94
|
+
asChild = false,
|
|
95
|
+
...props
|
|
96
|
+
}, ref) => {
|
|
97
|
+
const Component = asChild ? Slot.View : View;
|
|
98
|
+
return /*#__PURE__*/_jsx(Component, {
|
|
99
|
+
className: cn('flex flex-col gap-1.5 p-6', className),
|
|
100
|
+
ref: ref,
|
|
101
|
+
...props
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
CustomCardHeader.displayName = 'CustomCardHeader';
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* CustomCardTitle - Main title text for the card
|
|
108
|
+
*
|
|
109
|
+
* Automatically styles child Text components with large, semibold typography.
|
|
110
|
+
* Uses TextClassContext to apply consistent styling to nested Text elements.
|
|
111
|
+
*
|
|
112
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
113
|
+
* @property {string} [className] - Additional Tailwind classes for text styling
|
|
114
|
+
*/
|
|
115
|
+
const CustomCardTitle = /*#__PURE__*/React.forwardRef(({
|
|
116
|
+
className,
|
|
117
|
+
asChild = false,
|
|
118
|
+
...props
|
|
119
|
+
}, ref) => {
|
|
120
|
+
const Component = asChild ? Slot.View : View;
|
|
121
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
122
|
+
value: cn('text-2xl font-semibold leading-none tracking-tight text-card-foreground dark:text-card-foreground', className),
|
|
123
|
+
children: /*#__PURE__*/_jsx(Component, {
|
|
124
|
+
ref: ref,
|
|
125
|
+
...props
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
CustomCardTitle.displayName = 'CustomCardTitle';
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* CustomCardDescription - Subtitle or description text for the card
|
|
133
|
+
*
|
|
134
|
+
* Automatically styles child Text components with muted, smaller typography.
|
|
135
|
+
* Uses TextClassContext to apply consistent styling to nested Text elements.
|
|
136
|
+
*
|
|
137
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
138
|
+
* @property {string} [className] - Additional Tailwind classes for text styling
|
|
139
|
+
*/
|
|
140
|
+
const CustomCardDescription = /*#__PURE__*/React.forwardRef(({
|
|
141
|
+
className,
|
|
142
|
+
asChild = false,
|
|
143
|
+
...props
|
|
144
|
+
}, ref) => {
|
|
145
|
+
const Component = asChild ? Slot.View : View;
|
|
146
|
+
return /*#__PURE__*/_jsx(TextClassContext.Provider, {
|
|
147
|
+
value: cn('text-sm text-muted-foreground dark:text-muted-foreground', className),
|
|
148
|
+
children: /*#__PURE__*/_jsx(Component, {
|
|
149
|
+
ref: ref,
|
|
150
|
+
...props
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
CustomCardDescription.displayName = 'CustomCardDescription';
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* CustomCardContent - Main content area of the card
|
|
158
|
+
*
|
|
159
|
+
* Container for the primary card content with appropriate padding.
|
|
160
|
+
* Top padding is removed to flow naturally after CustomCardHeader.
|
|
161
|
+
*
|
|
162
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
163
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
164
|
+
*/
|
|
165
|
+
const CustomCardContent = /*#__PURE__*/React.forwardRef(({
|
|
166
|
+
className,
|
|
167
|
+
asChild = false,
|
|
168
|
+
...props
|
|
169
|
+
}, ref) => {
|
|
170
|
+
const Component = asChild ? Slot.View : View;
|
|
171
|
+
return /*#__PURE__*/_jsx(Component, {
|
|
172
|
+
className: cn('p-6 pt-0', className),
|
|
173
|
+
ref: ref,
|
|
174
|
+
...props
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
CustomCardContent.displayName = 'CustomCardContent';
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* CustomCardFooter - Footer area for actions or additional info
|
|
181
|
+
*
|
|
182
|
+
* Typically contains buttons or other interactive elements.
|
|
183
|
+
* Arranged as a row with centered items.
|
|
184
|
+
*
|
|
185
|
+
* @property {boolean} [asChild] - When true, merges props into immediate child
|
|
186
|
+
* @property {string} [className] - Additional Tailwind classes
|
|
187
|
+
*/
|
|
188
|
+
const CustomCardFooter = /*#__PURE__*/React.forwardRef(({
|
|
189
|
+
className,
|
|
190
|
+
asChild = false,
|
|
191
|
+
...props
|
|
192
|
+
}, ref) => {
|
|
193
|
+
const Component = asChild ? Slot.View : View;
|
|
194
|
+
return /*#__PURE__*/_jsx(Component, {
|
|
195
|
+
className: cn('flex flex-row items-center p-6 pt-0', className),
|
|
196
|
+
ref: ref,
|
|
197
|
+
...props
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
CustomCardFooter.displayName = 'CustomCardFooter';
|
|
201
|
+
export { CustomCard, CustomCardContent, CustomCardDescription, CustomCardFooter, CustomCardHeader, CustomCardTitle };
|
|
202
|
+
//# sourceMappingURL=Custom-Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Slot","React","View","useColorScheme","SquircleView","cn","TextClassContext","jsx","_jsx","CustomCard","forwardRef","className","_className","asChild","cornerRadius","cornerSmoothing","children","props","ref","colorScheme","isDark","Component","squircleParams","fillColor","strokeColor","strokeWidth","displayName","CustomCardHeader","CustomCardTitle","Provider","value","CustomCardDescription","CustomCardContent","CustomCardFooter"],"sourceRoot":"../../../../src","sources":["components/ui/Custom-Card.tsx"],"mappings":"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","ignoreList":[]}
|