react-native-exp-fig 0.1.0

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 (96) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +119 -0
  3. package/package.json +200 -0
  4. package/react-native.config.js +4 -0
  5. package/src/assets/fonts/Inter-Black.ttf +0 -0
  6. package/src/assets/fonts/Inter-Bold.ttf +0 -0
  7. package/src/assets/fonts/Inter-ExtraBold.ttf +0 -0
  8. package/src/assets/fonts/Inter-ExtraLight.ttf +0 -0
  9. package/src/assets/fonts/Inter-Light.ttf +0 -0
  10. package/src/assets/fonts/Inter-Medium.ttf +0 -0
  11. package/src/assets/fonts/Inter-Regular.ttf +0 -0
  12. package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
  13. package/src/assets/fonts/Inter-Thin.ttf +0 -0
  14. package/src/common/icons-svg/arrow-drop-down/index.tsx +28 -0
  15. package/src/common/icons-svg/arrow-left/index.tsx +32 -0
  16. package/src/common/icons-svg/bluetooth/index.tsx +37 -0
  17. package/src/common/icons-svg/bluetooth-connected/index.tsx +41 -0
  18. package/src/common/icons-svg/calendar/index.tsx +40 -0
  19. package/src/common/icons-svg/call-bell/index.tsx +29 -0
  20. package/src/common/icons-svg/camera-plus/index.tsx +40 -0
  21. package/src/common/icons-svg/check-box-fill/index.tsx +30 -0
  22. package/src/common/icons-svg/check-box-outline/index.tsx +30 -0
  23. package/src/common/icons-svg/check-circle/index.tsx +27 -0
  24. package/src/common/icons-svg/closed/index.tsx +34 -0
  25. package/src/common/icons-svg/constants/index.ts +43 -0
  26. package/src/common/icons-svg/credit-card/index.tsx +32 -0
  27. package/src/common/icons-svg/currency/index.tsx +39 -0
  28. package/src/common/icons-svg/eye/index.tsx +31 -0
  29. package/src/common/icons-svg/eye-slash/index.tsx +31 -0
  30. package/src/common/icons-svg/file-text/index.tsx +39 -0
  31. package/src/common/icons-svg/gas-pump/index.tsx +39 -0
  32. package/src/common/icons-svg/gauge/index.tsx +39 -0
  33. package/src/common/icons-svg/gear/index.tsx +39 -0
  34. package/src/common/icons-svg/index.tsx +149 -0
  35. package/src/common/icons-svg/interface.d.ts +18 -0
  36. package/src/common/icons-svg/list/index.tsx +58 -0
  37. package/src/common/icons-svg/moon-stars/index.tsx +29 -0
  38. package/src/common/icons-svg/note-pincel/index.tsx +40 -0
  39. package/src/common/icons-svg/package-check/index.tsx +45 -0
  40. package/src/common/icons-svg/shopping-cart/index.tsx +39 -0
  41. package/src/common/icons-svg/steering-wheel/index.tsx +49 -0
  42. package/src/common/icons-svg/steering-wheel-fill/index.tsx +36 -0
  43. package/src/common/icons-svg/timer/index.tsx +39 -0
  44. package/src/common/icons-svg/trophy/index.tsx +29 -0
  45. package/src/common/icons-svg/truck/index.tsx +39 -0
  46. package/src/common/icons-svg/wifi-high/index.tsx +43 -0
  47. package/src/common/icons-svg/wifi-x/index.tsx +50 -0
  48. package/src/components/box/index.tsx +47 -0
  49. package/src/components/box/interface.d.ts +31 -0
  50. package/src/components/box/styles.ts +21 -0
  51. package/src/components/button/index.tsx +61 -0
  52. package/src/components/button/interface.d.ts +40 -0
  53. package/src/components/button/styles.ts +34 -0
  54. package/src/components/capture-photo/index.tsx +125 -0
  55. package/src/components/capture-photo/interface.d.ts +44 -0
  56. package/src/components/capture-photo/styles.ts +24 -0
  57. package/src/components/card-hours/index.tsx +118 -0
  58. package/src/components/card-hours/interface.d.ts +37 -0
  59. package/src/components/card-scheduled-journey/index.tsx +138 -0
  60. package/src/components/card-scheduled-journey/interface.ts +42 -0
  61. package/src/components/card-scheduled-journey/styles.ts +26 -0
  62. package/src/components/header-profile/index.tsx +128 -0
  63. package/src/components/header-profile/interface.d.ts +52 -0
  64. package/src/components/input/index.tsx +180 -0
  65. package/src/components/input/interface.d.ts +55 -0
  66. package/src/components/input/styles.ts +23 -0
  67. package/src/components/scheduled-journey-indicators/index.tsx +99 -0
  68. package/src/components/scheduled-journey-indicators/interface.d.ts +18 -0
  69. package/src/components/selects/select-option/index.tsx +104 -0
  70. package/src/components/selects/select-option/interface.d.ts +18 -0
  71. package/src/components/selects/select-option/styles.ts +75 -0
  72. package/src/components/step-indicator/helpers/get-icon-by-status.tsx +20 -0
  73. package/src/components/step-indicator/index.tsx +164 -0
  74. package/src/components/step-indicator/interface.d.ts +34 -0
  75. package/src/components/step-indicator/styles.ts +67 -0
  76. package/src/components/typography/index.tsx +67 -0
  77. package/src/components/typography/interface.d.ts +102 -0
  78. package/src/components/typography/styles.ts +34 -0
  79. package/src/index.tsx +23 -0
  80. package/src/stories/box/box.stories.tsx +106 -0
  81. package/src/stories/button/button.stories.tsx +143 -0
  82. package/src/stories/capture-photo/capture-photo.stories.tsx +170 -0
  83. package/src/stories/card-hours/card-hours.stories.tsx +102 -0
  84. package/src/stories/card-scheduled-journey/card-scheduled-journey.stories.tsx +101 -0
  85. package/src/stories/header-profile/header-profile.stories.tsx +84 -0
  86. package/src/stories/input/input.stories.tsx +286 -0
  87. package/src/stories/scheduled-journey-indicators/sheduled-journey-indicators.stories.tsx +74 -0
  88. package/src/stories/select-option/select-option.stories.tsx +46 -0
  89. package/src/stories/step-indicator/step-indicator.stories.tsx +116 -0
  90. package/src/stories/typography/typography.stories.tsx +146 -0
  91. package/src/styles/global/interface.d.ts +131 -0
  92. package/src/styles/global/styles.ts +63 -0
  93. package/src/styles/global/theme-provider.tsx +10 -0
  94. package/src/styles/theme/theme.ts +156 -0
  95. package/src/utils/format-data/index.ts +14 -0
  96. package/src/utils/mutiply/index.ts +3 -0
@@ -0,0 +1,40 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, G, Defs, ClipPath } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconNotePencil: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? 24}
15
+ height={size ?? 24}
16
+ fill="none"
17
+ viewBox="0 0 25 25"
18
+ >
19
+ <G
20
+ stroke={color ?? "#050022"}
21
+ strokeLinecap="round"
22
+ strokeLinejoin="round"
23
+ strokeWidth="2"
24
+ clipPath="url(#clip0_5169_183)"
25
+ >
26
+ <Path d="M12.047 15.928h-3v-3l9-9 3 3-9 9zM15.797 6.178l3 3"></Path>
27
+ <Path d="M20.297 12.928v7.5a.75.75 0 01-.75.75h-15a.75.75 0 01-.75-.75v-15a.75.75 0 01.75-.75h7.5"></Path>
28
+ </G>
29
+ <Defs>
30
+ <ClipPath id="clip0_5169_183">
31
+ <Path fill="#fff" d="M0 0H24V24H0z" transform="translate(.047 .928)"></Path>
32
+ </ClipPath>
33
+ </Defs>
34
+ </Svg>
35
+ );
36
+
37
+ /**
38
+ * EXPORTS
39
+ */
40
+ export { SvgIconNotePencil };
@@ -0,0 +1,45 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import Svg, { Path } from "react-native-svg";
6
+ /**
7
+ * typings
8
+ */
9
+ import { ISvgProps } from "../interface";
10
+
11
+ const IconPackageCheck: React.FC<ISvgProps> = ({ color, size, ...res }) => (
12
+ <Svg
13
+ //@ts-ignore
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ width={size ?? 24}
16
+ height={size ?? 24}
17
+ fill="none"
18
+ viewBox="0 0 24 24"
19
+ {...res}
20
+ >
21
+ <Path
22
+ stroke={color ?? "#fff"}
23
+ strokeLinecap="round"
24
+ strokeLinejoin="round"
25
+ d="M16 16l2 2 4-4"
26
+ ></Path>
27
+ <Path
28
+ stroke={color ?? "#fff"}
29
+ strokeLinecap="round"
30
+ strokeLinejoin="round"
31
+ d="M21 10V8a2 2 0 00-1-1.73l-7-4a2 2 0 00-2 0l-7 4A2 2 0 003 8v8a2 2 0 001 1.73l7 4a2 2 0 002 0l2-1.14M16.5 9.4L7.55 4.24"
32
+ ></Path>
33
+ <Path
34
+ stroke={color ?? "#fff"}
35
+ strokeLinecap="round"
36
+ strokeLinejoin="round"
37
+ d="M3.29 7L12 12l8.71-5M12 22V12"
38
+ ></Path>
39
+ </Svg>
40
+ );
41
+
42
+ /**
43
+ * EXPORTS
44
+ */
45
+ export { IconPackageCheck };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import Svg, { Path } from "react-native-svg";
6
+ /**
7
+ * typings
8
+ */
9
+ import { ISvgProps } from "../interface";
10
+
11
+ const IconShoppingCart: React.FC<ISvgProps> = ({ color, size, ...res }) => (
12
+ <Svg
13
+ //@ts-ignore
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ width={size ?? 24}
16
+ height={size ?? 24}
17
+ fill="none"
18
+ viewBox="0 0 24 24"
19
+ {...res}
20
+ >
21
+ <Path
22
+ stroke={color ?? "#fff"}
23
+ strokeLinecap="round"
24
+ strokeLinejoin="round"
25
+ d="M7 23a1 1 0 100-2 1 1 0 000 2zM18 23a1 1 0 100-2 1 1 0 000 2zM1.05 3.05h2l2.66 12.42a2 2 0 002 1.58h9.78a2 2 0 001.95-1.57l1.65-7.43m-16.97 0h10.242"
26
+ ></Path>
27
+ <Path
28
+ stroke={color ?? "#fff"}
29
+ strokeLinecap="round"
30
+ strokeLinejoin="round"
31
+ d="M21 5l-8.938 10L8 10.454"
32
+ ></Path>
33
+ </Svg>
34
+ );
35
+
36
+ /**
37
+ * EXPORTS
38
+ */
39
+ export { IconShoppingCart };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, Defs, G, ClipPath } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconSteeringWheel: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? 24}
15
+ height={size ?? 24}
16
+ fill="none"
17
+ >
18
+ <G clipPath="url(#a)">
19
+ <Path
20
+ fill={color ?? "#050022"}
21
+ d="M12.455 14.254a.938.938 0 1 0 0-1.875.938.938 0 0 0 0 1.875Z"
22
+ />
23
+ <Path
24
+ stroke={color ?? "#050022"}
25
+ strokeLinecap="round"
26
+ strokeLinejoin="round"
27
+ strokeWidth={1.5}
28
+ d="M12.455 21.192a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z"
29
+ />
30
+ <Path
31
+ stroke={color ?? "#050022"}
32
+ strokeLinecap="round"
33
+ strokeLinejoin="round"
34
+ strokeWidth={1.5}
35
+ d="M3.605 13.837a12 12 0 0 1 17.7 0M11.687 21.159l-2.05-5.48a.75.75 0 0 0-.702-.487H3.966M13.22 21.16l2.052-5.482a.75.75 0 0 1 .704-.486h4.968"
36
+ />
37
+ </G>
38
+ <Defs>
39
+ <ClipPath id="a">
40
+ <Path fill="#fff" d="M.455.192h24v24h-24z" />
41
+ </ClipPath>
42
+ </Defs>
43
+ </Svg>
44
+ );
45
+
46
+ /**
47
+ * EXPORTS
48
+ */
49
+ export { SvgIconSteeringWheel };
@@ -0,0 +1,36 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, G, ClipPath, Defs } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconSteeringWheelFill: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? 24}
15
+ height={size ?? 24}
16
+ fill="none"
17
+ viewBox="0 0 24 24"
18
+ >
19
+ <G clipPath="url(#clip0_7394_1995)">
20
+ <Path
21
+ fill={color ?? "#050022"}
22
+ d="M12 2.25A9.75 9.75 0 1 0 21.75 12 9.77 9.77 0 0 0 12 2.25m5.25 10.5H12a.75.75 0 0 1-.75-.75V6.75a.75.75 0 1 1 1.5 0v4.5h4.5a.75.75 0 1 1 0 1.5"
23
+ ></Path>
24
+ </G>
25
+ <Defs>
26
+ <ClipPath id="clip0_7394_1995">
27
+ <Path fill="#fff" d="M0 0h24v24H0z"></Path>
28
+ </ClipPath>
29
+ </Defs>
30
+ </Svg>
31
+ );
32
+
33
+ /**
34
+ * EXPORTS
35
+ */
36
+ export { SvgIconSteeringWheelFill };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, Defs, G, ClipPath } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconTimer: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? 24}
15
+ height={size ?? 24}
16
+ fill="none"
17
+ viewBox="0 0 24 24"
18
+ >
19
+ <G
20
+ stroke={color ?? "#050022"}
21
+ strokeLinecap="round"
22
+ strokeLinejoin="round"
23
+ strokeWidth="2"
24
+ clipPath="url(#clip0_52_223)"
25
+ >
26
+ <Path d="M12 21a8.25 8.25 0 100-16.5A8.25 8.25 0 0012 21zM12 12.75L15.75 9M9.75 1.5h4.5"></Path>
27
+ </G>
28
+ <Defs>
29
+ <ClipPath id="clip0_52_223">
30
+ <Path fill="#fff" d="M0 0H24V24H0z"></Path>
31
+ </ClipPath>
32
+ </Defs>
33
+ </Svg>
34
+ );
35
+
36
+ /**
37
+ * EXPORTS
38
+ */
39
+ export { SvgIconTimer };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconTrophy: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? 24}
15
+ height={size ?? 24}
16
+ fill="none"
17
+ viewBox="0 0 24 24"
18
+ >
19
+ <Path
20
+ fill={color ?? "#050022"}
21
+ d="M22 8.25h-2.25v-1.5A.75.75 0 0 0 19 6H5.5a.75.75 0 0 0-.75.75v1.5H2.5A1.5 1.5 0 0 0 1 9.75v1.5A3.75 3.75 0 0 0 4.75 15h.342a7.51 7.51 0 0 0 6.408 5.213V22.5H9.25a.75.75 0 1 0 0 1.5h6a.75.75 0 1 0 0-1.5H13v-2.29c2.994-.302 5.479-2.403 6.383-5.21h.367a3.75 3.75 0 0 0 3.75-3.75v-1.5a1.5 1.5 0 0 0-1.5-1.5M4.75 13.5a2.25 2.25 0 0 1-2.25-2.25v-1.5h2.25v3q0 .375.037.75zm13.5-.834c0 3.33-2.719 6.06-6 6.084a6 6 0 0 1-6-6V7.5h12zM22 11.25a2.25 2.25 0 0 1-2.25 2.25h-.047q.046-.416.047-.834V9.75H22z"
22
+ ></Path>
23
+ </Svg>
24
+ );
25
+
26
+ /**
27
+ * EXPORTS
28
+ */
29
+ export { SvgIconTrophy };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import Svg, { Path } from "react-native-svg";
6
+ /**
7
+ * typings
8
+ */
9
+ import { ISvgProps } from "../interface";
10
+
11
+ const IconTruck: React.FC<ISvgProps> = ({ color, size, ...res }) => (
12
+ <Svg
13
+ //@ts-ignore
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ width={size ?? 24}
16
+ height={size ?? 24}
17
+ fill="none"
18
+ viewBox="0 0 24 24"
19
+ {...res}
20
+ >
21
+ <Path
22
+ stroke={color ?? "#fff"}
23
+ strokeLinecap="round"
24
+ strokeLinejoin="round"
25
+ d="M10 17h4V5H2v12h3M20 17h2v-3.34a4 4 0 00-1.17-2.83L19 9h-5M14 17h1"
26
+ ></Path>
27
+ <Path
28
+ stroke={color ?? "#fff"}
29
+ strokeLinecap="round"
30
+ strokeLinejoin="round"
31
+ d="M7.5 20a2.5 2.5 0 100-5 2.5 2.5 0 000 5zM17.5 20a2.5 2.5 0 100-5 2.5 2.5 0 000 5z"
32
+ ></Path>
33
+ </Svg>
34
+ );
35
+
36
+ /**
37
+ * EXPORTS
38
+ */
39
+ export { IconTruck };
@@ -0,0 +1,43 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, Defs, G, ClipPath } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconWiFiHigh: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? "25"}
15
+ height={size ?? "25"}
16
+ fill="none"
17
+ viewBox="0 0 25 25"
18
+ >
19
+ <G clipPath="url(#clip0_912_107)">
20
+ <Path
21
+ fill={color ?? "#0DEC08"}
22
+ d="M12.56 20.767a1.125 1.125 0 100-2.25 1.125 1.125 0 000 2.25z"
23
+ ></Path>
24
+ <Path
25
+ stroke={color ?? "#0DEC08"}
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ strokeWidth="2"
29
+ d="M22.31 9.253a15.375 15.375 0 00-19.5 0M19.31 12.61a10.875 10.875 0 00-13.5 0M16.31 15.985a6.375 6.375 0 00-7.5 0"
30
+ ></Path>
31
+ </G>
32
+ <Defs>
33
+ <ClipPath id="clip0_912_107">
34
+ <Path fill="#fff" d="M0 0H24V24H0z" transform="translate(.56 .517)"></Path>
35
+ </ClipPath>
36
+ </Defs>
37
+ </Svg>
38
+ );
39
+
40
+ /**
41
+ * EXPORTS
42
+ */
43
+ export { SvgIconWiFiHigh };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import * as React from "react";
5
+ import Svg, { Path, Defs, G, ClipPath } from "react-native-svg";
6
+
7
+ //typings
8
+ import { ISvgProps } from "../interface";
9
+
10
+ const SvgIconWiFiX: React.FC<ISvgProps> = ({ color, size }) => (
11
+ <Svg
12
+ //@ts-ignore
13
+ xmlns="http://www.w3.org/2000/svg"
14
+ width={size ?? "25"}
15
+ height={size ?? "25"}
16
+ fill="none"
17
+ viewBox="0 0 25 25"
18
+ >
19
+ <G clipPath="url(#clip0_912_99)">
20
+ <Path
21
+ stroke={color ?? "#E72626"}
22
+ strokeLinecap="round"
23
+ strokeLinejoin="round"
24
+ strokeWidth="2"
25
+ d="M21.56 5.767l-4.5 4.5M21.56 10.267l-4.5-4.5"
26
+ ></Path>
27
+ <Path
28
+ fill={color ?? "#E72626"}
29
+ d="M12.56 20.767a1.125 1.125 0 100-2.25 1.125 1.125 0 000 2.25z"
30
+ ></Path>
31
+ <Path
32
+ stroke={color ?? "#E72626"}
33
+ strokeLinecap="round"
34
+ strokeLinejoin="round"
35
+ strokeWidth="2"
36
+ d="M16.31 15.985a6.375 6.375 0 00-7.5 0M14.06 5.839a15.433 15.433 0 00-1.5-.072 15.31 15.31 0 00-9.75 3.486M14.06 10.369a11.004 11.004 0 00-1.5-.102c-2.45-.005-4.83.82-6.75 2.343"
37
+ ></Path>
38
+ </G>
39
+ <Defs>
40
+ <ClipPath id="clip0_912_99">
41
+ <Path fill="#fff" d="M0 0H24V24H0z" transform="translate(.56 .517)"></Path>
42
+ </ClipPath>
43
+ </Defs>
44
+ </Svg>
45
+ );
46
+
47
+ /**
48
+ * EXPORTS
49
+ */
50
+ export { SvgIconWiFiX };
@@ -0,0 +1,47 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import { View } from "react-native";
6
+
7
+ // typings
8
+ import { IBoxProps } from "./interface";
9
+
10
+ // styles
11
+ import { styles } from "./styles";
12
+
13
+ /**
14
+ * Componente Box para envolver outros componentes de forma flexível.
15
+ */
16
+ export const Box: React.FC<IBoxProps> = ({
17
+ children,
18
+ width,
19
+ height,
20
+ backgroundColor,
21
+ borderStyled,
22
+ flexStyle,
23
+ paddingStyle,
24
+ marginStyle,
25
+ opacity = 1,
26
+ testID = "box",
27
+ style,
28
+ }) => {
29
+ // Criando o objeto de estilos dinamicamente
30
+ const styleProps: Partial<IBoxProps> = {
31
+ width,
32
+ height,
33
+ backgroundColor,
34
+ borderStyled,
35
+ flexStyle,
36
+ paddingStyle,
37
+ marginStyle,
38
+ opacity,
39
+ style,
40
+ };
41
+
42
+ return (
43
+ <View testID={testID} style={[styles(styleProps).boxStyle, style]}>
44
+ {children}
45
+ </View>
46
+ );
47
+ };
@@ -0,0 +1,31 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+
5
+ import { type ViewProps } from "react-native";
6
+ /**
7
+ * INTERFACE
8
+ */
9
+ import { IGlobalCss } from "../../styles/global/interface";
10
+
11
+ interface IBoxProps extends ViewProps, IGlobalCss {
12
+ /**
13
+ * A propriedade CSS de Shadow Box adiciona efeitos de sombra em torno da estrutura de um elemento. Você pode definir vários efeitos separados por vírgulas. Uma sombra de caixa é descrita por compensações x e y em relação ao elemento, borrão e raio espalhado e cor.
14
+ */
15
+ boxShadow?: string;
16
+
17
+ /**
18
+ * O fundo abreviado CSS Propriedade define todas as propriedades do estilo de fundo de uma só vez, como cor, imagem, origem e tamanho ou método de repetição. As propriedades dos componentes não definidas no fundo da declaração de valor da propriedade abreviada são definidas como seus valores padrão..
19
+ */
20
+ backgroundColor?: string;
21
+
22
+ /**
23
+ * A propriedade CSS opacity define a transparência de um elemento, ou seja, o grau em que o fundo atrás do elemento é sobreposto. A propriedade aceita um valor entre 0,0 (totalmente transparente) e 1,0 (totalmente opaco).
24
+ */
25
+ opacity?: number;
26
+ }
27
+
28
+ /**
29
+ * EXPORT
30
+ */
31
+ export type { IBoxProps };
@@ -0,0 +1,21 @@
1
+ import { StyleSheet, ViewProps } from "react-native";
2
+ import { IBoxProps } from "./interface.d";
3
+
4
+ // typing
5
+ import { IGlobalCss } from "../../styles/global/interface";
6
+
7
+ import { stylesGlobal } from "../../styles/global/styles";
8
+
9
+ interface BoxProps extends IBoxProps, IGlobalCss {}
10
+ const styles = (props: BoxProps) =>
11
+ StyleSheet.create({
12
+ boxStyle: {
13
+ ...stylesGlobal(props),
14
+ ...props,
15
+ } as ViewProps,
16
+ });
17
+
18
+ /**
19
+ * EXPORTS
20
+ */
21
+ export { styles };
@@ -0,0 +1,61 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import React from "react";
5
+ import { Text, TouchableOpacity, TextStyle } from "react-native";
6
+
7
+ // typings
8
+ import { type IButtonProps } from "./interface";
9
+
10
+ // styles
11
+ import { styles } from "./styles";
12
+
13
+ /**
14
+ * Componente Button para a interação da ui.
15
+ */
16
+ export const Button: React.FC<IButtonProps> = ({
17
+ title = "Button",
18
+ width = "50%",
19
+ height,
20
+ backgroundColor,
21
+ borderStyled,
22
+ flexStyle,
23
+ paddingStyle,
24
+ marginStyle,
25
+ testID,
26
+ opacity = 1,
27
+ children,
28
+ style,
29
+ fontStyle,
30
+ buttonTextStyle,
31
+ onPress,
32
+ ...res
33
+ }) => {
34
+ const styleProps = {
35
+ width,
36
+ height,
37
+ backgroundColor,
38
+ borderStyled,
39
+ flexStyle,
40
+ paddingStyle,
41
+ marginStyle,
42
+ testID,
43
+ opacity,
44
+ children,
45
+ fontStyle,
46
+ buttonTextStyle,
47
+ style,
48
+ } as IButtonProps;
49
+
50
+ return (
51
+ <TouchableOpacity
52
+ activeOpacity={0.7}
53
+ testID={"button"}
54
+ style={styles(styleProps).buttonStyle}
55
+ onPress={onPress}
56
+ {...res}
57
+ >
58
+ <Text style={[styles(styleProps).buttonTextStyle as TextStyle]}>{title}</Text>
59
+ </TouchableOpacity>
60
+ );
61
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import { type TouchableOpacityProps } from "react-native";
5
+
6
+ // typing
7
+ import { IGlobalCss } from "../../styles/global/interface";
8
+
9
+ interface IButtonProps extends TouchableOpacityProps, Omit<IGlobalCss, "color"> {
10
+ title: string;
11
+
12
+ /**
13
+ * A propriedade CSS de Shadow Box adiciona efeitos de sombra em torno da estrutura de um elemento. Você pode definir vários efeitos separados por vírgulas. Uma sombra de caixa é descrita por compensações x e y em relação ao elemento, borrão e raio espalhado e cor.
14
+ */
15
+ boxShadow?: string;
16
+
17
+ /**
18
+ * A propriedade CSS opacity define a transparência de um elemento, ou seja, o grau em que o fundo atrás do elemento é sobreposto. A propriedade aceita um valor entre 0,0 (totalmente transparente) e 1,0 (totalmente opaco).
19
+ */
20
+ opacity?: number;
21
+
22
+ /**
23
+ * A propriedade CSS color define o valor da cor de primeiro plano do texto e das decorações de texto de um elemento e define o valor currentcolor. currentcolor pode ser usado como um valor indireto em outras propriedades e é o padrão para outras propriedades de cores, como border-color.
24
+ */
25
+
26
+ buttonTextStyle: {
27
+ color: string;
28
+ font?: string;
29
+ fontSize?: number;
30
+ fontWeight?: "100" | "300" | "400" | "500" | "600" | "700" | "bold";
31
+ fontFamily?: string;
32
+ letterSpacing?: number;
33
+ lineHeight?: number;
34
+ };
35
+ }
36
+
37
+ /**
38
+ * EXPORT
39
+ */
40
+ export type { IButtonProps };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * IMPORTS
3
+ */
4
+ import { StyleSheet } from "react-native";
5
+
6
+ // typings
7
+ import { type IButtonProps } from "./interface";
8
+ import { IGlobalCss } from "../../styles/global/interface";
9
+
10
+ import { stylesGlobal } from "../../styles/global/styles";
11
+
12
+ /**
13
+ * Interface ButtonProps
14
+ */
15
+ interface ButtonProps extends Omit<IButtonProps, "color">, Omit<IGlobalCss, "color"> {}
16
+
17
+ const styles = (props: ButtonProps) =>
18
+ StyleSheet.create({
19
+ buttonStyle: { ...stylesGlobal(props), ...props },
20
+ buttonTextStyle: {
21
+ color: props.buttonTextStyle?.color ?? "blue",
22
+ fontSize: props.buttonTextStyle?.fontSize ?? 14,
23
+ letterSpacing: props.buttonTextStyle?.letterSpacing ?? 0.5,
24
+ lineHeight: props.buttonTextStyle?.lineHeight ?? 24,
25
+ fontWeight: props.buttonTextStyle?.fontWeight,
26
+ fontFamily: props.buttonTextStyle?.fontFamily ?? "Inter-Medium",
27
+ textAlign: props.flexStyle?.textAlign,
28
+ },
29
+ });
30
+
31
+ /**
32
+ * EXPORTS
33
+ */
34
+ export { styles };