@mantine/emoji 0.0.0-stage → 9.8.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 (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -2
  3. package/cjs/adapters/emoji-mart-adapter.cjs +30 -0
  4. package/cjs/adapters/emoji-mart-adapter.cjs.map +1 -0
  5. package/cjs/adapters/emojibase-adapter.cjs +76 -0
  6. package/cjs/adapters/emojibase-adapter.cjs.map +1 -0
  7. package/cjs/categories.cjs +52 -0
  8. package/cjs/categories.cjs.map +1 -0
  9. package/cjs/components/EmojiPicker/EmojiButton.cjs +24 -0
  10. package/cjs/components/EmojiPicker/EmojiButton.cjs.map +1 -0
  11. package/cjs/components/EmojiPicker/EmojiPicker.cjs +289 -0
  12. package/cjs/components/EmojiPicker/EmojiPicker.cjs.map +1 -0
  13. package/cjs/components/EmojiPicker/EmojiPicker.context.cjs +7 -0
  14. package/cjs/components/EmojiPicker/EmojiPicker.context.cjs.map +1 -0
  15. package/cjs/components/EmojiPicker/EmojiPicker.module.cjs +22 -0
  16. package/cjs/components/EmojiPicker/EmojiPicker.module.cjs.map +1 -0
  17. package/cjs/components/EmojiPicker/EmojiPickerCategoryNav.cjs +38 -0
  18. package/cjs/components/EmojiPicker/EmojiPickerCategoryNav.cjs.map +1 -0
  19. package/cjs/components/EmojiPicker/EmojiPickerGrid.cjs +131 -0
  20. package/cjs/components/EmojiPicker/EmojiPickerGrid.cjs.map +1 -0
  21. package/cjs/components/EmojiPicker/EmojiPickerPreview.cjs +24 -0
  22. package/cjs/components/EmojiPicker/EmojiPickerPreview.cjs.map +1 -0
  23. package/cjs/components/EmojiPicker/EmojiPickerSearch.cjs +57 -0
  24. package/cjs/components/EmojiPicker/EmojiPickerSearch.cjs.map +1 -0
  25. package/cjs/components/EmojiPicker/EmojiPickerSkinTone.cjs +63 -0
  26. package/cjs/components/EmojiPicker/EmojiPickerSkinTone.cjs.map +1 -0
  27. package/cjs/components/EmojiPickerInput/EmojiPickerInput.cjs +190 -0
  28. package/cjs/components/EmojiPickerInput/EmojiPickerInput.cjs.map +1 -0
  29. package/cjs/components/EmojiPickerInput/EmojiPickerInput.module.cjs +11 -0
  30. package/cjs/components/EmojiPickerInput/EmojiPickerInput.module.cjs.map +1 -0
  31. package/cjs/components/EmojiPickerPopover/EmojiPickerPopover.cjs +59 -0
  32. package/cjs/components/EmojiPickerPopover/EmojiPickerPopover.cjs.map +1 -0
  33. package/cjs/components/EmojiPickerPopover/EmojiPickerPopover.module.cjs +6 -0
  34. package/cjs/components/EmojiPickerPopover/EmojiPickerPopover.module.cjs.map +1 -0
  35. package/cjs/hooks/use-emoji-grid-navigation.cjs +70 -0
  36. package/cjs/hooks/use-emoji-grid-navigation.cjs.map +1 -0
  37. package/cjs/hooks/use-emoji-search.cjs +21 -0
  38. package/cjs/hooks/use-emoji-search.cjs.map +1 -0
  39. package/cjs/index.cjs +22 -0
  40. package/cjs/types.cjs +20 -0
  41. package/cjs/types.cjs.map +1 -0
  42. package/cjs/utils/emoji-grid-utils.cjs +57 -0
  43. package/cjs/utils/emoji-grid-utils.cjs.map +1 -0
  44. package/cjs/utils/flatten-emoji-data.cjs +33 -0
  45. package/cjs/utils/flatten-emoji-data.cjs.map +1 -0
  46. package/cjs/utils/is-emoji-supported.cjs +64 -0
  47. package/cjs/utils/is-emoji-supported.cjs.map +1 -0
  48. package/cjs/utils/search-emojis.cjs +21 -0
  49. package/cjs/utils/search-emojis.cjs.map +1 -0
  50. package/esm/adapters/emoji-mart-adapter.mjs +30 -0
  51. package/esm/adapters/emoji-mart-adapter.mjs.map +1 -0
  52. package/esm/adapters/emojibase-adapter.mjs +76 -0
  53. package/esm/adapters/emojibase-adapter.mjs.map +1 -0
  54. package/esm/categories.mjs +47 -0
  55. package/esm/categories.mjs.map +1 -0
  56. package/esm/components/EmojiPicker/EmojiButton.mjs +24 -0
  57. package/esm/components/EmojiPicker/EmojiButton.mjs.map +1 -0
  58. package/esm/components/EmojiPicker/EmojiPicker.context.mjs +7 -0
  59. package/esm/components/EmojiPicker/EmojiPicker.context.mjs.map +1 -0
  60. package/esm/components/EmojiPicker/EmojiPicker.mjs +289 -0
  61. package/esm/components/EmojiPicker/EmojiPicker.mjs.map +1 -0
  62. package/esm/components/EmojiPicker/EmojiPicker.module.mjs +22 -0
  63. package/esm/components/EmojiPicker/EmojiPicker.module.mjs.map +1 -0
  64. package/esm/components/EmojiPicker/EmojiPickerCategoryNav.mjs +38 -0
  65. package/esm/components/EmojiPicker/EmojiPickerCategoryNav.mjs.map +1 -0
  66. package/esm/components/EmojiPicker/EmojiPickerGrid.mjs +131 -0
  67. package/esm/components/EmojiPicker/EmojiPickerGrid.mjs.map +1 -0
  68. package/esm/components/EmojiPicker/EmojiPickerPreview.mjs +24 -0
  69. package/esm/components/EmojiPicker/EmojiPickerPreview.mjs.map +1 -0
  70. package/esm/components/EmojiPicker/EmojiPickerSearch.mjs +57 -0
  71. package/esm/components/EmojiPicker/EmojiPickerSearch.mjs.map +1 -0
  72. package/esm/components/EmojiPicker/EmojiPickerSkinTone.mjs +63 -0
  73. package/esm/components/EmojiPicker/EmojiPickerSkinTone.mjs.map +1 -0
  74. package/esm/components/EmojiPickerInput/EmojiPickerInput.mjs +190 -0
  75. package/esm/components/EmojiPickerInput/EmojiPickerInput.mjs.map +1 -0
  76. package/esm/components/EmojiPickerInput/EmojiPickerInput.module.mjs +11 -0
  77. package/esm/components/EmojiPickerInput/EmojiPickerInput.module.mjs.map +1 -0
  78. package/esm/components/EmojiPickerPopover/EmojiPickerPopover.mjs +59 -0
  79. package/esm/components/EmojiPickerPopover/EmojiPickerPopover.mjs.map +1 -0
  80. package/esm/components/EmojiPickerPopover/EmojiPickerPopover.module.mjs +6 -0
  81. package/esm/components/EmojiPickerPopover/EmojiPickerPopover.module.mjs.map +1 -0
  82. package/esm/hooks/use-emoji-grid-navigation.mjs +70 -0
  83. package/esm/hooks/use-emoji-grid-navigation.mjs.map +1 -0
  84. package/esm/hooks/use-emoji-search.mjs +21 -0
  85. package/esm/hooks/use-emoji-search.mjs.map +1 -0
  86. package/esm/index.mjs +11 -0
  87. package/esm/types.mjs +20 -0
  88. package/esm/types.mjs.map +1 -0
  89. package/esm/utils/emoji-grid-utils.mjs +54 -0
  90. package/esm/utils/emoji-grid-utils.mjs.map +1 -0
  91. package/esm/utils/flatten-emoji-data.mjs +33 -0
  92. package/esm/utils/flatten-emoji-data.mjs.map +1 -0
  93. package/esm/utils/is-emoji-supported.mjs +63 -0
  94. package/esm/utils/is-emoji-supported.mjs.map +1 -0
  95. package/esm/utils/search-emojis.mjs +21 -0
  96. package/esm/utils/search-emojis.mjs.map +1 -0
  97. package/lib/adapters/emoji-mart-adapter.d.ts +23 -0
  98. package/lib/adapters/emojibase-adapter.d.ts +25 -0
  99. package/lib/adapters/index.d.ts +2 -0
  100. package/lib/categories.d.ts +7 -0
  101. package/lib/components/EmojiPicker/EmojiButton.d.ts +10 -0
  102. package/lib/components/EmojiPicker/EmojiPicker.context.d.ts +9 -0
  103. package/lib/components/EmojiPicker/EmojiPicker.d.ts +64 -0
  104. package/lib/components/EmojiPicker/EmojiPickerCategoryNav.d.ts +10 -0
  105. package/lib/components/EmojiPicker/EmojiPickerGrid.d.ts +23 -0
  106. package/lib/components/EmojiPicker/EmojiPickerPreview.d.ts +9 -0
  107. package/lib/components/EmojiPicker/EmojiPickerSearch.d.ts +14 -0
  108. package/lib/components/EmojiPicker/EmojiPickerSkinTone.d.ts +6 -0
  109. package/lib/components/EmojiPicker/index.d.ts +2 -0
  110. package/lib/components/EmojiPickerInput/EmojiPickerInput.d.ts +54 -0
  111. package/lib/components/EmojiPickerInput/index.d.ts +2 -0
  112. package/lib/components/EmojiPickerPopover/EmojiPickerPopover.d.ts +24 -0
  113. package/lib/components/EmojiPickerPopover/index.d.ts +2 -0
  114. package/lib/hooks/index.d.ts +2 -0
  115. package/lib/hooks/use-emoji-grid-navigation.d.ts +18 -0
  116. package/lib/hooks/use-emoji-search.d.ts +14 -0
  117. package/lib/index.d.mts +10 -0
  118. package/lib/index.d.ts +10 -0
  119. package/lib/types.d.ts +41 -0
  120. package/lib/utils/emoji-grid-utils.d.ts +17 -0
  121. package/lib/utils/flatten-emoji-data.d.ts +2 -0
  122. package/lib/utils/index.d.ts +5 -0
  123. package/lib/utils/is-emoji-supported.d.ts +4 -0
  124. package/lib/utils/search-emojis.d.ts +2 -0
  125. package/package.json +54 -4
  126. package/styles.css +228 -0
  127. package/styles.layer.css +229 -0
@@ -0,0 +1,2 @@
1
+ import type { EmojiPickerData, FlattenedRowItem } from '../types';
2
+ export declare function flattenEmojiData(data: EmojiPickerData, columns: number, categoryLabels?: Record<string, string>): FlattenedRowItem[];
@@ -0,0 +1,5 @@
1
+ export { searchEmojis } from './search-emojis';
2
+ export { flattenEmojiData } from './flatten-emoji-data';
3
+ export { isEmojiSupported, filterSupportedEmojis } from './is-emoji-supported';
4
+ export { createEmojiGridModel, getNextEmojiIndex, getEmojiItemIndex, applySkinTone, } from './emoji-grid-utils';
5
+ export type { EmojiGridModel, EmojiGridDirection } from './emoji-grid-utils';
@@ -0,0 +1,4 @@
1
+ export declare function isEmojiSupported(emoji: string): boolean;
2
+ export declare function filterSupportedEmojis(emojis: Record<string, {
3
+ emoji: string;
4
+ }>, emojiIds: string[]): string[];
@@ -0,0 +1,2 @@
1
+ import type { EmojiPickerData, EmojiPickerEmoji } from '../types';
2
+ export declare function searchEmojis(data: EmojiPickerData, query: string): EmojiPickerEmoji[];
package/package.json CHANGED
@@ -1,6 +1,56 @@
1
1
  {
2
2
  "name": "@mantine/emoji",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "9.8.0",
4
+ "description": "Emoji picker components for Mantine",
5
+ "homepage": "https://mantine.dev",
6
+ "license": "MIT",
7
+ "author": "Vitaly Rtishchev <rtivital@gmail.com>",
8
+ "keywords": [
9
+ "emoji",
10
+ "emoji-picker",
11
+ "mantine",
12
+ "react"
13
+ ],
14
+ "sideEffects": [
15
+ "*.css"
16
+ ],
17
+ "main": "cjs/index.cjs",
18
+ "module": "esm/index.mjs",
19
+ "types": "lib/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "import": {
23
+ "types": "./lib/index.d.mts",
24
+ "default": "./esm/index.mjs"
25
+ },
26
+ "require": {
27
+ "types": "./lib/index.d.ts",
28
+ "default": "./cjs/index.cjs"
29
+ }
30
+ },
31
+ "./styles.css": "./styles.css",
32
+ "./styles.layer.css": "./styles.layer.css"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/mantinedev/mantine.git",
37
+ "directory": "packages/@mantine/emoji"
38
+ },
39
+ "peerDependencies": {
40
+ "@mantine/core": "9.8.0",
41
+ "@mantine/hooks": "9.8.0",
42
+ "react": "^19.2.0",
43
+ "react-dom": "^19.2.0"
44
+ },
45
+ "dependencies": {
46
+ "@tanstack/react-virtual": "^3.14.22"
47
+ },
48
+ "devDependencies": {
49
+ "@emoji-mart/data": "^1.2.1",
50
+ "@mantine-tests/core": "workspace:*",
51
+ "@mantine/core": "workspace:*",
52
+ "@mantine/hooks": "workspace:*",
53
+ "react": "19.3.1",
54
+ "react-dom": "19.3.1"
55
+ }
56
+ }
package/styles.css ADDED
@@ -0,0 +1,228 @@
1
+ .m_873e66bb {
2
+ --ep-columns: 9;
3
+ --ep-emoji-size: calc(2rem * var(--mantine-scale));
4
+ --ep-emoji-fz: calc(1.125rem * var(--mantine-scale));
5
+ --ep-preview-py: calc(0.3125rem * var(--mantine-scale));
6
+ --ep-skin-tone-size: calc(1.375rem * var(--mantine-scale));
7
+ --ep-skin-tone-fz: calc(0.875rem * var(--mantine-scale));
8
+
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: calc(var(--ep-columns) * var(--ep-emoji-size) + var(--mantine-spacing-xs) * 2 + 2px);
12
+ border: 1px solid var(--mantine-color-default-border);
13
+ border-radius: var(--mantine-radius-default);
14
+ background-color: var(--mantine-color-body);
15
+ }
16
+
17
+ .m_b2613941 {
18
+ padding: var(--mantine-spacing-xs);
19
+ padding-bottom: 0;
20
+ }
21
+
22
+ .m_d6a2ef4c {
23
+ display: flex;
24
+ flex-wrap: wrap;
25
+ justify-content: space-between;
26
+ padding: 4px var(--mantine-spacing-xs);
27
+ border-bottom: 1px solid var(--mantine-color-default-border);
28
+ }
29
+
30
+ .m_f214599e {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ flex: 1 1 calc(var(--ep-emoji-fz) + 4px);
35
+ max-width: var(--ep-emoji-size);
36
+ height: var(--ep-emoji-size);
37
+ font-size: var(--ep-emoji-fz);
38
+ border-radius: var(--mantine-radius-sm);
39
+ cursor: pointer;
40
+ }
41
+
42
+ @media (hover: hover) {
43
+
44
+ .m_f214599e:hover {
45
+ background-color: var(--mantine-color-default-hover);
46
+ }
47
+ }
48
+
49
+ @media (hover: none) {
50
+
51
+ .m_f214599e:active {
52
+ background-color: var(--mantine-color-default-hover);
53
+ }
54
+ }
55
+
56
+ .m_5d2ad400 {
57
+ padding: 0 var(--mantine-spacing-xs);
58
+ }
59
+
60
+ .m_5d2ad400 [role='grid']:focus-visible {
61
+ outline: 2px solid var(--mantine-primary-color-filled);
62
+ outline-offset: calc(-0.125rem * var(--mantine-scale));
63
+ }
64
+
65
+ .m_5fd65a94 {
66
+ position: absolute;
67
+ inset: 0;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ padding: var(--mantine-spacing-xs);
72
+ text-align: center;
73
+ }
74
+
75
+ .m_b987dedd {
76
+ display: flex;
77
+ align-items: center;
78
+ font-size: var(--mantine-font-size-xs);
79
+ font-weight: 600;
80
+ color: var(--mantine-color-dimmed);
81
+ padding: var(--mantine-spacing-xs) 0;
82
+ background-color: var(--mantine-color-body);
83
+ }
84
+
85
+ .m_8739711f {
86
+ display: grid;
87
+ grid-template-columns: repeat(var(--ep-columns), var(--ep-emoji-size));
88
+ }
89
+
90
+ .m_5fd6558d {
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ width: var(--ep-emoji-size);
95
+ height: var(--ep-emoji-size);
96
+ font-size: var(--ep-emoji-fz);
97
+ border-radius: var(--mantine-radius-sm);
98
+ cursor: pointer;
99
+ line-height: 1;
100
+ padding: 0;
101
+ border: none;
102
+ background: none;
103
+ }
104
+
105
+ .m_5fd6558d:focus,
106
+ .m_5fd6558d:focus-visible {
107
+ outline: none;
108
+ background: none;
109
+ }
110
+
111
+ .m_5fd6558d[data-focused] {
112
+ background-color: var(--mantine-color-default-hover);
113
+ outline: 2px solid var(--mantine-primary-color-filled);
114
+ outline-offset: calc(-0.125rem * var(--mantine-scale));
115
+ }
116
+
117
+ @media (hover: hover) {
118
+
119
+ .m_5fd6558d:hover {
120
+ background-color: var(--mantine-color-default-hover);
121
+ }
122
+ }
123
+
124
+ @media (hover: none) {
125
+
126
+ .m_5fd6558d:active {
127
+ background-color: var(--mantine-color-default-hover);
128
+ }
129
+ }
130
+
131
+ .mantine-focus-auto.m_5fd6558d:focus-visible {
132
+ outline: none;
133
+ }
134
+
135
+ .m_117c834f {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: flex-end;
139
+ gap: var(--mantine-spacing-xs);
140
+ padding: var(--ep-preview-py) var(--mantine-spacing-xs);
141
+ border-top: 1px solid var(--mantine-color-default-border);
142
+ }
143
+
144
+ .m_91abc637 {
145
+ font-size: var(--ep-emoji-fz);
146
+ line-height: 1;
147
+ flex-shrink: 0;
148
+ }
149
+
150
+ .m_2e01327a {
151
+ font-size: var(--mantine-font-size-sm);
152
+ color: var(--mantine-color-dimmed);
153
+ white-space: nowrap;
154
+ overflow: hidden;
155
+ text-overflow: ellipsis;
156
+ min-width: 0;
157
+ flex: 1;
158
+ }
159
+
160
+ .m_16864e19 {
161
+ padding: calc(0.25rem * var(--mantine-scale));
162
+ }
163
+
164
+ .m_774cfde7 {
165
+ display: flex;
166
+ gap: calc(0.125rem * var(--mantine-scale));
167
+ }
168
+
169
+ .m_daf4133a {
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: center;
173
+ width: var(--ep-skin-tone-size);
174
+ height: var(--ep-skin-tone-size);
175
+ font-size: var(--ep-skin-tone-fz);
176
+ border-radius: var(--mantine-radius-sm);
177
+ cursor: pointer;
178
+ line-height: 1;
179
+ }
180
+
181
+ @media (hover: hover) {
182
+
183
+ .m_daf4133a:hover {
184
+ background-color: var(--mantine-color-default-hover);
185
+ }
186
+ }
187
+
188
+ @media (hover: none) {
189
+
190
+ .m_daf4133a:active {
191
+ background-color: var(--mantine-color-default-hover);
192
+ }
193
+ }
194
+
195
+ .m_774cfde7 .m_daf4133a[data-active] {
196
+ background-color: var(--mantine-color-default-hover);
197
+ }
198
+
199
+ .m_c47f7ead {
200
+ padding: 0;
201
+ border: none;
202
+ background: none;
203
+ }
204
+
205
+ .m_c78924f3 {
206
+ line-height: 1;
207
+ flex-shrink: 0;
208
+ }
209
+
210
+ .m_e3dc621e {
211
+ white-space: nowrap;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ min-width: 0;
215
+ }
216
+
217
+ .m_e8c48c28 {
218
+ padding: 0;
219
+ border: none;
220
+ background: none;
221
+ }
222
+
223
+ .m_c873361e {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--mantine-spacing-xs);
227
+ overflow: hidden;
228
+ }
@@ -0,0 +1,229 @@
1
+ @layer mantine {.m_873e66bb {
2
+ --ep-columns: 9;
3
+ --ep-emoji-size: calc(2rem * var(--mantine-scale));
4
+ --ep-emoji-fz: calc(1.125rem * var(--mantine-scale));
5
+ --ep-preview-py: calc(0.3125rem * var(--mantine-scale));
6
+ --ep-skin-tone-size: calc(1.375rem * var(--mantine-scale));
7
+ --ep-skin-tone-fz: calc(0.875rem * var(--mantine-scale));
8
+
9
+ display: flex;
10
+ flex-direction: column;
11
+ width: calc(var(--ep-columns) * var(--ep-emoji-size) + var(--mantine-spacing-xs) * 2 + 2px);
12
+ border: 1px solid var(--mantine-color-default-border);
13
+ border-radius: var(--mantine-radius-default);
14
+ background-color: var(--mantine-color-body);
15
+ }
16
+
17
+ .m_b2613941 {
18
+ padding: var(--mantine-spacing-xs);
19
+ padding-bottom: 0;
20
+ }
21
+
22
+ .m_d6a2ef4c {
23
+ display: flex;
24
+ flex-wrap: wrap;
25
+ justify-content: space-between;
26
+ padding: 4px var(--mantine-spacing-xs);
27
+ border-bottom: 1px solid var(--mantine-color-default-border);
28
+ }
29
+
30
+ .m_f214599e {
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ flex: 1 1 calc(var(--ep-emoji-fz) + 4px);
35
+ max-width: var(--ep-emoji-size);
36
+ height: var(--ep-emoji-size);
37
+ font-size: var(--ep-emoji-fz);
38
+ border-radius: var(--mantine-radius-sm);
39
+ cursor: pointer;
40
+ }
41
+
42
+ @media (hover: hover) {
43
+
44
+ .m_f214599e:hover {
45
+ background-color: var(--mantine-color-default-hover);
46
+ }
47
+ }
48
+
49
+ @media (hover: none) {
50
+
51
+ .m_f214599e:active {
52
+ background-color: var(--mantine-color-default-hover);
53
+ }
54
+ }
55
+
56
+ .m_5d2ad400 {
57
+ padding: 0 var(--mantine-spacing-xs);
58
+ }
59
+
60
+ .m_5d2ad400 [role='grid']:focus-visible {
61
+ outline: 2px solid var(--mantine-primary-color-filled);
62
+ outline-offset: calc(-0.125rem * var(--mantine-scale));
63
+ }
64
+
65
+ .m_5fd65a94 {
66
+ position: absolute;
67
+ inset: 0;
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ padding: var(--mantine-spacing-xs);
72
+ text-align: center;
73
+ }
74
+
75
+ .m_b987dedd {
76
+ display: flex;
77
+ align-items: center;
78
+ font-size: var(--mantine-font-size-xs);
79
+ font-weight: 600;
80
+ color: var(--mantine-color-dimmed);
81
+ padding: var(--mantine-spacing-xs) 0;
82
+ background-color: var(--mantine-color-body);
83
+ }
84
+
85
+ .m_8739711f {
86
+ display: grid;
87
+ grid-template-columns: repeat(var(--ep-columns), var(--ep-emoji-size));
88
+ }
89
+
90
+ .m_5fd6558d {
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: center;
94
+ width: var(--ep-emoji-size);
95
+ height: var(--ep-emoji-size);
96
+ font-size: var(--ep-emoji-fz);
97
+ border-radius: var(--mantine-radius-sm);
98
+ cursor: pointer;
99
+ line-height: 1;
100
+ padding: 0;
101
+ border: none;
102
+ background: none;
103
+ }
104
+
105
+ .m_5fd6558d:focus,
106
+ .m_5fd6558d:focus-visible {
107
+ outline: none;
108
+ background: none;
109
+ }
110
+
111
+ .m_5fd6558d[data-focused] {
112
+ background-color: var(--mantine-color-default-hover);
113
+ outline: 2px solid var(--mantine-primary-color-filled);
114
+ outline-offset: calc(-0.125rem * var(--mantine-scale));
115
+ }
116
+
117
+ @media (hover: hover) {
118
+
119
+ .m_5fd6558d:hover {
120
+ background-color: var(--mantine-color-default-hover);
121
+ }
122
+ }
123
+
124
+ @media (hover: none) {
125
+
126
+ .m_5fd6558d:active {
127
+ background-color: var(--mantine-color-default-hover);
128
+ }
129
+ }
130
+
131
+ .mantine-focus-auto.m_5fd6558d:focus-visible {
132
+ outline: none;
133
+ }
134
+
135
+ .m_117c834f {
136
+ display: flex;
137
+ align-items: center;
138
+ justify-content: flex-end;
139
+ gap: var(--mantine-spacing-xs);
140
+ padding: var(--ep-preview-py) var(--mantine-spacing-xs);
141
+ border-top: 1px solid var(--mantine-color-default-border);
142
+ }
143
+
144
+ .m_91abc637 {
145
+ font-size: var(--ep-emoji-fz);
146
+ line-height: 1;
147
+ flex-shrink: 0;
148
+ }
149
+
150
+ .m_2e01327a {
151
+ font-size: var(--mantine-font-size-sm);
152
+ color: var(--mantine-color-dimmed);
153
+ white-space: nowrap;
154
+ overflow: hidden;
155
+ text-overflow: ellipsis;
156
+ min-width: 0;
157
+ flex: 1;
158
+ }
159
+
160
+ .m_16864e19 {
161
+ padding: calc(0.25rem * var(--mantine-scale));
162
+ }
163
+
164
+ .m_774cfde7 {
165
+ display: flex;
166
+ gap: calc(0.125rem * var(--mantine-scale));
167
+ }
168
+
169
+ .m_daf4133a {
170
+ display: flex;
171
+ align-items: center;
172
+ justify-content: center;
173
+ width: var(--ep-skin-tone-size);
174
+ height: var(--ep-skin-tone-size);
175
+ font-size: var(--ep-skin-tone-fz);
176
+ border-radius: var(--mantine-radius-sm);
177
+ cursor: pointer;
178
+ line-height: 1;
179
+ }
180
+
181
+ @media (hover: hover) {
182
+
183
+ .m_daf4133a:hover {
184
+ background-color: var(--mantine-color-default-hover);
185
+ }
186
+ }
187
+
188
+ @media (hover: none) {
189
+
190
+ .m_daf4133a:active {
191
+ background-color: var(--mantine-color-default-hover);
192
+ }
193
+ }
194
+
195
+ .m_774cfde7 .m_daf4133a[data-active] {
196
+ background-color: var(--mantine-color-default-hover);
197
+ }
198
+
199
+ .m_c47f7ead {
200
+ padding: 0;
201
+ border: none;
202
+ background: none;
203
+ }
204
+
205
+ .m_c78924f3 {
206
+ line-height: 1;
207
+ flex-shrink: 0;
208
+ }
209
+
210
+ .m_e3dc621e {
211
+ white-space: nowrap;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ min-width: 0;
215
+ }
216
+
217
+ .m_e8c48c28 {
218
+ padding: 0;
219
+ border: none;
220
+ background: none;
221
+ }
222
+
223
+ .m_c873361e {
224
+ display: flex;
225
+ align-items: center;
226
+ gap: var(--mantine-spacing-xs);
227
+ overflow: hidden;
228
+ }
229
+ }