@nexara/nativeflow 0.1.8 → 0.1.10

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 (291) hide show
  1. package/lib/commonjs/assets/svg/Check.js.map +1 -1
  2. package/lib/commonjs/assets/svg/X.js.map +1 -1
  3. package/lib/commonjs/assets/svg/index.js.map +1 -1
  4. package/lib/commonjs/components/Avatar/AvatarImage.js.map +1 -1
  5. package/lib/commonjs/components/Avatar/AvatarText.js.map +1 -1
  6. package/lib/commonjs/components/Avatar/index.js.map +1 -1
  7. package/lib/commonjs/components/Button/Button.js +9 -4
  8. package/lib/commonjs/components/Button/Button.js.map +1 -1
  9. package/lib/commonjs/components/Button/utils.js +17 -10
  10. package/lib/commonjs/components/Button/utils.js.map +1 -1
  11. package/lib/commonjs/components/CheckBox/CheckBox.js.map +1 -1
  12. package/lib/commonjs/components/Chip/Chip.js.map +1 -1
  13. package/lib/commonjs/components/Chip/utils.js.map +1 -1
  14. package/lib/commonjs/components/Dialog/Dialog.js.map +1 -1
  15. package/lib/commonjs/components/Dialog/DialogBody.js.map +1 -1
  16. package/lib/commonjs/components/Dialog/DialogDescription.js.map +1 -1
  17. package/lib/commonjs/components/Dialog/DialogFoot.js.map +1 -1
  18. package/lib/commonjs/components/Dialog/DialogHead.js.map +1 -1
  19. package/lib/commonjs/components/Dialog/index.js.map +1 -1
  20. package/lib/commonjs/components/Divider/Divider.js.map +1 -1
  21. package/lib/commonjs/components/Grid/Grid.js.map +1 -1
  22. package/lib/commonjs/components/Icon/Icon.js.map +1 -1
  23. package/lib/commonjs/components/IconButton/IconButton.js.map +1 -1
  24. package/lib/commonjs/components/Link/Link.js.map +1 -1
  25. package/lib/commonjs/components/Menu/Menu.js.map +1 -1
  26. package/lib/commonjs/components/Menu/MenuItem.js.map +1 -1
  27. package/lib/commonjs/components/Menu/MenuItemLabel.js.map +1 -1
  28. package/lib/commonjs/components/Menu/calculations.js.map +1 -1
  29. package/lib/commonjs/components/Menu/index.js.map +1 -1
  30. package/lib/commonjs/components/Portal/Portal.js.map +1 -1
  31. package/lib/commonjs/components/Portal/PortalContext.js.map +1 -1
  32. package/lib/commonjs/components/Portal/PortalProvider.js.map +1 -1
  33. package/lib/commonjs/components/Progress/Progress.js.map +1 -1
  34. package/lib/commonjs/components/Provider/ContextManager.js.map +1 -1
  35. package/lib/commonjs/components/Provider/NativeProvider.js.map +1 -1
  36. package/lib/commonjs/components/Radio/RadioGroup.js.map +1 -1
  37. package/lib/commonjs/components/Radio/RadioItem.js.map +1 -1
  38. package/lib/commonjs/components/Radio/index.js.map +1 -1
  39. package/lib/commonjs/components/Slider/Slider.js.map +1 -1
  40. package/lib/commonjs/components/Stack/HStack.js.map +1 -1
  41. package/lib/commonjs/components/Stack/VStack.js.map +1 -1
  42. package/lib/commonjs/components/Stack/index.js.map +1 -1
  43. package/lib/commonjs/components/StyledComponents/StyledText.js +3 -1
  44. package/lib/commonjs/components/StyledComponents/StyledText.js.map +1 -1
  45. package/lib/commonjs/components/StyledComponents/StyledView.js.map +1 -1
  46. package/lib/commonjs/components/StyledComponents/index.js.map +1 -1
  47. package/lib/commonjs/components/Surface/Surface.js +3 -3
  48. package/lib/commonjs/components/Surface/Surface.js.map +1 -1
  49. package/lib/commonjs/components/Switch/Switch.js.map +1 -1
  50. package/lib/commonjs/components/TouchableRipple/TouchableRipple.js.map +1 -1
  51. package/lib/commonjs/components/UserInput/UserInput.js.map +1 -1
  52. package/lib/commonjs/components/UserInput/UserInputV2.js.map +1 -1
  53. package/lib/commonjs/components/UserInput/generateColors.js.map +1 -1
  54. package/lib/commonjs/constants/breakPoints.js.map +1 -1
  55. package/lib/commonjs/constants/dialogSizes.js.map +1 -1
  56. package/lib/commonjs/constants/index.js.map +1 -1
  57. package/lib/commonjs/constants/theme.js.map +1 -1
  58. package/lib/commonjs/constants/typographySizes.js.map +1 -1
  59. package/lib/commonjs/helpers/CalculateGridSize.js +1 -1
  60. package/lib/commonjs/helpers/CalculateGridSize.js.map +1 -1
  61. package/lib/commonjs/helpers/DeviceSizeCategory.js.map +1 -1
  62. package/lib/commonjs/helpers/ResponsiveCalculations.js +4 -1
  63. package/lib/commonjs/helpers/ResponsiveCalculations.js.map +1 -1
  64. package/lib/commonjs/helpers/index.js.map +1 -1
  65. package/lib/commonjs/hooks/index.js.map +1 -1
  66. package/lib/commonjs/hooks/useColorScheme.js.map +1 -1
  67. package/lib/commonjs/hooks/useConditionalWindowDimension.js.map +1 -1
  68. package/lib/commonjs/hooks/useScalingMode.js.map +1 -1
  69. package/lib/commonjs/hooks/useTheme.js.map +1 -1
  70. package/lib/commonjs/index.d.js.map +1 -1
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/themes/DarkTheme.js.map +1 -1
  73. package/lib/commonjs/themes/LightTheme.js.map +1 -1
  74. package/lib/commonjs/themes/index.js.map +1 -1
  75. package/lib/commonjs/types/avatar.type.js.map +1 -1
  76. package/lib/commonjs/types/button.type.js.map +1 -1
  77. package/lib/commonjs/types/checkbox.type.js.map +1 -1
  78. package/lib/commonjs/types/chip.type.js.map +1 -1
  79. package/lib/commonjs/types/common.type.js.map +1 -1
  80. package/lib/commonjs/types/dialog.type.js.map +1 -1
  81. package/lib/commonjs/types/divider.type.js.map +1 -1
  82. package/lib/commonjs/types/grid.type.js.map +1 -1
  83. package/lib/commonjs/types/index.js.map +1 -1
  84. package/lib/commonjs/types/link.type.js.map +1 -1
  85. package/lib/commonjs/types/menu.type.js.map +1 -1
  86. package/lib/commonjs/types/progress.type.js.map +1 -1
  87. package/lib/commonjs/types/radio.type.js.map +1 -1
  88. package/lib/commonjs/types/stack.type.js.map +1 -1
  89. package/lib/commonjs/types/styledComponents.type.js.map +1 -1
  90. package/lib/commonjs/types/surface.type.js.map +1 -1
  91. package/lib/commonjs/types/switch.type.js.map +1 -1
  92. package/lib/commonjs/types/userInput.type.js.map +1 -1
  93. package/lib/commonjs/utils/index.js.map +1 -1
  94. package/lib/module/assets/svg/Check.js.map +1 -1
  95. package/lib/module/assets/svg/X.js.map +1 -1
  96. package/lib/module/assets/svg/index.js.map +1 -1
  97. package/lib/module/components/Avatar/AvatarImage.js.map +1 -1
  98. package/lib/module/components/Avatar/AvatarText.js.map +1 -1
  99. package/lib/module/components/Avatar/index.js.map +1 -1
  100. package/lib/module/components/Button/Button.js +10 -5
  101. package/lib/module/components/Button/Button.js.map +1 -1
  102. package/lib/module/components/Button/utils.js +17 -10
  103. package/lib/module/components/Button/utils.js.map +1 -1
  104. package/lib/module/components/CheckBox/CheckBox.js.map +1 -1
  105. package/lib/module/components/Chip/Chip.js.map +1 -1
  106. package/lib/module/components/Chip/utils.js.map +1 -1
  107. package/lib/module/components/Dialog/Dialog.js.map +1 -1
  108. package/lib/module/components/Dialog/DialogBody.js.map +1 -1
  109. package/lib/module/components/Dialog/DialogDescription.js.map +1 -1
  110. package/lib/module/components/Dialog/DialogFoot.js.map +1 -1
  111. package/lib/module/components/Dialog/DialogHead.js.map +1 -1
  112. package/lib/module/components/Dialog/index.js.map +1 -1
  113. package/lib/module/components/Divider/Divider.js.map +1 -1
  114. package/lib/module/components/Grid/Grid.js.map +1 -1
  115. package/lib/module/components/Icon/Icon.js.map +1 -1
  116. package/lib/module/components/IconButton/IconButton.js.map +1 -1
  117. package/lib/module/components/Link/Link.js.map +1 -1
  118. package/lib/module/components/Menu/Menu.js.map +1 -1
  119. package/lib/module/components/Menu/MenuItem.js.map +1 -1
  120. package/lib/module/components/Menu/MenuItemLabel.js.map +1 -1
  121. package/lib/module/components/Menu/calculations.js.map +1 -1
  122. package/lib/module/components/Menu/index.js.map +1 -1
  123. package/lib/module/components/Portal/Portal.js.map +1 -1
  124. package/lib/module/components/Portal/PortalContext.js.map +1 -1
  125. package/lib/module/components/Portal/PortalProvider.js.map +1 -1
  126. package/lib/module/components/Progress/Progress.js.map +1 -1
  127. package/lib/module/components/Provider/ContextManager.js.map +1 -1
  128. package/lib/module/components/Provider/NativeProvider.js.map +1 -1
  129. package/lib/module/components/Radio/RadioGroup.js.map +1 -1
  130. package/lib/module/components/Radio/RadioItem.js.map +1 -1
  131. package/lib/module/components/Radio/index.js.map +1 -1
  132. package/lib/module/components/Slider/Slider.js.map +1 -1
  133. package/lib/module/components/Stack/HStack.js.map +1 -1
  134. package/lib/module/components/Stack/VStack.js.map +1 -1
  135. package/lib/module/components/Stack/index.js.map +1 -1
  136. package/lib/module/components/StyledComponents/StyledText.js +3 -1
  137. package/lib/module/components/StyledComponents/StyledText.js.map +1 -1
  138. package/lib/module/components/StyledComponents/StyledView.js.map +1 -1
  139. package/lib/module/components/StyledComponents/index.js.map +1 -1
  140. package/lib/module/components/Surface/Surface.js +3 -3
  141. package/lib/module/components/Surface/Surface.js.map +1 -1
  142. package/lib/module/components/Switch/Switch.js.map +1 -1
  143. package/lib/module/components/TouchableRipple/TouchableRipple.js.map +1 -1
  144. package/lib/module/components/UserInput/UserInput.js.map +1 -1
  145. package/lib/module/components/UserInput/UserInputV2.js.map +1 -1
  146. package/lib/module/components/UserInput/generateColors.js.map +1 -1
  147. package/lib/module/constants/breakPoints.js.map +1 -1
  148. package/lib/module/constants/dialogSizes.js.map +1 -1
  149. package/lib/module/constants/index.js.map +1 -1
  150. package/lib/module/constants/theme.js.map +1 -1
  151. package/lib/module/constants/typographySizes.js.map +1 -1
  152. package/lib/module/helpers/CalculateGridSize.js +1 -1
  153. package/lib/module/helpers/CalculateGridSize.js.map +1 -1
  154. package/lib/module/helpers/DeviceSizeCategory.js.map +1 -1
  155. package/lib/module/helpers/ResponsiveCalculations.js +4 -1
  156. package/lib/module/helpers/ResponsiveCalculations.js.map +1 -1
  157. package/lib/module/helpers/index.js.map +1 -1
  158. package/lib/module/hooks/index.js.map +1 -1
  159. package/lib/module/hooks/useColorScheme.js.map +1 -1
  160. package/lib/module/hooks/useConditionalWindowDimension.js.map +1 -1
  161. package/lib/module/hooks/useScalingMode.js.map +1 -1
  162. package/lib/module/hooks/useTheme.js.map +1 -1
  163. package/lib/module/index.d.js.map +1 -1
  164. package/lib/module/index.js.map +1 -1
  165. package/lib/module/themes/DarkTheme.js.map +1 -1
  166. package/lib/module/themes/LightTheme.js.map +1 -1
  167. package/lib/module/themes/index.js.map +1 -1
  168. package/lib/module/types/avatar.type.js.map +1 -1
  169. package/lib/module/types/button.type.js.map +1 -1
  170. package/lib/module/types/checkbox.type.js.map +1 -1
  171. package/lib/module/types/chip.type.js.map +1 -1
  172. package/lib/module/types/common.type.js.map +1 -1
  173. package/lib/module/types/dialog.type.js.map +1 -1
  174. package/lib/module/types/divider.type.js.map +1 -1
  175. package/lib/module/types/grid.type.js.map +1 -1
  176. package/lib/module/types/index.js.map +1 -1
  177. package/lib/module/types/link.type.js.map +1 -1
  178. package/lib/module/types/menu.type.js.map +1 -1
  179. package/lib/module/types/progress.type.js.map +1 -1
  180. package/lib/module/types/radio.type.js.map +1 -1
  181. package/lib/module/types/stack.type.js.map +1 -1
  182. package/lib/module/types/styledComponents.type.js.map +1 -1
  183. package/lib/module/types/surface.type.js.map +1 -1
  184. package/lib/module/types/switch.type.js.map +1 -1
  185. package/lib/module/types/userInput.type.js.map +1 -1
  186. package/lib/module/utils/index.js.map +1 -1
  187. package/lib/typescript/commonjs/src/components/Button/Button.d.ts.map +1 -1
  188. package/lib/typescript/commonjs/src/components/Button/utils.d.ts +2 -1
  189. package/lib/typescript/commonjs/src/components/Button/utils.d.ts.map +1 -1
  190. package/lib/typescript/commonjs/src/components/UserInput/UserInput.d.ts.map +1 -1
  191. package/lib/typescript/commonjs/src/helpers/ResponsiveCalculations.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/src/types/button.type.d.ts +2 -0
  193. package/lib/typescript/commonjs/src/types/button.type.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/src/types/surface.type.d.ts +1 -1
  195. package/lib/typescript/commonjs/src/types/surface.type.d.ts.map +1 -1
  196. package/lib/typescript/module/src/components/Button/Button.d.ts.map +1 -1
  197. package/lib/typescript/module/src/components/Button/utils.d.ts +2 -1
  198. package/lib/typescript/module/src/components/Button/utils.d.ts.map +1 -1
  199. package/lib/typescript/module/src/components/UserInput/UserInput.d.ts.map +1 -1
  200. package/lib/typescript/module/src/helpers/ResponsiveCalculations.d.ts.map +1 -1
  201. package/lib/typescript/module/src/types/button.type.d.ts +2 -0
  202. package/lib/typescript/module/src/types/button.type.d.ts.map +1 -1
  203. package/lib/typescript/module/src/types/surface.type.d.ts +1 -1
  204. package/lib/typescript/module/src/types/surface.type.d.ts.map +1 -1
  205. package/package.json +2 -2
  206. package/src/assets/svg/Check.tsx +16 -16
  207. package/src/assets/svg/X.tsx +15 -15
  208. package/src/assets/svg/index.ts +1 -1
  209. package/src/components/Avatar/AvatarImage.tsx +33 -33
  210. package/src/components/Avatar/AvatarText.tsx +34 -34
  211. package/src/components/Avatar/index.ts +8 -8
  212. package/src/components/Button/Button.tsx +216 -205
  213. package/src/components/Button/utils.ts +152 -141
  214. package/src/components/CheckBox/CheckBox.tsx +118 -118
  215. package/src/components/Chip/Chip.tsx +82 -82
  216. package/src/components/Chip/utils.ts +109 -109
  217. package/src/components/Dialog/Dialog.tsx +124 -124
  218. package/src/components/Dialog/DialogBody.tsx +31 -31
  219. package/src/components/Dialog/DialogDescription.tsx +27 -27
  220. package/src/components/Dialog/DialogFoot.tsx +35 -35
  221. package/src/components/Dialog/DialogHead.tsx +50 -50
  222. package/src/components/Dialog/index.ts +10 -10
  223. package/src/components/Divider/Divider.tsx +22 -22
  224. package/src/components/Grid/Grid.tsx +61 -61
  225. package/src/components/Icon/Icon.tsx +31 -31
  226. package/src/components/IconButton/IconButton.tsx +44 -44
  227. package/src/components/Link/Link.tsx +38 -38
  228. package/src/components/Menu/Menu.tsx +142 -142
  229. package/src/components/Menu/MenuItem.tsx +33 -33
  230. package/src/components/Menu/MenuItemLabel.tsx +21 -21
  231. package/src/components/Menu/calculations.ts +33 -33
  232. package/src/components/Menu/index.ts +7 -7
  233. package/src/components/Portal/Portal.tsx +18 -18
  234. package/src/components/Portal/PortalContext.tsx +9 -9
  235. package/src/components/Portal/PortalProvider.tsx +36 -36
  236. package/src/components/Progress/Progress.tsx +66 -66
  237. package/src/components/Provider/ContextManager.tsx +8 -8
  238. package/src/components/Provider/NativeProvider.tsx +72 -72
  239. package/src/components/Radio/RadioGroup.tsx +39 -39
  240. package/src/components/Radio/RadioItem.tsx +72 -72
  241. package/src/components/Radio/index.ts +8 -8
  242. package/src/components/Slider/Slider.tsx +45 -45
  243. package/src/components/Stack/HStack.tsx +32 -32
  244. package/src/components/Stack/VStack.tsx +26 -26
  245. package/src/components/Stack/index.ts +8 -8
  246. package/src/components/StyledComponents/StyledText.tsx +49 -49
  247. package/src/components/StyledComponents/StyledView.tsx +44 -44
  248. package/src/components/StyledComponents/index.tsx +5 -5
  249. package/src/components/Surface/Surface.tsx +31 -31
  250. package/src/components/Switch/Switch.tsx +36 -36
  251. package/src/components/TouchableRipple/TouchableRipple.tsx +92 -92
  252. package/src/components/UserInput/UserInput.tsx +135 -135
  253. package/src/components/UserInput/UserInputV2.tsx +132 -132
  254. package/src/components/UserInput/generateColors.ts +13 -13
  255. package/src/constants/breakPoints.ts +17 -17
  256. package/src/constants/dialogSizes.ts +11 -11
  257. package/src/constants/index.ts +2 -2
  258. package/src/constants/theme.ts +32 -32
  259. package/src/constants/typographySizes.ts +19 -19
  260. package/src/helpers/CalculateGridSize.ts +25 -25
  261. package/src/helpers/DeviceSizeCategory.ts +21 -21
  262. package/src/helpers/ResponsiveCalculations.ts +107 -104
  263. package/src/helpers/index.ts +2 -2
  264. package/src/hooks/index.ts +3 -3
  265. package/src/hooks/useColorScheme.tsx +11 -11
  266. package/src/hooks/useConditionalWindowDimension.tsx +7 -7
  267. package/src/hooks/useScalingMode.tsx +6 -6
  268. package/src/hooks/useTheme.tsx +12 -12
  269. package/src/index.d.ts +2 -2
  270. package/src/index.ts +52 -52
  271. package/src/themes/DarkTheme.ts +177 -177
  272. package/src/themes/LightTheme.ts +88 -88
  273. package/src/themes/index.ts +3 -3
  274. package/src/types/avatar.type.ts +40 -40
  275. package/src/types/button.type.ts +79 -76
  276. package/src/types/checkbox.type.ts +64 -64
  277. package/src/types/chip.type.ts +65 -65
  278. package/src/types/common.type.ts +109 -109
  279. package/src/types/dialog.type.ts +89 -89
  280. package/src/types/divider.type.ts +15 -15
  281. package/src/types/grid.type.ts +71 -71
  282. package/src/types/index.ts +16 -16
  283. package/src/types/link.type.ts +14 -14
  284. package/src/types/menu.type.ts +100 -100
  285. package/src/types/progress.type.ts +15 -15
  286. package/src/types/radio.type.ts +78 -78
  287. package/src/types/stack.type.ts +46 -46
  288. package/src/types/styledComponents.type.ts +70 -70
  289. package/src/types/surface.type.ts +19 -19
  290. package/src/types/switch.type.ts +39 -39
  291. package/src/types/userInput.type.ts +98 -98
@@ -1,37 +1,37 @@
1
- import React, { useCallback, useMemo, useState } from "react";
2
- import PortalContext from "./PortalContext";
3
- interface PortalProviderProps {
4
- children: React.ReactNode;
5
- }
6
- interface Element {
7
- name: string;
8
- component: React.ReactNode;
9
- }
10
- const PortalProvider: React.FC<PortalProviderProps> = ({ children }) => {
11
-
12
- const [components, setComponents] = useState<Record<string, React.ReactNode>>({});
13
- const addComponent = useCallback(({ name, component }: Element) => {
14
- setComponents(prevComponents => ({
15
- ...prevComponents,
16
- [name]: component
17
- }));
18
- },[]);
19
- const removeComponent = useCallback((name: string) => {
20
- setComponents(prevComponents => {
21
- const newComponents = { ...prevComponents };
22
- delete newComponents[name];
23
- return newComponents;
24
- });
25
- },[])
26
- const values = useMemo(()=>({addComponent, removeComponent}), []);
27
- return (<>
28
- <PortalContext.Provider value={values}>
29
- {children}
30
- {Object.entries(components).map(([_name, Component]) => (
31
- Component
32
- ))}
33
- </PortalContext.Provider>
34
- </>);
35
-
36
- }
1
+ import React, { useCallback, useMemo, useState } from "react";
2
+ import PortalContext from "./PortalContext";
3
+ interface PortalProviderProps {
4
+ children: React.ReactNode;
5
+ }
6
+ interface Element {
7
+ name: string;
8
+ component: React.ReactNode;
9
+ }
10
+ const PortalProvider: React.FC<PortalProviderProps> = ({ children }) => {
11
+
12
+ const [components, setComponents] = useState<Record<string, React.ReactNode>>({});
13
+ const addComponent = useCallback(({ name, component }: Element) => {
14
+ setComponents(prevComponents => ({
15
+ ...prevComponents,
16
+ [name]: component
17
+ }));
18
+ },[]);
19
+ const removeComponent = useCallback((name: string) => {
20
+ setComponents(prevComponents => {
21
+ const newComponents = { ...prevComponents };
22
+ delete newComponents[name];
23
+ return newComponents;
24
+ });
25
+ },[])
26
+ const values = useMemo(()=>({addComponent, removeComponent}), []);
27
+ return (<>
28
+ <PortalContext.Provider value={values}>
29
+ {children}
30
+ {Object.entries(components).map(([_name, Component]) => (
31
+ Component
32
+ ))}
33
+ </PortalContext.Provider>
34
+ </>);
35
+
36
+ }
37
37
  export default PortalProvider;
@@ -1,67 +1,67 @@
1
- import { useEffect, useMemo, useRef, type FC } from 'react';
2
- import { Animated, StyleSheet } from "react-native";
3
- import { verticalScale } from "../../helpers/ResponsiveCalculations";
4
- import { StyledView } from '../StyledComponents';
5
- import { useTheme } from '../../hooks';
6
- import type { ProgressProps } from '../../types';
7
-
8
- const Progress: FC<ProgressProps> = ({
9
- value = 50,
10
- thickness = 5,
11
- br = 100,
12
- trackColor,
13
- progressColor,
14
- }) => {
15
-
16
- const animatedWidth = useRef(new Animated.Value(value)).current;
17
- const theme = useTheme();
18
- trackColor = theme?.colors.palette.natural[200];
19
-
20
- useEffect(() => {
21
- Animated.timing(animatedWidth, {
22
- toValue: value / 100,
23
- duration: 1000,
24
- useNativeDriver: true,
25
- }).start();
26
- }, [value]);
27
-
28
- const dynamicStyles = useMemo(() => ({
29
- TRACK: {
30
- backgroundColor: trackColor,
31
- borderRadius: verticalScale(br),
32
- height: verticalScale(thickness),
33
- },
34
- TRACK_ITEM: {
35
- backgroundColor: progressColor ?? theme?.colors.brand.primary,
36
- borderRadius: verticalScale(br),
37
- }
38
- }), [br, trackColor, thickness, progressColor, theme]);
39
-
40
- const animatedViewStyle = {
41
- transform: [{ scaleX: animatedWidth }],
42
- transformOrigin: 'left'
43
- }
44
-
45
- return (<>
46
- <StyledView
47
- style={[STYLES.TRACK, dynamicStyles.TRACK]}
48
- >
49
- <Animated.View
50
- style={[STYLES.TRACK_ITEM, dynamicStyles.TRACK_ITEM, animatedViewStyle]}
51
- />
52
- </StyledView>
53
- </>);
54
- };
55
- export default Progress;
56
- export type { ProgressProps };
57
-
58
- const STYLES = StyleSheet.create({
59
- TRACK: {
60
- overflow: 'hidden',
61
- width: '100%',
62
- },
63
- TRACK_ITEM: {
64
- width: "100%",
65
- height: '100%'
66
- }
1
+ import { useEffect, useMemo, useRef, type FC } from 'react';
2
+ import { Animated, StyleSheet } from "react-native";
3
+ import { verticalScale } from "../../helpers/ResponsiveCalculations";
4
+ import { StyledView } from '../StyledComponents';
5
+ import { useTheme } from '../../hooks';
6
+ import type { ProgressProps } from '../../types';
7
+
8
+ const Progress: FC<ProgressProps> = ({
9
+ value = 50,
10
+ thickness = 5,
11
+ br = 100,
12
+ trackColor,
13
+ progressColor,
14
+ }) => {
15
+
16
+ const animatedWidth = useRef(new Animated.Value(value)).current;
17
+ const theme = useTheme();
18
+ trackColor = theme?.colors.palette.natural[200];
19
+
20
+ useEffect(() => {
21
+ Animated.timing(animatedWidth, {
22
+ toValue: value / 100,
23
+ duration: 1000,
24
+ useNativeDriver: true,
25
+ }).start();
26
+ }, [value]);
27
+
28
+ const dynamicStyles = useMemo(() => ({
29
+ TRACK: {
30
+ backgroundColor: trackColor,
31
+ borderRadius: verticalScale(br),
32
+ height: verticalScale(thickness),
33
+ },
34
+ TRACK_ITEM: {
35
+ backgroundColor: progressColor ?? theme?.colors.brand.primary,
36
+ borderRadius: verticalScale(br),
37
+ }
38
+ }), [br, trackColor, thickness, progressColor, theme]);
39
+
40
+ const animatedViewStyle = {
41
+ transform: [{ scaleX: animatedWidth }],
42
+ transformOrigin: 'left'
43
+ }
44
+
45
+ return (<>
46
+ <StyledView
47
+ style={[STYLES.TRACK, dynamicStyles.TRACK]}
48
+ >
49
+ <Animated.View
50
+ style={[STYLES.TRACK_ITEM, dynamicStyles.TRACK_ITEM, animatedViewStyle]}
51
+ />
52
+ </StyledView>
53
+ </>);
54
+ };
55
+ export default Progress;
56
+ export type { ProgressProps };
57
+
58
+ const STYLES = StyleSheet.create({
59
+ TRACK: {
60
+ overflow: 'hidden',
61
+ width: '100%',
62
+ },
63
+ TRACK_ITEM: {
64
+ width: "100%",
65
+ height: '100%'
66
+ }
67
67
  });
@@ -1,9 +1,9 @@
1
- let _contextValue: any = null
2
-
3
- export const setGlobalContext = (ctx: any) => {
4
- _contextValue = ctx;
5
- };
6
-
7
- export const getGlobalContext = () => {
8
- return _contextValue;
1
+ let _contextValue: any = null
2
+
3
+ export const setGlobalContext = (ctx: any) => {
4
+ _contextValue = ctx;
5
+ };
6
+
7
+ export const getGlobalContext = () => {
8
+ return _contextValue;
9
9
  };
@@ -1,73 +1,73 @@
1
- import React, { createContext, useMemo, useState } from 'react';
2
- import type { ReactNode } from "react";
3
- import { LightTheme, DarkTheme } from '../../themes';
4
- import type { scalingModeTypes, Theme, themeModeTypes, ThemeTypes } from '../../types';
5
- import { setGlobalContext } from './ContextManager';
6
-
7
- type ProviderProps = {
8
- /**
9
- * The child components that will be wrapped by the provider.
10
- * This ensures all components within the provider have access to the theme context.
11
- */
12
- children: ReactNode;
13
-
14
- /**
15
- * Determines whether the theme should be responsive based on screen size.
16
- * Default: `true`
17
- */
18
- // isResponsive?: boolean;
19
-
20
- /**
21
- * Custom theme object that overrides the default light/dark themes.
22
- * If not provided, the default themes (LightTheme/DarkTheme) will be used.
23
- */
24
- theme?: Theme;
25
-
26
- options?: {
27
- defaultTheme?: themeModeTypes;
28
- scalingMode?: scalingModeTypes;
29
- }
30
- };
31
-
32
- type ThemeContextType = {
33
- theme?: ThemeTypes & {
34
- toggleThemeMode: () => void;
35
- };
36
- mode?: themeModeTypes;
37
- scaling: { mode: scalingModeTypes }
38
- };
39
-
40
-
41
- export const Context = createContext<ThemeContextType>({
42
- mode: 'light',
43
- theme: { ...LightTheme, toggleThemeMode: () => { } },
44
- scaling: { mode: 'partial' }
45
- });
46
-
47
- const NativeProvider: React.FC<ProviderProps> = ({
48
- children,
49
- theme,
50
- options
51
- }) => {
52
- const [mode, setMode] = useState<themeModeTypes>(options?.defaultTheme ?? 'light');
53
- const toggleThemeMode = () => setMode((prev) => prev === 'dark' ? 'light' : 'dark');
54
- const setTheme = { ...((theme && theme[mode]) || (mode === 'light' ? LightTheme : DarkTheme)), toggleThemeMode };
55
- const value = useMemo(() => ({
56
- theme: setTheme,
57
- mode,
58
- scaling: { mode: options?.scalingMode ?? 'partial' }
59
- }), [theme, mode, options]);
60
-
61
- // useLayoutEffect(() => {
62
- // setGlobalContext(value);
63
- // }, [value]);
64
- setGlobalContext(value);
65
-
66
- return (<>
67
- <Context.Provider value={value}>
68
- {children}
69
- </Context.Provider>
70
- </>);
71
- }
72
- export default NativeProvider;
1
+ import React, { createContext, useMemo, useState } from 'react';
2
+ import type { ReactNode } from "react";
3
+ import { LightTheme, DarkTheme } from '../../themes';
4
+ import type { scalingModeTypes, Theme, themeModeTypes, ThemeTypes } from '../../types';
5
+ import { setGlobalContext } from './ContextManager';
6
+
7
+ type ProviderProps = {
8
+ /**
9
+ * The child components that will be wrapped by the provider.
10
+ * This ensures all components within the provider have access to the theme context.
11
+ */
12
+ children: ReactNode;
13
+
14
+ /**
15
+ * Determines whether the theme should be responsive based on screen size.
16
+ * Default: `true`
17
+ */
18
+ // isResponsive?: boolean;
19
+
20
+ /**
21
+ * Custom theme object that overrides the default light/dark themes.
22
+ * If not provided, the default themes (LightTheme/DarkTheme) will be used.
23
+ */
24
+ theme?: Theme;
25
+
26
+ options?: {
27
+ defaultTheme?: themeModeTypes;
28
+ scalingMode?: scalingModeTypes;
29
+ }
30
+ };
31
+
32
+ type ThemeContextType = {
33
+ theme?: ThemeTypes & {
34
+ toggleThemeMode: () => void;
35
+ };
36
+ mode?: themeModeTypes;
37
+ scaling: { mode: scalingModeTypes }
38
+ };
39
+
40
+
41
+ export const Context = createContext<ThemeContextType>({
42
+ mode: 'light',
43
+ theme: { ...LightTheme, toggleThemeMode: () => { } },
44
+ scaling: { mode: 'partial' }
45
+ });
46
+
47
+ const NativeProvider: React.FC<ProviderProps> = ({
48
+ children,
49
+ theme,
50
+ options
51
+ }) => {
52
+ const [mode, setMode] = useState<themeModeTypes>(options?.defaultTheme ?? 'light');
53
+ const toggleThemeMode = () => setMode((prev) => prev === 'dark' ? 'light' : 'dark');
54
+ const setTheme = { ...((theme && theme[mode]) || (mode === 'light' ? LightTheme : DarkTheme)), toggleThemeMode };
55
+ const value = useMemo(() => ({
56
+ theme: setTheme,
57
+ mode,
58
+ scaling: { mode: options?.scalingMode ?? 'partial' }
59
+ }), [theme, mode, options]);
60
+
61
+ // useLayoutEffect(() => {
62
+ // setGlobalContext(value);
63
+ // }, [value]);
64
+ setGlobalContext(value);
65
+
66
+ return (<>
67
+ <Context.Provider value={value}>
68
+ {children}
69
+ </Context.Provider>
70
+ </>);
71
+ }
72
+ export default NativeProvider;
73
73
  export type { ProviderProps };
@@ -1,40 +1,40 @@
1
- import React, { useCallback, useState, type FC } from "react";
2
- import { StyledView } from "../StyledComponents";
3
- import type { RadioGroupProps } from "../../types";
4
-
5
-
6
- const RadioGroup: FC<RadioGroupProps> = ({
7
- name,
8
- defaultValue,
9
- children,
10
- onSelect,
11
- ...rest
12
- }) => {
13
-
14
- const [selectedChildren, setSelectedChildren] = useState<string>(defaultValue ?? '');
15
-
16
- const renderChildren = useCallback(() => {
17
- return React.Children.toArray(children).map((child) => {
18
- if (React.isValidElement<{ name: string; value: string; active: boolean; disabled?: boolean; onPress: () => void; }>(child)) {
19
- return React.cloneElement(child, {
20
- active: selectedChildren === child.props.value,
21
- onPress: () => {
22
- if (!('disabled' in child.props) && !child?.props?.disabled) {
23
- child.props?.onPress?.();
24
- onSelect?.(name || child.props.name, child.props.value);
25
- setSelectedChildren(child?.props?.value);
26
- }
27
- }
28
- })
29
- }
30
- return null;
31
- })
32
- }, [children, selectedChildren]);
33
-
34
- return (<>
35
- <StyledView flexDirection='row' gap={15} {...rest}>
36
- {renderChildren()}
37
- </StyledView>
38
- </>);
39
- }
1
+ import React, { useCallback, useState, type FC } from "react";
2
+ import { StyledView } from "../StyledComponents";
3
+ import type { RadioGroupProps } from "../../types";
4
+
5
+
6
+ const RadioGroup: FC<RadioGroupProps> = ({
7
+ name,
8
+ defaultValue,
9
+ children,
10
+ onSelect,
11
+ ...rest
12
+ }) => {
13
+
14
+ const [selectedChildren, setSelectedChildren] = useState<string>(defaultValue ?? '');
15
+
16
+ const renderChildren = useCallback(() => {
17
+ return React.Children.toArray(children).map((child) => {
18
+ if (React.isValidElement<{ name: string; value: string; active: boolean; disabled?: boolean; onPress: () => void; }>(child)) {
19
+ return React.cloneElement(child, {
20
+ active: selectedChildren === child.props.value,
21
+ onPress: () => {
22
+ if (!('disabled' in child.props) && !child?.props?.disabled) {
23
+ child.props?.onPress?.();
24
+ onSelect?.(name || child.props.name, child.props.value);
25
+ setSelectedChildren(child?.props?.value);
26
+ }
27
+ }
28
+ })
29
+ }
30
+ return null;
31
+ })
32
+ }, [children, selectedChildren]);
33
+
34
+ return (<>
35
+ <StyledView flexDirection='row' gap={15} {...rest}>
36
+ {renderChildren()}
37
+ </StyledView>
38
+ </>);
39
+ }
40
40
  export default RadioGroup;
@@ -1,72 +1,72 @@
1
- import { useMemo, type FC } from "react";
2
- import { StyledText, StyledView } from "../StyledComponents";
3
- import { StyleSheet, TouchableOpacity, type ViewStyle } from "react-native";
4
- import { horizontalScale } from "../../helpers";
5
- import { useTheme } from "../../hooks";
6
- import type { RadioItemProps } from "../../types";
7
-
8
- const RadioItem: FC<RadioItemProps> = ({
9
- size = 22,
10
- stroke = 2,
11
- color,
12
- active = false,
13
- name,
14
- disabled,
15
- label,
16
- fs,
17
- fScale = 'base',
18
- ff,
19
- labelStyle,
20
- ...rest
21
- }) => {
22
-
23
- const STYLES = useMemo(customStyles, []);
24
- const theme = useTheme();
25
-
26
- const themedColor = (disabled && theme?.colors.states.disabled) || (color ?? theme?.colors.brand.primary);
27
-
28
- const dynamicStyles: ViewStyle = {
29
- borderColor: themedColor,
30
- borderWidth: stroke,
31
- padding: 2,
32
- height: size,
33
- width: size,
34
- }
35
- return (<>
36
- <TouchableOpacity
37
- {...rest}
38
- >
39
- <StyledView style={STYLES.MAIN_CONT}>
40
- <StyledView style={[STYLES.RADIO_OUTER_CONT, dynamicStyles]}>
41
- {
42
- active &&
43
- <StyledView style={[STYLES.RADIO_INNER_CONT]} bg={themedColor} />
44
- }
45
- </StyledView>
46
- {
47
- label &&
48
- <StyledText variant={disabled ? 'disabled' : 'primary'} ff={ff} fs={fs} fScale={fScale} style={labelStyle} >{label}</StyledText>
49
- }
50
- </StyledView>
51
- </TouchableOpacity>
52
- </>);
53
- }
54
-
55
- export default RadioItem;
56
-
57
- const customStyles = () => StyleSheet.create({
58
- MAIN_CONT: {
59
- flexDirection: 'row',
60
- gap: horizontalScale(15),
61
- alignItems: 'center',
62
- },
63
- RADIO_OUTER_CONT: {
64
- borderRadius: 100,
65
- overflow: 'hidden'
66
- },
67
- RADIO_INNER_CONT: {
68
- width: '100%',
69
- height: '100%',
70
- borderRadius: 100
71
- }
72
- });
1
+ import { useMemo, type FC } from "react";
2
+ import { StyledText, StyledView } from "../StyledComponents";
3
+ import { StyleSheet, TouchableOpacity, type ViewStyle } from "react-native";
4
+ import { horizontalScale } from "../../helpers";
5
+ import { useTheme } from "../../hooks";
6
+ import type { RadioItemProps } from "../../types";
7
+
8
+ const RadioItem: FC<RadioItemProps> = ({
9
+ size = 22,
10
+ stroke = 2,
11
+ color,
12
+ active = false,
13
+ name,
14
+ disabled,
15
+ label,
16
+ fs,
17
+ fScale = 'base',
18
+ ff,
19
+ labelStyle,
20
+ ...rest
21
+ }) => {
22
+
23
+ const STYLES = useMemo(customStyles, []);
24
+ const theme = useTheme();
25
+
26
+ const themedColor = (disabled && theme?.colors.states.disabled) || (color ?? theme?.colors.brand.primary);
27
+
28
+ const dynamicStyles: ViewStyle = {
29
+ borderColor: themedColor,
30
+ borderWidth: stroke,
31
+ padding: 2,
32
+ height: size,
33
+ width: size,
34
+ }
35
+ return (<>
36
+ <TouchableOpacity
37
+ {...rest}
38
+ >
39
+ <StyledView style={STYLES.MAIN_CONT}>
40
+ <StyledView style={[STYLES.RADIO_OUTER_CONT, dynamicStyles]}>
41
+ {
42
+ active &&
43
+ <StyledView style={[STYLES.RADIO_INNER_CONT]} bg={themedColor} />
44
+ }
45
+ </StyledView>
46
+ {
47
+ label &&
48
+ <StyledText variant={disabled ? 'disabled' : 'primary'} ff={ff} fs={fs} fScale={fScale} style={labelStyle} >{label}</StyledText>
49
+ }
50
+ </StyledView>
51
+ </TouchableOpacity>
52
+ </>);
53
+ }
54
+
55
+ export default RadioItem;
56
+
57
+ const customStyles = () => StyleSheet.create({
58
+ MAIN_CONT: {
59
+ flexDirection: 'row',
60
+ gap: horizontalScale(15),
61
+ alignItems: 'center',
62
+ },
63
+ RADIO_OUTER_CONT: {
64
+ borderRadius: 100,
65
+ overflow: 'hidden'
66
+ },
67
+ RADIO_INNER_CONT: {
68
+ width: '100%',
69
+ height: '100%',
70
+ borderRadius: 100
71
+ }
72
+ });
@@ -1,9 +1,9 @@
1
- import RadioGroup from "./RadioGroup";
2
- import RadioItem from "./RadioItem";
3
-
4
- const Radio = {
5
- Group: RadioGroup,
6
- Item: RadioItem
7
- }
8
-
1
+ import RadioGroup from "./RadioGroup";
2
+ import RadioItem from "./RadioItem";
3
+
4
+ const Radio = {
5
+ Group: RadioGroup,
6
+ Item: RadioItem
7
+ }
8
+
9
9
  export default Radio;