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.
- package/dist/Fonts-Black-U4YX6GHD.ttf +0 -0
- package/dist/Fonts-Bold-QAA2AGZS.ttf +0 -0
- package/dist/Fonts-ExtraBold-OVZKTNJI.ttf +0 -0
- package/dist/Fonts-Light-RMQAEPUP.ttf +0 -0
- package/dist/Fonts-Medium-UUWQX4EV.ttf +0 -0
- package/dist/Fonts-Regular-JNHL4IDV.ttf +0 -0
- package/dist/PopupMenuExample-DAAku8nG.d.mts +11 -0
- package/dist/PopupMenuExample-DAAku8nG.d.ts +11 -0
- package/dist/avatarF1-C47EE65Y.png +0 -0
- package/dist/avatarF2-TZPKSMDG.png +0 -0
- package/dist/avatarF3-OSDX6E7J.png +0 -0
- package/dist/avatarF4-CASWRGNJ.png +0 -0
- package/dist/avatarM1-3XV4KE4H.png +0 -0
- package/dist/avatarM2-ZMN26Y2Y.png +0 -0
- package/dist/avatarM3-XIDLYITU.png +0 -0
- package/dist/avatarM4-DYW5DSZC.png +0 -0
- package/dist/avatarM5-YP66OPXT.png +0 -0
- package/dist/components.d.mts +3286 -0
- package/dist/components.d.ts +3286 -0
- package/dist/components.js +21401 -0
- package/dist/components.mjs +21246 -0
- package/dist/config.d.mts +7 -0
- package/dist/config.d.ts +7 -0
- package/dist/config.js +213 -0
- package/dist/config.mjs +210 -0
- package/dist/context.d.mts +11 -0
- package/dist/context.d.ts +11 -0
- package/dist/context.js +150 -0
- package/dist/context.mjs +148 -0
- package/dist/examples.d.mts +30 -0
- package/dist/examples.d.ts +30 -0
- package/dist/examples.js +30785 -0
- package/dist/examples.mjs +30748 -0
- package/dist/hooks.d.mts +15 -0
- package/dist/hooks.d.ts +15 -0
- package/dist/hooks.js +750 -0
- package/dist/hooks.mjs +739 -0
- package/dist/icAppleNegative-E3OORB4A.png +0 -0
- package/dist/icAppleOriginal-M7FOSDZ4.png +0 -0
- package/dist/icBlueskyNegative-QXHPLARU.png +0 -0
- package/dist/icBlueskyOriginal-D2GX35RV.png +0 -0
- package/dist/icDiscordNegative-EWGZJJ27.png +0 -0
- package/dist/icDiscordOriginal-5ODPKZ6S.png +0 -0
- package/dist/icDribbbleNegative-GOLJS6SO.png +0 -0
- package/dist/icDribbbleOriginal-ONQLW62I.png +0 -0
- package/dist/icError404-Z6PQK64J.png +0 -0
- package/dist/icFacebookNegative-DIFRSSJJ.png +0 -0
- package/dist/icFacebookOriginal-PK7CGUNB.png +0 -0
- package/dist/icFigmaNegative-X6P3DVCQ.png +0 -0
- package/dist/icFigmaOriginal-VGD7LQVQ.png +0 -0
- package/dist/icGithubNegative-G7XH6J7V.png +0 -0
- package/dist/icGithubOriginal-BOXVXICL.png +0 -0
- package/dist/icGoogleNegative-UFNCEWM7.png +0 -0
- package/dist/icGoogleOriginal-WCDLPRSH.png +0 -0
- package/dist/icInstagramNegative-47CG4IHG.png +0 -0
- package/dist/icInstagramOriginal-SGRJTPEH.png +0 -0
- package/dist/icLinkedInNegative-4EHL223U.png +0 -0
- package/dist/icLinkedInOriginal-CQXTAW56.png +0 -0
- package/dist/icMediumNegative-YMS7U46C.png +0 -0
- package/dist/icMediumOriginal-TRTNJBN4.png +0 -0
- package/dist/icMessengerNegative-SIFKBM2Y.png +0 -0
- package/dist/icMessengerOriginal-PNN2SB3Z.png +0 -0
- package/dist/icNoData-JQB7KCKJ.png +0 -0
- package/dist/icPinterestNegative-LPDQYRD3.png +0 -0
- package/dist/icPinterestOriginal-7AWYJQBQ.png +0 -0
- package/dist/icRedditNegative-BBV3R7UA.png +0 -0
- package/dist/icRedditOriginal-BIKS3S2I.png +0 -0
- package/dist/icRestriction-JFCJAQ5L.png +0 -0
- package/dist/icSadMen-6HAFJHIQ.png +0 -0
- package/dist/icSignalNegative-DVBANSGJ.png +0 -0
- package/dist/icSignalOriginal-FQEXGCKX.png +0 -0
- package/dist/icSnapchatNegative-VQFVKRPC.png +0 -0
- package/dist/icSnapchatOriginal-ZK4T4CLL.png +0 -0
- package/dist/icSpotifyNegative-UGDBMFNS.png +0 -0
- package/dist/icSpotifyOriginal-ZFNO4BJO.png +0 -0
- package/dist/icTelegramNegative-GDSFFYME.png +0 -0
- package/dist/icTelegramOriginal-DMTCZCGP.png +0 -0
- package/dist/icThreadsNegative-4NIM4AOP.png +0 -0
- package/dist/icThreadsOriginal-OYU6UKN2.png +0 -0
- package/dist/icTikTokNegative-WYI3PQGD.png +0 -0
- package/dist/icTikTokOriginal-26SKYCIO.png +0 -0
- package/dist/icTumblrNegative-CYBTEYAG.png +0 -0
- package/dist/icTumblrOriginal-MZ7RV5ZY.png +0 -0
- package/dist/icTwitchNegative-GK3VVFL7.png +0 -0
- package/dist/icTwitchOriginal-GOENLOGB.png +0 -0
- package/dist/icVKNegative-FCXPFYDV.png +0 -0
- package/dist/icVKOriginal-NCWB7WYH.png +0 -0
- package/dist/icWhatsAppNegative-FJHYFUMA.png +0 -0
- package/dist/icWhatsAppOriginal-MWQWQC56.png +0 -0
- package/dist/icXTwitterNegative-VS3UXBLN.png +0 -0
- package/dist/icXTwitterOriginal-WJ2IFMZL.png +0 -0
- package/dist/icYouTubeNegative-LUSZ7OD4.png +0 -0
- package/dist/icYouTubeOriginal-6Y2SNMC7.png +0 -0
- package/dist/index-tIixPl5M.d.mts +214 -0
- package/dist/index-tIixPl5M.d.ts +214 -0
- package/dist/index.d.mts +32 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +32215 -0
- package/dist/index.mjs +32022 -0
- package/dist/theme.d.mts +297 -0
- package/dist/theme.d.ts +297 -0
- package/dist/theme.js +472 -0
- package/dist/theme.mjs +458 -0
- package/dist/types-cxHozHqF.d.mts +92 -0
- package/dist/types-cxHozHqF.d.ts +92 -0
- package/dist/ui.d.mts +400 -0
- package/dist/ui.d.ts +400 -0
- package/dist/ui.js +1469 -0
- package/dist/ui.mjs +1461 -0
- package/dist/ui_config-LKHwCbDD.d.mts +102 -0
- package/dist/ui_config-LKHwCbDD.d.ts +102 -0
- package/dist/utils.d.mts +7 -0
- package/dist/utils.d.ts +7 -0
- package/dist/utils.js +89 -0
- package/dist/utils.mjs +83 -0
- 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 };
|
package/dist/utils.d.mts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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
|
+
}
|