react-native-atomic-ui 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +14 -0
  2. package/dist/advanced/date-picker/index.js.map +1 -1
  3. package/dist/advanced/date-picker/index.mjs.map +1 -1
  4. package/dist/advanced/file-picker/index.js.map +1 -1
  5. package/dist/advanced/file-picker/index.mjs.map +1 -1
  6. package/dist/advanced/picker/index.js.map +1 -1
  7. package/dist/advanced/picker/index.mjs.map +1 -1
  8. package/dist/advanced/rich-text/index.js.map +1 -1
  9. package/dist/advanced/rich-text/index.mjs.map +1 -1
  10. package/dist/{chunk-IOIXIQ2F.mjs → chunk-56IADPYY.mjs} +2 -5
  11. package/dist/chunk-56IADPYY.mjs.map +7 -0
  12. package/dist/chunk-GSLM4BKO.mjs +789 -0
  13. package/dist/chunk-GSLM4BKO.mjs.map +7 -0
  14. package/dist/components/display/Badge.d.ts +7 -0
  15. package/dist/components/display/Badge.d.ts.map +1 -0
  16. package/dist/components/display/Badge.js +52 -0
  17. package/dist/components/display/Badge.js.map +1 -0
  18. package/dist/components/display/Divider.d.ts +7 -0
  19. package/dist/components/display/Divider.d.ts.map +1 -0
  20. package/dist/components/display/Divider.js +19 -0
  21. package/dist/components/display/Divider.js.map +1 -0
  22. package/dist/components/display/ProgressBar.d.ts +7 -0
  23. package/dist/components/display/ProgressBar.d.ts.map +1 -0
  24. package/dist/components/display/ProgressBar.js +27 -0
  25. package/dist/components/display/ProgressBar.js.map +1 -0
  26. package/dist/components/index.d.ts +8 -0
  27. package/dist/components/index.d.ts.map +1 -1
  28. package/dist/components/index.js +504 -35
  29. package/dist/components/index.js.map +4 -4
  30. package/dist/components/index.mjs +18 -2
  31. package/dist/components/inputs/Button.d.ts.map +1 -1
  32. package/dist/components/inputs/Button.js +1 -1
  33. package/dist/components/inputs/Button.js.map +1 -1
  34. package/dist/components/inputs/CheckBox.d.ts +7 -0
  35. package/dist/components/inputs/CheckBox.d.ts.map +1 -0
  36. package/dist/components/inputs/CheckBox.js +56 -0
  37. package/dist/components/inputs/CheckBox.js.map +1 -0
  38. package/dist/components/inputs/Input.d.ts +7 -0
  39. package/dist/components/inputs/Input.d.ts.map +1 -0
  40. package/dist/components/inputs/Input.js +44 -0
  41. package/dist/components/inputs/Input.js.map +1 -0
  42. package/dist/components/inputs/RadioButton.d.ts +7 -0
  43. package/dist/components/inputs/RadioButton.d.ts.map +1 -0
  44. package/dist/components/inputs/RadioButton.js +57 -0
  45. package/dist/components/inputs/RadioButton.js.map +1 -0
  46. package/dist/components/inputs/Switch.d.ts +7 -0
  47. package/dist/components/inputs/Switch.d.ts.map +1 -0
  48. package/dist/components/inputs/Switch.js +14 -0
  49. package/dist/components/inputs/Switch.js.map +1 -0
  50. package/dist/components/layouts/Box.d.ts +3 -3
  51. package/dist/components/layouts/Box.d.ts.map +1 -1
  52. package/dist/components/layouts/Box.js +23 -4
  53. package/dist/components/layouts/Box.js.map +1 -1
  54. package/dist/components/layouts/Collapsible.d.ts +7 -0
  55. package/dist/components/layouts/Collapsible.d.ts.map +1 -0
  56. package/dist/components/layouts/Collapsible.js +49 -0
  57. package/dist/components/layouts/Collapsible.js.map +1 -0
  58. package/dist/components/typography/Text.d.ts +1 -1
  59. package/dist/components/typography/Text.d.ts.map +1 -1
  60. package/dist/components/typography/Text.js +17 -17
  61. package/dist/components/typography/Text.js.map +1 -1
  62. package/dist/index.d.ts +3 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +505 -39
  65. package/dist/index.js.map +4 -4
  66. package/dist/index.mjs +18 -2
  67. package/dist/theme/index.d.ts +1 -1
  68. package/dist/theme/index.d.ts.map +1 -1
  69. package/dist/theme/index.js +1 -4
  70. package/dist/theme/index.js.map +2 -2
  71. package/dist/theme/index.mjs +1 -1
  72. package/dist/types/index.d.ts +64 -0
  73. package/dist/types/index.d.ts.map +1 -1
  74. package/package.json +4 -1
  75. package/dist/chunk-IOIXIQ2F.mjs.map +0 -7
  76. package/dist/chunk-NUUZYCND.mjs +0 -318
  77. package/dist/chunk-NUUZYCND.mjs.map +0 -7
@@ -0,0 +1,789 @@
1
+ import {
2
+ useTheme
3
+ } from "./chunk-56IADPYY.mjs";
4
+
5
+ // src/components/layouts/Box.tsx
6
+ import React from "react";
7
+ import { View } from "react-native";
8
+ function Box({
9
+ children,
10
+ flex,
11
+ flexDirection,
12
+ alignItems,
13
+ justifyContent,
14
+ flexWrap,
15
+ padding,
16
+ paddingHorizontal,
17
+ paddingVertical,
18
+ margin,
19
+ marginHorizontal,
20
+ marginVertical,
21
+ gap,
22
+ backgroundColor,
23
+ borderRadius,
24
+ width,
25
+ height,
26
+ style,
27
+ testID
28
+ }) {
29
+ const { theme } = useTheme();
30
+ const boxStyle = [
31
+ flex !== void 0 && { flex },
32
+ flexDirection && { flexDirection },
33
+ alignItems && { alignItems },
34
+ justifyContent && { justifyContent },
35
+ flexWrap && { flexWrap },
36
+ width !== void 0 && { width },
37
+ height !== void 0 && { height },
38
+ padding && { padding: theme.spacing[padding] },
39
+ paddingHorizontal && { paddingHorizontal: theme.spacing[paddingHorizontal] },
40
+ paddingVertical && { paddingVertical: theme.spacing[paddingVertical] },
41
+ margin && { margin: theme.spacing[margin] },
42
+ marginHorizontal && { marginHorizontal: theme.spacing[marginHorizontal] },
43
+ marginVertical && { marginVertical: theme.spacing[marginVertical] },
44
+ gap && { gap: theme.spacing[gap] },
45
+ backgroundColor && { backgroundColor },
46
+ borderRadius && { borderRadius: theme.borderRadius[borderRadius] },
47
+ style
48
+ ];
49
+ return /* @__PURE__ */ React.createElement(View, { style: boxStyle, testID }, children);
50
+ }
51
+ function Row({
52
+ children,
53
+ flex,
54
+ alignItems = "center",
55
+ justifyContent,
56
+ flexWrap,
57
+ padding,
58
+ paddingHorizontal,
59
+ paddingVertical,
60
+ margin,
61
+ marginHorizontal,
62
+ marginVertical,
63
+ gap,
64
+ backgroundColor,
65
+ borderRadius,
66
+ width,
67
+ height,
68
+ style,
69
+ testID
70
+ }) {
71
+ const { theme } = useTheme();
72
+ const rowStyle = [
73
+ { flexDirection: "row" },
74
+ flex !== void 0 && { flex },
75
+ alignItems && { alignItems },
76
+ justifyContent && { justifyContent },
77
+ flexWrap && { flexWrap },
78
+ width !== void 0 && { width },
79
+ height !== void 0 && { height },
80
+ padding && { padding: theme.spacing[padding] },
81
+ paddingHorizontal && { paddingHorizontal: theme.spacing[paddingHorizontal] },
82
+ paddingVertical && { paddingVertical: theme.spacing[paddingVertical] },
83
+ margin && { margin: theme.spacing[margin] },
84
+ marginHorizontal && { marginHorizontal: theme.spacing[marginHorizontal] },
85
+ marginVertical && { marginVertical: theme.spacing[marginVertical] },
86
+ gap && { gap: theme.spacing[gap] },
87
+ backgroundColor && { backgroundColor },
88
+ borderRadius && { borderRadius: theme.borderRadius[borderRadius] },
89
+ style
90
+ ];
91
+ return /* @__PURE__ */ React.createElement(View, { style: rowStyle, testID }, children);
92
+ }
93
+ function Column({
94
+ children,
95
+ flex,
96
+ alignItems,
97
+ justifyContent,
98
+ flexWrap,
99
+ padding,
100
+ paddingHorizontal,
101
+ paddingVertical,
102
+ margin,
103
+ marginHorizontal,
104
+ marginVertical,
105
+ gap,
106
+ backgroundColor,
107
+ borderRadius,
108
+ width,
109
+ height,
110
+ style,
111
+ testID
112
+ }) {
113
+ const { theme } = useTheme();
114
+ const columnStyle = [
115
+ { flexDirection: "column" },
116
+ flex !== void 0 && { flex },
117
+ alignItems && { alignItems },
118
+ justifyContent && { justifyContent },
119
+ flexWrap && { flexWrap },
120
+ width !== void 0 && { width },
121
+ height !== void 0 && { height },
122
+ padding && { padding: theme.spacing[padding] },
123
+ paddingHorizontal && { paddingHorizontal: theme.spacing[paddingHorizontal] },
124
+ paddingVertical && { paddingVertical: theme.spacing[paddingVertical] },
125
+ margin && { margin: theme.spacing[margin] },
126
+ marginHorizontal && { marginHorizontal: theme.spacing[marginHorizontal] },
127
+ marginVertical && { marginVertical: theme.spacing[marginVertical] },
128
+ gap && { gap: theme.spacing[gap] },
129
+ backgroundColor && { backgroundColor },
130
+ borderRadius && { borderRadius: theme.borderRadius[borderRadius] },
131
+ style
132
+ ];
133
+ return /* @__PURE__ */ React.createElement(View, { style: columnStyle, testID }, children);
134
+ }
135
+
136
+ // src/components/layouts/Collapsible.tsx
137
+ import React2, { useState } from "react";
138
+ import {
139
+ TouchableOpacity,
140
+ View as View2,
141
+ Text as RNText,
142
+ LayoutAnimation,
143
+ Platform,
144
+ UIManager
145
+ } from "react-native";
146
+ if (Platform.OS === "android" && UIManager.setLayoutAnimationEnabledExperimental) {
147
+ UIManager.setLayoutAnimationEnabledExperimental(true);
148
+ }
149
+ function Collapsible({
150
+ title,
151
+ children,
152
+ initiallyExpanded = false,
153
+ style,
154
+ testID
155
+ }) {
156
+ const { theme } = useTheme();
157
+ const [expanded, setExpanded] = useState(initiallyExpanded);
158
+ const toggleExpanded = () => {
159
+ LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
160
+ setExpanded(!expanded);
161
+ };
162
+ return /* @__PURE__ */ React2.createElement(
163
+ View2,
164
+ {
165
+ style: [
166
+ {
167
+ borderWidth: 1,
168
+ borderColor: theme.colors.border,
169
+ borderRadius: theme.borderRadius.md,
170
+ overflow: "hidden"
171
+ },
172
+ style
173
+ ],
174
+ testID
175
+ },
176
+ /* @__PURE__ */ React2.createElement(
177
+ TouchableOpacity,
178
+ {
179
+ activeOpacity: 0.7,
180
+ onPress: toggleExpanded,
181
+ style: {
182
+ flexDirection: "row",
183
+ justifyContent: "space-between",
184
+ alignItems: "center",
185
+ padding: theme.spacing.md,
186
+ backgroundColor: theme.colors.surface
187
+ }
188
+ },
189
+ /* @__PURE__ */ React2.createElement(RNText, { style: [theme.typography.body1, { color: theme.colors.text, fontWeight: "600" }] }, title),
190
+ /* @__PURE__ */ React2.createElement(RNText, { style: [theme.typography.h3, { color: theme.colors.textSecondary }] }, expanded ? "\u2212" : "+")
191
+ ),
192
+ expanded && /* @__PURE__ */ React2.createElement(
193
+ View2,
194
+ {
195
+ style: {
196
+ padding: theme.spacing.md,
197
+ backgroundColor: theme.colors.background
198
+ }
199
+ },
200
+ children
201
+ )
202
+ );
203
+ }
204
+
205
+ // src/components/typography/Text.tsx
206
+ import React3 from "react";
207
+ import { Text as RNText2 } from "react-native";
208
+ function Text({ children, variant = "body1", color, textAlign, style, testID }) {
209
+ const { theme } = useTheme();
210
+ const textStyle = [
211
+ theme.typography[variant],
212
+ { color: color || theme.colors.text },
213
+ textAlign && { textAlign },
214
+ style
215
+ ];
216
+ return /* @__PURE__ */ React3.createElement(RNText2, { style: textStyle, testID }, children);
217
+ }
218
+ function H1(props) {
219
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h1" });
220
+ }
221
+ function H2(props) {
222
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h2" });
223
+ }
224
+ function H3(props) {
225
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h3" });
226
+ }
227
+ function H4(props) {
228
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h4" });
229
+ }
230
+ function H5(props) {
231
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h5" });
232
+ }
233
+ function H6(props) {
234
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "h6" });
235
+ }
236
+ function Body1(props) {
237
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body1" });
238
+ }
239
+ function Body2(props) {
240
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body2" });
241
+ }
242
+ function Body3(props) {
243
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body3" });
244
+ }
245
+ function Body4(props) {
246
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body4" });
247
+ }
248
+ function Body5(props) {
249
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body5" });
250
+ }
251
+ function Body6(props) {
252
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "body6" });
253
+ }
254
+ function SubTitle1(props) {
255
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "subtitle1" });
256
+ }
257
+ function SubTitle2(props) {
258
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "subtitle2" });
259
+ }
260
+ function Caption(props) {
261
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "caption" });
262
+ }
263
+ function Overline(props) {
264
+ return /* @__PURE__ */ React3.createElement(Text, { ...props, variant: "overline" });
265
+ }
266
+
267
+ // src/components/inputs/Button.tsx
268
+ import React4 from "react";
269
+ import { TouchableOpacity as TouchableOpacity2, View as View3, StyleSheet, ActivityIndicator } from "react-native";
270
+ function Button({
271
+ label,
272
+ onPress,
273
+ variant = "primary",
274
+ size = "medium",
275
+ disabled = false,
276
+ loading = false,
277
+ icon,
278
+ style,
279
+ testID
280
+ }) {
281
+ const { theme } = useTheme();
282
+ const getVariantStyle = () => {
283
+ switch (variant) {
284
+ case "primary":
285
+ return {
286
+ backgroundColor: theme.colors.primary,
287
+ borderColor: theme.colors.primary
288
+ };
289
+ case "secondary":
290
+ return {
291
+ backgroundColor: theme.colors.secondary,
292
+ borderColor: theme.colors.secondary
293
+ };
294
+ case "danger":
295
+ return {
296
+ backgroundColor: theme.colors.error,
297
+ borderColor: theme.colors.error
298
+ };
299
+ case "ghost":
300
+ return {
301
+ backgroundColor: "transparent",
302
+ borderColor: theme.colors.primary,
303
+ borderWidth: 1
304
+ };
305
+ default:
306
+ return {
307
+ backgroundColor: theme.colors.primary,
308
+ borderColor: theme.colors.primary
309
+ };
310
+ }
311
+ };
312
+ const getSizeStyle = () => {
313
+ switch (size) {
314
+ case "small":
315
+ return {
316
+ paddingHorizontal: theme.spacing.md,
317
+ paddingVertical: theme.spacing.sm,
318
+ minHeight: 32
319
+ };
320
+ case "large":
321
+ return {
322
+ paddingHorizontal: theme.spacing.lg,
323
+ paddingVertical: theme.spacing.md,
324
+ minHeight: 56
325
+ };
326
+ case "medium":
327
+ default:
328
+ return {
329
+ paddingHorizontal: theme.spacing.lg,
330
+ paddingVertical: theme.spacing.md,
331
+ minHeight: 48
332
+ };
333
+ }
334
+ };
335
+ const buttonStyle = [
336
+ styles.button,
337
+ {
338
+ ...getVariantStyle(),
339
+ ...getSizeStyle(),
340
+ borderRadius: theme.borderRadius.md,
341
+ opacity: disabled || loading ? 0.5 : 1
342
+ },
343
+ style
344
+ ];
345
+ const textColor = variant === "ghost" ? theme.colors.primary : theme.colors.white;
346
+ return /* @__PURE__ */ React4.createElement(
347
+ TouchableOpacity2,
348
+ {
349
+ style: buttonStyle,
350
+ onPress,
351
+ disabled: disabled || loading,
352
+ testID
353
+ },
354
+ /* @__PURE__ */ React4.createElement(View3, { style: styles.content }, loading ? /* @__PURE__ */ React4.createElement(ActivityIndicator, { color: textColor, size: size === "small" ? "small" : "large" }) : /* @__PURE__ */ React4.createElement(React4.Fragment, null, icon && /* @__PURE__ */ React4.createElement(View3, { style: styles.icon }, icon), /* @__PURE__ */ React4.createElement(
355
+ Text,
356
+ {
357
+ variant: size === "small" ? "body3" : "body1",
358
+ color: textColor,
359
+ style: styles.label
360
+ },
361
+ label
362
+ )))
363
+ );
364
+ }
365
+ var styles = StyleSheet.create({
366
+ button: {
367
+ justifyContent: "center",
368
+ alignItems: "center",
369
+ flexDirection: "row"
370
+ },
371
+ content: {
372
+ flexDirection: "row",
373
+ alignItems: "center",
374
+ justifyContent: "center"
375
+ },
376
+ icon: {
377
+ marginRight: 8
378
+ },
379
+ label: {
380
+ fontWeight: "600"
381
+ }
382
+ });
383
+
384
+ // src/components/inputs/Input.tsx
385
+ import React5 from "react";
386
+ import { TextInput, View as View4, Text as RNText3, StyleSheet as StyleSheet2 } from "react-native";
387
+ function Input({
388
+ value,
389
+ onChangeText,
390
+ placeholder,
391
+ label,
392
+ error,
393
+ editable = true,
394
+ secureTextEntry = false,
395
+ keyboardType = "default",
396
+ multiline = false,
397
+ numberOfLines = 1,
398
+ style,
399
+ testID
400
+ }) {
401
+ const { theme } = useTheme();
402
+ return /* @__PURE__ */ React5.createElement(View4, { style: [styles2.container, style] }, label && /* @__PURE__ */ React5.createElement(
403
+ RNText3,
404
+ {
405
+ style: [
406
+ theme.typography.body2,
407
+ {
408
+ color: error ? theme.colors.error : theme.colors.textSecondary,
409
+ marginBottom: theme.spacing.xs
410
+ }
411
+ ]
412
+ },
413
+ label
414
+ ), /* @__PURE__ */ React5.createElement(
415
+ TextInput,
416
+ {
417
+ value,
418
+ onChangeText,
419
+ placeholder,
420
+ placeholderTextColor: theme.colors.textTertiary,
421
+ editable,
422
+ secureTextEntry,
423
+ keyboardType,
424
+ multiline,
425
+ numberOfLines: multiline ? numberOfLines : 1,
426
+ testID,
427
+ style: [
428
+ theme.typography.body1,
429
+ {
430
+ borderWidth: 1,
431
+ borderColor: error ? theme.colors.error : theme.colors.border,
432
+ borderRadius: theme.borderRadius.sm,
433
+ padding: theme.spacing.md,
434
+ color: theme.colors.text,
435
+ backgroundColor: editable ? theme.colors.surface : theme.colors.disabled,
436
+ minHeight: multiline ? numberOfLines * 24 + theme.spacing.md * 2 : void 0
437
+ }
438
+ ]
439
+ }
440
+ ), error && /* @__PURE__ */ React5.createElement(
441
+ RNText3,
442
+ {
443
+ style: [
444
+ theme.typography.caption,
445
+ { color: theme.colors.error, marginTop: theme.spacing.xs }
446
+ ]
447
+ },
448
+ error
449
+ ));
450
+ }
451
+ var styles2 = StyleSheet2.create({
452
+ container: {
453
+ width: "100%"
454
+ }
455
+ });
456
+
457
+ // src/components/inputs/CheckBox.tsx
458
+ import React6 from "react";
459
+ import { TouchableOpacity as TouchableOpacity3, View as View5, Text as RNText4, StyleSheet as StyleSheet3 } from "react-native";
460
+ function CheckBox({
461
+ value,
462
+ onValueChange,
463
+ label,
464
+ disabled = false,
465
+ style,
466
+ testID
467
+ }) {
468
+ const { theme } = useTheme();
469
+ return /* @__PURE__ */ React6.createElement(
470
+ TouchableOpacity3,
471
+ {
472
+ activeOpacity: 0.7,
473
+ onPress: () => !disabled && onValueChange(!value),
474
+ disabled,
475
+ style: [styles3.container, style],
476
+ testID
477
+ },
478
+ /* @__PURE__ */ React6.createElement(
479
+ View5,
480
+ {
481
+ style: [
482
+ styles3.checkbox,
483
+ {
484
+ borderWidth: 2,
485
+ borderColor: disabled ? theme.colors.disabled : value ? theme.colors.primary : theme.colors.border,
486
+ backgroundColor: disabled ? theme.colors.disabled : value ? theme.colors.primary : "transparent",
487
+ borderRadius: theme.borderRadius.xs,
488
+ width: 24,
489
+ height: 24
490
+ }
491
+ ]
492
+ },
493
+ value && /* @__PURE__ */ React6.createElement(RNText4, { style: [styles3.checkmark, { color: theme.colors.white }] }, "\u2713")
494
+ ),
495
+ label && /* @__PURE__ */ React6.createElement(
496
+ RNText4,
497
+ {
498
+ style: [
499
+ theme.typography.body1,
500
+ {
501
+ color: disabled ? theme.colors.textTertiary : theme.colors.text,
502
+ marginLeft: theme.spacing.sm
503
+ }
504
+ ]
505
+ },
506
+ label
507
+ )
508
+ );
509
+ }
510
+ var styles3 = StyleSheet3.create({
511
+ container: {
512
+ flexDirection: "row",
513
+ alignItems: "center"
514
+ },
515
+ checkbox: {
516
+ justifyContent: "center",
517
+ alignItems: "center"
518
+ },
519
+ checkmark: {
520
+ fontSize: 16,
521
+ fontWeight: "bold"
522
+ }
523
+ });
524
+
525
+ // src/components/inputs/RadioButton.tsx
526
+ import React7 from "react";
527
+ import { TouchableOpacity as TouchableOpacity4, View as View6, Text as RNText5, StyleSheet as StyleSheet4 } from "react-native";
528
+ function RadioButton({
529
+ value,
530
+ selected,
531
+ onSelect,
532
+ label,
533
+ disabled = false,
534
+ style,
535
+ testID
536
+ }) {
537
+ const { theme } = useTheme();
538
+ const isSelected = value === selected;
539
+ return /* @__PURE__ */ React7.createElement(
540
+ TouchableOpacity4,
541
+ {
542
+ activeOpacity: 0.7,
543
+ onPress: () => !disabled && onSelect(value),
544
+ disabled,
545
+ style: [styles4.container, style],
546
+ testID
547
+ },
548
+ /* @__PURE__ */ React7.createElement(
549
+ View6,
550
+ {
551
+ style: [
552
+ styles4.radio,
553
+ {
554
+ borderWidth: 2,
555
+ borderColor: disabled ? theme.colors.disabled : isSelected ? theme.colors.primary : theme.colors.border,
556
+ width: 24,
557
+ height: 24,
558
+ borderRadius: 12
559
+ }
560
+ ]
561
+ },
562
+ isSelected && /* @__PURE__ */ React7.createElement(
563
+ View6,
564
+ {
565
+ style: [
566
+ styles4.radioInner,
567
+ {
568
+ backgroundColor: disabled ? theme.colors.disabled : theme.colors.primary,
569
+ width: 12,
570
+ height: 12,
571
+ borderRadius: 6
572
+ }
573
+ ]
574
+ }
575
+ )
576
+ ),
577
+ label && /* @__PURE__ */ React7.createElement(
578
+ RNText5,
579
+ {
580
+ style: [
581
+ theme.typography.body1,
582
+ {
583
+ color: disabled ? theme.colors.textTertiary : theme.colors.text,
584
+ marginLeft: theme.spacing.sm
585
+ }
586
+ ]
587
+ },
588
+ label
589
+ )
590
+ );
591
+ }
592
+ var styles4 = StyleSheet4.create({
593
+ container: {
594
+ flexDirection: "row",
595
+ alignItems: "center"
596
+ },
597
+ radio: {
598
+ justifyContent: "center",
599
+ alignItems: "center"
600
+ },
601
+ radioInner: {}
602
+ });
603
+
604
+ // src/components/inputs/Switch.tsx
605
+ import React8 from "react";
606
+ import { Switch as RNSwitch } from "react-native";
607
+ function Switch({ value, onValueChange, disabled = false, style, testID }) {
608
+ const { theme } = useTheme();
609
+ return /* @__PURE__ */ React8.createElement(
610
+ RNSwitch,
611
+ {
612
+ value,
613
+ onValueChange,
614
+ disabled,
615
+ trackColor: {
616
+ false: theme.colors.border,
617
+ true: theme.colors.primary
618
+ },
619
+ thumbColor: theme.colors.white,
620
+ ios_backgroundColor: theme.colors.border,
621
+ style,
622
+ testID
623
+ }
624
+ );
625
+ }
626
+
627
+ // src/components/display/ProgressBar.tsx
628
+ import React9 from "react";
629
+ import { View as View7 } from "react-native";
630
+ function ProgressBar({
631
+ progress,
632
+ height = 8,
633
+ color,
634
+ backgroundColor,
635
+ borderRadius = "full",
636
+ style,
637
+ testID
638
+ }) {
639
+ const { theme } = useTheme();
640
+ const clampedProgress = Math.max(0, Math.min(1, progress));
641
+ return /* @__PURE__ */ React9.createElement(
642
+ View7,
643
+ {
644
+ style: [
645
+ {
646
+ height,
647
+ backgroundColor: backgroundColor || theme.colors.border,
648
+ borderRadius: theme.borderRadius[borderRadius],
649
+ overflow: "hidden"
650
+ },
651
+ style
652
+ ],
653
+ testID
654
+ },
655
+ /* @__PURE__ */ React9.createElement(
656
+ View7,
657
+ {
658
+ style: {
659
+ height: "100%",
660
+ width: `${clampedProgress * 100}%`,
661
+ backgroundColor: color || theme.colors.primary
662
+ }
663
+ }
664
+ )
665
+ );
666
+ }
667
+
668
+ // src/components/display/Badge.tsx
669
+ import React10 from "react";
670
+ import { View as View8, Text as RNText6 } from "react-native";
671
+ function Badge({
672
+ children,
673
+ variant = "primary",
674
+ size = "medium",
675
+ style,
676
+ testID
677
+ }) {
678
+ const { theme } = useTheme();
679
+ const variantColors = {
680
+ primary: theme.colors.primary,
681
+ secondary: theme.colors.secondary,
682
+ success: theme.colors.success,
683
+ error: theme.colors.error,
684
+ warning: theme.colors.warning,
685
+ info: theme.colors.info
686
+ };
687
+ const sizeStyles = {
688
+ small: {
689
+ paddingHorizontal: theme.spacing.xs,
690
+ paddingVertical: theme.spacing.xs / 2,
691
+ fontSize: 10
692
+ },
693
+ medium: {
694
+ paddingHorizontal: theme.spacing.sm,
695
+ paddingVertical: theme.spacing.xs,
696
+ fontSize: 12
697
+ },
698
+ large: {
699
+ paddingHorizontal: theme.spacing.md,
700
+ paddingVertical: theme.spacing.sm,
701
+ fontSize: 14
702
+ }
703
+ };
704
+ return /* @__PURE__ */ React10.createElement(
705
+ View8,
706
+ {
707
+ style: [
708
+ {
709
+ backgroundColor: variantColors[variant],
710
+ borderRadius: theme.borderRadius.full,
711
+ alignSelf: "flex-start",
712
+ ...sizeStyles[size]
713
+ },
714
+ style
715
+ ],
716
+ testID
717
+ },
718
+ /* @__PURE__ */ React10.createElement(
719
+ RNText6,
720
+ {
721
+ style: {
722
+ color: theme.colors.white,
723
+ fontSize: sizeStyles[size].fontSize,
724
+ fontWeight: "600"
725
+ }
726
+ },
727
+ children
728
+ )
729
+ );
730
+ }
731
+
732
+ // src/components/display/Divider.tsx
733
+ import React11 from "react";
734
+ import { View as View9 } from "react-native";
735
+ function Divider({
736
+ orientation = "horizontal",
737
+ thickness = 1,
738
+ color,
739
+ style,
740
+ testID
741
+ }) {
742
+ const { theme } = useTheme();
743
+ return /* @__PURE__ */ React11.createElement(
744
+ View9,
745
+ {
746
+ style: [
747
+ {
748
+ backgroundColor: color || theme.colors.border,
749
+ ...orientation === "horizontal" ? { height: thickness, width: "100%" } : { width: thickness, height: "100%" }
750
+ },
751
+ style
752
+ ],
753
+ testID
754
+ }
755
+ );
756
+ }
757
+
758
+ export {
759
+ Box,
760
+ Row,
761
+ Column,
762
+ Collapsible,
763
+ Text,
764
+ H1,
765
+ H2,
766
+ H3,
767
+ H4,
768
+ H5,
769
+ H6,
770
+ Body1,
771
+ Body2,
772
+ Body3,
773
+ Body4,
774
+ Body5,
775
+ Body6,
776
+ SubTitle1,
777
+ SubTitle2,
778
+ Caption,
779
+ Overline,
780
+ Button,
781
+ Input,
782
+ CheckBox,
783
+ RadioButton,
784
+ Switch,
785
+ ProgressBar,
786
+ Badge,
787
+ Divider
788
+ };
789
+ //# sourceMappingURL=chunk-GSLM4BKO.mjs.map