custom-mobile-ui 1.0.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.
Files changed (116) hide show
  1. package/dist/Fonts-Black-U4YX6GHD.ttf +0 -0
  2. package/dist/Fonts-Bold-QAA2AGZS.ttf +0 -0
  3. package/dist/Fonts-ExtraBold-OVZKTNJI.ttf +0 -0
  4. package/dist/Fonts-Light-RMQAEPUP.ttf +0 -0
  5. package/dist/Fonts-Medium-UUWQX4EV.ttf +0 -0
  6. package/dist/Fonts-Regular-JNHL4IDV.ttf +0 -0
  7. package/dist/PopupMenuExample-DAAku8nG.d.mts +11 -0
  8. package/dist/PopupMenuExample-DAAku8nG.d.ts +11 -0
  9. package/dist/avatarF1-C47EE65Y.png +0 -0
  10. package/dist/avatarF2-TZPKSMDG.png +0 -0
  11. package/dist/avatarF3-OSDX6E7J.png +0 -0
  12. package/dist/avatarF4-CASWRGNJ.png +0 -0
  13. package/dist/avatarM1-3XV4KE4H.png +0 -0
  14. package/dist/avatarM2-ZMN26Y2Y.png +0 -0
  15. package/dist/avatarM3-XIDLYITU.png +0 -0
  16. package/dist/avatarM4-DYW5DSZC.png +0 -0
  17. package/dist/avatarM5-YP66OPXT.png +0 -0
  18. package/dist/components.d.mts +3286 -0
  19. package/dist/components.d.ts +3286 -0
  20. package/dist/components.js +21401 -0
  21. package/dist/components.mjs +21246 -0
  22. package/dist/config.d.mts +7 -0
  23. package/dist/config.d.ts +7 -0
  24. package/dist/config.js +213 -0
  25. package/dist/config.mjs +210 -0
  26. package/dist/context.d.mts +11 -0
  27. package/dist/context.d.ts +11 -0
  28. package/dist/context.js +150 -0
  29. package/dist/context.mjs +148 -0
  30. package/dist/examples.d.mts +30 -0
  31. package/dist/examples.d.ts +30 -0
  32. package/dist/examples.js +30785 -0
  33. package/dist/examples.mjs +30748 -0
  34. package/dist/hooks.d.mts +15 -0
  35. package/dist/hooks.d.ts +15 -0
  36. package/dist/hooks.js +750 -0
  37. package/dist/hooks.mjs +739 -0
  38. package/dist/icAppleNegative-E3OORB4A.png +0 -0
  39. package/dist/icAppleOriginal-M7FOSDZ4.png +0 -0
  40. package/dist/icBlueskyNegative-QXHPLARU.png +0 -0
  41. package/dist/icBlueskyOriginal-D2GX35RV.png +0 -0
  42. package/dist/icDiscordNegative-EWGZJJ27.png +0 -0
  43. package/dist/icDiscordOriginal-5ODPKZ6S.png +0 -0
  44. package/dist/icDribbbleNegative-GOLJS6SO.png +0 -0
  45. package/dist/icDribbbleOriginal-ONQLW62I.png +0 -0
  46. package/dist/icError404-Z6PQK64J.png +0 -0
  47. package/dist/icFacebookNegative-DIFRSSJJ.png +0 -0
  48. package/dist/icFacebookOriginal-PK7CGUNB.png +0 -0
  49. package/dist/icFigmaNegative-X6P3DVCQ.png +0 -0
  50. package/dist/icFigmaOriginal-VGD7LQVQ.png +0 -0
  51. package/dist/icGithubNegative-G7XH6J7V.png +0 -0
  52. package/dist/icGithubOriginal-BOXVXICL.png +0 -0
  53. package/dist/icGoogleNegative-UFNCEWM7.png +0 -0
  54. package/dist/icGoogleOriginal-WCDLPRSH.png +0 -0
  55. package/dist/icInstagramNegative-47CG4IHG.png +0 -0
  56. package/dist/icInstagramOriginal-SGRJTPEH.png +0 -0
  57. package/dist/icLinkedInNegative-4EHL223U.png +0 -0
  58. package/dist/icLinkedInOriginal-CQXTAW56.png +0 -0
  59. package/dist/icMediumNegative-YMS7U46C.png +0 -0
  60. package/dist/icMediumOriginal-TRTNJBN4.png +0 -0
  61. package/dist/icMessengerNegative-SIFKBM2Y.png +0 -0
  62. package/dist/icMessengerOriginal-PNN2SB3Z.png +0 -0
  63. package/dist/icNoData-JQB7KCKJ.png +0 -0
  64. package/dist/icPinterestNegative-LPDQYRD3.png +0 -0
  65. package/dist/icPinterestOriginal-7AWYJQBQ.png +0 -0
  66. package/dist/icRedditNegative-BBV3R7UA.png +0 -0
  67. package/dist/icRedditOriginal-BIKS3S2I.png +0 -0
  68. package/dist/icRestriction-JFCJAQ5L.png +0 -0
  69. package/dist/icSadMen-6HAFJHIQ.png +0 -0
  70. package/dist/icSignalNegative-DVBANSGJ.png +0 -0
  71. package/dist/icSignalOriginal-FQEXGCKX.png +0 -0
  72. package/dist/icSnapchatNegative-VQFVKRPC.png +0 -0
  73. package/dist/icSnapchatOriginal-ZK4T4CLL.png +0 -0
  74. package/dist/icSpotifyNegative-UGDBMFNS.png +0 -0
  75. package/dist/icSpotifyOriginal-ZFNO4BJO.png +0 -0
  76. package/dist/icTelegramNegative-GDSFFYME.png +0 -0
  77. package/dist/icTelegramOriginal-DMTCZCGP.png +0 -0
  78. package/dist/icThreadsNegative-4NIM4AOP.png +0 -0
  79. package/dist/icThreadsOriginal-OYU6UKN2.png +0 -0
  80. package/dist/icTikTokNegative-WYI3PQGD.png +0 -0
  81. package/dist/icTikTokOriginal-26SKYCIO.png +0 -0
  82. package/dist/icTumblrNegative-CYBTEYAG.png +0 -0
  83. package/dist/icTumblrOriginal-MZ7RV5ZY.png +0 -0
  84. package/dist/icTwitchNegative-GK3VVFL7.png +0 -0
  85. package/dist/icTwitchOriginal-GOENLOGB.png +0 -0
  86. package/dist/icVKNegative-FCXPFYDV.png +0 -0
  87. package/dist/icVKOriginal-NCWB7WYH.png +0 -0
  88. package/dist/icWhatsAppNegative-FJHYFUMA.png +0 -0
  89. package/dist/icWhatsAppOriginal-MWQWQC56.png +0 -0
  90. package/dist/icXTwitterNegative-VS3UXBLN.png +0 -0
  91. package/dist/icXTwitterOriginal-WJ2IFMZL.png +0 -0
  92. package/dist/icYouTubeNegative-LUSZ7OD4.png +0 -0
  93. package/dist/icYouTubeOriginal-6Y2SNMC7.png +0 -0
  94. package/dist/index-tIixPl5M.d.mts +214 -0
  95. package/dist/index-tIixPl5M.d.ts +214 -0
  96. package/dist/index.d.mts +32 -0
  97. package/dist/index.d.ts +32 -0
  98. package/dist/index.js +32215 -0
  99. package/dist/index.mjs +32022 -0
  100. package/dist/theme.d.mts +297 -0
  101. package/dist/theme.d.ts +297 -0
  102. package/dist/theme.js +472 -0
  103. package/dist/theme.mjs +458 -0
  104. package/dist/types-cxHozHqF.d.mts +92 -0
  105. package/dist/types-cxHozHqF.d.ts +92 -0
  106. package/dist/ui.d.mts +400 -0
  107. package/dist/ui.d.ts +400 -0
  108. package/dist/ui.js +1469 -0
  109. package/dist/ui.mjs +1461 -0
  110. package/dist/ui_config-LKHwCbDD.d.mts +102 -0
  111. package/dist/ui_config-LKHwCbDD.d.ts +102 -0
  112. package/dist/utils.d.mts +7 -0
  113. package/dist/utils.d.ts +7 -0
  114. package/dist/utils.js +89 -0
  115. package/dist/utils.mjs +83 -0
  116. package/package.json +78 -0
@@ -0,0 +1,102 @@
1
+ type UISize = "small" | "medium" | "large";
2
+ declare const UITheme: {
3
+ defaults: {
4
+ size: UISize;
5
+ };
6
+ common: {
7
+ borderRadius: number;
8
+ };
9
+ input: {
10
+ sizes: {
11
+ small: {
12
+ borderRadius: number;
13
+ height: number;
14
+ fontSize: number;
15
+ paddingHorizontal: number;
16
+ iconSize: number;
17
+ };
18
+ medium: {
19
+ borderRadius: number;
20
+ height: number;
21
+ fontSize: number;
22
+ paddingHorizontal: number;
23
+ iconSize: number;
24
+ };
25
+ large: {
26
+ borderRadius: number;
27
+ height: number;
28
+ fontSize: number;
29
+ paddingHorizontal: number;
30
+ iconSize: number;
31
+ };
32
+ };
33
+ };
34
+ button: {
35
+ sizes: {
36
+ small: {
37
+ borderRadius: number;
38
+ height: number;
39
+ fontSize: number;
40
+ paddingHorizontal: number;
41
+ iconSize: number;
42
+ };
43
+ medium: {
44
+ borderRadius: number;
45
+ height: number;
46
+ fontSize: number;
47
+ paddingHorizontal: number;
48
+ iconSize: number;
49
+ };
50
+ large: {
51
+ borderRadius: number;
52
+ height: number;
53
+ fontSize: number;
54
+ paddingHorizontal: number;
55
+ iconSize: number;
56
+ };
57
+ };
58
+ };
59
+ badge: {
60
+ sizes: {
61
+ small: {
62
+ paddingHorizontal: number;
63
+ paddingVertical: number;
64
+ fontSize: number;
65
+ borderRadius: number;
66
+ };
67
+ medium: {
68
+ paddingHorizontal: number;
69
+ paddingVertical: number;
70
+ fontSize: number;
71
+ borderRadius: number;
72
+ };
73
+ large: {
74
+ paddingHorizontal: number;
75
+ paddingVertical: number;
76
+ fontSize: number;
77
+ borderRadius: number;
78
+ };
79
+ };
80
+ };
81
+ switch: {
82
+ sizes: {
83
+ small: {
84
+ width: number;
85
+ height: number;
86
+ padding: number;
87
+ };
88
+ medium: {
89
+ width: number;
90
+ height: number;
91
+ padding: number;
92
+ };
93
+ large: {
94
+ width: number;
95
+ height: number;
96
+ padding: number;
97
+ };
98
+ };
99
+ };
100
+ };
101
+
102
+ export { type UISize as U, UITheme as a };
@@ -0,0 +1,102 @@
1
+ type UISize = "small" | "medium" | "large";
2
+ declare const UITheme: {
3
+ defaults: {
4
+ size: UISize;
5
+ };
6
+ common: {
7
+ borderRadius: number;
8
+ };
9
+ input: {
10
+ sizes: {
11
+ small: {
12
+ borderRadius: number;
13
+ height: number;
14
+ fontSize: number;
15
+ paddingHorizontal: number;
16
+ iconSize: number;
17
+ };
18
+ medium: {
19
+ borderRadius: number;
20
+ height: number;
21
+ fontSize: number;
22
+ paddingHorizontal: number;
23
+ iconSize: number;
24
+ };
25
+ large: {
26
+ borderRadius: number;
27
+ height: number;
28
+ fontSize: number;
29
+ paddingHorizontal: number;
30
+ iconSize: number;
31
+ };
32
+ };
33
+ };
34
+ button: {
35
+ sizes: {
36
+ small: {
37
+ borderRadius: number;
38
+ height: number;
39
+ fontSize: number;
40
+ paddingHorizontal: number;
41
+ iconSize: number;
42
+ };
43
+ medium: {
44
+ borderRadius: number;
45
+ height: number;
46
+ fontSize: number;
47
+ paddingHorizontal: number;
48
+ iconSize: number;
49
+ };
50
+ large: {
51
+ borderRadius: number;
52
+ height: number;
53
+ fontSize: number;
54
+ paddingHorizontal: number;
55
+ iconSize: number;
56
+ };
57
+ };
58
+ };
59
+ badge: {
60
+ sizes: {
61
+ small: {
62
+ paddingHorizontal: number;
63
+ paddingVertical: number;
64
+ fontSize: number;
65
+ borderRadius: number;
66
+ };
67
+ medium: {
68
+ paddingHorizontal: number;
69
+ paddingVertical: number;
70
+ fontSize: number;
71
+ borderRadius: number;
72
+ };
73
+ large: {
74
+ paddingHorizontal: number;
75
+ paddingVertical: number;
76
+ fontSize: number;
77
+ borderRadius: number;
78
+ };
79
+ };
80
+ };
81
+ switch: {
82
+ sizes: {
83
+ small: {
84
+ width: number;
85
+ height: number;
86
+ padding: number;
87
+ };
88
+ medium: {
89
+ width: number;
90
+ height: number;
91
+ padding: number;
92
+ };
93
+ large: {
94
+ width: number;
95
+ height: number;
96
+ padding: number;
97
+ };
98
+ };
99
+ };
100
+ };
101
+
102
+ export { type UISize as U, UITheme as a };
@@ -0,0 +1,7 @@
1
+ declare const getAvatarBgColor: (name?: string, mode?: "filled" | "light") => string;
2
+ declare function getPopulatedObject<T>(value: unknown): T | null;
3
+ declare function getNameInitials(name?: string | null, fallback?: string): string;
4
+ declare function toCamelCase(text?: string | null, fallback?: string): string;
5
+ declare const getAvatarColor: (name?: string) => string;
6
+
7
+ export { getAvatarBgColor, getAvatarColor, getNameInitials, getPopulatedObject, toCamelCase };
@@ -0,0 +1,7 @@
1
+ declare const getAvatarBgColor: (name?: string, mode?: "filled" | "light") => string;
2
+ declare function getPopulatedObject<T>(value: unknown): T | null;
3
+ declare function getNameInitials(name?: string | null, fallback?: string): string;
4
+ declare function toCamelCase(text?: string | null, fallback?: string): string;
5
+ declare const getAvatarColor: (name?: string) => string;
6
+
7
+ export { getAvatarBgColor, getAvatarColor, getNameInitials, getPopulatedObject, toCamelCase };
package/dist/utils.js ADDED
@@ -0,0 +1,89 @@
1
+ 'use strict';
2
+
3
+ // src/theme/colors.ts
4
+ var AVATAR_COLORS = [
5
+ "#2563EB",
6
+ // Blue
7
+ "#9333EA",
8
+ // Purple
9
+ "#16A34A",
10
+ // Green
11
+ "#EA580C",
12
+ // Orange
13
+ "#DC2626",
14
+ // Red
15
+ "#0891B2",
16
+ // Cyan
17
+ "#CA8A04",
18
+ // Yellow
19
+ "#4F46E5",
20
+ // Indigo
21
+ "#BE185D",
22
+ // Pink
23
+ "#374151"
24
+ // Dark Gray
25
+ ];
26
+
27
+ // src/utils/utils.ts
28
+ var getAvatarBgColor = (name, mode = "filled") => {
29
+ const baseColor = getAvatarColor(name);
30
+ if (mode === "filled") {
31
+ return baseColor;
32
+ }
33
+ if (baseColor.startsWith("#") && baseColor.length === 7) {
34
+ return baseColor + "20";
35
+ }
36
+ return "#F3F4F6";
37
+ };
38
+ function getPopulatedObject(value) {
39
+ if (value && typeof value === "object") {
40
+ return value;
41
+ }
42
+ return null;
43
+ }
44
+ function getNameInitials(name, fallback = "?") {
45
+ if (typeof name !== "string") return fallback;
46
+ const cleaned = name.trim().replace(/\s+/g, " ");
47
+ if (!cleaned) return fallback;
48
+ const parts = cleaned.split(" ").filter(Boolean);
49
+ if (parts.length === 0) return fallback;
50
+ const first = parts[0];
51
+ if (!first) return fallback;
52
+ if (parts.length > 1) {
53
+ const last = parts[parts.length - 1];
54
+ if (last) {
55
+ return ((first[0] ?? "") + (last[0] ?? "")).toUpperCase();
56
+ }
57
+ }
58
+ if (first.length === 1) {
59
+ return first.toUpperCase();
60
+ }
61
+ return first.slice(0, 2).toUpperCase();
62
+ }
63
+ function toCamelCase(text, fallback = "") {
64
+ if (typeof text !== "string") return fallback;
65
+ const cleaned = text.trim().replace(/[_\-]+/g, " ").replace(/\s+/g, " ");
66
+ if (!cleaned) return fallback;
67
+ return cleaned.split(" ").map((word) => {
68
+ if (!word) return "";
69
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
70
+ }).join(" ");
71
+ }
72
+ var getAvatarColor = (name) => {
73
+ if (typeof name !== "string" || name.trim().length === 0) {
74
+ return AVATAR_COLORS[0];
75
+ }
76
+ const firstChar = name.trim()[0].toUpperCase();
77
+ const charCode = firstChar.charCodeAt(0);
78
+ if (charCode >= 65 && charCode <= 90) {
79
+ const index = (charCode - 65) % AVATAR_COLORS.length;
80
+ return AVATAR_COLORS[index];
81
+ }
82
+ return AVATAR_COLORS[0];
83
+ };
84
+
85
+ exports.getAvatarBgColor = getAvatarBgColor;
86
+ exports.getAvatarColor = getAvatarColor;
87
+ exports.getNameInitials = getNameInitials;
88
+ exports.getPopulatedObject = getPopulatedObject;
89
+ exports.toCamelCase = toCamelCase;
package/dist/utils.mjs ADDED
@@ -0,0 +1,83 @@
1
+ // src/theme/colors.ts
2
+ var AVATAR_COLORS = [
3
+ "#2563EB",
4
+ // Blue
5
+ "#9333EA",
6
+ // Purple
7
+ "#16A34A",
8
+ // Green
9
+ "#EA580C",
10
+ // Orange
11
+ "#DC2626",
12
+ // Red
13
+ "#0891B2",
14
+ // Cyan
15
+ "#CA8A04",
16
+ // Yellow
17
+ "#4F46E5",
18
+ // Indigo
19
+ "#BE185D",
20
+ // Pink
21
+ "#374151"
22
+ // Dark Gray
23
+ ];
24
+
25
+ // src/utils/utils.ts
26
+ var getAvatarBgColor = (name, mode = "filled") => {
27
+ const baseColor = getAvatarColor(name);
28
+ if (mode === "filled") {
29
+ return baseColor;
30
+ }
31
+ if (baseColor.startsWith("#") && baseColor.length === 7) {
32
+ return baseColor + "20";
33
+ }
34
+ return "#F3F4F6";
35
+ };
36
+ function getPopulatedObject(value) {
37
+ if (value && typeof value === "object") {
38
+ return value;
39
+ }
40
+ return null;
41
+ }
42
+ function getNameInitials(name, fallback = "?") {
43
+ if (typeof name !== "string") return fallback;
44
+ const cleaned = name.trim().replace(/\s+/g, " ");
45
+ if (!cleaned) return fallback;
46
+ const parts = cleaned.split(" ").filter(Boolean);
47
+ if (parts.length === 0) return fallback;
48
+ const first = parts[0];
49
+ if (!first) return fallback;
50
+ if (parts.length > 1) {
51
+ const last = parts[parts.length - 1];
52
+ if (last) {
53
+ return ((first[0] ?? "") + (last[0] ?? "")).toUpperCase();
54
+ }
55
+ }
56
+ if (first.length === 1) {
57
+ return first.toUpperCase();
58
+ }
59
+ return first.slice(0, 2).toUpperCase();
60
+ }
61
+ function toCamelCase(text, fallback = "") {
62
+ if (typeof text !== "string") return fallback;
63
+ const cleaned = text.trim().replace(/[_\-]+/g, " ").replace(/\s+/g, " ");
64
+ if (!cleaned) return fallback;
65
+ return cleaned.split(" ").map((word) => {
66
+ if (!word) return "";
67
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
68
+ }).join(" ");
69
+ }
70
+ var getAvatarColor = (name) => {
71
+ if (typeof name !== "string" || name.trim().length === 0) {
72
+ return AVATAR_COLORS[0];
73
+ }
74
+ const firstChar = name.trim()[0].toUpperCase();
75
+ const charCode = firstChar.charCodeAt(0);
76
+ if (charCode >= 65 && charCode <= 90) {
77
+ const index = (charCode - 65) % AVATAR_COLORS.length;
78
+ return AVATAR_COLORS[index];
79
+ }
80
+ return AVATAR_COLORS[0];
81
+ };
82
+
83
+ export { getAvatarBgColor, getAvatarColor, getNameInitials, getPopulatedObject, toCamelCase };
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "custom-mobile-ui",
3
+ "version": "1.0.1",
4
+ "description": "Private reusable React Native UI components",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "react-native": "dist/index.mjs",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "build": "tsup",
24
+ "dev": "tsup --watch --sourcemap",
25
+ "clean": "rimraf dist",
26
+ "pack:dry-run": "npm pack --dry-run",
27
+ "prepare": "npm run build",
28
+ "example": "npm run --prefix example start",
29
+ "example:android": "npm run --prefix example android",
30
+ "example:ios": "npm run --prefix example ios",
31
+ "android": "expo run:android",
32
+ "ios": "expo run:ios"
33
+ },
34
+ "peerDependencies": {
35
+ "dayjs": "*",
36
+ "expo-blur": "*",
37
+ "expo-document-picker": "*",
38
+ "expo-font": "*",
39
+ "expo-image-picker": "*",
40
+ "expo-linear-gradient": "*",
41
+ "lucide-react-native": "0.263.0",
42
+ "react": "19.1.0",
43
+ "react-native": "0.81.5",
44
+ "react-native-gesture-handler": "*",
45
+ "react-native-reanimated": "*",
46
+ "react-native-safe-area-context": "*",
47
+ "react-native-signature-canvas": "*",
48
+ "react-native-svg": "^15.15.1"
49
+ },
50
+ "devDependencies": {
51
+ "@react-navigation/native": "^7.2.0",
52
+ "@react-navigation/native-stack": "^7.14.7",
53
+ "@types/react": "~19.1.0",
54
+ "dayjs": "^1.11.19",
55
+ "expo": "~54.0.30",
56
+ "expo-blur": "^55.0.10",
57
+ "expo-document-picker": "~14.0.8",
58
+ "expo-font": "^14.0.10",
59
+ "expo-image-picker": "^17.0.10",
60
+ "expo-linear-gradient": "~15.0.8",
61
+ "lucide-react-native": "0.263.0",
62
+ "react": "19.1.0",
63
+ "react-native": "0.81.5",
64
+ "react-native-gesture-handler": "~2.28.0",
65
+ "react-native-reanimated": "~4.1.1",
66
+ "react-native-safe-area-context": "^5.6.2",
67
+ "react-native-signature-canvas": "^5.0.2",
68
+ "react-native-svg": "^15.15.1",
69
+ "rimraf": "^6.0.1",
70
+ "tsup": "^8.5.0",
71
+ "typescript": "^5.9.2"
72
+ },
73
+ "dependencies": {
74
+ "expo": "~54.0.33",
75
+ "react": "19.1.0",
76
+ "react-native": "0.81.5"
77
+ }
78
+ }