@almadar/mobile 1.1.0 → 1.2.1
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/{chunk-S2IT7WZT.js → chunk-5JVEVV74.js} +1 -1
- package/dist/{chunk-DY52O4T3.js → chunk-5U5Z65ZO.js} +46 -83
- package/dist/chunk-5U5Z65ZO.js.map +1 -0
- package/dist/chunk-A56SRZKI.js +59 -0
- package/dist/chunk-A56SRZKI.js.map +1 -0
- package/dist/{chunk-DMLYJFYQ.js → chunk-BFRVXKSP.js} +594 -88
- package/dist/chunk-BFRVXKSP.js.map +1 -0
- package/dist/{chunk-YMJZLYLV.js → chunk-ETD72PHO.js} +1991 -466
- package/dist/chunk-ETD72PHO.js.map +1 -0
- package/dist/{chunk-LFHVNHVA.js → chunk-GMR5FKKB.js} +3 -83
- package/dist/chunk-GMR5FKKB.js.map +1 -0
- package/dist/chunk-K2JGK2QD.js +17 -0
- package/dist/chunk-K2JGK2QD.js.map +1 -0
- package/dist/chunk-MLTSQPVN.js +337 -0
- package/dist/chunk-MLTSQPVN.js.map +1 -0
- package/dist/{chunk-T77JPOTP.js → chunk-PBO6ZN2M.js} +1206 -1269
- package/dist/chunk-PBO6ZN2M.js.map +1 -0
- package/dist/{chunk-7C5JCLLY.js → chunk-QUFLYKWA.js} +125 -45
- package/dist/chunk-QUFLYKWA.js.map +1 -0
- package/dist/chunk-TRYFJDL3.js +7 -0
- package/dist/chunk-TRYFJDL3.js.map +1 -0
- package/dist/components/atoms/AnimatedCounter.d.ts +15 -0
- package/dist/components/atoms/AnimatedCounter.d.ts.map +1 -0
- package/dist/components/atoms/DayCell.d.ts +18 -0
- package/dist/components/atoms/DayCell.d.ts.map +1 -0
- package/dist/components/atoms/InfiniteScrollSentinel.d.ts +14 -0
- package/dist/components/atoms/InfiniteScrollSentinel.d.ts.map +1 -0
- package/dist/components/atoms/RangeSlider.d.ts +20 -0
- package/dist/components/atoms/RangeSlider.d.ts.map +1 -0
- package/dist/components/atoms/StatusDot.d.ts +16 -0
- package/dist/components/atoms/StatusDot.d.ts.map +1 -0
- package/dist/components/atoms/TextHighlight.d.ts +17 -0
- package/dist/components/atoms/TextHighlight.d.ts.map +1 -0
- package/dist/components/atoms/ThemeToggle.d.ts +13 -0
- package/dist/components/atoms/ThemeToggle.d.ts.map +1 -0
- package/dist/components/atoms/TrendIndicator.d.ts +16 -0
- package/dist/components/atoms/TrendIndicator.d.ts.map +1 -0
- package/dist/components/atoms/TypewriterText.d.ts +16 -0
- package/dist/components/atoms/TypewriterText.d.ts.map +1 -0
- package/dist/components/atoms/index.d.ts +18 -0
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/atoms/index.js +30 -10
- package/dist/components/index.js +59 -18
- package/dist/components/molecules/Accordion.d.ts +20 -0
- package/dist/components/molecules/Accordion.d.ts.map +1 -0
- package/dist/components/molecules/CalendarGrid.d.ts +22 -0
- package/dist/components/molecules/CalendarGrid.d.ts.map +1 -0
- package/dist/components/molecules/Carousel.d.ts +17 -0
- package/dist/components/molecules/Carousel.d.ts.map +1 -0
- package/dist/components/molecules/DataGrid.d.ts +43 -0
- package/dist/components/molecules/DataGrid.d.ts.map +1 -0
- package/dist/components/molecules/DataList.d.ts +43 -0
- package/dist/components/molecules/DataList.d.ts.map +1 -0
- package/dist/components/molecules/FlipCard.d.ts +16 -0
- package/dist/components/molecules/FlipCard.d.ts.map +1 -0
- package/dist/components/molecules/Lightbox.d.ts +19 -0
- package/dist/components/molecules/Lightbox.d.ts.map +1 -0
- package/dist/components/molecules/NumberStepper.d.ts +19 -0
- package/dist/components/molecules/NumberStepper.d.ts.map +1 -0
- package/dist/components/molecules/PullToRefresh.d.ts +14 -0
- package/dist/components/molecules/PullToRefresh.d.ts.map +1 -0
- package/dist/components/molecules/SortableList.d.ts +17 -0
- package/dist/components/molecules/SortableList.d.ts.map +1 -0
- package/dist/components/molecules/StarRating.d.ts +19 -0
- package/dist/components/molecules/StarRating.d.ts.map +1 -0
- package/dist/components/molecules/SwipeableRow.d.ts +20 -0
- package/dist/components/molecules/SwipeableRow.d.ts.map +1 -0
- package/dist/components/molecules/index.d.ts +24 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/molecules/index.js +30 -5
- package/dist/components/organisms/FormSection.d.ts +7 -0
- package/dist/components/organisms/FormSection.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +0 -4
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/organisms/index.js +4 -8
- package/dist/index.js +72 -26
- package/dist/index.js.map +1 -1
- package/dist/lib/getNestedValue.d.ts +5 -0
- package/dist/lib/getNestedValue.d.ts.map +1 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -2
- package/dist/providers/ThemeProvider.d.ts +7 -0
- package/dist/providers/ThemeProvider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +2 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +8 -4
- package/package.json +30 -29
- package/dist/chunk-6RVITGGH.js +0 -167
- package/dist/chunk-6RVITGGH.js.map +0 -1
- package/dist/chunk-7C5JCLLY.js.map +0 -1
- package/dist/chunk-DMLYJFYQ.js.map +0 -1
- package/dist/chunk-DY52O4T3.js.map +0 -1
- package/dist/chunk-LFHVNHVA.js.map +0 -1
- package/dist/chunk-T77JPOTP.js.map +0 -1
- package/dist/chunk-VLUJ7BXN.js +0 -36
- package/dist/chunk-VLUJ7BXN.js.map +0 -1
- package/dist/chunk-YMJZLYLV.js.map +0 -1
- package/dist/components/organisms/EntityCard.d.ts +0 -11
- package/dist/components/organisms/EntityCard.d.ts.map +0 -1
- package/dist/components/organisms/EntityList.d.ts +0 -17
- package/dist/components/organisms/EntityList.d.ts.map +0 -1
- /package/dist/{chunk-S2IT7WZT.js.map → chunk-5JVEVV74.js.map} +0 -0
|
@@ -800,9 +800,52 @@ var styles9 = StyleSheet9.create({
|
|
|
800
800
|
});
|
|
801
801
|
Badge.displayName = "Badge";
|
|
802
802
|
|
|
803
|
-
// src/components/atoms/
|
|
803
|
+
// src/components/atoms/Icon.tsx
|
|
804
804
|
import React10 from "react";
|
|
805
|
-
import { View as View6,
|
|
805
|
+
import { View as View6, Text as Text6, StyleSheet as StyleSheet10 } from "react-native";
|
|
806
|
+
var iconMap = {
|
|
807
|
+
home: "\u{1F3E0}",
|
|
808
|
+
user: "\u{1F464}",
|
|
809
|
+
settings: "\u2699\uFE0F",
|
|
810
|
+
"arrow-right": "\u2192",
|
|
811
|
+
"arrow-left": "\u2190",
|
|
812
|
+
check: "\u2713",
|
|
813
|
+
x: "\u2715",
|
|
814
|
+
plus: "+",
|
|
815
|
+
minus: "\u2212",
|
|
816
|
+
search: "\u{1F50D}",
|
|
817
|
+
menu: "\u2630",
|
|
818
|
+
"more-vertical": "\u22EE",
|
|
819
|
+
"chevron-right": "\u203A",
|
|
820
|
+
"chevron-left": "\u2039",
|
|
821
|
+
"chevron-down": "\u2304",
|
|
822
|
+
"chevron-up": "\u2303"
|
|
823
|
+
};
|
|
824
|
+
var Icon = ({
|
|
825
|
+
name,
|
|
826
|
+
size = 24,
|
|
827
|
+
color = "#374151",
|
|
828
|
+
style
|
|
829
|
+
}) => {
|
|
830
|
+
return /* @__PURE__ */ React10.createElement(View6, { style: [styles10.container, { width: size, height: size }, style] }, /* @__PURE__ */ React10.createElement(Text6, { style: [
|
|
831
|
+
styles10.icon,
|
|
832
|
+
{ fontSize: size * 0.7, color, lineHeight: size }
|
|
833
|
+
] }, iconMap[name] || "?"));
|
|
834
|
+
};
|
|
835
|
+
var styles10 = StyleSheet10.create({
|
|
836
|
+
container: {
|
|
837
|
+
alignItems: "center",
|
|
838
|
+
justifyContent: "center"
|
|
839
|
+
},
|
|
840
|
+
icon: {
|
|
841
|
+
textAlign: "center"
|
|
842
|
+
}
|
|
843
|
+
});
|
|
844
|
+
Icon.displayName = "Icon";
|
|
845
|
+
|
|
846
|
+
// src/components/atoms/ProgressBar.tsx
|
|
847
|
+
import React11 from "react";
|
|
848
|
+
import { View as View7, StyleSheet as StyleSheet11, Text as Text7 } from "react-native";
|
|
806
849
|
var ProgressBar = ({
|
|
807
850
|
progress,
|
|
808
851
|
showLabel = false,
|
|
@@ -816,10 +859,10 @@ var ProgressBar = ({
|
|
|
816
859
|
const theme = useTheme();
|
|
817
860
|
const clampedProgress = Math.max(0, Math.min(100, progress));
|
|
818
861
|
if (isLoading) {
|
|
819
|
-
return /* @__PURE__ */
|
|
862
|
+
return /* @__PURE__ */ React11.createElement(View7, { style: [styles11.container, style] }, /* @__PURE__ */ React11.createElement(LoadingState, { message: "Loading..." }));
|
|
820
863
|
}
|
|
821
864
|
if (error) {
|
|
822
|
-
return /* @__PURE__ */
|
|
865
|
+
return /* @__PURE__ */ React11.createElement(View7, { style: [styles11.container, style] }, /* @__PURE__ */ React11.createElement(ErrorState, { message: error.message }));
|
|
823
866
|
}
|
|
824
867
|
const heightMap = {
|
|
825
868
|
sm: 4,
|
|
@@ -827,11 +870,11 @@ var ProgressBar = ({
|
|
|
827
870
|
lg: 12
|
|
828
871
|
};
|
|
829
872
|
const height = heightMap[size];
|
|
830
|
-
return /* @__PURE__ */
|
|
831
|
-
|
|
873
|
+
return /* @__PURE__ */ React11.createElement(View7, { style: [styles11.container, style] }, /* @__PURE__ */ React11.createElement(
|
|
874
|
+
View7,
|
|
832
875
|
{
|
|
833
876
|
style: [
|
|
834
|
-
|
|
877
|
+
styles11.track,
|
|
835
878
|
{
|
|
836
879
|
height,
|
|
837
880
|
backgroundColor: theme.colors.muted,
|
|
@@ -840,11 +883,11 @@ var ProgressBar = ({
|
|
|
840
883
|
trackStyle
|
|
841
884
|
]
|
|
842
885
|
},
|
|
843
|
-
/* @__PURE__ */
|
|
844
|
-
|
|
886
|
+
/* @__PURE__ */ React11.createElement(
|
|
887
|
+
View7,
|
|
845
888
|
{
|
|
846
889
|
style: [
|
|
847
|
-
|
|
890
|
+
styles11.fill,
|
|
848
891
|
{
|
|
849
892
|
width: `${clampedProgress}%`,
|
|
850
893
|
height: "100%",
|
|
@@ -855,9 +898,9 @@ var ProgressBar = ({
|
|
|
855
898
|
]
|
|
856
899
|
}
|
|
857
900
|
)
|
|
858
|
-
), showLabel && /* @__PURE__ */
|
|
901
|
+
), showLabel && /* @__PURE__ */ React11.createElement(Text7, { style: [styles11.label, { color: theme.colors.foreground }] }, Math.round(clampedProgress), "%"));
|
|
859
902
|
};
|
|
860
|
-
var
|
|
903
|
+
var styles11 = StyleSheet11.create({
|
|
861
904
|
container: {
|
|
862
905
|
width: "100%"
|
|
863
906
|
},
|
|
@@ -877,9 +920,44 @@ var styles10 = StyleSheet10.create({
|
|
|
877
920
|
});
|
|
878
921
|
ProgressBar.displayName = "ProgressBar";
|
|
879
922
|
|
|
923
|
+
// src/components/atoms/Divider.tsx
|
|
924
|
+
import React12 from "react";
|
|
925
|
+
import { View as View8, StyleSheet as StyleSheet12 } from "react-native";
|
|
926
|
+
var Divider = ({
|
|
927
|
+
orientation = "horizontal",
|
|
928
|
+
thickness = 1,
|
|
929
|
+
style
|
|
930
|
+
}) => {
|
|
931
|
+
const theme = useTheme();
|
|
932
|
+
return /* @__PURE__ */ React12.createElement(
|
|
933
|
+
View8,
|
|
934
|
+
{
|
|
935
|
+
style: [
|
|
936
|
+
orientation === "horizontal" ? styles12.horizontal : styles12.vertical,
|
|
937
|
+
{
|
|
938
|
+
backgroundColor: theme.colors.border,
|
|
939
|
+
...orientation === "horizontal" ? { height: thickness } : { width: thickness }
|
|
940
|
+
},
|
|
941
|
+
style
|
|
942
|
+
]
|
|
943
|
+
}
|
|
944
|
+
);
|
|
945
|
+
};
|
|
946
|
+
var styles12 = StyleSheet12.create({
|
|
947
|
+
horizontal: {
|
|
948
|
+
width: "100%",
|
|
949
|
+
marginVertical: 8
|
|
950
|
+
},
|
|
951
|
+
vertical: {
|
|
952
|
+
height: "100%",
|
|
953
|
+
marginHorizontal: 8
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
Divider.displayName = "Divider";
|
|
957
|
+
|
|
880
958
|
// src/components/atoms/game/HealthBar.tsx
|
|
881
|
-
import
|
|
882
|
-
import { View as
|
|
959
|
+
import React13 from "react";
|
|
960
|
+
import { View as View9, Text as Text8, StyleSheet as StyleSheet13 } from "react-native";
|
|
883
961
|
var sizeMap = {
|
|
884
962
|
sm: { heart: 16, bar: 8, text: 12 },
|
|
885
963
|
md: { heart: 24, bar: 12, text: 16 },
|
|
@@ -890,8 +968,8 @@ var HeartIcon = ({
|
|
|
890
968
|
size,
|
|
891
969
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
892
970
|
color
|
|
893
|
-
}) => /* @__PURE__ */
|
|
894
|
-
|
|
971
|
+
}) => /* @__PURE__ */ React13.createElement(
|
|
972
|
+
View9,
|
|
895
973
|
{
|
|
896
974
|
style: {
|
|
897
975
|
width: size,
|
|
@@ -900,8 +978,8 @@ var HeartIcon = ({
|
|
|
900
978
|
alignItems: "center"
|
|
901
979
|
}
|
|
902
980
|
},
|
|
903
|
-
/* @__PURE__ */
|
|
904
|
-
|
|
981
|
+
/* @__PURE__ */ React13.createElement(
|
|
982
|
+
Text8,
|
|
905
983
|
{
|
|
906
984
|
style: {
|
|
907
985
|
fontSize: size * 0.8,
|
|
@@ -923,15 +1001,15 @@ var HealthBar = ({
|
|
|
923
1001
|
const sizes = sizeMap[size];
|
|
924
1002
|
const percentage = Math.max(0, Math.min(100, current / max * 100));
|
|
925
1003
|
if (format === "hearts") {
|
|
926
|
-
return /* @__PURE__ */
|
|
927
|
-
|
|
1004
|
+
return /* @__PURE__ */ React13.createElement(View9, { style: [styles13.heartsContainer, style] }, Array.from({ length: max }).map((_, i) => /* @__PURE__ */ React13.createElement(
|
|
1005
|
+
View9,
|
|
928
1006
|
{
|
|
929
1007
|
key: i,
|
|
930
1008
|
style: [
|
|
931
|
-
animated &&
|
|
1009
|
+
animated && styles13.animatedHeart
|
|
932
1010
|
]
|
|
933
1011
|
},
|
|
934
|
-
/* @__PURE__ */
|
|
1012
|
+
/* @__PURE__ */ React13.createElement(
|
|
935
1013
|
HeartIcon,
|
|
936
1014
|
{
|
|
937
1015
|
filled: i < current,
|
|
@@ -943,11 +1021,11 @@ var HealthBar = ({
|
|
|
943
1021
|
}
|
|
944
1022
|
if (format === "bar") {
|
|
945
1023
|
const barColor = percentage > 66 ? "#22c55e" : percentage > 33 ? "#eab308" : "#ef4444";
|
|
946
|
-
return /* @__PURE__ */
|
|
947
|
-
|
|
1024
|
+
return /* @__PURE__ */ React13.createElement(
|
|
1025
|
+
View9,
|
|
948
1026
|
{
|
|
949
1027
|
style: [
|
|
950
|
-
|
|
1028
|
+
styles13.barContainer,
|
|
951
1029
|
{
|
|
952
1030
|
height: sizes.bar,
|
|
953
1031
|
backgroundColor: theme.colors.muted
|
|
@@ -955,26 +1033,26 @@ var HealthBar = ({
|
|
|
955
1033
|
style
|
|
956
1034
|
]
|
|
957
1035
|
},
|
|
958
|
-
/* @__PURE__ */
|
|
959
|
-
|
|
1036
|
+
/* @__PURE__ */ React13.createElement(
|
|
1037
|
+
View9,
|
|
960
1038
|
{
|
|
961
1039
|
style: [
|
|
962
|
-
|
|
1040
|
+
styles13.barFill,
|
|
963
1041
|
{
|
|
964
1042
|
width: `${percentage}%`,
|
|
965
1043
|
backgroundColor: barColor
|
|
966
1044
|
},
|
|
967
|
-
animated &&
|
|
1045
|
+
animated && styles13.animatedBar
|
|
968
1046
|
]
|
|
969
1047
|
}
|
|
970
1048
|
)
|
|
971
1049
|
);
|
|
972
1050
|
}
|
|
973
|
-
return /* @__PURE__ */
|
|
974
|
-
|
|
1051
|
+
return /* @__PURE__ */ React13.createElement(
|
|
1052
|
+
Text8,
|
|
975
1053
|
{
|
|
976
1054
|
style: [
|
|
977
|
-
|
|
1055
|
+
styles13.numericText,
|
|
978
1056
|
{
|
|
979
1057
|
fontSize: sizes.text,
|
|
980
1058
|
color: theme.colors.foreground
|
|
@@ -987,7 +1065,7 @@ var HealthBar = ({
|
|
|
987
1065
|
max
|
|
988
1066
|
);
|
|
989
1067
|
};
|
|
990
|
-
var
|
|
1068
|
+
var styles13 = StyleSheet13.create({
|
|
991
1069
|
heartsContainer: {
|
|
992
1070
|
flexDirection: "row",
|
|
993
1071
|
alignItems: "center",
|
|
@@ -1016,8 +1094,8 @@ var styles11 = StyleSheet11.create({
|
|
|
1016
1094
|
HealthBar.displayName = "HealthBar";
|
|
1017
1095
|
|
|
1018
1096
|
// src/components/atoms/game/ScoreDisplay.tsx
|
|
1019
|
-
import
|
|
1020
|
-
import { View as
|
|
1097
|
+
import React14, { useState as useState2, useEffect } from "react";
|
|
1098
|
+
import { View as View10, Text as Text9, StyleSheet as StyleSheet14 } from "react-native";
|
|
1021
1099
|
var sizeMap2 = {
|
|
1022
1100
|
sm: { fontSize: 14 },
|
|
1023
1101
|
md: { fontSize: 18 },
|
|
@@ -1061,20 +1139,20 @@ var ScoreDisplay = ({
|
|
|
1061
1139
|
return () => clearInterval(timer);
|
|
1062
1140
|
}, [value, animated]);
|
|
1063
1141
|
const formattedValue = new Intl.NumberFormat(locale).format(displayValue);
|
|
1064
|
-
return /* @__PURE__ */
|
|
1065
|
-
|
|
1142
|
+
return /* @__PURE__ */ React14.createElement(
|
|
1143
|
+
View10,
|
|
1066
1144
|
{
|
|
1067
1145
|
style: [
|
|
1068
|
-
|
|
1146
|
+
styles14.container,
|
|
1069
1147
|
{
|
|
1070
1148
|
opacity: isAnimating ? 0.7 : 1
|
|
1071
1149
|
},
|
|
1072
1150
|
style
|
|
1073
1151
|
]
|
|
1074
1152
|
},
|
|
1075
|
-
icon && /* @__PURE__ */
|
|
1076
|
-
label && /* @__PURE__ */
|
|
1077
|
-
|
|
1153
|
+
icon && /* @__PURE__ */ React14.createElement(Text9, { style: { fontSize: sizeConfig.fontSize, marginRight: 8 } }, icon),
|
|
1154
|
+
label && /* @__PURE__ */ React14.createElement(
|
|
1155
|
+
Text9,
|
|
1078
1156
|
{
|
|
1079
1157
|
style: {
|
|
1080
1158
|
fontSize: sizeConfig.fontSize,
|
|
@@ -1084,8 +1162,8 @@ var ScoreDisplay = ({
|
|
|
1084
1162
|
},
|
|
1085
1163
|
label
|
|
1086
1164
|
),
|
|
1087
|
-
/* @__PURE__ */
|
|
1088
|
-
|
|
1165
|
+
/* @__PURE__ */ React14.createElement(
|
|
1166
|
+
Text9,
|
|
1089
1167
|
{
|
|
1090
1168
|
style: {
|
|
1091
1169
|
fontSize: sizeConfig.fontSize,
|
|
@@ -1098,7 +1176,7 @@ var ScoreDisplay = ({
|
|
|
1098
1176
|
)
|
|
1099
1177
|
);
|
|
1100
1178
|
};
|
|
1101
|
-
var
|
|
1179
|
+
var styles14 = StyleSheet14.create({
|
|
1102
1180
|
container: {
|
|
1103
1181
|
flexDirection: "row",
|
|
1104
1182
|
alignItems: "center"
|
|
@@ -1118,8 +1196,10 @@ export {
|
|
|
1118
1196
|
Select,
|
|
1119
1197
|
Card,
|
|
1120
1198
|
Badge,
|
|
1199
|
+
Icon,
|
|
1121
1200
|
ProgressBar,
|
|
1201
|
+
Divider,
|
|
1122
1202
|
HealthBar,
|
|
1123
1203
|
ScoreDisplay
|
|
1124
1204
|
};
|
|
1125
|
-
//# sourceMappingURL=chunk-
|
|
1205
|
+
//# sourceMappingURL=chunk-QUFLYKWA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/atoms/Typography.tsx","../src/components/molecules/LoadingState.tsx","../src/components/atoms/Stack.tsx","../src/components/molecules/ErrorState.tsx","../src/components/atoms/Button.tsx","../src/components/atoms/Input.tsx","../src/components/atoms/Select.tsx","../src/components/atoms/Card.tsx","../src/components/atoms/Badge.tsx","../src/components/atoms/Icon.tsx","../src/components/atoms/ProgressBar.tsx","../src/components/atoms/Divider.tsx","../src/components/atoms/game/HealthBar.tsx","../src/components/atoms/game/ScoreDisplay.tsx"],"sourcesContent":["import React from 'react';\nimport { Text, StyleSheet, TextStyle, TextProps } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\n\nexport type TypographyVariant = \n | 'h1' \n | 'h2' \n | 'h3' \n | 'h4' \n | 'body' \n | 'caption' \n | 'label';\n\nexport interface TypographyProps extends TextProps {\n variant?: TypographyVariant;\n color?: string;\n align?: 'left' | 'center' | 'right';\n children: React.ReactNode;\n /** Loading state indicator - renders as skeleton when true */\n isLoading?: boolean;\n /** Error state - can affect styling */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport function Typography({\n variant = 'body',\n color,\n align = 'left',\n children,\n style,\n isLoading,\n error,\n ...rest\n}: TypographyProps) {\n const theme = useTheme();\n\n // When loading, return a skeleton-like placeholder\n if (isLoading) {\n return (\n <Text\n style={[\n styles.skeleton,\n {\n backgroundColor: theme.colors.muted,\n width: '60%',\n },\n style,\n ]}\n {...rest}\n >\n {' '}\n </Text>\n );\n }\n\n const variantStyles: Record<TypographyVariant, TextStyle> = {\n h1: {\n fontSize: theme.typography.sizes['4xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['4xl'],\n color: theme.colors.foreground,\n },\n h2: {\n fontSize: theme.typography.sizes['3xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['3xl'],\n color: theme.colors.foreground,\n },\n h3: {\n fontSize: theme.typography.sizes['2xl'],\n fontWeight: theme.typography.fontWeight.bold as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes['2xl'],\n color: theme.colors.foreground,\n },\n h4: {\n fontSize: theme.typography.sizes.xl,\n fontWeight: theme.typography.fontWeight.medium as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.xl,\n color: theme.colors.foreground,\n },\n body: {\n fontSize: theme.typography.sizes.base,\n fontWeight: theme.typography.fontWeight.normal as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.base,\n color: theme.colors.foreground,\n },\n caption: {\n fontSize: theme.typography.sizes.sm,\n fontWeight: theme.typography.fontWeight.normal as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.sm,\n color: theme.colors['muted-foreground'],\n },\n label: {\n fontSize: theme.typography.sizes.xs,\n fontWeight: theme.typography.fontWeight.medium as TextStyle['fontWeight'],\n lineHeight: theme.typography.lineHeight * theme.typography.sizes.xs,\n color: theme.colors['muted-foreground'],\n textTransform: 'uppercase',\n },\n };\n\n const textColor = error ? theme.colors.error : (color || variantStyles[variant].color);\n\n return (\n <Text\n style={[\n variantStyles[variant],\n { textAlign: align, color: textColor },\n style,\n ]}\n {...rest}\n >\n {children}\n </Text>\n );\n}\n\nconst styles = StyleSheet.create({\n skeleton: {\n borderRadius: 4,\n },\n});\n\nTypography.displayName = 'Typography';\n","import React from 'react';\nimport { ActivityIndicator, StyleSheet } from 'react-native';\nimport { VStack } from '../atoms/Stack';\nimport { Typography } from '../atoms/Typography';\n\nexport interface LoadingStateProps {\n message?: string;\n}\n\nexport const LoadingState: React.FC<LoadingStateProps> = ({\n message = 'Loading...',\n}) => {\n return (\n <VStack align=\"center\" spacing={12} style={styles.container}>\n <ActivityIndicator size=\"large\" color=\"#6366f1\" />\n <Typography variant=\"body\" color=\"#6b7280\">\n {message}\n </Typography>\n </VStack>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nLoadingState.displayName = 'LoadingState';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle } from 'react-native';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface VStackProps {\n spacing?: number;\n align?: 'flex-start' | 'center' | 'flex-end' | 'stretch';\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around';\n children: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const VStack: React.FC<VStackProps> = ({\n spacing = 8,\n align = 'stretch',\n justify = 'flex-start',\n children,\n style,\n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.vstack, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.vstack, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const stackStyles: ViewStyle[] = [\n styles.vstack,\n { gap: spacing, alignItems: align, justifyContent: justify },\n ];\n \n if (Array.isArray(style)) {\n stackStyles.push(...style);\n } else if (style) {\n stackStyles.push(style);\n }\n\n return (\n <View testID={testID} style={stackStyles}>\n {children}\n </View>\n );\n};\n\nexport interface HStackProps {\n spacing?: number;\n align?: 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';\n justify?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n children: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const HStack: React.FC<HStackProps> = ({\n spacing = 8,\n align = 'center',\n justify = 'flex-start',\n children,\n style,\n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.hstack, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.hstack, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const stackStyles: ViewStyle[] = [\n styles.hstack,\n { gap: spacing, alignItems: align, justifyContent: justify },\n ];\n \n if (Array.isArray(style)) {\n stackStyles.push(...style);\n } else if (style) {\n stackStyles.push(style);\n }\n\n return (\n <View testID={testID} style={stackStyles}>\n {children}\n </View>\n );\n};\n\nexport interface BoxProps {\n children?: React.ReactNode;\n style?: ViewStyle | ViewStyle[] | undefined;\n testID?: string;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Box: React.FC<BoxProps> = ({ \n children, \n style, \n testID,\n isLoading,\n error,\n}) => {\n if (isLoading) {\n return (\n <View style={[styles.box, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.box, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const boxStyles: ViewStyle[] = [styles.box];\n \n if (Array.isArray(style)) {\n boxStyles.push(...style);\n } else if (style) {\n boxStyles.push(style);\n }\n\n return <View testID={testID} style={boxStyles}>{children}</View>;\n};\n\nconst styles = StyleSheet.create({\n vstack: {\n flexDirection: 'column',\n },\n hstack: {\n flexDirection: 'row',\n },\n box: {\n // Base box styles - mostly empty to allow full customization\n },\n});\n\nVStack.displayName = 'VStack';\nHStack.displayName = 'HStack';\nBox.displayName = 'Box';\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Typography } from '../atoms/Typography';\nimport { Button } from '../atoms/Button';\nimport { VStack } from '../atoms/Stack';\n\nexport interface ErrorStateProps {\n message?: string;\n onRetry?: () => void;\n}\n\nexport const ErrorState: React.FC<ErrorStateProps> = ({\n message = 'Something went wrong',\n onRetry,\n}) => {\n return (\n <VStack align=\"center\" spacing={16} style={styles.container}>\n <Typography variant=\"body\" color=\"#ef4444\">\n {message}\n </Typography>\n {onRetry && (\n <Button variant=\"secondary\" onPress={onRetry}>\n Retry\n </Button>\n )}\n </VStack>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n padding: 32,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nErrorState.displayName = 'ErrorState';\n","import React from 'react';\nimport { \n TouchableOpacity, \n Text, \n StyleSheet, \n ActivityIndicator,\n ViewStyle,\n TextStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface ButtonProps {\n onPress?: () => void;\n children: React.ReactNode;\n variant?: 'default' | 'primary' | 'secondary' | 'ghost' | 'destructive';\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n isLoading?: boolean;\n style?: ViewStyle;\n textStyle?: TextStyle;\n /** Declarative event name - emits UI:${action} via eventBus on press */\n action?: string;\n /** Payload to include with the action event */\n actionPayload?: Record<string, unknown>;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n onPress,\n children,\n variant = 'default',\n size = 'md',\n disabled = false,\n isLoading = false,\n style,\n textStyle,\n action,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, actionPayload);\n }\n onPress?.();\n };\n\n const getVariantStyles = (): { container: ViewStyle; text: TextStyle } => {\n switch (variant) {\n case 'primary':\n return {\n container: {\n backgroundColor: theme.colors.primary,\n },\n text: {\n color: theme.colors['primary-foreground'],\n },\n };\n case 'secondary':\n return {\n container: {\n backgroundColor: theme.colors.secondary,\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n };\n case 'ghost':\n return {\n container: {\n backgroundColor: 'transparent',\n },\n text: {\n color: theme.colors.primary,\n },\n };\n case 'destructive':\n return {\n container: {\n backgroundColor: theme.colors.error,\n },\n text: {\n color: theme.colors['error-foreground'],\n },\n };\n default:\n return {\n container: {\n backgroundColor: theme.colors.card,\n borderWidth: 1,\n borderColor: theme.colors.border,\n },\n text: {\n color: theme.colors.foreground,\n },\n };\n }\n };\n\n const sizeStyles: Record<string, { container: ViewStyle; text: TextStyle }> = {\n sm: {\n container: {\n paddingVertical: theme.spacing[1],\n paddingHorizontal: theme.spacing[3],\n borderRadius: theme.borderRadius.md,\n },\n text: {\n fontSize: theme.typography.sizes.sm,\n },\n },\n md: {\n container: {\n paddingVertical: theme.spacing[2],\n paddingHorizontal: theme.spacing[4],\n borderRadius: theme.borderRadius.md,\n },\n text: {\n fontSize: theme.typography.sizes.base,\n },\n },\n lg: {\n container: {\n paddingVertical: theme.spacing[3],\n paddingHorizontal: theme.spacing[6],\n borderRadius: theme.borderRadius.lg,\n },\n text: {\n fontSize: theme.typography.sizes.lg,\n },\n },\n };\n\n const variantStyle = getVariantStyles();\n const sizeStyle = sizeStyles[size];\n\n return (\n <TouchableOpacity\n onPress={handlePress}\n disabled={disabled || isLoading}\n activeOpacity={0.8}\n style={[\n styles.button,\n variantStyle.container,\n sizeStyle.container,\n (disabled || isLoading) && { opacity: 0.5 },\n style,\n ]}\n >\n {isLoading ? (\n <ActivityIndicator color={variantStyle.text.color} size=\"small\" />\n ) : (\n <Text style={[styles.text, variantStyle.text, sizeStyle.text, textStyle]}>\n {children}\n </Text>\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = StyleSheet.create({\n button: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontWeight: '500',\n },\n});\n\nButton.displayName = 'Button';\n","import React from 'react';\nimport { \n TextInput, \n TextInputProps, \n StyleSheet, \n View, \n Text,\n ViewStyle \n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\n\nexport interface InputProps extends Omit<TextInputProps, 'onChange'> {\n label?: string;\n /** String error message for form validation */\n errorMessage?: string;\n helperText?: string;\n containerStyle?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state object */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: string;\n /** Declarative focus event name - emits UI:${focusEvent} via eventBus */\n focusEvent?: string;\n}\n\nexport const Input: React.FC<InputProps> = ({\n label,\n errorMessage,\n helperText,\n containerStyle,\n style,\n isLoading,\n error,\n changeEvent,\n focusEvent,\n onChangeText,\n onFocus,\n onBlur,\n ...textInputProps\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handleChangeText = (text: string) => {\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { value: text });\n }\n onChangeText?.(text);\n };\n\n const handleFocus = () => {\n if (focusEvent) {\n eventBus.emit(`UI:${focusEvent}`);\n }\n onFocus?.({} as never);\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, containerStyle]}>\n {label && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {label}\n </Text>\n )}\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n const errorText = error?.message || errorMessage;\n\n return (\n <View style={[styles.container, containerStyle]}>\n {label && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {label}\n </Text>\n )}\n <TextInput\n style={[\n styles.input,\n {\n borderColor: errorText ? theme.colors.error : theme.colors.border,\n backgroundColor: theme.colors.card,\n color: theme.colors.foreground,\n },\n style,\n ]}\n placeholderTextColor={theme.colors['muted-foreground']}\n onChangeText={handleChangeText}\n onFocus={handleFocus}\n onBlur={onBlur}\n {...textInputProps}\n />\n {errorText ? (\n <Text style={[styles.errorText, { color: theme.colors.error }]}>\n {errorText}\n </Text>\n ) : helperText ? (\n <Text style={[styles.helperText, { color: theme.colors['muted-foreground'] }]}>\n {helperText}\n </Text>\n ) : null}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n label: {\n fontSize: 14,\n fontWeight: '500',\n marginBottom: 6,\n },\n input: {\n borderWidth: 1,\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n fontSize: 16,\n },\n errorText: {\n fontSize: 12,\n marginTop: 4,\n },\n helperText: {\n fontSize: 12,\n marginTop: 4,\n },\n});\n\nInput.displayName = 'Input';\n","import React, { useState } from 'react';\nimport { \n TouchableOpacity, \n View, \n Text, \n StyleSheet, \n ViewStyle,\n TextStyle,\n Modal,\n FlatList,\n SafeAreaView,\n} from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport interface SelectProps {\n options: SelectOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n disabled?: boolean;\n style?: ViewStyle;\n textStyle?: TextStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative change event name - emits UI:${changeEvent} via eventBus */\n changeEvent?: string;\n /** Payload base to include with the change event */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n value,\n onChange,\n placeholder = 'Select...',\n disabled = false,\n style,\n textStyle,\n isLoading,\n error,\n changeEvent,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n const [isOpen, setIsOpen] = useState(false);\n\n const selectedOption = options.find(opt => opt.value === value);\n\n const handleSelect = (selectedValue: string) => {\n if (changeEvent) {\n eventBus.emit(`UI:${changeEvent}`, { ...actionPayload, value: selectedValue });\n }\n onChange?.(selectedValue);\n setIsOpen(false);\n };\n\n const handleOpen = () => {\n if (!disabled && !isLoading) {\n setIsOpen(true);\n }\n };\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n return (\n <>\n <TouchableOpacity\n onPress={handleOpen}\n disabled={disabled}\n activeOpacity={0.8}\n style={[\n styles.button,\n {\n borderColor: theme.colors.border,\n backgroundColor: theme.colors.card,\n opacity: disabled ? 0.5 : 1,\n },\n style,\n ]}\n >\n <Text\n style={[\n styles.buttonText,\n {\n color: selectedOption \n ? theme.colors.foreground \n : theme.colors['muted-foreground'],\n },\n textStyle,\n ]}\n numberOfLines={1}\n >\n {selectedOption?.label || placeholder}\n </Text>\n <Text style={[styles.chevron, { color: theme.colors['muted-foreground'] }]}>\n ▼\n </Text>\n </TouchableOpacity>\n\n <Modal\n visible={isOpen}\n transparent\n animationType=\"slide\"\n onRequestClose={() => setIsOpen(false)}\n >\n <SafeAreaView style={[styles.modalContainer, { backgroundColor: theme.colors.background }]}>\n <View style={styles.modalHeader}>\n <TouchableOpacity onPress={() => setIsOpen(false)}>\n <Text style={[styles.closeButton, { color: theme.colors.primary }]}>\n Close\n </Text>\n </TouchableOpacity>\n </View>\n <FlatList\n data={options}\n keyExtractor={(item) => item.value}\n renderItem={({ item }) => (\n <TouchableOpacity\n style={[\n styles.option,\n {\n backgroundColor: item.value === value \n ? theme.colors.primary \n : theme.colors.card,\n borderBottomColor: theme.colors.border,\n },\n ]}\n onPress={() => handleSelect(item.value)}\n >\n <Text\n style={{\n color: item.value === value \n ? theme.colors['primary-foreground'] \n : theme.colors.foreground,\n }}\n >\n {item.label}\n </Text>\n </TouchableOpacity>\n )}\n />\n </SafeAreaView>\n </Modal>\n </>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n button: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n borderWidth: 1,\n borderRadius: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n buttonText: {\n fontSize: 16,\n flex: 1,\n },\n chevron: {\n fontSize: 12,\n marginLeft: 8,\n },\n modalContainer: {\n flex: 1,\n },\n modalHeader: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n padding: 16,\n borderBottomWidth: 1,\n borderBottomColor: '#e2e8f0',\n },\n closeButton: {\n fontSize: 16,\n fontWeight: '500',\n },\n option: {\n padding: 16,\n borderBottomWidth: 1,\n },\n});\n\nSelect.displayName = 'Select';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle, TouchableOpacity } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface CardProps {\n children: React.ReactNode;\n onPress?: () => void;\n style?: ViewStyle | ViewStyle[] | undefined;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n variant?: 'default' | 'elevated' | 'outlined';\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n /** Declarative event name - emits UI:${action} via eventBus on press */\n action?: string;\n /** Payload to include with the action event */\n actionPayload?: Record<string, unknown>;\n}\n\nexport const Card: React.FC<CardProps> = ({\n children,\n onPress,\n style,\n padding = 'md',\n variant = 'default',\n isLoading,\n error,\n action,\n actionPayload,\n}) => {\n const theme = useTheme();\n const eventBus = useEventBus();\n\n const handlePress = () => {\n if (action) {\n eventBus.emit(`UI:${action}`, actionPayload);\n }\n onPress?.();\n };\n\n if (isLoading) {\n return (\n <View style={[styles.card, style]}>\n <LoadingState />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.card, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const paddingStyles: Record<string, ViewStyle> = {\n none: { padding: 0 },\n sm: { padding: theme.spacing[3] },\n md: { padding: theme.spacing[4] },\n lg: { padding: theme.spacing[6] },\n };\n\n const variantStyles: Record<string, ViewStyle> = {\n default: {\n backgroundColor: theme.colors.card,\n ...theme.shadows.main,\n },\n elevated: {\n backgroundColor: theme.colors.card,\n ...theme.shadows.lg,\n },\n outlined: {\n backgroundColor: theme.colors.card,\n borderWidth: 1,\n borderColor: theme.colors.border,\n ...theme.shadows.none,\n },\n };\n\n const cardStyles: ViewStyle[] = [\n styles.card,\n variantStyles[variant],\n paddingStyles[padding],\n ];\n\n if (Array.isArray(style)) {\n cardStyles.push(...style);\n } else if (style) {\n cardStyles.push(style);\n }\n\n const content = <View style={cardStyles}>{children}</View>;\n\n if (onPress || action) {\n return (\n <TouchableOpacity onPress={handlePress} activeOpacity={0.9}>\n {content}\n </TouchableOpacity>\n );\n }\n\n return content;\n};\n\nconst styles = StyleSheet.create({\n card: {\n borderRadius: 12,\n },\n});\n\nCard.displayName = 'Card';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle, TextStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport type BadgeVariant = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type BadgeSize = 'sm' | 'md';\n\nexport interface BadgeProps {\n children: React.ReactNode;\n variant?: BadgeVariant;\n size?: BadgeSize;\n style?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n size = 'md',\n style,\n isLoading,\n error,\n}) => {\n const theme = useTheme();\n\n if (isLoading) {\n return (\n <View style={[styles.badge, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.badge, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const variantStyles: Record<BadgeVariant, { container: ViewStyle; text: TextStyle }> = {\n default: {\n container: {\n backgroundColor: theme.colors.secondary,\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n },\n primary: {\n container: {\n backgroundColor: theme.colors.primary,\n },\n text: {\n color: theme.colors['primary-foreground'],\n },\n },\n secondary: {\n container: {\n backgroundColor: theme.colors['secondary-hover'],\n },\n text: {\n color: theme.colors['secondary-foreground'],\n },\n },\n success: {\n container: {\n backgroundColor: theme.colors.success,\n },\n text: {\n color: theme.colors['success-foreground'],\n },\n },\n warning: {\n container: {\n backgroundColor: theme.colors.warning,\n },\n text: {\n color: theme.colors['warning-foreground'],\n },\n },\n error: {\n container: {\n backgroundColor: theme.colors.error,\n },\n text: {\n color: theme.colors['error-foreground'],\n },\n },\n };\n\n const sizeStyles: Record<BadgeSize, { container: ViewStyle; text: TextStyle }> = {\n sm: {\n container: {\n paddingHorizontal: theme.spacing[2],\n paddingVertical: 2,\n borderRadius: theme.borderRadius.full,\n },\n text: {\n fontSize: theme.typography.sizes.xs,\n },\n },\n md: {\n container: {\n paddingHorizontal: theme.spacing[3],\n paddingVertical: theme.spacing[1],\n borderRadius: theme.borderRadius.full,\n },\n text: {\n fontSize: theme.typography.sizes.sm,\n },\n },\n };\n\n const variantStyle = variantStyles[variant];\n const sizeStyle = sizeStyles[size];\n\n return (\n <View style={[styles.badge, variantStyle.container, sizeStyle.container, style]}>\n <Text style={[styles.text, variantStyle.text, sizeStyle.text]}>{children}</Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n badge: {\n alignSelf: 'flex-start',\n },\n text: {\n fontWeight: '500',\n },\n});\n\nBadge.displayName = 'Badge';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\n\n// For now, using a simple text-based icon approach\n// In production, this would use react-native-vector-icons\nexport type IconName = \n | 'home' \n | 'user' \n | 'settings' \n | 'arrow-right' \n | 'arrow-left'\n | 'check'\n | 'x'\n | 'plus'\n | 'minus'\n | 'search'\n | 'menu'\n | 'more-vertical'\n | 'chevron-right'\n | 'chevron-left'\n | 'chevron-down'\n | 'chevron-up';\n\nexport interface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n style?: ViewStyle;\n}\n\n// Simple emoji/icon mapping for initial implementation\nconst iconMap: Record<IconName, string> = {\n home: '🏠',\n user: '👤',\n settings: '⚙️',\n 'arrow-right': '→',\n 'arrow-left': '←',\n check: '✓',\n x: '✕',\n plus: '+',\n minus: '−',\n search: '🔍',\n menu: '☰',\n 'more-vertical': '⋮',\n 'chevron-right': '›',\n 'chevron-left': '‹',\n 'chevron-down': '⌄',\n 'chevron-up': '⌃',\n};\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size = 24,\n color = '#374151',\n style,\n}) => {\n return (\n <View style={[styles.container, { width: size, height: size }, style]}>\n <Text style={[\n styles.icon,\n { fontSize: size * 0.7, color, lineHeight: size },\n ]}>\n {iconMap[name] || '?'}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n icon: {\n textAlign: 'center',\n },\n});\n\nIcon.displayName = 'Icon';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle, Text } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\nimport { LoadingState } from '../molecules/LoadingState';\nimport { ErrorState } from '../molecules/ErrorState';\n\nexport interface ProgressBarProps {\n progress: number; // 0 to 100\n showLabel?: boolean;\n size?: 'sm' | 'md' | 'lg';\n style?: ViewStyle;\n trackStyle?: ViewStyle;\n fillStyle?: ViewStyle;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n progress,\n showLabel = false,\n size = 'md',\n style,\n trackStyle,\n fillStyle,\n isLoading,\n error,\n}) => {\n const theme = useTheme();\n\n const clampedProgress = Math.max(0, Math.min(100, progress));\n\n if (isLoading) {\n return (\n <View style={[styles.container, style]}>\n <LoadingState message=\"Loading...\" />\n </View>\n );\n }\n\n if (error) {\n return (\n <View style={[styles.container, style]}>\n <ErrorState message={error.message} />\n </View>\n );\n }\n\n const heightMap: Record<string, number> = {\n sm: 4,\n md: 8,\n lg: 12,\n };\n\n const height = heightMap[size];\n\n return (\n <View style={[styles.container, style]}>\n <View\n style={[\n styles.track,\n {\n height,\n backgroundColor: theme.colors.muted,\n borderRadius: height / 2,\n },\n trackStyle,\n ]}\n >\n <View\n style={[\n styles.fill,\n {\n width: `${clampedProgress}%`,\n height: '100%',\n backgroundColor: theme.colors.primary,\n borderRadius: height / 2,\n },\n fillStyle,\n ]}\n />\n </View>\n {showLabel && (\n <Text style={[styles.label, { color: theme.colors.foreground }]}>\n {Math.round(clampedProgress)}%\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n track: {\n width: '100%',\n overflow: 'hidden',\n },\n fill: {\n // Animated fill\n },\n label: {\n marginTop: 4,\n fontSize: 12,\n fontWeight: '500',\n textAlign: 'right',\n },\n});\n\nProgressBar.displayName = 'ProgressBar';\n","import React from 'react';\nimport { View, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../providers/ThemeContext';\n\nexport interface DividerProps {\n orientation?: 'horizontal' | 'vertical';\n thickness?: number;\n style?: ViewStyle;\n /** Entity name for schema-driven auto-fetch */\n entity?: string;\n}\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = 'horizontal',\n thickness = 1,\n style,\n}) => {\n const theme = useTheme();\n\n return (\n <View\n style={[\n orientation === 'horizontal' ? styles.horizontal : styles.vertical,\n {\n backgroundColor: theme.colors.border,\n ...(orientation === 'horizontal'\n ? { height: thickness }\n : { width: thickness }),\n },\n style,\n ]}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n horizontal: {\n width: '100%',\n marginVertical: 8,\n },\n vertical: {\n height: '100%',\n marginHorizontal: 8,\n },\n});\n\nDivider.displayName = 'Divider';\n","import React from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\n\nexport interface HealthBarProps {\n /** Current health value */\n current: number;\n /** Maximum health value */\n max: number;\n /** Display format */\n format?: 'hearts' | 'bar' | 'numeric';\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Additional styles */\n style?: ViewStyle;\n /** Animation on change */\n animated?: boolean;\n}\n\nconst sizeMap = {\n sm: { heart: 16, bar: 8, text: 12 },\n md: { heart: 24, bar: 12, text: 16 },\n lg: { heart: 32, bar: 16, text: 20 },\n};\n\nconst HeartIcon: React.FC<{ filled: boolean; size: number; color: string }> = ({ \n filled, \n size, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n color \n}) => (\n <View\n style={{\n width: size,\n height: size,\n justifyContent: 'center',\n alignItems: 'center',\n }}\n >\n <Text\n style={{\n fontSize: size * 0.8,\n color: filled ? '#ef4444' : '#9ca3af',\n }}\n >\n {filled ? '♥' : '♡'}\n </Text>\n </View>\n);\n\nexport const HealthBar: React.FC<HealthBarProps> = ({\n current,\n max,\n format = 'hearts',\n size = 'md',\n style,\n animated = true,\n}) => {\n const theme = useTheme();\n const sizes = sizeMap[size];\n const percentage = Math.max(0, Math.min(100, (current / max) * 100));\n\n if (format === 'hearts') {\n return (\n <View style={[styles.heartsContainer, style]}>\n {Array.from({ length: max }).map((_, i) => (\n <View\n key={i}\n style={[\n animated && styles.animatedHeart,\n ]}\n >\n <HeartIcon\n filled={i < current}\n size={sizes.heart}\n color={theme.colors.error}\n />\n </View>\n ))}\n </View>\n );\n }\n\n if (format === 'bar') {\n const barColor = percentage > 66 \n ? '#22c55e' // green\n : percentage > 33 \n ? '#eab308' // yellow\n : '#ef4444'; // red\n\n return (\n <View\n style={[\n styles.barContainer,\n {\n height: sizes.bar,\n backgroundColor: theme.colors.muted,\n },\n style,\n ]}\n >\n <View\n style={[\n styles.barFill,\n {\n width: `${percentage}%`,\n backgroundColor: barColor,\n },\n animated && styles.animatedBar,\n ]}\n />\n </View>\n );\n }\n\n // Numeric format\n return (\n <Text\n style={[\n styles.numericText,\n {\n fontSize: sizes.text,\n color: theme.colors.foreground,\n },\n style as never,\n ]}\n >\n {current}/{max}\n </Text>\n );\n};\n\nconst styles = StyleSheet.create({\n heartsContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n animatedHeart: {\n // React Native transform animation could be added here\n },\n barContainer: {\n width: 96,\n borderRadius: 9999,\n overflow: 'hidden',\n },\n barFill: {\n height: '100%',\n borderRadius: 9999,\n },\n animatedBar: {\n // LayoutAnimation could be configured\n },\n numericText: {\n fontFamily: 'monospace',\n fontWeight: '700',\n },\n});\n\nHealthBar.displayName = 'HealthBar';\n","import React, { useState, useEffect } from 'react';\nimport { View, Text, StyleSheet, ViewStyle } from 'react-native';\nimport { useTheme } from '../../../providers/ThemeContext';\n\nexport interface ScoreDisplayProps {\n /** Current score value */\n value: number;\n /** Label to display before score */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Additional styles */\n style?: ViewStyle;\n /** Animation on value change */\n animated?: boolean;\n /** Number formatting locale */\n locale?: string;\n}\n\nconst sizeMap: Record<string, { fontSize: number }> = {\n sm: { fontSize: 14 },\n md: { fontSize: 18 },\n lg: { fontSize: 24 },\n xl: { fontSize: 36 },\n};\n\nexport const ScoreDisplay: React.FC<ScoreDisplayProps> = ({\n value,\n label,\n icon,\n size = 'md',\n style,\n animated = true,\n locale = 'en-US',\n}) => {\n const theme = useTheme();\n const [displayValue, setDisplayValue] = useState(value);\n const [isAnimating, setIsAnimating] = useState(false);\n\n const sizeConfig = sizeMap[size] ?? sizeMap.md;\n\n useEffect(() => {\n if (!animated || displayValue === value) {\n setDisplayValue(value);\n return;\n }\n\n setIsAnimating(true);\n const diff = value - displayValue;\n const steps = Math.min(Math.abs(diff), 20);\n const increment = diff / steps;\n let current = displayValue;\n let step = 0;\n\n const timer = setInterval(() => {\n step++;\n current += increment;\n setDisplayValue(Math.round(current));\n\n if (step >= steps) {\n clearInterval(timer);\n setDisplayValue(value);\n setIsAnimating(false);\n }\n }, 50);\n\n return () => clearInterval(timer);\n }, [value, animated]);\n\n const formattedValue = new Intl.NumberFormat(locale).format(displayValue);\n\n return (\n <View\n style={[\n styles.container,\n {\n opacity: isAnimating ? 0.7 : 1,\n },\n style as never,\n ]}\n >\n {icon && (\n <Text style={{ fontSize: sizeConfig.fontSize, marginRight: 8 }}>\n {icon as string}\n </Text>\n )}\n {label && (\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n color: theme.colors['muted-foreground'],\n marginRight: 8,\n }}\n >\n {label}\n </Text>\n )}\n <Text\n style={{\n fontSize: sizeConfig.fontSize,\n color: theme.colors.foreground,\n fontWeight: '700',\n fontVariant: ['tabular-nums'],\n }}\n >\n {formattedValue}\n </Text>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n\nScoreDisplay.displayName = 'ScoreDisplay';\n"],"mappings":"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","names":["React","ActivityIndicator","StyleSheet","React","StyleSheet","React","StyleSheet","React","Text","StyleSheet","React","styles","Text","StyleSheet","React","styles","StyleSheet","React","styles","StyleSheet","React","styles","ActivityIndicator","StyleSheet","React","StyleSheet","View","Text","React","View","styles","Text","StyleSheet","React","TouchableOpacity","View","Text","StyleSheet","React","View","styles","TouchableOpacity","Text","StyleSheet","React","View","StyleSheet","TouchableOpacity","React","View","styles","TouchableOpacity","StyleSheet","React","View","Text","StyleSheet","React","View","styles","Text","StyleSheet","React","View","Text","StyleSheet","styles","React","View","StyleSheet","Text","React","View","styles","Text","StyleSheet","React","View","StyleSheet","React","View","styles","StyleSheet","React","View","Text","StyleSheet","React","View","Text","styles","StyleSheet","React","useState","View","Text","StyleSheet","sizeMap","useState","React","View","styles","Text","StyleSheet"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/providers/EventBusProvider.tsx"],"sourcesContent":["// Re-export from @almadar/ui - no code duplication\nexport { EventBusProvider } from '@almadar/ui/providers';\n"],"mappings":";AACA,SAAS,wBAAwB;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle, TextStyle } from 'react-native';
|
|
3
|
+
export interface AnimatedCounterProps {
|
|
4
|
+
value: number;
|
|
5
|
+
duration?: number;
|
|
6
|
+
prefix?: string;
|
|
7
|
+
suffix?: string;
|
|
8
|
+
style?: ViewStyle;
|
|
9
|
+
textStyle?: TextStyle;
|
|
10
|
+
isLoading?: boolean;
|
|
11
|
+
error?: Error | null;
|
|
12
|
+
entity?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const AnimatedCounter: React.FC<AnimatedCounterProps>;
|
|
15
|
+
//# sourceMappingURL=AnimatedCounter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimatedCounter.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/AnimatedCounter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoD1D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
export interface DayCellProps {
|
|
4
|
+
date: number;
|
|
5
|
+
isToday?: boolean;
|
|
6
|
+
isSelected?: boolean;
|
|
7
|
+
isDisabled?: boolean;
|
|
8
|
+
hasEvents?: boolean;
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
action?: string;
|
|
11
|
+
actionPayload?: Record<string, unknown>;
|
|
12
|
+
style?: ViewStyle;
|
|
13
|
+
isLoading?: boolean;
|
|
14
|
+
error?: Error | null;
|
|
15
|
+
entity?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const DayCell: React.FC<DayCellProps>;
|
|
18
|
+
//# sourceMappingURL=DayCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DayCell.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/DayCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAyB,SAAS,EAAE,MAAM,cAAc,CAAC;AAKhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyE1C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
export interface InfiniteScrollSentinelProps {
|
|
4
|
+
loadMoreEvent?: string;
|
|
5
|
+
loadMorePayload?: Record<string, unknown>;
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
hasMore?: boolean;
|
|
8
|
+
onLoadMore?: () => void;
|
|
9
|
+
style?: ViewStyle;
|
|
10
|
+
error?: Error | null;
|
|
11
|
+
entity?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare const InfiniteScrollSentinel: React.FC<InfiniteScrollSentinelProps>;
|
|
14
|
+
//# sourceMappingURL=InfiniteScrollSentinel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InfiniteScrollSentinel.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/InfiniteScrollSentinel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAoB,SAAS,EAAE,MAAM,cAAc,CAAC;AAM3D,MAAM,WAAW,2BAA2B;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAuCxE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
export interface RangeSliderProps {
|
|
4
|
+
min?: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
value?: number;
|
|
7
|
+
step?: number;
|
|
8
|
+
action?: string;
|
|
9
|
+
actionPayload?: Record<string, unknown>;
|
|
10
|
+
onChange?: (value: number) => void;
|
|
11
|
+
showValue?: boolean;
|
|
12
|
+
label?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
style?: ViewStyle;
|
|
15
|
+
isLoading?: boolean;
|
|
16
|
+
error?: Error | null;
|
|
17
|
+
entity?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const RangeSlider: React.FC<RangeSliderProps>;
|
|
20
|
+
//# sourceMappingURL=RangeSlider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeSlider.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/RangeSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAChD,OAAO,EAAkC,SAAS,EAAqB,MAAM,cAAc,CAAC;AAO5F,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqHlD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
export type StatusDotStatus = 'online' | 'offline' | 'busy' | 'away' | 'error';
|
|
4
|
+
export type StatusDotSize = 'sm' | 'md' | 'lg';
|
|
5
|
+
export interface StatusDotProps {
|
|
6
|
+
status?: StatusDotStatus;
|
|
7
|
+
pulse?: boolean;
|
|
8
|
+
size?: StatusDotSize;
|
|
9
|
+
label?: string;
|
|
10
|
+
style?: ViewStyle;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
error?: Error | null;
|
|
13
|
+
entity?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const StatusDot: React.FC<StatusDotProps>;
|
|
16
|
+
//# sourceMappingURL=StatusDot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusDot.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/StatusDot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAA8B,SAAS,EAAE,MAAM,cAAc,CAAC;AAKrE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAQD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyE9C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ViewStyle } from 'react-native';
|
|
3
|
+
export type HighlightType = 'mark' | 'code' | 'emphasis' | 'custom';
|
|
4
|
+
export interface TextHighlightProps {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
highlightType?: HighlightType;
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
action?: string;
|
|
9
|
+
actionPayload?: Record<string, unknown>;
|
|
10
|
+
color?: string;
|
|
11
|
+
style?: ViewStyle;
|
|
12
|
+
isLoading?: boolean;
|
|
13
|
+
error?: Error | null;
|
|
14
|
+
entity?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const TextHighlight: React.FC<TextHighlightProps>;
|
|
17
|
+
//# sourceMappingURL=TextHighlight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextHighlight.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/TextHighlight.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAyB,SAAS,EAAE,MAAM,cAAc,CAAC;AAKhE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAwDtD,CAAC"}
|