@xaui/native 0.0.2 → 0.0.4
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/button/index.cjs +92 -70
- package/dist/button/index.d.cts +3 -4
- package/dist/button/index.d.ts +3 -4
- package/dist/button/index.js +78 -69
- package/dist/checkbox/index.cjs +488 -0
- package/dist/checkbox/index.d.cts +73 -0
- package/dist/checkbox/index.d.ts +73 -0
- package/dist/checkbox/index.js +436 -0
- package/dist/{chunk-6ITFLLAM.js → chunk-52PIZF2Z.js} +1 -1
- package/dist/{chunk-SHT66VET.js → chunk-DNJWBME5.js} +17 -2
- package/dist/core/index.js +1 -1
- package/dist/index-BOw6tbkc.d.cts +5 -0
- package/dist/index-BOw6tbkc.d.ts +5 -0
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/indicator/index.d.cts +1 -1
- package/dist/indicator/index.d.ts +1 -1
- package/dist/indicator/index.js +2 -2
- package/dist/progress/index.d.cts +1 -1
- package/dist/progress/index.d.ts +1 -1
- package/dist/progress/index.js +1 -1
- package/package.json +21 -12
- package/dist/theme-qvIXI4kF.d.cts +0 -3
- package/dist/theme-qvIXI4kF.d.ts +0 -3
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useXUITheme
|
|
3
|
+
} from "../chunk-DNJWBME5.js";
|
|
4
|
+
|
|
5
|
+
// src/components/checkbox/checkbox.tsx
|
|
6
|
+
import React2, { useEffect as useEffect2, useRef as useRef2, useState } from "react";
|
|
7
|
+
import { Animated as Animated3, Pressable, Text, View } from "react-native";
|
|
8
|
+
|
|
9
|
+
// src/components/checkbox/checkbox-icon.tsx
|
|
10
|
+
import React, { useEffect, useRef } from "react";
|
|
11
|
+
import { Animated as Animated2 } from "react-native";
|
|
12
|
+
import Svg, { Polyline, Line, Path } from "react-native-svg";
|
|
13
|
+
|
|
14
|
+
// src/components/checkbox/checkbox.animation.ts
|
|
15
|
+
import { Animated } from "react-native";
|
|
16
|
+
var runCheckAnimation = (opacity, strokeDashoffset) => {
|
|
17
|
+
Animated.parallel([
|
|
18
|
+
Animated.timing(opacity, {
|
|
19
|
+
toValue: 1,
|
|
20
|
+
duration: 200,
|
|
21
|
+
useNativeDriver: false
|
|
22
|
+
}),
|
|
23
|
+
Animated.timing(strokeDashoffset, {
|
|
24
|
+
toValue: 44,
|
|
25
|
+
duration: 250,
|
|
26
|
+
useNativeDriver: false
|
|
27
|
+
})
|
|
28
|
+
]).start();
|
|
29
|
+
};
|
|
30
|
+
var runUncheckAnimation = (opacity, strokeDashoffset) => {
|
|
31
|
+
Animated.parallel([
|
|
32
|
+
Animated.timing(opacity, {
|
|
33
|
+
toValue: 0,
|
|
34
|
+
duration: 200,
|
|
35
|
+
useNativeDriver: false
|
|
36
|
+
}),
|
|
37
|
+
Animated.timing(strokeDashoffset, {
|
|
38
|
+
toValue: 66,
|
|
39
|
+
duration: 250,
|
|
40
|
+
useNativeDriver: false
|
|
41
|
+
})
|
|
42
|
+
]).start();
|
|
43
|
+
};
|
|
44
|
+
var runBackgroundInAnimation = (backgroundScale, backgroundOpacity) => {
|
|
45
|
+
Animated.parallel([
|
|
46
|
+
Animated.timing(backgroundScale, {
|
|
47
|
+
toValue: 1,
|
|
48
|
+
duration: 200,
|
|
49
|
+
useNativeDriver: true
|
|
50
|
+
}),
|
|
51
|
+
Animated.timing(backgroundOpacity, {
|
|
52
|
+
toValue: 1,
|
|
53
|
+
duration: 200,
|
|
54
|
+
useNativeDriver: true
|
|
55
|
+
})
|
|
56
|
+
]).start();
|
|
57
|
+
};
|
|
58
|
+
var runBackgroundOutAnimation = (backgroundScale, backgroundOpacity) => {
|
|
59
|
+
Animated.parallel([
|
|
60
|
+
Animated.timing(backgroundScale, {
|
|
61
|
+
toValue: 0.5,
|
|
62
|
+
duration: 200,
|
|
63
|
+
useNativeDriver: true
|
|
64
|
+
}),
|
|
65
|
+
Animated.timing(backgroundOpacity, {
|
|
66
|
+
toValue: 0,
|
|
67
|
+
duration: 200,
|
|
68
|
+
useNativeDriver: true
|
|
69
|
+
})
|
|
70
|
+
]).start();
|
|
71
|
+
};
|
|
72
|
+
var runPressInAnimation = (scale) => {
|
|
73
|
+
Animated.spring(scale, {
|
|
74
|
+
toValue: 0.95,
|
|
75
|
+
useNativeDriver: true
|
|
76
|
+
}).start();
|
|
77
|
+
};
|
|
78
|
+
var runPressOutAnimation = (scale) => {
|
|
79
|
+
Animated.spring(scale, {
|
|
80
|
+
toValue: 1,
|
|
81
|
+
useNativeDriver: true
|
|
82
|
+
}).start();
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// src/components/checkbox/checkbox-icon.tsx
|
|
86
|
+
var AnimatedSvg = Animated2.createAnimatedComponent(Svg);
|
|
87
|
+
var AnimatedPolyline = Animated2.createAnimatedComponent(Polyline);
|
|
88
|
+
function CheckIcon({
|
|
89
|
+
isChecked,
|
|
90
|
+
color,
|
|
91
|
+
size
|
|
92
|
+
}) {
|
|
93
|
+
const opacity = useRef(new Animated2.Value(0)).current;
|
|
94
|
+
const strokeDashoffset = useRef(new Animated2.Value(66)).current;
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (isChecked) {
|
|
97
|
+
runCheckAnimation(opacity, strokeDashoffset);
|
|
98
|
+
} else {
|
|
99
|
+
runUncheckAnimation(opacity, strokeDashoffset);
|
|
100
|
+
}
|
|
101
|
+
}, [isChecked, opacity, strokeDashoffset]);
|
|
102
|
+
return /* @__PURE__ */ React.createElement(
|
|
103
|
+
AnimatedSvg,
|
|
104
|
+
{
|
|
105
|
+
width: size,
|
|
106
|
+
height: size,
|
|
107
|
+
viewBox: "0 0 17 18",
|
|
108
|
+
fill: "none",
|
|
109
|
+
opacity
|
|
110
|
+
},
|
|
111
|
+
/* @__PURE__ */ React.createElement(
|
|
112
|
+
AnimatedPolyline,
|
|
113
|
+
{
|
|
114
|
+
points: "1 9 7 14 15 4",
|
|
115
|
+
stroke: color,
|
|
116
|
+
strokeWidth: 2,
|
|
117
|
+
strokeLinecap: "round",
|
|
118
|
+
strokeLinejoin: "round",
|
|
119
|
+
strokeDasharray: "22",
|
|
120
|
+
strokeDashoffset
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
function PlaceholderCheckIcon({ color, size }) {
|
|
126
|
+
return /* @__PURE__ */ React.createElement(Svg, { width: size, height: size, viewBox: "0 0 17 18" }, /* @__PURE__ */ React.createElement(
|
|
127
|
+
Path,
|
|
128
|
+
{
|
|
129
|
+
d: "M 1 9 L 7 14 L 15 4",
|
|
130
|
+
stroke: color,
|
|
131
|
+
strokeWidth: 2,
|
|
132
|
+
strokeLinecap: "round",
|
|
133
|
+
strokeLinejoin: "round",
|
|
134
|
+
fill: "none"
|
|
135
|
+
}
|
|
136
|
+
));
|
|
137
|
+
}
|
|
138
|
+
function IndeterminateCheckIcon({
|
|
139
|
+
color,
|
|
140
|
+
size
|
|
141
|
+
}) {
|
|
142
|
+
return /* @__PURE__ */ React.createElement(Svg, { width: size, height: size, viewBox: "0 0 24 24" }, /* @__PURE__ */ React.createElement(Line, { x1: "21", y1: "12", x2: "3", y2: "12", stroke: color, strokeWidth: 3 }));
|
|
143
|
+
}
|
|
144
|
+
function CheckboxIcon({ isIndeterminate, variant, ...props }) {
|
|
145
|
+
const BaseIcon = isIndeterminate ? IndeterminateCheckIcon : CheckIcon;
|
|
146
|
+
if (variant === "light" && !props.isChecked && !isIndeterminate) {
|
|
147
|
+
return /* @__PURE__ */ React.createElement(PlaceholderCheckIcon, { size: props.size, color: props.placeholderColor ?? "" });
|
|
148
|
+
}
|
|
149
|
+
return /* @__PURE__ */ React.createElement(BaseIcon, { ...props });
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// src/components/checkbox/checkbox.hook.ts
|
|
153
|
+
import { useMemo } from "react";
|
|
154
|
+
import { getSafeThemeColor } from "@xaui/core";
|
|
155
|
+
function useSizeStyles(size, variant) {
|
|
156
|
+
const theme = useXUITheme();
|
|
157
|
+
const sizeStyles = useMemo(() => {
|
|
158
|
+
const sizes = {
|
|
159
|
+
xs: {
|
|
160
|
+
checkboxSize: 14,
|
|
161
|
+
fontSize: theme.fontSizes.xs,
|
|
162
|
+
iconSize: variant === "light" ? 10 : 8
|
|
163
|
+
},
|
|
164
|
+
sm: {
|
|
165
|
+
checkboxSize: 18,
|
|
166
|
+
fontSize: theme.fontSizes.sm,
|
|
167
|
+
iconSize: variant === "light" ? 14 : 12
|
|
168
|
+
},
|
|
169
|
+
md: {
|
|
170
|
+
checkboxSize: 22,
|
|
171
|
+
fontSize: theme.fontSizes.md,
|
|
172
|
+
iconSize: variant === "light" ? 18 : 14
|
|
173
|
+
},
|
|
174
|
+
lg: {
|
|
175
|
+
checkboxSize: 26,
|
|
176
|
+
fontSize: theme.fontSizes.lg,
|
|
177
|
+
iconSize: variant === "light" ? 22 : 16
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
return sizes[size];
|
|
181
|
+
}, [size, variant, theme]);
|
|
182
|
+
return sizeStyles;
|
|
183
|
+
}
|
|
184
|
+
function useRadiusStyles(radius) {
|
|
185
|
+
const theme = useXUITheme();
|
|
186
|
+
const radiusStyles = useMemo(() => {
|
|
187
|
+
const radii = {
|
|
188
|
+
none: theme.borderRadius.none,
|
|
189
|
+
sm: theme.borderRadius.sm,
|
|
190
|
+
md: theme.borderRadius.md,
|
|
191
|
+
lg: theme.borderRadius.lg,
|
|
192
|
+
full: theme.borderRadius.full
|
|
193
|
+
};
|
|
194
|
+
return { borderRadius: radii[radius] };
|
|
195
|
+
}, [radius, theme]);
|
|
196
|
+
return radiusStyles;
|
|
197
|
+
}
|
|
198
|
+
function useCheckmarkColors(themeColor, variant, isActive) {
|
|
199
|
+
const theme = useXUITheme();
|
|
200
|
+
const safeThemeColor = getSafeThemeColor(themeColor);
|
|
201
|
+
const colorScheme = theme.colors[safeThemeColor];
|
|
202
|
+
const checkmarkColors = useMemo(() => {
|
|
203
|
+
if (variant === "filled") {
|
|
204
|
+
return {
|
|
205
|
+
checked: colorScheme.foreground,
|
|
206
|
+
unchecked: void 0
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
if (isActive) {
|
|
210
|
+
return {
|
|
211
|
+
checked: colorScheme.main,
|
|
212
|
+
unchecked: void 0
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (themeColor !== "default") {
|
|
216
|
+
return {
|
|
217
|
+
checked: colorScheme.foreground,
|
|
218
|
+
unchecked: colorScheme.background
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
checked: theme.colors.foreground,
|
|
223
|
+
unchecked: theme.colors.background
|
|
224
|
+
};
|
|
225
|
+
}, [variant, colorScheme, isActive, themeColor, theme.colors]);
|
|
226
|
+
return checkmarkColors;
|
|
227
|
+
}
|
|
228
|
+
function useVariantStyles(themeColor, variant, isActive) {
|
|
229
|
+
const theme = useXUITheme();
|
|
230
|
+
const safeThemeColor = getSafeThemeColor(themeColor);
|
|
231
|
+
const colorScheme = theme.colors[safeThemeColor];
|
|
232
|
+
const variantStyles = useMemo(() => {
|
|
233
|
+
if (variant === "filled") {
|
|
234
|
+
return {
|
|
235
|
+
backgroundColor: "transparent",
|
|
236
|
+
borderWidth: isActive ? 0 : theme.borderWidth.md,
|
|
237
|
+
borderColor: isActive ? "transparent" : colorScheme.main
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
backgroundColor: "transparent",
|
|
242
|
+
borderWidth: 0,
|
|
243
|
+
borderColor: "transparent"
|
|
244
|
+
};
|
|
245
|
+
}, [variant, isActive, colorScheme, theme]);
|
|
246
|
+
return variantStyles;
|
|
247
|
+
}
|
|
248
|
+
function useContainerStyles(labelAlignment) {
|
|
249
|
+
const containerStyles = useMemo(() => {
|
|
250
|
+
const isJustified = labelAlignment === "justify-left" || labelAlignment === "justify-right";
|
|
251
|
+
return {
|
|
252
|
+
flexDirection: labelAlignment === "left" || labelAlignment === "justify-left" ? "row-reverse" : "row",
|
|
253
|
+
justifyContent: isJustified ? "space-between" : "flex-start"
|
|
254
|
+
};
|
|
255
|
+
}, [labelAlignment]);
|
|
256
|
+
return containerStyles;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// src/components/checkbox/checkbox.style.ts
|
|
260
|
+
import { StyleSheet } from "react-native";
|
|
261
|
+
var styles = StyleSheet.create({
|
|
262
|
+
container: {
|
|
263
|
+
flexDirection: "row",
|
|
264
|
+
alignItems: "center",
|
|
265
|
+
gap: 10
|
|
266
|
+
},
|
|
267
|
+
fullWidth: {
|
|
268
|
+
width: "100%"
|
|
269
|
+
},
|
|
270
|
+
checkbox: {
|
|
271
|
+
alignItems: "center",
|
|
272
|
+
justifyContent: "center",
|
|
273
|
+
overflow: "hidden",
|
|
274
|
+
position: "relative"
|
|
275
|
+
},
|
|
276
|
+
background: {
|
|
277
|
+
position: "absolute",
|
|
278
|
+
width: "100%",
|
|
279
|
+
height: "100%"
|
|
280
|
+
},
|
|
281
|
+
checkmarkContainer: {
|
|
282
|
+
alignItems: "center",
|
|
283
|
+
justifyContent: "center",
|
|
284
|
+
zIndex: 10
|
|
285
|
+
},
|
|
286
|
+
label: {
|
|
287
|
+
fontWeight: "400"
|
|
288
|
+
},
|
|
289
|
+
disabled: {
|
|
290
|
+
opacity: 0.5
|
|
291
|
+
},
|
|
292
|
+
disabledText: {
|
|
293
|
+
opacity: 0.7
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
// src/components/checkbox/checkbox.tsx
|
|
298
|
+
import { getSafeThemeColor as getSafeThemeColor2 } from "@xaui/core";
|
|
299
|
+
var Checkbox = ({
|
|
300
|
+
label,
|
|
301
|
+
labelAlignment = "right",
|
|
302
|
+
themeColor = "default",
|
|
303
|
+
variant = "filled",
|
|
304
|
+
size = "md",
|
|
305
|
+
radius = "sm",
|
|
306
|
+
fullWidth = false,
|
|
307
|
+
isChecked: isCheckedProp,
|
|
308
|
+
isIndeterminate = false,
|
|
309
|
+
isDisabled = false,
|
|
310
|
+
labelStyle,
|
|
311
|
+
style,
|
|
312
|
+
onValueChange
|
|
313
|
+
}) => {
|
|
314
|
+
const theme = useXUITheme();
|
|
315
|
+
const colorScheme = theme.colors[getSafeThemeColor2(themeColor)];
|
|
316
|
+
const isControlled = typeof isCheckedProp === "boolean";
|
|
317
|
+
const [internalChecked, setInternalChecked] = useState(isCheckedProp ?? false);
|
|
318
|
+
const isChecked = isControlled ? isCheckedProp : internalChecked;
|
|
319
|
+
const scale = useRef2(new Animated3.Value(1)).current;
|
|
320
|
+
const backgroundScale = useRef2(new Animated3.Value(0.5)).current;
|
|
321
|
+
const backgroundOpacity = useRef2(new Animated3.Value(0)).current;
|
|
322
|
+
const isActive = isChecked || isIndeterminate;
|
|
323
|
+
const sizeStyles = useSizeStyles(size, variant);
|
|
324
|
+
const radiusStyles = useRadiusStyles(radius);
|
|
325
|
+
const checkmarkColors = useCheckmarkColors(themeColor, variant, isActive);
|
|
326
|
+
const variantStyles = useVariantStyles(themeColor, variant, isActive);
|
|
327
|
+
const containerStyles = useContainerStyles(labelAlignment);
|
|
328
|
+
useEffect2(() => {
|
|
329
|
+
if (variant !== "filled") return;
|
|
330
|
+
if (isActive) {
|
|
331
|
+
runBackgroundInAnimation(backgroundScale, backgroundOpacity);
|
|
332
|
+
} else {
|
|
333
|
+
runBackgroundOutAnimation(backgroundScale, backgroundOpacity);
|
|
334
|
+
}
|
|
335
|
+
}, [isActive, variant, backgroundScale, backgroundOpacity]);
|
|
336
|
+
const handlePress = () => {
|
|
337
|
+
if (!isDisabled) {
|
|
338
|
+
const nextValue = isIndeterminate ? true : !isChecked;
|
|
339
|
+
onValueChange?.(nextValue);
|
|
340
|
+
if (!isControlled) {
|
|
341
|
+
setInternalChecked(nextValue);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
const handlePressIn = () => {
|
|
346
|
+
if (!isDisabled) {
|
|
347
|
+
runPressInAnimation(scale);
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
const handlePressOut = () => {
|
|
351
|
+
if (!isDisabled) {
|
|
352
|
+
runPressOutAnimation(scale);
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
const accessibilityChecked = isIndeterminate ? "mixed" : isChecked;
|
|
356
|
+
return /* @__PURE__ */ React2.createElement(
|
|
357
|
+
Pressable,
|
|
358
|
+
{
|
|
359
|
+
onPress: handlePress,
|
|
360
|
+
onPressIn: handlePressIn,
|
|
361
|
+
onPressOut: handlePressOut,
|
|
362
|
+
disabled: isDisabled,
|
|
363
|
+
accessible: true,
|
|
364
|
+
accessibilityRole: "checkbox",
|
|
365
|
+
accessibilityLabel: label,
|
|
366
|
+
accessibilityState: {
|
|
367
|
+
disabled: isDisabled,
|
|
368
|
+
checked: accessibilityChecked
|
|
369
|
+
},
|
|
370
|
+
style: [
|
|
371
|
+
styles.container,
|
|
372
|
+
containerStyles,
|
|
373
|
+
fullWidth && styles.fullWidth,
|
|
374
|
+
isDisabled && styles.disabled,
|
|
375
|
+
style
|
|
376
|
+
]
|
|
377
|
+
},
|
|
378
|
+
/* @__PURE__ */ React2.createElement(
|
|
379
|
+
Animated3.View,
|
|
380
|
+
{
|
|
381
|
+
style: [
|
|
382
|
+
styles.checkbox,
|
|
383
|
+
{
|
|
384
|
+
width: sizeStyles.checkboxSize,
|
|
385
|
+
height: sizeStyles.checkboxSize,
|
|
386
|
+
...radiusStyles,
|
|
387
|
+
...variantStyles
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
transform: [{ scale }]
|
|
391
|
+
}
|
|
392
|
+
]
|
|
393
|
+
},
|
|
394
|
+
variant === "filled" && /* @__PURE__ */ React2.createElement(
|
|
395
|
+
Animated3.View,
|
|
396
|
+
{
|
|
397
|
+
style: [
|
|
398
|
+
styles.background,
|
|
399
|
+
radiusStyles,
|
|
400
|
+
{
|
|
401
|
+
backgroundColor: colorScheme.main,
|
|
402
|
+
transform: [{ scale: backgroundScale }],
|
|
403
|
+
opacity: backgroundOpacity
|
|
404
|
+
}
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
),
|
|
408
|
+
/* @__PURE__ */ React2.createElement(View, { style: styles.checkmarkContainer }, /* @__PURE__ */ React2.createElement(
|
|
409
|
+
CheckboxIcon,
|
|
410
|
+
{
|
|
411
|
+
isChecked: isActive,
|
|
412
|
+
isIndeterminate,
|
|
413
|
+
color: checkmarkColors.checked,
|
|
414
|
+
size: sizeStyles.iconSize,
|
|
415
|
+
placeholderColor: checkmarkColors.unchecked,
|
|
416
|
+
variant
|
|
417
|
+
}
|
|
418
|
+
))
|
|
419
|
+
),
|
|
420
|
+
label && /* @__PURE__ */ React2.createElement(
|
|
421
|
+
Text,
|
|
422
|
+
{
|
|
423
|
+
style: [
|
|
424
|
+
styles.label,
|
|
425
|
+
{ fontSize: sizeStyles.fontSize, color: theme.colors.foreground },
|
|
426
|
+
isDisabled && styles.disabledText,
|
|
427
|
+
labelStyle
|
|
428
|
+
]
|
|
429
|
+
},
|
|
430
|
+
label
|
|
431
|
+
)
|
|
432
|
+
);
|
|
433
|
+
};
|
|
434
|
+
export {
|
|
435
|
+
Checkbox
|
|
436
|
+
};
|
|
@@ -34,7 +34,7 @@ function XUIProvider({
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
// src/core/theme-hooks.ts
|
|
37
|
-
import { useContext } from "react";
|
|
37
|
+
import { useContext, useMemo } from "react";
|
|
38
38
|
import { useColorScheme as useColorScheme2 } from "react-native";
|
|
39
39
|
function useColorMode() {
|
|
40
40
|
const nativeScheme = useColorScheme2();
|
|
@@ -51,10 +51,25 @@ function useXUIColors() {
|
|
|
51
51
|
const theme = useXUITheme();
|
|
52
52
|
return theme.colors;
|
|
53
53
|
}
|
|
54
|
+
function useBorderRadiusStyles(radius) {
|
|
55
|
+
const theme = useXUITheme();
|
|
56
|
+
const borderRadius = useMemo(() => {
|
|
57
|
+
const radiusMap = {
|
|
58
|
+
none: theme.borderRadius.none,
|
|
59
|
+
sm: theme.borderRadius.sm,
|
|
60
|
+
md: theme.borderRadius.md,
|
|
61
|
+
lg: theme.borderRadius.lg,
|
|
62
|
+
full: theme.borderRadius.full
|
|
63
|
+
};
|
|
64
|
+
return { borderRadius: radiusMap[radius] };
|
|
65
|
+
}, [radius, theme]);
|
|
66
|
+
return borderRadius;
|
|
67
|
+
}
|
|
54
68
|
|
|
55
69
|
export {
|
|
56
70
|
XUIProvider,
|
|
57
71
|
useColorMode,
|
|
58
72
|
useXUITheme,
|
|
59
|
-
useXUIColors
|
|
73
|
+
useXUIColors,
|
|
74
|
+
useBorderRadiusStyles
|
|
60
75
|
};
|
package/dist/core/index.js
CHANGED
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/indicator/index.js
CHANGED
package/dist/progress/index.d.ts
CHANGED
package/dist/progress/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xaui/native",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"description": "Flutter-inspired React Native UI components with native animations powered by React Native Reanimated",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
7
7
|
"mobile",
|
|
8
|
+
"native",
|
|
8
9
|
"ui",
|
|
9
10
|
"components",
|
|
11
|
+
"flutter",
|
|
12
|
+
"reanimated",
|
|
13
|
+
"animations",
|
|
10
14
|
"xaui"
|
|
11
15
|
],
|
|
12
16
|
"type": "module",
|
|
@@ -28,6 +32,11 @@
|
|
|
28
32
|
"import": "./dist/button/index.js",
|
|
29
33
|
"require": "./dist/button/index.js"
|
|
30
34
|
},
|
|
35
|
+
"./checkbox": {
|
|
36
|
+
"types": "./dist/checkbox/index.d.ts",
|
|
37
|
+
"import": "./dist/checkbox/index.js",
|
|
38
|
+
"require": "./dist/checkbox/index.js"
|
|
39
|
+
},
|
|
31
40
|
"./progress": {
|
|
32
41
|
"types": "./dist/progress/index.d.ts",
|
|
33
42
|
"import": "./dist/progress/index.js",
|
|
@@ -46,17 +55,10 @@
|
|
|
46
55
|
"repository": {
|
|
47
56
|
"type": "git",
|
|
48
57
|
"url": "git+https://github.com/rygrams/xaui.git",
|
|
49
|
-
"directory": "packages/
|
|
50
|
-
},
|
|
51
|
-
"scripts": {
|
|
52
|
-
"build": "tsup --config tsup.config.ts",
|
|
53
|
-
"dev": "tsup --config tsup.config.ts --watch",
|
|
54
|
-
"test": "vitest",
|
|
55
|
-
"lint": "eslint src/",
|
|
56
|
-
"type-check": "tsc --noEmit"
|
|
58
|
+
"directory": "packages/native"
|
|
57
59
|
},
|
|
58
60
|
"dependencies": {
|
|
59
|
-
"@xaui/core": "
|
|
61
|
+
"@xaui/core": "0.1.6"
|
|
60
62
|
},
|
|
61
63
|
"peerDependencies": {
|
|
62
64
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -76,5 +78,12 @@
|
|
|
76
78
|
},
|
|
77
79
|
"publishConfig": {
|
|
78
80
|
"access": "public"
|
|
81
|
+
},
|
|
82
|
+
"scripts": {
|
|
83
|
+
"build": "tsup --config tsup.config.ts",
|
|
84
|
+
"dev": "tsup --config tsup.config.ts --watch",
|
|
85
|
+
"test": "vitest",
|
|
86
|
+
"lint": "eslint src/",
|
|
87
|
+
"type-check": "tsc --noEmit"
|
|
79
88
|
}
|
|
80
|
-
}
|
|
89
|
+
}
|
package/dist/theme-qvIXI4kF.d.ts
DELETED