@streamplace/components 0.7.26 → 0.7.29
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/dist/components/chat/chat-box.js +2 -2
- package/dist/components/chat/chat.js +1 -1
- package/dist/components/mobile-player/ui/autoplay-button.js +1 -0
- package/dist/components/mobile-player/ui/viewer-context-menu.js +1 -1
- package/dist/components/mobile-player/ui/viewer-loading-overlay.js +2 -2
- package/dist/components/mobile-player/use-webrtc.js +37 -1
- package/dist/components/mobile-player/video.native.js +10 -1
- package/dist/components/ui/button.js +107 -155
- package/dist/components/ui/dialog.js +83 -116
- package/dist/components/ui/dropdown.js +41 -18
- package/dist/components/ui/input.js +53 -128
- package/dist/components/ui/primitives/button.js +0 -2
- package/dist/components/ui/primitives/modal.js +2 -2
- package/dist/components/ui/primitives/text.js +48 -8
- package/dist/components/ui/text.js +37 -66
- package/dist/components/ui/toast.js +78 -40
- package/dist/components/ui/view.js +28 -41
- package/dist/crypto-polyfill.js +0 -0
- package/dist/crypto-polyfill.native.js +24 -0
- package/dist/index.js +1 -0
- package/dist/lib/theme/index.js +1 -2
- package/dist/lib/theme/theme.js +106 -54
- package/dist/lib/theme/tokens.js +94 -1
- package/dist/livestream-store/chat.js +0 -2
- package/dist/livestream-store/stream-key.js +1 -1
- package/dist/player-store/player-provider.js +10 -2
- package/dist/player-store/single-player-provider.js +1 -1
- package/dist/streamplace-store/stream.js +1 -1
- package/dist/ui/index.js +2 -3
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
- package/package.json +3 -2
- package/src/components/chat/chat-box.tsx +6 -3
- package/src/components/chat/chat.tsx +1 -0
- package/src/components/mobile-player/ui/autoplay-button.tsx +1 -0
- package/src/components/mobile-player/ui/viewer-context-menu.tsx +2 -2
- package/src/components/mobile-player/ui/viewer-loading-overlay.tsx +2 -2
- package/src/components/mobile-player/use-webrtc.tsx +41 -1
- package/src/components/mobile-player/video.native.tsx +19 -4
- package/src/components/ui/button.tsx +110 -172
- package/src/components/ui/dialog.tsx +96 -138
- package/src/components/ui/dropdown.tsx +60 -22
- package/src/components/ui/input.tsx +57 -144
- package/src/components/ui/primitives/button.tsx +0 -2
- package/src/components/ui/primitives/modal.tsx +0 -2
- package/src/components/ui/primitives/text.tsx +51 -8
- package/src/components/ui/text.tsx +42 -67
- package/src/components/ui/toast.tsx +108 -90
- package/src/components/ui/view.tsx +27 -41
- package/src/crypto-polyfill.native.tsx +24 -0
- package/src/crypto-polyfill.tsx +0 -0
- package/src/index.tsx +2 -0
- package/src/lib/theme/index.ts +0 -2
- package/src/lib/theme/theme.tsx +179 -72
- package/src/lib/theme/tokens.ts +97 -0
- package/src/livestream-store/chat.tsx +0 -3
- package/src/livestream-store/stream-key.tsx +1 -1
- package/src/player-store/player-provider.tsx +13 -1
- package/src/player-store/single-player-provider.tsx +1 -1
- package/src/streamplace-store/stream.tsx +1 -1
- package/src/ui/index.ts +0 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
2
2
|
import { X } from "lucide-react-native";
|
|
3
3
|
import React, { forwardRef } from "react";
|
|
4
|
-
import { Platform,
|
|
4
|
+
import { Platform, Text } from "react-native";
|
|
5
5
|
import { useTheme } from "../../lib/theme/theme";
|
|
6
|
+
import * as zero from "../../ui";
|
|
6
7
|
import { createThemedIcon } from "./icons";
|
|
7
8
|
import { ModalPrimitive, ModalPrimitiveProps } from "./primitives/modal";
|
|
8
9
|
|
|
@@ -67,10 +68,70 @@ export const Dialog = forwardRef<any, DialogProps>(
|
|
|
67
68
|
},
|
|
68
69
|
ref,
|
|
69
70
|
) => {
|
|
70
|
-
const { theme } = useTheme();
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
const
|
|
71
|
+
const { zero: zt, theme } = useTheme();
|
|
72
|
+
|
|
73
|
+
// Content styles using theme.zero
|
|
74
|
+
const contentStyles = React.useMemo(() => {
|
|
75
|
+
const baseStyle = [
|
|
76
|
+
zt.bg.card,
|
|
77
|
+
zero.r.lg,
|
|
78
|
+
zero.shadows.lg,
|
|
79
|
+
{ maxHeight: "90%", maxWidth: "90%" },
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
const variantStyle = (() => {
|
|
83
|
+
switch (variant) {
|
|
84
|
+
case "sheet":
|
|
85
|
+
return [
|
|
86
|
+
{ borderRadius: zero.borderRadius.xl },
|
|
87
|
+
{
|
|
88
|
+
borderBottomLeftRadius: 0,
|
|
89
|
+
borderBottomRightRadius: 0,
|
|
90
|
+
marginTop: "auto",
|
|
91
|
+
marginBottom: 0,
|
|
92
|
+
maxHeight: "80%",
|
|
93
|
+
width: "100%",
|
|
94
|
+
maxWidth: "100%",
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
case "fullscreen":
|
|
98
|
+
return [
|
|
99
|
+
{
|
|
100
|
+
width: "100%",
|
|
101
|
+
height: "100%",
|
|
102
|
+
maxWidth: "100%",
|
|
103
|
+
maxHeight: "100%",
|
|
104
|
+
borderRadius: 0,
|
|
105
|
+
margin: 0,
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
default:
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
})();
|
|
112
|
+
|
|
113
|
+
const sizeStyle = (() => {
|
|
114
|
+
switch (size) {
|
|
115
|
+
case "sm":
|
|
116
|
+
return { minWidth: 300, minHeight: 200 };
|
|
117
|
+
case "lg":
|
|
118
|
+
return { minWidth: 500, minHeight: 400 };
|
|
119
|
+
case "xl":
|
|
120
|
+
return { minWidth: 600, minHeight: 500 };
|
|
121
|
+
case "full":
|
|
122
|
+
return {
|
|
123
|
+
width: "95%",
|
|
124
|
+
height: "95%",
|
|
125
|
+
maxWidth: "95%",
|
|
126
|
+
maxHeight: "95%",
|
|
127
|
+
};
|
|
128
|
+
default:
|
|
129
|
+
return { minWidth: 400, minHeight: 300 };
|
|
130
|
+
}
|
|
131
|
+
})();
|
|
132
|
+
|
|
133
|
+
return [baseStyle, variantStyle, sizeStyle].flat();
|
|
134
|
+
}, [variant, size, zero]);
|
|
74
135
|
|
|
75
136
|
const handleClose = React.useCallback(() => {
|
|
76
137
|
if (onClose) {
|
|
@@ -112,27 +173,38 @@ export const Dialog = forwardRef<any, DialogProps>(
|
|
|
112
173
|
<ModalPrimitive.Overlay
|
|
113
174
|
dismissible={dismissible}
|
|
114
175
|
onDismiss={handleClose}
|
|
115
|
-
style={
|
|
176
|
+
style={zt.bg.overlay}
|
|
116
177
|
>
|
|
117
178
|
<ModalPrimitive.Content
|
|
118
179
|
position={position || "left"}
|
|
119
180
|
size={size || "md"}
|
|
120
|
-
style={
|
|
121
|
-
styles.content,
|
|
122
|
-
styles[`${variant}Content` as keyof typeof styles],
|
|
123
|
-
styles[`${size}Content` as keyof typeof styles],
|
|
124
|
-
]}
|
|
181
|
+
style={contentStyles}
|
|
125
182
|
>
|
|
126
183
|
{(title || showCloseButton) && (
|
|
127
184
|
<ModalPrimitive.Header
|
|
128
185
|
withBorder={variant !== "sheet"}
|
|
129
|
-
style={
|
|
186
|
+
style={[
|
|
187
|
+
zero.p[4],
|
|
188
|
+
{
|
|
189
|
+
flexDirection: "row",
|
|
190
|
+
alignItems: "center",
|
|
191
|
+
justifyContent: "space-between",
|
|
192
|
+
},
|
|
193
|
+
]}
|
|
130
194
|
>
|
|
131
195
|
<DialogTitle>{title}</DialogTitle>
|
|
132
196
|
{showCloseButton && (
|
|
133
197
|
<ModalPrimitive.Close
|
|
134
198
|
onClose={handleClose}
|
|
135
|
-
style={
|
|
199
|
+
style={[
|
|
200
|
+
zero.p[2],
|
|
201
|
+
{
|
|
202
|
+
width: 44,
|
|
203
|
+
height: 44,
|
|
204
|
+
alignItems: "center",
|
|
205
|
+
justifyContent: "center",
|
|
206
|
+
},
|
|
207
|
+
]}
|
|
136
208
|
>
|
|
137
209
|
<DialogCloseIcon />
|
|
138
210
|
</ModalPrimitive.Close>
|
|
@@ -142,7 +214,7 @@ export const Dialog = forwardRef<any, DialogProps>(
|
|
|
142
214
|
|
|
143
215
|
<ModalPrimitive.Body
|
|
144
216
|
scrollable={variant !== "fullscreen"}
|
|
145
|
-
style={
|
|
217
|
+
style={[zero.p[6], { paddingTop: 0, flex: 1 }]}
|
|
146
218
|
>
|
|
147
219
|
{description && (
|
|
148
220
|
<DialogDescription>{description}</DialogDescription>
|
|
@@ -166,13 +238,16 @@ export interface DialogTitleProps {
|
|
|
166
238
|
|
|
167
239
|
export const DialogTitle = forwardRef<any, DialogTitleProps>(
|
|
168
240
|
({ children, style, ...props }, ref) => {
|
|
169
|
-
const {
|
|
170
|
-
const styles = React.useMemo(() => createStyles(theme), [theme]);
|
|
241
|
+
const { zero: zt } = useTheme();
|
|
171
242
|
|
|
172
243
|
if (!children) return null;
|
|
173
244
|
|
|
174
245
|
return (
|
|
175
|
-
<Text
|
|
246
|
+
<Text
|
|
247
|
+
ref={ref}
|
|
248
|
+
style={[zt.text.xl, { fontWeight: "600", flex: 1 }, style]}
|
|
249
|
+
{...props}
|
|
250
|
+
>
|
|
176
251
|
{children}
|
|
177
252
|
</Text>
|
|
178
253
|
);
|
|
@@ -189,13 +264,12 @@ export interface DialogDescriptionProps {
|
|
|
189
264
|
|
|
190
265
|
export const DialogDescription = forwardRef<any, DialogDescriptionProps>(
|
|
191
266
|
({ children, style, ...props }, ref) => {
|
|
192
|
-
const {
|
|
193
|
-
const styles = React.useMemo(() => createStyles(theme), [theme]);
|
|
267
|
+
const { zero: zt } = useTheme();
|
|
194
268
|
|
|
195
269
|
if (!children) return null;
|
|
196
270
|
|
|
197
271
|
return (
|
|
198
|
-
<Text ref={ref} style={[
|
|
272
|
+
<Text ref={ref} style={[zt.text.muted, zero.mb[4], style]} {...props}>
|
|
199
273
|
{children}
|
|
200
274
|
</Text>
|
|
201
275
|
);
|
|
@@ -230,8 +304,7 @@ export const DialogFooter = forwardRef<any, DialogFooterProps>(
|
|
|
230
304
|
},
|
|
231
305
|
ref,
|
|
232
306
|
) => {
|
|
233
|
-
const {
|
|
234
|
-
const styles = React.useMemo(() => createStyles(theme), [theme]);
|
|
307
|
+
const { zero: zt } = useTheme();
|
|
235
308
|
|
|
236
309
|
if (!children) return null;
|
|
237
310
|
|
|
@@ -241,7 +314,7 @@ export const DialogFooter = forwardRef<any, DialogFooterProps>(
|
|
|
241
314
|
withBorder={withBorder}
|
|
242
315
|
direction={direction}
|
|
243
316
|
justify={justify}
|
|
244
|
-
style={[
|
|
317
|
+
style={[zero.p[6], { gap: 8 }, style]}
|
|
245
318
|
{...props}
|
|
246
319
|
>
|
|
247
320
|
{children}
|
|
@@ -257,120 +330,5 @@ const DialogCloseIcon = () => {
|
|
|
257
330
|
return <ThemedX size="md" variant="default" />;
|
|
258
331
|
};
|
|
259
332
|
|
|
260
|
-
// Create theme-aware styles
|
|
261
|
-
function createStyles(theme: any) {
|
|
262
|
-
return StyleSheet.create({
|
|
263
|
-
overlay: {
|
|
264
|
-
backgroundColor: "rgba(0, 0, 0, 0.5)",
|
|
265
|
-
},
|
|
266
|
-
|
|
267
|
-
content: {
|
|
268
|
-
backgroundColor: theme.colors.card,
|
|
269
|
-
borderRadius: theme.borderRadius.lg,
|
|
270
|
-
...theme.shadows.lg,
|
|
271
|
-
maxHeight: "90%",
|
|
272
|
-
maxWidth: "90%",
|
|
273
|
-
},
|
|
274
|
-
|
|
275
|
-
// Variant styles
|
|
276
|
-
defaultContent: {
|
|
277
|
-
// Default styles already applied in content
|
|
278
|
-
},
|
|
279
|
-
|
|
280
|
-
sheetContent: {
|
|
281
|
-
borderTopLeftRadius: theme.borderRadius.xl,
|
|
282
|
-
borderTopRightRadius: theme.borderRadius.xl,
|
|
283
|
-
borderBottomLeftRadius: 0,
|
|
284
|
-
borderBottomRightRadius: 0,
|
|
285
|
-
marginTop: "auto",
|
|
286
|
-
marginBottom: 0,
|
|
287
|
-
maxHeight: "80%",
|
|
288
|
-
width: "100%",
|
|
289
|
-
maxWidth: "100%",
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
fullscreenContent: {
|
|
293
|
-
width: "100%",
|
|
294
|
-
height: "100%",
|
|
295
|
-
maxWidth: "100%",
|
|
296
|
-
maxHeight: "100%",
|
|
297
|
-
borderRadius: 0,
|
|
298
|
-
margin: 0,
|
|
299
|
-
},
|
|
300
|
-
|
|
301
|
-
// Size styles
|
|
302
|
-
smContent: {
|
|
303
|
-
minWidth: 300,
|
|
304
|
-
minHeight: 200,
|
|
305
|
-
},
|
|
306
|
-
|
|
307
|
-
mdContent: {
|
|
308
|
-
minWidth: 400,
|
|
309
|
-
minHeight: 300,
|
|
310
|
-
},
|
|
311
|
-
|
|
312
|
-
lgContent: {
|
|
313
|
-
minWidth: 500,
|
|
314
|
-
minHeight: 400,
|
|
315
|
-
},
|
|
316
|
-
|
|
317
|
-
xlContent: {
|
|
318
|
-
minWidth: 600,
|
|
319
|
-
minHeight: 500,
|
|
320
|
-
},
|
|
321
|
-
|
|
322
|
-
fullContent: {
|
|
323
|
-
width: "95%",
|
|
324
|
-
height: "95%",
|
|
325
|
-
maxWidth: "95%",
|
|
326
|
-
maxHeight: "95%",
|
|
327
|
-
},
|
|
328
|
-
|
|
329
|
-
header: {
|
|
330
|
-
paddingHorizontal: theme.spacing[6],
|
|
331
|
-
paddingVertical: theme.spacing[4],
|
|
332
|
-
flexDirection: "row",
|
|
333
|
-
alignItems: "center",
|
|
334
|
-
justifyContent: "space-between",
|
|
335
|
-
},
|
|
336
|
-
|
|
337
|
-
body: {
|
|
338
|
-
paddingHorizontal: theme.spacing[6],
|
|
339
|
-
paddingBottom: theme.spacing[6],
|
|
340
|
-
flex: 1,
|
|
341
|
-
},
|
|
342
|
-
|
|
343
|
-
footer: {
|
|
344
|
-
paddingHorizontal: theme.spacing[6],
|
|
345
|
-
paddingVertical: theme.spacing[4],
|
|
346
|
-
gap: theme.spacing[2],
|
|
347
|
-
},
|
|
348
|
-
|
|
349
|
-
title: {
|
|
350
|
-
fontSize: 20,
|
|
351
|
-
fontWeight: "600",
|
|
352
|
-
color: theme.colors.text,
|
|
353
|
-
flex: 1,
|
|
354
|
-
lineHeight: 24,
|
|
355
|
-
},
|
|
356
|
-
|
|
357
|
-
description: {
|
|
358
|
-
fontSize: 16,
|
|
359
|
-
color: theme.colors.textMuted,
|
|
360
|
-
lineHeight: 22,
|
|
361
|
-
marginBottom: theme.spacing[4],
|
|
362
|
-
},
|
|
363
|
-
|
|
364
|
-
closeButton: {
|
|
365
|
-
width: theme.touchTargets.minimum,
|
|
366
|
-
height: theme.touchTargets.minimum,
|
|
367
|
-
alignItems: "center",
|
|
368
|
-
justifyContent: "center",
|
|
369
|
-
borderRadius: theme.borderRadius.sm,
|
|
370
|
-
marginLeft: theme.spacing[2],
|
|
371
|
-
},
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
|
|
375
333
|
// Export dialog variants for external use
|
|
376
334
|
export { dialogVariants };
|
|
@@ -19,9 +19,7 @@ import {
|
|
|
19
19
|
} from "react-native";
|
|
20
20
|
import {
|
|
21
21
|
a,
|
|
22
|
-
bg,
|
|
23
22
|
borderRadius,
|
|
24
|
-
colors,
|
|
25
23
|
fontSize,
|
|
26
24
|
gap,
|
|
27
25
|
layout,
|
|
@@ -35,8 +33,8 @@ import {
|
|
|
35
33
|
px,
|
|
36
34
|
py,
|
|
37
35
|
right,
|
|
38
|
-
textColors,
|
|
39
36
|
} from "../../lib/theme/atoms";
|
|
37
|
+
import { useTheme } from "../../ui";
|
|
40
38
|
import {
|
|
41
39
|
objectFromObjects,
|
|
42
40
|
TextContext as TextClassContext,
|
|
@@ -60,6 +58,7 @@ export const DropdownMenuBottomSheet = forwardRef<
|
|
|
60
58
|
) {
|
|
61
59
|
// Use the primitives' context to know if open
|
|
62
60
|
const { open, onOpenChange } = DropdownMenuPrimitive.useRootContext();
|
|
61
|
+
const { zero: zt } = useTheme();
|
|
63
62
|
const snapPoints = useMemo(() => ["25%", "50%", "80%"], []);
|
|
64
63
|
const sheetRef = useRef<BottomSheet>(null);
|
|
65
64
|
|
|
@@ -81,11 +80,11 @@ export const DropdownMenuBottomSheet = forwardRef<
|
|
|
81
80
|
)}
|
|
82
81
|
onClose={() => onOpenChange?.(false)}
|
|
83
82
|
style={[overlayStyle]}
|
|
84
|
-
backgroundStyle={[bg.
|
|
83
|
+
backgroundStyle={[zt.bg.popover, a.radius.all.md, a.shadows.md, p[1]]}
|
|
85
84
|
handleIndicatorStyle={[
|
|
86
85
|
a.sizes.width[12],
|
|
87
86
|
a.sizes.height[1],
|
|
88
|
-
bg.
|
|
87
|
+
zt.bg.mutedForeground,
|
|
89
88
|
]}
|
|
90
89
|
>
|
|
91
90
|
<BottomSheetView style={[px[2]]}>
|
|
@@ -108,6 +107,7 @@ export const DropdownMenuSubTrigger = forwardRef<
|
|
|
108
107
|
}
|
|
109
108
|
>(({ inset, children, ...props }, ref) => {
|
|
110
109
|
const { open } = DropdownMenuPrimitive.useSubContext();
|
|
110
|
+
const { icons } = useTheme();
|
|
111
111
|
const Icon =
|
|
112
112
|
Platform.OS === "web" ? ChevronRight : open ? ChevronUp : ChevronDown;
|
|
113
113
|
return (
|
|
@@ -130,7 +130,7 @@ export const DropdownMenuSubTrigger = forwardRef<
|
|
|
130
130
|
>
|
|
131
131
|
{children}
|
|
132
132
|
<View style={[a.layout.position.absolute, a.position.right[1]]}>
|
|
133
|
-
<Icon size={18} color={
|
|
133
|
+
<Icon size={18} color={icons.color.muted} />
|
|
134
134
|
</View>
|
|
135
135
|
</View>
|
|
136
136
|
</DropdownMenuPrimitive.SubTrigger>
|
|
@@ -142,6 +142,7 @@ export const DropdownMenuSubContent = forwardRef<
|
|
|
142
142
|
any,
|
|
143
143
|
DropdownMenuPrimitive.SubContentProps
|
|
144
144
|
>((props, ref) => {
|
|
145
|
+
const { zero: zt } = useTheme();
|
|
145
146
|
return (
|
|
146
147
|
<DropdownMenuPrimitive.SubContent
|
|
147
148
|
ref={ref}
|
|
@@ -151,9 +152,9 @@ export const DropdownMenuSubContent = forwardRef<
|
|
|
151
152
|
a.overflow.hidden,
|
|
152
153
|
a.radius.all.md,
|
|
153
154
|
a.borders.width.thin,
|
|
154
|
-
|
|
155
|
+
zt.border.default,
|
|
155
156
|
mt[1],
|
|
156
|
-
bg.
|
|
157
|
+
zt.bg.popover,
|
|
157
158
|
p[1],
|
|
158
159
|
a.shadows.md,
|
|
159
160
|
]}
|
|
@@ -169,6 +170,7 @@ export const DropdownMenuContent = forwardRef<
|
|
|
169
170
|
portalHost?: string;
|
|
170
171
|
}
|
|
171
172
|
>(({ overlayStyle, portalHost, ...props }, ref) => {
|
|
173
|
+
const { zero: zt } = useTheme();
|
|
172
174
|
return (
|
|
173
175
|
<DropdownMenuPrimitive.Portal hostName={portalHost}>
|
|
174
176
|
<DropdownMenuPrimitive.Overlay
|
|
@@ -187,8 +189,8 @@ export const DropdownMenuContent = forwardRef<
|
|
|
187
189
|
a.overflow.hidden,
|
|
188
190
|
a.radius.all.md,
|
|
189
191
|
a.borders.width.thin,
|
|
190
|
-
|
|
191
|
-
bg.
|
|
192
|
+
zt.border.default,
|
|
193
|
+
zt.bg.popover,
|
|
192
194
|
p[2],
|
|
193
195
|
a.shadows.md,
|
|
194
196
|
] as any
|
|
@@ -206,6 +208,7 @@ export const DropdownMenuContentWithoutPortal = forwardRef<
|
|
|
206
208
|
overlayStyle?: any;
|
|
207
209
|
}
|
|
208
210
|
>(({ overlayStyle, ...props }, ref) => {
|
|
211
|
+
const { theme } = useTheme();
|
|
209
212
|
return (
|
|
210
213
|
<DropdownMenuPrimitive.Overlay
|
|
211
214
|
style={[
|
|
@@ -223,8 +226,8 @@ export const DropdownMenuContentWithoutPortal = forwardRef<
|
|
|
223
226
|
a.overflow.hidden,
|
|
224
227
|
a.radius.all.md,
|
|
225
228
|
a.borders.width.thin,
|
|
226
|
-
|
|
227
|
-
|
|
229
|
+
{ borderColor: theme.colors.border },
|
|
230
|
+
{ backgroundColor: theme.colors.popover },
|
|
228
231
|
p[2],
|
|
229
232
|
a.shadows.md,
|
|
230
233
|
] as any
|
|
@@ -263,10 +266,14 @@ export const DropdownMenuItem = forwardRef<
|
|
|
263
266
|
any,
|
|
264
267
|
DropdownMenuPrimitive.ItemProps & { inset?: boolean; disabled?: boolean }
|
|
265
268
|
>(({ inset, disabled, style, children, ...props }, ref) => {
|
|
269
|
+
const { theme } = useTheme();
|
|
266
270
|
return (
|
|
267
271
|
<Pressable {...props}>
|
|
268
272
|
<TextClassContext.Provider
|
|
269
|
-
value={objectFromObjects([
|
|
273
|
+
value={objectFromObjects([
|
|
274
|
+
{ color: theme.colors.popoverForeground },
|
|
275
|
+
a.fontSize.base,
|
|
276
|
+
])}
|
|
270
277
|
>
|
|
271
278
|
<View
|
|
272
279
|
style={[
|
|
@@ -294,6 +301,7 @@ export const DropdownMenuCheckboxItem = forwardRef<
|
|
|
294
301
|
children?: React.ReactNode;
|
|
295
302
|
}
|
|
296
303
|
>(({ children, checked, ...props }, ref) => {
|
|
304
|
+
const { theme } = useTheme();
|
|
297
305
|
return (
|
|
298
306
|
<DropdownMenuPrimitive.CheckboxItem
|
|
299
307
|
ref={ref}
|
|
@@ -315,9 +323,17 @@ export const DropdownMenuCheckboxItem = forwardRef<
|
|
|
315
323
|
{children}
|
|
316
324
|
<View style={[pl[1], layout.position.absolute, right[1]]}>
|
|
317
325
|
{checked ? (
|
|
318
|
-
<CheckCircle
|
|
326
|
+
<CheckCircle
|
|
327
|
+
size={14}
|
|
328
|
+
strokeWidth={3}
|
|
329
|
+
color={theme.colors.foreground}
|
|
330
|
+
/>
|
|
319
331
|
) : (
|
|
320
|
-
<Circle
|
|
332
|
+
<Circle
|
|
333
|
+
size={14}
|
|
334
|
+
strokeWidth={3}
|
|
335
|
+
color={theme.colors.mutedForeground}
|
|
336
|
+
/>
|
|
321
337
|
)}
|
|
322
338
|
</View>
|
|
323
339
|
</View>
|
|
@@ -332,6 +348,7 @@ export const DropdownMenuRadioItem = forwardRef<
|
|
|
332
348
|
children?: React.ReactNode;
|
|
333
349
|
}
|
|
334
350
|
>(({ children, ...props }, ref) => {
|
|
351
|
+
const { theme } = useTheme();
|
|
335
352
|
return (
|
|
336
353
|
<DropdownMenuPrimitive.RadioItem
|
|
337
354
|
ref={ref}
|
|
@@ -350,7 +367,7 @@ export const DropdownMenuRadioItem = forwardRef<
|
|
|
350
367
|
>
|
|
351
368
|
<View style={[pl[1], layout.position.absolute, right[1]]}>
|
|
352
369
|
<DropdownMenuPrimitive.ItemIndicator>
|
|
353
|
-
<Check size={14} strokeWidth={3} color=
|
|
370
|
+
<Check size={14} strokeWidth={3} color={theme.colors.foreground} />
|
|
354
371
|
</DropdownMenuPrimitive.ItemIndicator>
|
|
355
372
|
</View>
|
|
356
373
|
{children}
|
|
@@ -363,13 +380,14 @@ export const DropdownMenuLabel = forwardRef<
|
|
|
363
380
|
any,
|
|
364
381
|
DropdownMenuPrimitive.LabelProps & { inset?: boolean }
|
|
365
382
|
>(({ inset, ...props }, ref) => {
|
|
383
|
+
const { theme } = useTheme();
|
|
366
384
|
return (
|
|
367
385
|
<Text
|
|
368
386
|
ref={ref}
|
|
369
387
|
style={[
|
|
370
388
|
px[2],
|
|
371
389
|
py[2],
|
|
372
|
-
|
|
390
|
+
{ color: theme.colors.textMuted },
|
|
373
391
|
a.fontSize.base,
|
|
374
392
|
inset && gap[2],
|
|
375
393
|
]}
|
|
@@ -382,15 +400,23 @@ export const DropdownMenuSeparator = forwardRef<
|
|
|
382
400
|
any,
|
|
383
401
|
DropdownMenuPrimitive.SeparatorProps
|
|
384
402
|
>((props, ref) => {
|
|
385
|
-
|
|
403
|
+
const { theme } = useTheme();
|
|
404
|
+
return (
|
|
405
|
+
<View
|
|
406
|
+
ref={ref}
|
|
407
|
+
style={[{ height: 0.5 }, { backgroundColor: theme.colors.border }]}
|
|
408
|
+
{...props}
|
|
409
|
+
/>
|
|
410
|
+
);
|
|
386
411
|
});
|
|
387
412
|
|
|
388
413
|
export function DropdownMenuShortcut(props: any) {
|
|
414
|
+
const { theme } = useTheme();
|
|
389
415
|
return (
|
|
390
416
|
<Text
|
|
391
417
|
style={[
|
|
392
418
|
ml.auto,
|
|
393
|
-
|
|
419
|
+
{ color: theme.colors.textMuted },
|
|
394
420
|
a.fontSize.sm,
|
|
395
421
|
a.letterSpacing.widest,
|
|
396
422
|
]}
|
|
@@ -403,15 +429,18 @@ export const DropdownMenuGroup = forwardRef<
|
|
|
403
429
|
any,
|
|
404
430
|
{ inset?: boolean; title?: string; children: ReactNode }
|
|
405
431
|
>((props, ref) => {
|
|
432
|
+
const { theme } = useTheme();
|
|
406
433
|
const { inset, title, children, ...rest } = props;
|
|
407
434
|
return (
|
|
408
435
|
<View style={[pt[2], inset && gap[2]]} ref={ref} {...rest}>
|
|
409
436
|
{title && (
|
|
410
|
-
<Text style={[
|
|
437
|
+
<Text style={[{ color: theme.colors.textMuted }, pb[1], pl[2]]}>
|
|
438
|
+
{title}
|
|
439
|
+
</Text>
|
|
411
440
|
)}
|
|
412
441
|
<View
|
|
413
442
|
style={[
|
|
414
|
-
|
|
443
|
+
{ backgroundColor: theme.colors.muted },
|
|
415
444
|
Platform.OS === "web" ? [px[2], py[1]] : p[2],
|
|
416
445
|
gap.all[1],
|
|
417
446
|
{ borderRadius: borderRadius.lg },
|
|
@@ -425,8 +454,17 @@ export const DropdownMenuGroup = forwardRef<
|
|
|
425
454
|
|
|
426
455
|
export const DropdownMenuInfo = forwardRef<any, any>(
|
|
427
456
|
({ description, ...props }, ref) => {
|
|
457
|
+
const { theme } = useTheme();
|
|
428
458
|
return (
|
|
429
|
-
<Text
|
|
459
|
+
<Text
|
|
460
|
+
style={[
|
|
461
|
+
{ color: theme.colors.textMuted },
|
|
462
|
+
pt[1],
|
|
463
|
+
pl[2],
|
|
464
|
+
pb[2],
|
|
465
|
+
fontSize.sm,
|
|
466
|
+
]}
|
|
467
|
+
>
|
|
430
468
|
{description}
|
|
431
469
|
</Text>
|
|
432
470
|
);
|