emoji-picker-react 4.22.3 → 5.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 (409) hide show
  1. package/README.md +331 -49
  2. package/dist/DomUtils/categoryNameFromDom.d.ts +1 -1
  3. package/dist/DomUtils/classNames.d.ts +23 -23
  4. package/dist/DomUtils/detectEmojyPartiallyBelowFold.d.ts +2 -2
  5. package/dist/DomUtils/elementPositionInRow.d.ts +5 -5
  6. package/dist/DomUtils/eventBelongsToPicker.d.ts +2 -0
  7. package/dist/DomUtils/focusElement.d.ts +5 -5
  8. package/dist/DomUtils/getActiveElement.d.ts +2 -2
  9. package/dist/DomUtils/isJsdom.d.ts +1 -0
  10. package/dist/DomUtils/isRtl.d.ts +1 -0
  11. package/dist/DomUtils/keyboardNavigation.d.ts +15 -8
  12. package/dist/DomUtils/scrollTo.d.ts +4 -5
  13. package/dist/DomUtils/selectors.d.ts +31 -35
  14. package/dist/EmojiPickerReact.d.ts +5 -5
  15. package/dist/Stylesheet/DedupedStyle.d.ts +13 -0
  16. package/dist/Stylesheet/stylesheet.d.ts +40 -37
  17. package/dist/components/ErrorBoundary.d.ts +15 -15
  18. package/dist/components/Layout/Absolute.d.ts +8 -8
  19. package/dist/components/Layout/Flex.d.ts +13 -13
  20. package/dist/components/Layout/Relative.d.ts +8 -8
  21. package/dist/components/Layout/Space.d.ts +7 -7
  22. package/dist/components/Reactions/BtnPlus.d.ts +2 -2
  23. package/dist/components/Reactions/DEFAULT_REACTIONS.d.ts +1 -1
  24. package/dist/components/Reactions/Reactions.d.ts +3 -2
  25. package/dist/components/atoms/Button.d.ts +11 -6
  26. package/dist/components/body/EmojiCategory.d.ts +13 -12
  27. package/dist/components/body/EmojiList.d.ts +7 -4
  28. package/dist/components/body/EmojiVariationPicker.d.ts +2 -2
  29. package/dist/components/body/MeasureEmoji.d.ts +2 -2
  30. package/dist/components/body/listComponents.d.ts +47 -0
  31. package/dist/components/context/ElementRefContext.d.ts +18 -16
  32. package/dist/components/context/PickerConfigContext.d.ts +14 -9
  33. package/dist/components/context/PickerContext.d.ts +57 -25
  34. package/dist/components/context/PickerDataContext.d.ts +23 -17
  35. package/dist/components/emoji/BaseEmojiProps.d.ts +14 -13
  36. package/dist/components/emoji/ClickableEmojiButton.d.ts +23 -15
  37. package/dist/components/emoji/Emoji.d.ts +18 -15
  38. package/dist/components/emoji/EmojiImg.d.ts +11 -11
  39. package/dist/components/emoji/ExportedEmoji.d.ts +11 -11
  40. package/dist/components/emoji/NativeEmoji.d.ts +6 -6
  41. package/dist/components/emoji/ViewOnlyEmoji.d.ts +3 -3
  42. package/dist/components/emoji/emojiStyles.d.ts +6 -1
  43. package/dist/components/footer/Preview.d.ts +7 -7
  44. package/dist/components/header/Header.d.ts +2 -2
  45. package/dist/components/header/Search/BtnClearSearch.d.ts +2 -2
  46. package/dist/components/header/Search/IcnSearch.d.ts +2 -2
  47. package/dist/components/header/Search/Search.d.ts +11 -3
  48. package/dist/components/header/SkinTonePicker/BtnSkinToneVariation.d.ts +12 -12
  49. package/dist/components/header/SkinTonePicker/SkinTonePicker.d.ts +11 -11
  50. package/dist/components/icons/svgIcons.d.ts +4 -0
  51. package/dist/components/main/PickerMainBehaviors.d.ts +4 -0
  52. package/dist/components/main/defaultAppearance.d.ts +12 -0
  53. package/dist/components/main/labelHeight.d.ts +1 -0
  54. package/dist/components/navigation/CategoryButton.d.ts +12 -12
  55. package/dist/components/navigation/CategoryNavIcon.d.ts +4 -4
  56. package/dist/components/navigation/CategoryNavigation.d.ts +19 -2
  57. package/dist/config/categoryConfig.d.ts +34 -34
  58. package/dist/config/cdnUrls.d.ts +2 -2
  59. package/dist/config/compareConfig.d.ts +10 -2
  60. package/dist/config/config.d.ts +166 -64
  61. package/dist/config/customEmojiConfig.d.ts +14 -14
  62. package/dist/config/defaultPickerConfiguration.d.ts +10 -0
  63. package/dist/config/mutableConfig.d.ts +32 -10
  64. package/dist/config/useConfig.d.ts +48 -36
  65. package/dist/data/defaultEmojiData.d.ts +9 -0
  66. package/dist/data/defaultEmojiData.js +40 -0
  67. package/dist/data/emojis-bn.d.mts +39 -0
  68. package/dist/data/emojis-bn.d.ts +38 -2
  69. package/dist/data/emojis-bn.js +25 -2
  70. package/dist/data/emojis-bn.mjs +2 -0
  71. package/dist/data/emojis-da.d.mts +39 -0
  72. package/dist/data/emojis-da.d.ts +38 -2
  73. package/dist/data/emojis-da.js +25 -2
  74. package/dist/data/emojis-da.mjs +2 -0
  75. package/dist/data/emojis-de.d.mts +39 -0
  76. package/dist/data/emojis-de.d.ts +38 -2
  77. package/dist/data/emojis-de.js +25 -2
  78. package/dist/data/emojis-de.mjs +2 -0
  79. package/dist/data/emojis-en-gb.d.mts +39 -0
  80. package/dist/data/emojis-en-gb.d.ts +38 -2
  81. package/dist/data/emojis-en-gb.js +25 -2
  82. package/dist/data/emojis-en-gb.mjs +2 -0
  83. package/dist/data/emojis-en.d.mts +39 -0
  84. package/dist/data/emojis-en.d.ts +38 -2
  85. package/dist/data/emojis-en.js +25 -2
  86. package/dist/data/emojis-en.mjs +2 -0
  87. package/dist/data/emojis-es-mx.d.mts +39 -0
  88. package/dist/data/emojis-es-mx.d.ts +38 -2
  89. package/dist/data/emojis-es-mx.js +25 -2
  90. package/dist/data/emojis-es-mx.mjs +2 -0
  91. package/dist/data/emojis-es.d.mts +39 -0
  92. package/dist/data/emojis-es.d.ts +38 -2
  93. package/dist/data/emojis-es.js +25 -2
  94. package/dist/data/emojis-es.mjs +2 -0
  95. package/dist/data/emojis-et.d.mts +39 -0
  96. package/dist/data/emojis-et.d.ts +38 -2
  97. package/dist/data/emojis-et.js +25 -2
  98. package/dist/data/emojis-et.mjs +2 -0
  99. package/dist/data/emojis-fi.d.mts +39 -0
  100. package/dist/data/emojis-fi.d.ts +38 -2
  101. package/dist/data/emojis-fi.js +25 -2
  102. package/dist/data/emojis-fi.mjs +2 -0
  103. package/dist/data/emojis-fr.d.mts +39 -0
  104. package/dist/data/emojis-fr.d.ts +38 -2
  105. package/dist/data/emojis-fr.js +25 -2
  106. package/dist/data/emojis-fr.mjs +2 -0
  107. package/dist/data/emojis-hi.d.mts +39 -0
  108. package/dist/data/emojis-hi.d.ts +38 -2
  109. package/dist/data/emojis-hi.js +25 -2
  110. package/dist/data/emojis-hi.mjs +2 -0
  111. package/dist/data/emojis-hu.d.mts +39 -0
  112. package/dist/data/emojis-hu.d.ts +38 -2
  113. package/dist/data/emojis-hu.js +25 -2
  114. package/dist/data/emojis-hu.mjs +2 -0
  115. package/dist/data/emojis-it.d.mts +39 -0
  116. package/dist/data/emojis-it.d.ts +38 -2
  117. package/dist/data/emojis-it.js +25 -2
  118. package/dist/data/emojis-it.mjs +2 -0
  119. package/dist/data/emojis-ja.d.mts +39 -0
  120. package/dist/data/emojis-ja.d.ts +38 -2
  121. package/dist/data/emojis-ja.js +25 -2
  122. package/dist/data/emojis-ja.mjs +2 -0
  123. package/dist/data/emojis-ko.d.mts +39 -0
  124. package/dist/data/emojis-ko.d.ts +38 -2
  125. package/dist/data/emojis-ko.js +25 -2
  126. package/dist/data/emojis-ko.mjs +2 -0
  127. package/dist/data/emojis-lt.d.mts +39 -0
  128. package/dist/data/emojis-lt.d.ts +38 -2
  129. package/dist/data/emojis-lt.js +25 -2
  130. package/dist/data/emojis-lt.mjs +2 -0
  131. package/dist/data/emojis-ms.d.mts +39 -0
  132. package/dist/data/emojis-ms.d.ts +38 -2
  133. package/dist/data/emojis-ms.js +25 -2
  134. package/dist/data/emojis-ms.mjs +2 -0
  135. package/dist/data/emojis-nb.d.mts +39 -0
  136. package/dist/data/emojis-nb.d.ts +38 -2
  137. package/dist/data/emojis-nb.js +25 -2
  138. package/dist/data/emojis-nb.mjs +2 -0
  139. package/dist/data/emojis-nl.d.mts +39 -0
  140. package/dist/data/emojis-nl.d.ts +38 -2
  141. package/dist/data/emojis-nl.js +25 -2
  142. package/dist/data/emojis-nl.mjs +2 -0
  143. package/dist/data/emojis-pl.d.mts +39 -0
  144. package/dist/data/emojis-pl.d.ts +38 -2
  145. package/dist/data/emojis-pl.js +25 -2
  146. package/dist/data/emojis-pl.mjs +2 -0
  147. package/dist/data/emojis-pt.d.mts +39 -0
  148. package/dist/data/emojis-pt.d.ts +38 -2
  149. package/dist/data/emojis-pt.js +25 -2
  150. package/dist/data/emojis-pt.mjs +2 -0
  151. package/dist/data/emojis-ru.d.mts +39 -0
  152. package/dist/data/emojis-ru.d.ts +38 -2
  153. package/dist/data/emojis-ru.js +25 -2
  154. package/dist/data/emojis-ru.mjs +2 -0
  155. package/dist/data/emojis-sv.d.mts +39 -0
  156. package/dist/data/emojis-sv.d.ts +38 -2
  157. package/dist/data/emojis-sv.js +25 -2
  158. package/dist/data/emojis-sv.mjs +2 -0
  159. package/dist/data/emojis-th.d.mts +39 -0
  160. package/dist/data/emojis-th.d.ts +38 -2
  161. package/dist/data/emojis-th.js +25 -2
  162. package/dist/data/emojis-th.mjs +2 -0
  163. package/dist/data/emojis-uk.d.mts +39 -0
  164. package/dist/data/emojis-uk.d.ts +38 -2
  165. package/dist/data/emojis-uk.js +25 -2
  166. package/dist/data/emojis-uk.mjs +2 -0
  167. package/dist/data/emojis-vi.d.mts +39 -0
  168. package/dist/data/emojis-vi.d.ts +38 -2
  169. package/dist/data/emojis-vi.js +25 -2
  170. package/dist/data/emojis-vi.mjs +2 -0
  171. package/dist/data/emojis-zh-hant.d.mts +39 -0
  172. package/dist/data/emojis-zh-hant.d.ts +38 -2
  173. package/dist/data/emojis-zh-hant.js +25 -2
  174. package/dist/data/emojis-zh-hant.mjs +2 -0
  175. package/dist/data/emojis-zh.d.mts +39 -0
  176. package/dist/data/emojis-zh.d.ts +38 -2
  177. package/dist/data/emojis-zh.js +25 -2
  178. package/dist/data/emojis-zh.mjs +2 -0
  179. package/dist/data/index.js +1 -0
  180. package/dist/data/registerDefaultEmojiData.d.ts +1 -0
  181. package/dist/data/registerDefaultEmojiData.js +3 -0
  182. package/dist/data/skinToneVariations.js +2 -2
  183. package/dist/data/skinToneVariations.ts +8 -7
  184. package/dist/data-core/pickerData.d.ts +12 -0
  185. package/dist/data-core/prepare.d.ts +23 -0
  186. package/dist/data-core/search.d.ts +13 -0
  187. package/dist/data-core/types.d.ts +23 -0
  188. package/dist/data.d.mts +72 -0
  189. package/dist/data.d.ts +72 -0
  190. package/dist/dataUtils/DataTypes.d.ts +23 -19
  191. package/dist/dataUtils/emojiSelectors.d.ts +15 -16
  192. package/dist/dataUtils/emojiUtils.d.ts +1 -12
  193. package/dist/dataUtils/nativeEmojiSequenceSupport.d.ts +10 -0
  194. package/dist/dataUtils/nativeEmojiSupport.d.ts +40 -0
  195. package/dist/dataUtils/parseNativeEmoji.d.ts +1 -1
  196. package/dist/dataUtils/suggested.d.ts +11 -11
  197. package/dist/dataUtils/suggestedEmojis.d.ts +7 -0
  198. package/dist/esm/chunks/chunk-7ZGTUZFB.mjs +8025 -0
  199. package/dist/esm/chunks/chunk-ACXAQEKG.mjs +149 -0
  200. package/dist/esm/chunks/chunk-F2KS7DCA.mjs +6735 -0
  201. package/dist/esm/chunks/chunk-L5W4PFRJ.mjs +14 -0
  202. package/dist/esm/chunks/chunk-LO4TPPLH.mjs +33 -0
  203. package/dist/esm/chunks/emojis-6L3GRBAP.mjs +7 -0
  204. package/dist/esm/data.mjs +11 -0
  205. package/dist/esm/index.mjs +279 -0
  206. package/dist/esm/primitives/index.mjs +8 -0
  207. package/dist/hooks/preloadEmoji.d.ts +5 -9
  208. package/dist/hooks/useActiveCategoryScrollDetection.d.ts +11 -11
  209. package/dist/hooks/useCategoryHeight.d.ts +7 -5
  210. package/dist/hooks/useCloseAllOpenToggles.d.ts +2 -2
  211. package/dist/hooks/useDataIdentityStabilityWarning.d.ts +13 -0
  212. package/dist/hooks/useDebouncedState.d.ts +1 -1
  213. package/dist/hooks/useDisallowMouseMove.d.ts +4 -4
  214. package/dist/hooks/useDisallowedEmojis.d.ts +2 -3
  215. package/dist/hooks/useEmojiPreviewEvents.d.ts +3 -3
  216. package/dist/hooks/useEmojiVirtualization.d.ts +22 -17
  217. package/dist/hooks/useFilter.d.ts +10 -16
  218. package/dist/hooks/useFocus.d.ts +3 -3
  219. package/dist/hooks/useInitialLoad.d.ts +2 -2
  220. package/dist/hooks/useIsEmojiHidden.d.ts +8 -8
  221. package/dist/hooks/useIsMounted.d.ts +1 -1
  222. package/dist/hooks/useIsSearchMode.d.ts +1 -1
  223. package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
  224. package/dist/hooks/useKeyboardNavigation.d.ts +3 -1
  225. package/dist/hooks/useMouseDownHandlers.d.ts +8 -4
  226. package/dist/hooks/useOnFocus.d.ts +1 -1
  227. package/dist/hooks/useOnScroll.d.ts +2 -2
  228. package/dist/hooks/useReactionsFocus.d.ts +1 -0
  229. package/dist/hooks/useRegisterRegion.d.ts +24 -0
  230. package/dist/hooks/useResolvedEmojiData.d.ts +37 -0
  231. package/dist/hooks/useScrollCategoryIntoView.d.ts +1 -1
  232. package/dist/hooks/useSearchController.d.ts +17 -0
  233. package/dist/hooks/useSearchResults.d.ts +8 -0
  234. package/dist/hooks/useSetVariationPicker.d.ts +2 -2
  235. package/dist/hooks/useShouldHideCustomEmojis.d.ts +1 -1
  236. package/dist/hooks/useShouldShowSkinTonePicker.d.ts +4 -4
  237. package/dist/index.d.mts +376 -0
  238. package/dist/index.d.ts +376 -9
  239. package/dist/index.js +2 -8
  240. package/dist/primitives/CategoryNav.d.ts +4 -0
  241. package/dist/primitives/Empty.d.ts +6 -0
  242. package/dist/primitives/List.d.ts +4 -0
  243. package/dist/primitives/LoadError.d.ts +8 -0
  244. package/dist/primitives/Loading.d.ts +4 -0
  245. package/dist/primitives/Panel.d.ts +3 -0
  246. package/dist/primitives/Preview.d.ts +3 -0
  247. package/dist/primitives/Reactions.d.ts +2 -0
  248. package/dist/primitives/Root.d.ts +26 -0
  249. package/dist/primitives/Search.d.ts +5 -0
  250. package/dist/primitives/SearchInput.d.ts +3 -0
  251. package/dist/primitives/SkinTone.d.ts +4 -0
  252. package/dist/primitives/Viewport.d.ts +19 -0
  253. package/dist/primitives/appearance.d.ts +3 -0
  254. package/dist/primitives/components.d.ts +27 -0
  255. package/dist/primitives/hooks.d.ts +48 -0
  256. package/dist/primitives/index.d.mts +561 -0
  257. package/dist/primitives/index.d.ts +561 -0
  258. package/dist/primitives/index.js +2 -0
  259. package/dist/primitives/nativeProps.d.ts +15 -0
  260. package/dist/primitives/scope.d.ts +13 -0
  261. package/dist/primitives/structuralStyles.d.ts +16 -0
  262. package/dist/primitives/tokens.d.ts +18 -0
  263. package/dist/primitives/types.d.ts +85 -0
  264. package/dist/state/activeEmojiStore.d.ts +7 -0
  265. package/dist/state/navigationRegistry.d.ts +61 -0
  266. package/dist/state/regionTraversal.d.ts +20 -0
  267. package/dist/typeRefinements/typeRefinements.d.ts +6 -6
  268. package/dist/types/exposedTypes.d.ts +16 -6
  269. package/dist/types/exposedTypes.js +5 -0
  270. package/dist/virtualization/virtualizationHelpers.d.ts +22 -18
  271. package/llms-full.txt +3683 -0
  272. package/llms.txt +66 -480
  273. package/package.json +180 -66
  274. package/src/DomUtils/categoryNameFromDom.ts +1 -1
  275. package/src/DomUtils/classNames.ts +1 -4
  276. package/src/DomUtils/elementPositionInRow.ts +28 -6
  277. package/src/DomUtils/eventBelongsToPicker.ts +17 -0
  278. package/src/DomUtils/getActiveElement.ts +7 -1
  279. package/src/DomUtils/isJsdom.ts +12 -0
  280. package/src/DomUtils/isRtl.ts +5 -0
  281. package/src/DomUtils/keyboardNavigation.ts +164 -144
  282. package/src/DomUtils/scrollTo.ts +20 -18
  283. package/src/DomUtils/selectors.ts +30 -127
  284. package/src/EmojiPickerReact.tsx +155 -48
  285. package/src/Stylesheet/DedupedStyle.tsx +80 -0
  286. package/src/Stylesheet/stylesheet.tsx +128 -59
  287. package/src/components/Layout/Flex.tsx +12 -11
  288. package/src/components/Reactions/BtnPlus.tsx +61 -51
  289. package/src/components/Reactions/Reactions.tsx +113 -55
  290. package/src/components/atoms/Button.tsx +18 -15
  291. package/src/components/body/EmojiCategory.tsx +77 -40
  292. package/src/components/body/EmojiList.tsx +107 -44
  293. package/src/components/body/EmojiVariationPicker.tsx +113 -66
  294. package/src/components/body/MeasureEmoji.tsx +9 -2
  295. package/src/components/body/listComponents.tsx +79 -0
  296. package/src/components/context/ElementRefContext.tsx +46 -35
  297. package/src/components/context/PickerConfigContext.tsx +55 -40
  298. package/src/components/context/PickerContext.tsx +567 -92
  299. package/src/components/context/PickerDataContext.tsx +114 -99
  300. package/src/components/emoji/BaseEmojiProps.ts +5 -4
  301. package/src/components/emoji/ClickableEmojiButton.tsx +148 -63
  302. package/src/components/emoji/Emoji.tsx +24 -2
  303. package/src/components/emoji/EmojiImg.tsx +13 -12
  304. package/src/components/emoji/ExportedEmoji.tsx +5 -4
  305. package/src/components/emoji/NativeEmoji.tsx +19 -16
  306. package/src/components/emoji/ViewOnlyEmoji.tsx +55 -30
  307. package/src/components/emoji/emojiStyles.ts +12 -11
  308. package/src/components/footer/Preview.tsx +86 -91
  309. package/src/components/header/Header.tsx +21 -6
  310. package/src/components/header/Search/BtnClearSearch.tsx +69 -55
  311. package/src/components/header/Search/IcnSearch.tsx +21 -21
  312. package/src/components/header/Search/Search.tsx +79 -137
  313. package/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx +99 -62
  314. package/src/components/header/SkinTonePicker/SkinTonePicker.tsx +84 -46
  315. package/src/components/icons/svgIcons.ts +17 -0
  316. package/src/components/main/PickerMainBehaviors.tsx +163 -0
  317. package/src/components/main/defaultAppearance.tsx +189 -0
  318. package/src/components/main/labelHeight.ts +5 -0
  319. package/src/components/navigation/CategoryButton.tsx +83 -57
  320. package/src/components/navigation/CategoryNavIcon.tsx +73 -194
  321. package/src/components/navigation/CategoryNavigation.tsx +118 -46
  322. package/src/config/categoryConfig.ts +7 -3
  323. package/src/config/cdnUrls.ts +11 -21
  324. package/src/config/compareConfig.ts +128 -30
  325. package/src/config/config.ts +228 -24
  326. package/src/config/defaultPickerConfiguration.ts +7 -0
  327. package/src/config/mutableConfig.ts +44 -20
  328. package/src/config/useConfig.ts +130 -37
  329. package/src/data/defaultEmojiData.ts +49 -0
  330. package/src/data/registerDefaultEmojiData.ts +8 -0
  331. package/src/data/skinToneVariations.ts +8 -7
  332. package/src/data-core/pickerData.ts +171 -0
  333. package/src/data-core/prepare.ts +163 -0
  334. package/src/data-core/search.ts +122 -0
  335. package/src/data-core/types.ts +36 -0
  336. package/src/data.ts +10 -0
  337. package/src/dataUtils/DataTypes.ts +4 -0
  338. package/src/dataUtils/emojiSelectors.ts +59 -63
  339. package/src/dataUtils/emojiUtils.ts +17 -74
  340. package/src/dataUtils/nativeEmojiSequenceSupport.ts +116 -0
  341. package/src/dataUtils/nativeEmojiSupport.ts +160 -0
  342. package/src/dataUtils/parseNativeEmoji.ts +3 -4
  343. package/src/dataUtils/suggested.ts +8 -4
  344. package/src/dataUtils/suggestedEmojis.ts +92 -0
  345. package/src/env.d.ts +4 -0
  346. package/src/hooks/preloadEmoji.ts +2 -47
  347. package/src/hooks/useActiveCategoryScrollDetection.ts +28 -16
  348. package/src/hooks/useCategoryHeight.ts +116 -10
  349. package/src/hooks/useDataIdentityStabilityWarning.ts +86 -0
  350. package/src/hooks/useDebouncedState.ts +13 -1
  351. package/src/hooks/useDisallowedEmojis.ts +31 -42
  352. package/src/hooks/useEmojiPreviewEvents.ts +43 -10
  353. package/src/hooks/useEmojiVirtualization.tsx +112 -52
  354. package/src/hooks/useFilter.ts +92 -132
  355. package/src/hooks/useFocus.ts +14 -24
  356. package/src/hooks/useIsEmojiHidden.ts +22 -14
  357. package/src/hooks/useKeyboardNavigation.ts +412 -432
  358. package/src/hooks/useMouseDownHandlers.ts +91 -16
  359. package/src/hooks/useOnFocus.ts +12 -3
  360. package/src/hooks/useOnScroll.ts +18 -2
  361. package/src/hooks/useReactionsFocus.ts +118 -0
  362. package/src/hooks/useRegisterRegion.ts +92 -0
  363. package/src/hooks/useResolvedEmojiData.ts +200 -0
  364. package/src/hooks/useScrollCategoryIntoView.ts +74 -12
  365. package/src/hooks/useSearchController.ts +369 -0
  366. package/src/hooks/useSearchResults.ts +51 -0
  367. package/src/hooks/useSetVariationPicker.ts +4 -1
  368. package/src/index.tsx +67 -5
  369. package/src/primitives/CategoryNav.tsx +40 -0
  370. package/src/primitives/Empty.tsx +68 -0
  371. package/src/primitives/List.tsx +61 -0
  372. package/src/primitives/LoadError.tsx +38 -0
  373. package/src/primitives/Loading.tsx +60 -0
  374. package/src/primitives/Panel.tsx +47 -0
  375. package/src/primitives/Preview.tsx +38 -0
  376. package/src/primitives/Reactions.tsx +2 -0
  377. package/src/primitives/Root.tsx +398 -0
  378. package/src/primitives/Search.tsx +41 -0
  379. package/src/primitives/SearchInput.tsx +110 -0
  380. package/src/primitives/SkinTone.tsx +76 -0
  381. package/src/primitives/Viewport.tsx +204 -0
  382. package/src/primitives/appearance.tsx +7 -0
  383. package/src/primitives/components.tsx +30 -0
  384. package/src/primitives/hooks.ts +165 -0
  385. package/src/primitives/index.ts +94 -0
  386. package/src/primitives/nativeProps.ts +90 -0
  387. package/src/primitives/scope.tsx +109 -0
  388. package/src/primitives/structuralStyles.tsx +136 -0
  389. package/src/primitives/tokens.ts +150 -0
  390. package/src/primitives/types.ts +192 -0
  391. package/src/state/activeEmojiStore.ts +39 -0
  392. package/src/state/navigationRegistry.ts +209 -0
  393. package/src/state/regionTraversal.ts +116 -0
  394. package/src/svg.d.ts +2 -2
  395. package/src/types/exposedTypes.ts +28 -1
  396. package/src/virtualization/virtualizationHelpers.ts +29 -8
  397. package/dist/components/body/Body.d.ts +0 -2
  398. package/dist/components/main/PickerMain.d.ts +0 -7
  399. package/dist/dataUtils/alphaNumericEmojiIndex.d.ts +0 -5
  400. package/dist/emoji-picker-react.cjs.development.js +0 -31413
  401. package/dist/emoji-picker-react.cjs.development.js.map +0 -1
  402. package/dist/emoji-picker-react.cjs.production.min.js +0 -2
  403. package/dist/emoji-picker-react.cjs.production.min.js.map +0 -1
  404. package/dist/emoji-picker-react.esm.js +0 -31411
  405. package/dist/emoji-picker-react.esm.js.map +0 -1
  406. package/dist/hooks/useHideEmojisByUniocode.d.ts +0 -1
  407. package/src/components/body/Body.tsx +0 -43
  408. package/src/components/main/PickerMain.tsx +0 -249
  409. package/src/dataUtils/alphaNumericEmojiIndex.ts +0 -21
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { NavigationRegionKind } from '../state/navigationRegistry';
3
+ /**
4
+ * Register a semantic focus region root with the Root-scoped navigation
5
+ * registry.
6
+ *
7
+ * - Registers after mount and unregisters on unmount; omitted regions
8
+ * (null element) stay absent from the graph — there are no placeholder
9
+ * or dead graph nodes.
10
+ * - `presenceDeps` reruns registration when presence-affecting state
11
+ * changes (e.g. a tab bar that unmounts below two categories).
12
+ * - Portal roots (outside the Root DOM element) are unsupported: dev
13
+ * warns and the region is excluded from traversal.
14
+ * - A second singleton registration throws in development and is ignored
15
+ * (first wins) in production.
16
+ */
17
+ export declare function useRegisterRegion(kind: NavigationRegionKind, ref: React.RefObject<Element | null> & {
18
+ subscribe?: (listener: () => void) => () => void;
19
+ }, presenceDeps?: readonly unknown[]): void;
20
+ /**
21
+ * Claim a structural singleton slot (Viewport/Preview)
22
+ * without registering a focus region. Same duplicate policy as regions.
23
+ */
24
+ export declare function useSingletonClaim(kind: string): void;
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import type { EmojiData } from '../types/exposedTypes';
3
+ /**
4
+ * Asynchronous dataset source, e.g.
5
+ * `() => import('emoji-picker-react/data/emojis-fr')`.
6
+ * Hoist it (module scope or useCallback): a new function identity loads
7
+ * again.
8
+ */
9
+ export type EmojiDataLoaderOptions = {
10
+ signal?: AbortSignal;
11
+ };
12
+ export type EmojiDataLoader = (options: EmojiDataLoaderOptions) => Promise<EmojiData | {
13
+ default: EmojiData;
14
+ }>;
15
+ export type EmojiDataInput = EmojiData | EmojiDataLoader;
16
+ export type EmojiDataState = {
17
+ loading: boolean;
18
+ error: Error | null;
19
+ retry: () => void;
20
+ };
21
+ type Resolved = EmojiDataState & {
22
+ data: EmojiData | undefined;
23
+ };
24
+ /**
25
+ * Resolve Root's `emojiData` input to a synchronous dataset:
26
+ * - an object is used as-is (synchronous, SSR-safe);
27
+ * - a loader is awaited (Root renders empty, `Loading` shows meanwhile);
28
+ * - absent: the registered default dataset when an entry registered it
29
+ * (the default picker always does), otherwise the bundled English
30
+ * dataset is loaded on demand (a separate chunk in ESM builds).
31
+ * `data: undefined` means "the registered default".
32
+ */
33
+ export declare function useResolvedEmojiData(input?: EmojiDataInput, enabled?: boolean): Resolved;
34
+ export declare const DataLoadingProvider: React.Provider<EmojiDataState>;
35
+ export declare function useIsEmojiDataLoading(): boolean;
36
+ export declare function useEmojiDataState(): EmojiDataState;
37
+ export {};
@@ -1 +1 @@
1
- export declare function useScrollCategoryIntoView(): (category: string) => void;
1
+ export declare function useScrollCategoryIntoView(): (category: string) => void;
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ export declare function useIsControlledSearch(): boolean;
3
+ /** Accepted raw value: the controlled prop, or the committed value. */
4
+ export declare function useAcceptedSearchValue(): string;
5
+ export declare function useSearchInputController(): {
6
+ value: string;
7
+ handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
8
+ handleCompositionStart: () => void;
9
+ handleCompositionEnd: (event: React.CompositionEvent<HTMLInputElement>) => void;
10
+ isControlled: boolean;
11
+ };
12
+ /** Grid type-to-search transition. */
13
+ export declare function useTypeToSearchKey(): (key: string) => void;
14
+ /** Explicit programmatic proposals; no input or input-controller effects required. */
15
+ export declare function useSetSearchValue(): (value: string) => void;
16
+ /** Clear-button / Escape transition: proposes/commits ''. */
17
+ export declare function useClearSearchValue(): () => void;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Number of distinct emojis the list actually shows for the active search,
3
+ * or null while no search is applied (or its results are not computed
4
+ * yet). Uses the same predicates as the list itself, so configured
5
+ * categories, emojiVersion, hiddenEmojis, platform support and failed
6
+ * images are all accounted for — the raw match dictionary is not.
7
+ */
8
+ export declare function useVisibleSearchResultCount(): number | null;
@@ -1,2 +1,2 @@
1
- import { NullableElement } from '../DomUtils/selectors';
2
- export default function useSetVariationPicker(): (element: NullableElement) => void;
1
+ import { NullableElement } from '../DomUtils/selectors';
2
+ export default function useSetVariationPicker(): (element: NullableElement) => void;
@@ -1 +1 @@
1
- export declare function useShouldHideCustomEmojis(): boolean;
1
+ export declare function useShouldHideCustomEmojis(): boolean;
@@ -1,4 +1,4 @@
1
- import { SkinTonePickerLocation } from '../types/exposedTypes';
2
- export declare function useShouldShowSkinTonePicker(): (location: SkinTonePickerLocation) => boolean;
3
- export declare function useIsSkinToneInSearch(): boolean;
4
- export declare function useIsSkinToneInPreview(): boolean;
1
+ import { SkinTonePickerLocation } from '../types/exposedTypes';
2
+ export declare function useShouldShowSkinTonePicker(): (location: SkinTonePickerLocation) => boolean;
3
+ export declare function useIsSkinToneInSearch(): boolean;
4
+ export declare function useIsSkinToneInPreview(): boolean;
@@ -0,0 +1,376 @@
1
+ import * as React from 'react';
2
+
3
+ type EmojiClickData = {
4
+ activeSkinTone: SkinTones;
5
+ unified: string;
6
+ unifiedWithoutSkinTone: string;
7
+ emoji: string;
8
+ names: string[];
9
+ imageUrl: string;
10
+ getImageUrl: (emojiStyle?: EmojiStyleValue) => string;
11
+ isCustom: boolean;
12
+ };
13
+ type CategoryConfig = {
14
+ category: Categories;
15
+ name: string;
16
+ icon?: React.ReactNode;
17
+ /**
18
+ * Selects a `CustomEmoji` group for `Categories.CUSTOM` entries. Each
19
+ * grouped entry renders its own section and nav tab; ungrouped entries
20
+ * share the classic customs bucket.
21
+ */
22
+ group?: string;
23
+ };
24
+ type CategoryIcons = Partial<Record<Categories, React.ReactNode>>;
25
+ type EmojiData = {
26
+ categories: Partial<Record<Categories, CategoryConfig>>;
27
+ emojis: Record<string, DataEmoji$1[]>;
28
+ };
29
+ interface DataEmoji$1 {
30
+ n: string[];
31
+ u: string;
32
+ v?: string[];
33
+ a: string;
34
+ }
35
+ declare enum SuggestionMode {
36
+ RECENT = "recent",
37
+ FREQUENT = "frequent"
38
+ }
39
+ type SuggestionModeValue = SuggestionMode | 'recent' | 'frequent';
40
+ declare enum EmojiStyle {
41
+ NATIVE = "native",
42
+ APPLE = "apple",
43
+ TWITTER = "twitter",
44
+ GOOGLE = "google",
45
+ FACEBOOK = "facebook"
46
+ }
47
+ type EmojiStyleValue = EmojiStyle | 'native' | 'apple' | 'twitter' | 'google' | 'facebook';
48
+ declare enum Theme {
49
+ DARK = "dark",
50
+ LIGHT = "light",
51
+ AUTO = "auto"
52
+ }
53
+ type ThemeValue = Theme | 'dark' | 'light' | 'auto';
54
+ declare enum SkinTones {
55
+ NEUTRAL = "neutral",
56
+ LIGHT = "1f3fb",
57
+ MEDIUM_LIGHT = "1f3fc",
58
+ MEDIUM = "1f3fd",
59
+ MEDIUM_DARK = "1f3fe",
60
+ DARK = "1f3ff"
61
+ }
62
+ /** A skin tone as the enum or its literal value (`'neutral'`, `'1f3fb'`, …). */
63
+ type SkinTonesValue = SkinTones | 'neutral' | '1f3fb' | '1f3fc' | '1f3fd' | '1f3fe' | '1f3ff';
64
+ declare enum Categories {
65
+ SUGGESTED = "suggested",
66
+ CUSTOM = "custom",
67
+ SMILEYS_PEOPLE = "smileys_people",
68
+ ANIMALS_NATURE = "animals_nature",
69
+ FOOD_DRINK = "food_drink",
70
+ TRAVEL_PLACES = "travel_places",
71
+ ACTIVITIES = "activities",
72
+ OBJECTS = "objects",
73
+ SYMBOLS = "symbols",
74
+ FLAGS = "flags"
75
+ }
76
+ declare enum SkinTonePickerLocation {
77
+ SEARCH = "SEARCH",
78
+ PREVIEW = "PREVIEW",
79
+ /**
80
+ * No built-in placement: render the `SkinTone` primitive wherever you
81
+ * want it, or drive the tone through `skinTone` / `useSkinTone()`.
82
+ */
83
+ NONE = "NONE"
84
+ }
85
+
86
+ declare enum EmojiProperties {
87
+ name = "n",
88
+ unified = "u",
89
+ variations = "v",
90
+ added_in = "a",
91
+ imgUrl = "imgUrl"
92
+ }
93
+ interface DataEmoji extends WithName {
94
+ /** Exact rendered identity; canonical unified remains the search identity. */
95
+ renderUnified?: string;
96
+ /** Stored recent identity when the active tone has no matching variation. */
97
+ fallbackUnified?: string;
98
+ [EmojiProperties.unified]: string;
99
+ [EmojiProperties.variations]?: string[];
100
+ [EmojiProperties.added_in]: string;
101
+ [EmojiProperties.imgUrl]?: string;
102
+ }
103
+ type WithName = {
104
+ [EmojiProperties.name]: string[];
105
+ };
106
+
107
+ type CustomEmoji = {
108
+ names: string[];
109
+ [EmojiProperties.imgUrl]: string;
110
+ id: string;
111
+ /**
112
+ * Optional group name. Customs sharing a group render as their own
113
+ * category section; ungrouped customs keep the single shared bucket.
114
+ * Reference the group from a `{ category: Categories.CUSTOM, group }`
115
+ * entry in the `categories` prop to place and name the section.
116
+ * https://github.com/ealush/emoji-picker-react/issues/510
117
+ */
118
+ group?: string;
119
+ };
120
+
121
+ type GetEmojiUrl = (unified: string, style: EmojiStyleValue) => string;
122
+
123
+ /**
124
+ * Asynchronous dataset source, e.g.
125
+ * `() => import('emoji-picker-react/data/emojis-fr')`.
126
+ * Hoist it (module scope or useCallback): a new function identity loads
127
+ * again.
128
+ */
129
+ type EmojiDataLoaderOptions = {
130
+ signal?: AbortSignal;
131
+ };
132
+ type EmojiDataLoader = (options: EmojiDataLoaderOptions) => Promise<EmojiData | {
133
+ default: EmojiData;
134
+ }>;
135
+ type EmojiDataInput = EmojiData | EmojiDataLoader;
136
+
137
+ type CategoriesConfig = CategoryConfig[];
138
+ type UserCategoryConfig = Array<Categories | CategoryConfig>;
139
+
140
+ /**
141
+ * Every user-facing string the picker renders or announces. All keys are
142
+ * optional on the `labels` prop; anything omitted keeps its English
143
+ * default. Category names come from `categories` / localized `emojiData`,
144
+ * and the preview caption from `previewConfig.defaultCaption`.
145
+ */
146
+ type PickerLabels = {
147
+ searchPlaceholder: string;
148
+ /** Accessible name of the search input. */
149
+ searchLabel: string;
150
+ searchClear: string;
151
+ /** Live-region announcement and visible empty state. */
152
+ searchResultsNone: string;
153
+ searchResultsOne: string;
154
+ /** `%n` is replaced with the result count. */
155
+ searchResultsMany: string;
156
+ categoryNavigation: string;
157
+ reactions: string;
158
+ expandReactions: string;
159
+ /** Shown by the Loading part while the dataset loads. */
160
+ loading: string;
161
+ loadingError: string;
162
+ retryLoading: string;
163
+ skinToneNeutral: string;
164
+ skinToneLight: string;
165
+ skinToneMediumLight: string;
166
+ skinToneMedium: string;
167
+ skinToneMediumDark: string;
168
+ skinToneDark: string;
169
+ };
170
+ type PickerConfigInternal = {
171
+ emojiVersion: string | null;
172
+ searchPlaceHolder: string;
173
+ searchPlaceholder: string;
174
+ searchClearButtonLabel: string;
175
+ defaultSkinTone: SkinTonesValue;
176
+ skinTonesDisabled: boolean;
177
+ autoFocusSearch: boolean;
178
+ emojiStyle: EmojiStyleValue;
179
+ categories: CategoriesConfig;
180
+ theme: ThemeValue;
181
+ suggestedEmojisMode: SuggestionModeValue;
182
+ lazyLoadEmojis: boolean;
183
+ previewConfig: PreviewConfig;
184
+ className: string;
185
+ height: PickerDimensions;
186
+ width: PickerDimensions;
187
+ style: React.CSSProperties;
188
+ getEmojiUrl: GetEmojiUrl;
189
+ searchDisabled: boolean;
190
+ skinTonePickerLocation: SkinTonePickerLocation;
191
+ unicodeToHide: Set<string>;
192
+ customEmojis: CustomEmoji[];
193
+ reactionsDefaultOpen: boolean;
194
+ reactions: string[];
195
+ open: boolean;
196
+ allowExpandReactions: boolean;
197
+ hiddenEmojis: string[];
198
+ emojiData?: EmojiData;
199
+ categoryIcons: CategoryIcons;
200
+ nonce?: string;
201
+ /**
202
+ * Controlled search value (raw user text). When present, it is the
203
+ * accepted visible source of truth; user edits emit `onSearchChange`
204
+ * proposals instead of committing locally.
205
+ */
206
+ searchValue?: string;
207
+ /** Uncontrolled initial search value, read once per mounted lifetime. */
208
+ defaultSearchValue?: string;
209
+ /** Emitted synchronously with each committed (uncontrolled) or proposed (controlled) user edit. */
210
+ onSearchChange?: (value: string) => void;
211
+ /** Accessible label for the search input. Defaults to English. */
212
+ searchLabel?: string;
213
+ /**
214
+ * Caller-defined Suggested category contents/order (unified or custom
215
+ * IDs). While present, `suggestedEmojisMode` is ignored for contents.
216
+ */
217
+ suggestedEmojis?: string[];
218
+ /** Observes compact-reactions vs full-picker transitions. */
219
+ onReactionsModeChange?: (reactionsOpen: boolean) => void;
220
+ /**
221
+ * Localized user-facing strings. Takes precedence over the individual
222
+ * `searchPlaceholder` / `searchLabel` / `searchClearButtonLabel` props.
223
+ */
224
+ labels?: Partial<PickerLabels>;
225
+ /**
226
+ * Controlled active skin tone. Pair with `onSkinToneChange`; while
227
+ * present, `defaultSkinTone` is ignored.
228
+ */
229
+ skinTone?: SkinTonesValue;
230
+ /**
231
+ * Emit the picker's CSS inside this cascade layer (e.g. "epr"), for
232
+ * layered CSS frameworks such as Tailwind v4 whose utilities cannot
233
+ * beat unlayered CSS. Declare the layer first in your CSS:
234
+ * `@layer epr, theme, base, components, utilities;`. Default: unlayered.
235
+ */
236
+ cssLayer?: string;
237
+ /**
238
+ * Emojis per row. The picker then sizes its width to fit those columns
239
+ * unless you set a width; a narrower container shows fewer columns.
240
+ * Default: as many as the width fits.
241
+ */
242
+ columns?: number;
243
+ };
244
+ type PreviewConfig = {
245
+ defaultEmoji: string;
246
+ defaultCaption: string;
247
+ showPreview: boolean;
248
+ };
249
+ type ConfigExternal = {
250
+ previewConfig: Partial<PreviewConfig>;
251
+ onEmojiClick: MouseDownEvent;
252
+ onReactionClick: MouseDownEvent;
253
+ onSkinToneChange: OnSkinToneChange;
254
+ /**
255
+ * User-supplied allowlist/order/merge input. Bare `Categories` members
256
+ * are accepted alongside full configs (as in v4 usage and this repo's
257
+ * own tests); the merged internal representation stays `CategoriesConfig`.
258
+ */
259
+ categories: UserCategoryConfig;
260
+ /**
261
+ * Dataset: an object (synchronous, SSR-safe), or a loader such as
262
+ * `() => import('emoji-picker-react/data/emojis-fr')` to code-split it.
263
+ * Omitted: the bundled English dataset.
264
+ */
265
+ emojiData: EmojiDataInput;
266
+ } & Omit<PickerConfigInternal, 'previewConfig' | 'unicodeToHide' | 'categories' | 'emojiData'>;
267
+ type PickerConfig = Partial<ConfigExternal>;
268
+ type PickerDimensions = string | number;
269
+ type MouseDownEvent = (emoji: EmojiClickData, event: MouseEvent, api?: OnEmojiClickApi) => void;
270
+ type OnSkinToneChange = (skinTone: SkinTones) => void;
271
+ /** The `onEmojiClick` / `onReactionClick` callback signature. */
272
+ type EmojiClickHandler = MouseDownEvent;
273
+ /** The `onSkinToneChange` callback signature. */
274
+ type SkinToneChangeHandler = OnSkinToneChange;
275
+ /** Third argument of `onEmojiClick` / `onReactionClick`. */
276
+ type OnEmojiClickApi = {
277
+ /** Return to the compact reactions bar (no-op when reactions are off). */
278
+ collapseToReactions: () => void;
279
+ };
280
+
281
+ /** The emoji a custom `Emoji` cell renders. */
282
+ type ListEmoji = {
283
+ /** True while hovered or keyboard-focused. */
284
+ isActive: boolean;
285
+ /** Unified code including the active skin tone, e.g. `1f44d-1f3fd`. */
286
+ unified: string;
287
+ names: string[];
288
+ /** Native emoji text (custom emojis: their id). */
289
+ emoji: string;
290
+ isCustom: boolean;
291
+ /** Active image style URL, or undefined for standard native emojis. */
292
+ imageUrl?: string;
293
+ /** Whether a long press opens skin tone variations. */
294
+ hasVariations: boolean;
295
+ };
296
+ /**
297
+ * Props for a custom emoji cell. Spread everything except `emoji` onto a
298
+ * `<button>`: the library-owned attributes (type, class, position style,
299
+ * tabIndex, aria-label, data-epr-*) carry selection, keyboard navigation,
300
+ * virtualization and accessibility. `children` is the default glyph/image;
301
+ * render it or your own content.
302
+ */
303
+ type EmojiRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
304
+ emoji: ListEmoji;
305
+ children: React.ReactNode;
306
+ };
307
+ /**
308
+ * Props for a custom category header. Spread everything except `category`
309
+ * onto the header element; it stays sticky and measured.
310
+ */
311
+ type CategoryHeaderRenderProps = React.HTMLAttributes<HTMLElement> & {
312
+ category: {
313
+ id: string;
314
+ name: string;
315
+ };
316
+ children: React.ReactNode;
317
+ };
318
+ type ListComponents = {
319
+ Emoji?: React.ComponentType<EmojiRenderProps>;
320
+ CategoryHeader?: React.ComponentType<CategoryHeaderRenderProps>;
321
+ };
322
+
323
+ /** Spread the managed props onto one native button. Render children or your own content. */
324
+ type CategoryButtonRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
325
+ category: {
326
+ id: string;
327
+ name: string;
328
+ isActive: boolean;
329
+ };
330
+ };
331
+ type SkinToneButtonRenderProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
332
+ tone: {
333
+ skinTone: SkinTones;
334
+ isActive: boolean;
335
+ isOpen: boolean;
336
+ };
337
+ };
338
+ type PickerComponents = ListComponents & {
339
+ CategoryButton?: React.ComponentType<CategoryButtonRenderProps>;
340
+ SkinToneButton?: React.ComponentType<SkinToneButtonRenderProps>;
341
+ ExpandButton?: React.ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>;
342
+ ClearButton?: React.ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>;
343
+ };
344
+
345
+ declare function ExportedEmoji({ unified, size, emojiStyle, lazyLoad, getEmojiUrl, emojiUrl, }: {
346
+ unified: string;
347
+ emojiStyle?: EmojiStyleValue;
348
+ size?: number;
349
+ lazyLoad?: boolean;
350
+ getEmojiUrl?: GetEmojiUrl;
351
+ emojiUrl?: string;
352
+ }): React.JSX.Element | null;
353
+
354
+ declare function emojiByUnified(unified?: string): DataEmoji | undefined;
355
+
356
+ interface PickerProps extends PickerConfig, React.AriaAttributes, Pick<React.HTMLAttributes<HTMLElement>, 'id' | 'title' | 'lang' | 'dir'> {
357
+ /**
358
+ * Color scheme: 'light' | 'dark' | 'auto'. Preferred over `theme`, which
359
+ * Emotion, styled-components and MUI reserve on components they wrap
360
+ * (a styled(EmojiPicker) would swallow it). `theme` remains supported.
361
+ */
362
+ colorScheme?: ThemeValue;
363
+ /**
364
+ * Render without decorative styling on every managed part.
365
+ * Geometry, presence and navigation remain managed. Style it with `className`,
366
+ * `--epr-*` variables and `[data-epr-part]` selectors.
367
+ */
368
+ unstyled?: boolean;
369
+ /** Shared replacements for interactive controls and category headers. */
370
+ components?: PickerComponents;
371
+ }
372
+ type Props = PickerProps;
373
+ declare function EmojiPicker(props: PickerProps): React.JSX.Element;
374
+
375
+ export { Categories, ExportedEmoji as Emoji, EmojiStyle, SkinTonePickerLocation, SkinTones, SuggestionMode, Theme, EmojiPicker as default, emojiByUnified };
376
+ export type { CategoryButtonRenderProps, CategoryConfig, CategoryHeaderRenderProps, CategoryIcons, CustomEmoji, EmojiClickData, EmojiClickHandler, EmojiData, EmojiDataInput, EmojiDataLoader, EmojiDataLoaderOptions, EmojiRenderProps, EmojiStyleValue, ListComponents, ListEmoji, OnEmojiClickApi, PickerComponents, PickerLabels, PickerProps, PreviewConfig, Props, SkinToneButtonRenderProps, SkinToneChangeHandler, SkinTonesValue, SuggestionModeValue, ThemeValue };