@diteme/emojis 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 (145) hide show
  1. package/README.md +143 -0
  2. package/dist/ai_tutor-WNHWQYDP.png +0 -0
  3. package/dist/coins-O4IPZ7NP.png +0 -0
  4. package/dist/components/Avatar.d.ts +4 -0
  5. package/dist/components/Avatar.d.ts.map +1 -0
  6. package/dist/components/Avatar.native.d.ts +4 -0
  7. package/dist/components/Avatar.native.d.ts.map +1 -0
  8. package/dist/components/Emoji.d.ts +4 -0
  9. package/dist/components/Emoji.d.ts.map +1 -0
  10. package/dist/components/Emoji.native.d.ts +4 -0
  11. package/dist/components/Emoji.native.d.ts.map +1 -0
  12. package/dist/components/NativePrimitiveImage.d.ts +8 -0
  13. package/dist/components/NativePrimitiveImage.d.ts.map +1 -0
  14. package/dist/components/PrimitiveImage.d.ts +8 -0
  15. package/dist/components/PrimitiveImage.d.ts.map +1 -0
  16. package/dist/components/createEmojiComponent.d.ts +6 -0
  17. package/dist/components/createEmojiComponent.d.ts.map +1 -0
  18. package/dist/components/createNativeEmojiComponent.d.ts +4 -0
  19. package/dist/components/createNativeEmojiComponent.d.ts.map +1 -0
  20. package/dist/congratulations-ASF4U4ZT.png +0 -0
  21. package/dist/conversation-RQCTXP2V.png +0 -0
  22. package/dist/daily-challenge-ETWYJP6A.png +0 -0
  23. package/dist/disappointed-ZTUVBCHH.png +0 -0
  24. package/dist/downloads-MHRIFXAD.png +0 -0
  25. package/dist/experience-DZI47QB2.png +0 -0
  26. package/dist/favorites-D252WOG6.png +0 -0
  27. package/dist/fill-in-the-blanks-M77OTWD5.png +0 -0
  28. package/dist/flashcards-KDHV7RYV.png +0 -0
  29. package/dist/generated.d.ts +100 -0
  30. package/dist/generated.d.ts.map +1 -0
  31. package/dist/generated.native.d.ts +34 -0
  32. package/dist/generated.native.d.ts.map +1 -0
  33. package/dist/happy-YJGFQKB6.png +0 -0
  34. package/dist/high_five-HQXYZPSY.png +0 -0
  35. package/dist/index.cjs +478 -0
  36. package/dist/index.cjs.map +1 -0
  37. package/dist/index.d.ts +7 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +400 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/index.native.cjs +460 -0
  42. package/dist/index.native.cjs.map +1 -0
  43. package/dist/index.native.d.ts +7 -0
  44. package/dist/index.native.d.ts.map +1 -0
  45. package/dist/index.native.js +382 -0
  46. package/dist/index.native.js.map +1 -0
  47. package/dist/leaderboard-LSTOIIHH.png +0 -0
  48. package/dist/lessons-TDLQ53WK.png +0 -0
  49. package/dist/level_up-HAS7QDZ6.png +0 -0
  50. package/dist/listening-WLOQCLXP.png +0 -0
  51. package/dist/master-X6PI6XFY.png +0 -0
  52. package/dist/matching-MBZYB3CK.png +0 -0
  53. package/dist/offline_mode-VZCIU7GA.png +0 -0
  54. package/dist/pronounciation-RUNA2US6.png +0 -0
  55. package/dist/proud-E3JWJCQT.png +0 -0
  56. package/dist/proverbs-FPHAQNJO.png +0 -0
  57. package/dist/quiz-EVDBV2KO.png +0 -0
  58. package/dist/reading-ILT7U2L4.png +0 -0
  59. package/dist/reading-MQFP6R2R.png +0 -0
  60. package/dist/registry/avatarRegistry.d.ts +26 -0
  61. package/dist/registry/avatarRegistry.d.ts.map +1 -0
  62. package/dist/registry/emojiRegistry.d.ts +38 -0
  63. package/dist/registry/emojiRegistry.d.ts.map +1 -0
  64. package/dist/reward-PPH4P2MK.png +0 -0
  65. package/dist/rewards-MSB2SMRJ.png +0 -0
  66. package/dist/sad-6QTYKR6L.png +0 -0
  67. package/dist/speaking-QZUAZHPF.png +0 -0
  68. package/dist/streak-IID4BHCE.png +0 -0
  69. package/dist/surprised-75YTN54Y.png +0 -0
  70. package/dist/team_victory-QIHTVW2O.png +0 -0
  71. package/dist/thinking-SMJV3B45.png +0 -0
  72. package/dist/translate-XPSXXHX5.png +0 -0
  73. package/dist/trophy-C5CZ5KAE.png +0 -0
  74. package/dist/types.d.ts +30 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/utils/nativeStyles.d.ts +3 -0
  77. package/dist/utils/nativeStyles.d.ts.map +1 -0
  78. package/dist/utils/styles.d.ts +5 -0
  79. package/dist/utils/styles.d.ts.map +1 -0
  80. package/dist/waving-GIM4YVJK.png +0 -0
  81. package/dist/winner-MZFH4NCH.png +0 -0
  82. package/dist/writing-BLTJ4UKC.png +0 -0
  83. package/dist/xp_earned-SEZGMCR3.png +0 -0
  84. package/package.json +81 -0
  85. package/src/__tests__/emojis.test.tsx +43 -0
  86. package/src/assets/avatars/zebra/congratulations.png +0 -0
  87. package/src/assets/avatars/zebra/disappointed.png +0 -0
  88. package/src/assets/avatars/zebra/happy.png +0 -0
  89. package/src/assets/avatars/zebra/proud.png +0 -0
  90. package/src/assets/avatars/zebra/reading.png +0 -0
  91. package/src/assets/avatars/zebra/sad.png +0 -0
  92. package/src/assets/avatars/zebra/surprised.png +0 -0
  93. package/src/assets/avatars/zebra/thinking.png +0 -0
  94. package/src/assets/emojis/ai_tutor.png +0 -0
  95. package/src/assets/emojis/coins.png +0 -0
  96. package/src/assets/emojis/conversation.png +0 -0
  97. package/src/assets/emojis/daily-challenge.png +0 -0
  98. package/src/assets/emojis/downloads.png +0 -0
  99. package/src/assets/emojis/experience.png +0 -0
  100. package/src/assets/emojis/favorites.png +0 -0
  101. package/src/assets/emojis/fill-in-the-blanks.png +0 -0
  102. package/src/assets/emojis/flashcards.png +0 -0
  103. package/src/assets/emojis/high_five.png +0 -0
  104. package/src/assets/emojis/leaderboard.png +0 -0
  105. package/src/assets/emojis/lessons.png +0 -0
  106. package/src/assets/emojis/level_up.png +0 -0
  107. package/src/assets/emojis/listening.png +0 -0
  108. package/src/assets/emojis/master.png +0 -0
  109. package/src/assets/emojis/matching.png +0 -0
  110. package/src/assets/emojis/offline_mode.png +0 -0
  111. package/src/assets/emojis/pronounciation.png +0 -0
  112. package/src/assets/emojis/proverbs.png +0 -0
  113. package/src/assets/emojis/quiz.png +0 -0
  114. package/src/assets/emojis/reading.png +0 -0
  115. package/src/assets/emojis/reward.png +0 -0
  116. package/src/assets/emojis/rewards.png +0 -0
  117. package/src/assets/emojis/speaking.png +0 -0
  118. package/src/assets/emojis/streak/streak.png +0 -0
  119. package/src/assets/emojis/streak.png +0 -0
  120. package/src/assets/emojis/team_victory.png +0 -0
  121. package/src/assets/emojis/translate.png +0 -0
  122. package/src/assets/emojis/trophy.png +0 -0
  123. package/src/assets/emojis/waving.png +0 -0
  124. package/src/assets/emojis/winner.png +0 -0
  125. package/src/assets/emojis/writing.png +0 -0
  126. package/src/assets/emojis/xp_earned.png +0 -0
  127. package/src/components/Avatar.native.tsx +22 -0
  128. package/src/components/Avatar.tsx +22 -0
  129. package/src/components/Emoji.native.tsx +21 -0
  130. package/src/components/Emoji.tsx +21 -0
  131. package/src/components/NativePrimitiveImage.tsx +28 -0
  132. package/src/components/PrimitiveImage.tsx +42 -0
  133. package/src/components/createEmojiComponent.tsx +26 -0
  134. package/src/components/createNativeEmojiComponent.tsx +29 -0
  135. package/src/generated.native.ts +80 -0
  136. package/src/generated.ts +80 -0
  137. package/src/index.native.ts +22 -0
  138. package/src/index.ts +22 -0
  139. package/src/png.d.ts +4 -0
  140. package/src/react-native.d.ts +18 -0
  141. package/src/registry/avatarRegistry.ts +41 -0
  142. package/src/registry/emojiRegistry.ts +76 -0
  143. package/src/types.ts +81 -0
  144. package/src/utils/nativeStyles.ts +18 -0
  145. package/src/utils/styles.ts +23 -0
package/src/png.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ declare module "*.png" {
2
+ const source: string;
3
+ export default source;
4
+ }
@@ -0,0 +1,18 @@
1
+ declare module "react-native" {
2
+ import type * as React from "react";
3
+
4
+ export interface ImageProps {
5
+ accessibilityLabel?: string;
6
+ resizeMode?: "contain" | "cover" | "stretch" | "center";
7
+ source?: unknown;
8
+ style?: unknown;
9
+ }
10
+
11
+ export interface ViewProps {
12
+ accessibilityLabel?: string;
13
+ style?: unknown;
14
+ }
15
+
16
+ export const Image: React.ComponentType<ImageProps>;
17
+ export const View: React.ComponentType<ViewProps>;
18
+ }
@@ -0,0 +1,41 @@
1
+ import CongratulationsPNG from "../assets/avatars/zebra/congratulations.png";
2
+ import DisappointedPNG from "../assets/avatars/zebra/disappointed.png";
3
+ import HappyPNG from "../assets/avatars/zebra/happy.png";
4
+ import ProudPNG from "../assets/avatars/zebra/proud.png";
5
+ import ReadingPNG from "../assets/avatars/zebra/reading.png";
6
+ import SadPNG from "../assets/avatars/zebra/sad.png";
7
+ import SurprisedPNG from "../assets/avatars/zebra/surprised.png";
8
+ import ThinkingPNG from "../assets/avatars/zebra/thinking.png";
9
+ import type {
10
+ AvatarCharacter,
11
+ ResolvedAsset,
12
+ ZebraMood,
13
+ } from "../types";
14
+
15
+ const png = (source: unknown): ResolvedAsset => ({ source, type: "png" });
16
+
17
+ export const zebra = {
18
+ congratulations: png(CongratulationsPNG),
19
+ disappointed: png(DisappointedPNG),
20
+ happy: png(HappyPNG),
21
+ proud: png(ProudPNG),
22
+ reading: png(ReadingPNG),
23
+ sad: png(SadPNG),
24
+ surprised: png(SurprisedPNG),
25
+ thinking: png(ThinkingPNG),
26
+ } as const satisfies Readonly<Record<ZebraMood, ResolvedAsset>>;
27
+
28
+ export const avatarRegistry = {
29
+ zebra,
30
+ } as const satisfies Readonly<Record<AvatarCharacter, typeof zebra>>;
31
+
32
+ export const avatarCharacters = Object.keys(
33
+ avatarRegistry,
34
+ ) as AvatarCharacter[];
35
+
36
+ export function getAvatarAsset(
37
+ character: string,
38
+ mood: string,
39
+ ): ResolvedAsset | undefined {
40
+ return avatarRegistry[character as AvatarCharacter]?.[mood as ZebraMood];
41
+ }
@@ -0,0 +1,76 @@
1
+ import AiTutorPNG from "../assets/emojis/ai_tutor.png";
2
+ import CoinsPNG from "../assets/emojis/coins.png";
3
+ import ConversationPNG from "../assets/emojis/conversation.png";
4
+ import DailyChallengePNG from "../assets/emojis/daily-challenge.png";
5
+ import DownloadsPNG from "../assets/emojis/downloads.png";
6
+ import ExperiencePNG from "../assets/emojis/experience.png";
7
+ import FavoritesPNG from "../assets/emojis/favorites.png";
8
+ import FillInTheBlanksPNG from "../assets/emojis/fill-in-the-blanks.png";
9
+ import FlashcardsPNG from "../assets/emojis/flashcards.png";
10
+ import HighFivePNG from "../assets/emojis/high_five.png";
11
+ import LeaderboardPNG from "../assets/emojis/leaderboard.png";
12
+ import LessonsPNG from "../assets/emojis/lessons.png";
13
+ import LevelUpPNG from "../assets/emojis/level_up.png";
14
+ import ListeningPNG from "../assets/emojis/listening.png";
15
+ import MatchingPNG from "../assets/emojis/matching.png";
16
+ import MasterPNG from "../assets/emojis/master.png";
17
+ import OfflineModePNG from "../assets/emojis/offline_mode.png";
18
+ import PronounciationPNG from "../assets/emojis/pronounciation.png";
19
+ import ProverbsPNG from "../assets/emojis/proverbs.png";
20
+ import QuizPNG from "../assets/emojis/quiz.png";
21
+ import ReadingPNG from "../assets/emojis/reading.png";
22
+ import RewardPNG from "../assets/emojis/reward.png";
23
+ import RewardsPNG from "../assets/emojis/rewards.png";
24
+ import SpeakingPNG from "../assets/emojis/speaking.png";
25
+ import StreakPNG from "../assets/emojis/streak.png";
26
+ import TeamVictoryPNG from "../assets/emojis/team_victory.png";
27
+ import TranslatePNG from "../assets/emojis/translate.png";
28
+ import TrophyPNG from "../assets/emojis/trophy.png";
29
+ import WavingPNG from "../assets/emojis/waving.png";
30
+ import WinnerPNG from "../assets/emojis/winner.png";
31
+ import XpEarnedPNG from "../assets/emojis/xp_earned.png";
32
+ import WritingPNG from "../assets/emojis/writing.png";
33
+ import type { AssetRegistry, EmojiName, ResolvedAsset } from "../types";
34
+
35
+ const png = (source: unknown): ResolvedAsset => ({ source, type: "png" });
36
+
37
+ export const emojiRegistry = {
38
+ ai_tutor: png(AiTutorPNG),
39
+ coins: png(CoinsPNG),
40
+ conversation: png(ConversationPNG),
41
+ "daily-challenge": png(DailyChallengePNG),
42
+ downloads: png(DownloadsPNG),
43
+ experience: png(ExperiencePNG),
44
+ favorites: png(FavoritesPNG),
45
+ "fill-in-the-blanks": png(FillInTheBlanksPNG),
46
+ flashcards: png(FlashcardsPNG),
47
+ high_five: png(HighFivePNG),
48
+ leaderboard: png(LeaderboardPNG),
49
+ lessons: png(LessonsPNG),
50
+ level_up: png(LevelUpPNG),
51
+ listening: png(ListeningPNG),
52
+ matching: png(MatchingPNG),
53
+ master: png(MasterPNG),
54
+ offline_mode: png(OfflineModePNG),
55
+ pronounciation: png(PronounciationPNG),
56
+ proverbs: png(ProverbsPNG),
57
+ quiz: png(QuizPNG),
58
+ reading: png(ReadingPNG),
59
+ reward: png(RewardPNG),
60
+ rewards: png(RewardsPNG),
61
+ speaking: png(SpeakingPNG),
62
+ streak: png(StreakPNG),
63
+ team_victory: png(TeamVictoryPNG),
64
+ translate: png(TranslatePNG),
65
+ trophy: png(TrophyPNG),
66
+ waving: png(WavingPNG),
67
+ winner: png(WinnerPNG),
68
+ xp_earned: png(XpEarnedPNG),
69
+ writing: png(WritingPNG),
70
+ } as const satisfies AssetRegistry<EmojiName>;
71
+
72
+ export const emojiNames = Object.keys(emojiRegistry) as EmojiName[];
73
+
74
+ export function getEmojiAsset(name: string): ResolvedAsset | undefined {
75
+ return emojiRegistry[name as EmojiName];
76
+ }
package/src/types.ts ADDED
@@ -0,0 +1,81 @@
1
+ import type * as React from "react";
2
+
3
+ export type ImageFit = "contain" | "cover" | "fill" | "none" | "scale-down";
4
+
5
+ export interface BaseImageProps {
6
+ size?: number;
7
+ className?: string;
8
+ style?: React.CSSProperties;
9
+ alt?: string;
10
+ loading?: "lazy" | "eager";
11
+ borderRadius?: number | string;
12
+ objectFit?: ImageFit;
13
+ animated?: boolean;
14
+ }
15
+
16
+ export type EmojiName =
17
+ | "ai_tutor"
18
+ | "coins"
19
+ | "conversation"
20
+ | "daily-challenge"
21
+ | "downloads"
22
+ | "experience"
23
+ | "favorites"
24
+ | "fill-in-the-blanks"
25
+ | "flashcards"
26
+ | "high_five"
27
+ | "leaderboard"
28
+ | "lessons"
29
+ | "level_up"
30
+ | "listening"
31
+ | "matching"
32
+ | "master"
33
+ | "offline_mode"
34
+ | "pronounciation"
35
+ | "proverbs"
36
+ | "quiz"
37
+ | "reading"
38
+ | "reward"
39
+ | "rewards"
40
+ | "speaking"
41
+ | "streak"
42
+ | "team_victory"
43
+ | "translate"
44
+ | "trophy"
45
+ | "waving"
46
+ | "winner"
47
+ | "xp_earned"
48
+ | "writing";
49
+
50
+ export type AvatarCharacter = "zebra";
51
+
52
+ export type ZebraMood =
53
+ | "congratulations"
54
+ | "disappointed"
55
+ | "happy"
56
+ | "proud"
57
+ | "reading"
58
+ | "sad"
59
+ | "surprised"
60
+ | "thinking";
61
+
62
+ export type AvatarMood = ZebraMood;
63
+
64
+ export interface EmojiProps extends BaseImageProps {
65
+ name: EmojiName | (string & {});
66
+ }
67
+
68
+ export interface AvatarProps extends BaseImageProps {
69
+ character: AvatarCharacter | (string & {});
70
+ mood: AvatarMood | (string & {});
71
+ }
72
+
73
+ export interface ResolvedAsset {
74
+ source: unknown;
75
+ type: "png" | "svg" | "lottie" | "rive" | "glb";
76
+ animated?: boolean;
77
+ }
78
+
79
+ export type AssetRegistry<TName extends string = string> = Readonly<
80
+ Record<TName, ResolvedAsset>
81
+ >;
@@ -0,0 +1,18 @@
1
+ import type { BaseImageProps } from "../types";
2
+ import { DEFAULT_SIZE } from "./styles";
3
+
4
+ export function getNativeImageStyle({
5
+ size = DEFAULT_SIZE,
6
+ style,
7
+ borderRadius = style?.borderRadius,
8
+ }: Pick<BaseImageProps, "size" | "style" | "borderRadius" | "objectFit">) {
9
+ return [
10
+ {
11
+ width: size,
12
+ height: size,
13
+ borderRadius,
14
+ flexShrink: 0,
15
+ },
16
+ style,
17
+ ];
18
+ }
@@ -0,0 +1,23 @@
1
+ import type * as React from "react";
2
+ import type { BaseImageProps } from "../types";
3
+
4
+ export const DEFAULT_SIZE = 32;
5
+
6
+ export function getImageStyle({
7
+ size = DEFAULT_SIZE,
8
+ style,
9
+ borderRadius = style?.borderRadius,
10
+ objectFit = "contain",
11
+ }: Pick<BaseImageProps, "size" | "style" | "borderRadius" | "objectFit">):
12
+ React.CSSProperties {
13
+ return {
14
+ width: size,
15
+ height: size,
16
+ maxWidth: "100%",
17
+ objectFit,
18
+ borderRadius,
19
+ display: "block",
20
+ flexShrink: 0,
21
+ ...style,
22
+ };
23
+ }