From 71d311f87afdb098270b2804a7c66a9eaee58ae4 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis Date: Mon, 21 Aug 2023 15:28:35 +0000 Subject: [PATCH 1/7] feat: add basic config --- .../src/components/IconPicker/IconPicker.tsx | 27 +++++++++ .../src/components/IconPicker/config/Icon.tsx | 56 +++++++++++++++++++ .../IconPicker/config/IconPackProvider.tsx | 20 +++++++ .../components/IconPicker/config/index.tsx | 48 ++++++++++++++++ .../src/components/IconPicker/index.tsx | 1 + .../BlockCategories/BlockCategoriesForm.tsx | 7 +-- 6 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 packages/app-admin/src/components/IconPicker/IconPicker.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/Icon.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/index.tsx create mode 100644 packages/app-admin/src/components/IconPicker/index.tsx diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx new file mode 100644 index 00000000000..8bb4394a805 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -0,0 +1,27 @@ +import React from "react"; + +import { DefaultIcons, useIconPickerConfig, IconPickerWithConfig } from "./config"; + +const Picker = () => { + const { icons } = useIconPickerConfig(); + + return ( + <> + Icon Picker + {icons.map((icon, index) => ( + {icon.value} + ))} + + ); +}; + +export const IconPicker = () => { + return ( + <> + + + + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/config/Icon.tsx b/packages/app-admin/src/components/IconPicker/config/Icon.tsx new file mode 100644 index 00000000000..607c3f2728a --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/Icon.tsx @@ -0,0 +1,56 @@ +import React from "react"; +import { Property, useIdGenerator } from "@webiny/react-properties"; + +export interface IconConfig { + type: string; + name: string; + color?: string; + skinTone?: string; + value: string; +} + +export interface IconProps { + type: string; + name: string; + color?: string; + skinTone?: string; + value: string; + remove?: boolean; + before?: string; + after?: string; +} + +export const Icon: React.FC = ({ + type, + name, + color, + skinTone, + value, + after = undefined, + before = undefined, + remove = false +}) => { + const getId = useIdGenerator("icon"); + + const placeAfter = after !== undefined ? getId(after) : undefined; + const placeBefore = before !== undefined ? getId(before) : undefined; + + return ( + + + + {color ? : null} + {skinTone ? ( + + ) : null} + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx new file mode 100644 index 00000000000..88af3ec9df7 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx @@ -0,0 +1,20 @@ +import React from "react"; +import { Property } from "@webiny/react-properties"; + +import { Icon, IconConfig } from "./Icon"; + +export type IconPackProviderProps = { + provider: () => IconConfig[]; +}; + +export const IconPackProvider = ({ provider }: IconPackProviderProps) => { + const icons = provider(); + + return ( + + {icons.map((icon, index) => ( + + ))} + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/config/index.tsx b/packages/app-admin/src/components/IconPicker/config/index.tsx new file mode 100644 index 00000000000..bd19e66b52e --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/index.tsx @@ -0,0 +1,48 @@ +import React, { useMemo } from "react"; + +import { createConfigurableComponent } from "@webiny/react-properties"; + +import { IconPackProvider } from "./IconPackProvider"; +import { IconConfig } from "./Icon"; + +const base = createConfigurableComponent("IconPicker"); + +export const IconPickerConfig = Object.assign(base.Config, { IconPackProvider }); +export const IconPickerWithConfig = base.WithConfig; + +interface IconPickerConfig { + iconPackProvider: { + icons: IconConfig[]; + }; +} + +export function useIconPickerConfig() { + const config = base.useConfig(); + + const iconPackProvider = config.iconPackProvider || {}; + + return useMemo( + () => ({ + icons: [...(iconPackProvider.icons || [])] + }), + [config] + ); +} + +export const DefaultIcons = () => { + return ( + + [ + { type: "emoji", name: "thumbs_up", skinTone: "", value: "๐Ÿ‘" }, + { type: "emoji", name: "thumbs_down", skinTone: "", value: "๐Ÿ‘Ž" } + ]} + /> + [ + { type: "emoji", name: "grinning_face", skinTone: "", value: "๐Ÿ˜€" } + ]} + /> + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/index.tsx b/packages/app-admin/src/components/IconPicker/index.tsx new file mode 100644 index 00000000000..29dd8f337ff --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/index.tsx @@ -0,0 +1 @@ +export { IconPicker } from "./IconPicker"; diff --git a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx index 21a3568f8be..c9e415696a5 100644 --- a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx +++ b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx @@ -12,7 +12,7 @@ import { SimpleFormContent, SimpleFormHeader } from "@webiny/app-admin/components/SimpleForm"; -import IconPicker from "./IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { validation } from "@webiny/validation"; import { blockCategorySlugValidator, blockCategoryDescriptionValidator } from "./validators"; import { @@ -213,10 +213,7 @@ const CategoriesForm: React.FC = ({ canCreate }) => { validators={validation.create("required")} defaultValue={"fas/star"} > - + From 5d102e28acc9bf15fbe6d2832f10227e10485e5f Mon Sep 17 00:00:00 2001 From: Vitalii Nobis Date: Fri, 1 Sep 2023 12:56:38 +0000 Subject: [PATCH 2/7] feat: add Icon Picker UI --- packages/app-admin/src/base/Admin.tsx | 2 + .../src/components/IconPicker/IconPicker.tsx | 327 +- .../components/IconPicker/IconRenderer.tsx | 44 + .../components/IconPicker/SkinToneSelect.tsx | 77 + .../src/components/IconPicker/config/Icon.tsx | 31 +- .../IconPicker/config/IconPackProvider.tsx | 4 +- .../components/IconPicker/config/emojis.json | 15267 ++++++++++++++++ .../IconPicker/config/fa6-regular.json | 879 + .../IconPicker/config/fa6-solid.json | 6779 +++++++ .../components/IconPicker/config/index.tsx | 63 +- 10 files changed, 23437 insertions(+), 36 deletions(-) create mode 100644 packages/app-admin/src/components/IconPicker/IconRenderer.tsx create mode 100644 packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/emojis.json create mode 100644 packages/app-admin/src/components/IconPicker/config/fa6-regular.json create mode 100644 packages/app-admin/src/components/IconPicker/config/fa6-solid.json diff --git a/packages/app-admin/src/base/Admin.tsx b/packages/app-admin/src/base/Admin.tsx index 6757b86b63e..8508320cb2a 100644 --- a/packages/app-admin/src/base/Admin.tsx +++ b/packages/app-admin/src/base/Admin.tsx @@ -8,6 +8,7 @@ import { createUiStateProvider } from "./providers/UiStateProvider"; import { SearchProvider } from "./ui/Search"; import { UserMenuProvider } from "./ui/UserMenu"; import { NavigationProvider } from "./ui/Navigation"; +import { DefaultIcons } from "~/components/IconPicker/config"; import { CircularProgress } from "@webiny/ui/Progress"; import { ThemeProvider } from "@webiny/app-theme"; @@ -31,6 +32,7 @@ export const Admin: React.FC = ({ children, createApolloClient }) => + {children} diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx index 8bb4394a805..77d92402054 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -1,27 +1,330 @@ -import React from "react"; +import React, { useCallback, useRef, useState, useMemo, useEffect } from "react"; +import { css } from "emotion"; +import styled from "@emotion/styled"; +// import groupBy from "lodash/groupBy"; +import { Grid } from "react-virtualized"; +import { GridCellProps } from "react-virtualized/dist/es/Grid"; -import { DefaultIcons, useIconPickerConfig, IconPickerWithConfig } from "./config"; +import { Menu } from "@webiny/ui/Menu"; +import { Tab, Tabs, TabsImperativeApi } from "@webiny/ui/Tabs"; +import { Typography } from "@webiny/ui/Typography"; +import { FormComponentProps } from "@webiny/ui/types"; +import { FormElementMessage } from "@webiny/ui/FormElementMessage"; +import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; +import { Input } from "@webiny/ui/Input"; +import { ColorPicker } from "@webiny/ui/ColorPicker"; +import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; -const Picker = () => { +import { IconRenderer, Icon } from "./IconRenderer"; +import { useIconPickerConfig, IconPickerWithConfig } from "./config"; +import { SkinToneSelect } from "./SkinToneSelect"; + +const COLUMN_COUNT = 8; + +const IconPickerWrapper = styled.div` + .mdc-menu-surface { + overflow: visible !important; + } +`; + +const iconPickerLabel = css` + margin-bottom: 5px; + margin-left: 2px; +`; + +const IconPickerInput = styled.div` + background-color: ${props => props.theme.styles.colors.color5}; + border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; + padding: 8px; + height: 32px; + width: fit-content; + cursor: pointer; + :hover { + border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; + } +`; + +const MenuHeader = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + text-transform: uppercase; + padding: 12px; + border-bottom: 1px solid ${props => props.theme.styles.colors.color5}; + color: ${props => props.theme.styles.colors.color4}; + + & > svg { + cursor: pointer; + fill: ${props => props.theme.styles.colors.color4}; + } +`; + +const Cell = styled.div<{ color: string; isActive: boolean }>` + cursor: pointer; + color: ${({ color }) => color}; + background-color: ${({ isActive, theme }) => + isActive ? theme.styles.colors.color5 : theme.styles.colors.color6}; + + & > * { + padding: 4px; + } +`; + +const TabContentWrapper = styled.div` + width: 340px; + padding: 12px; +`; + +const NoResultsWrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + height: 400px; +`; + +const InputsWrapper = styled.div` + display: flex; + column-gap: 12px; + padding-bottom: 12px; + height: 40px; + + [class$="color"] { + height: 24px; + width: 24px; + margin: 3px; + border-radius: 50%; + } + + [class$="classNames"] { + display: none; + } + + .webiny-ui-input { + height: 40px !important; + } +`; + +type TabContentProps = { + icons: Icon[]; + type: string; + value: Icon; + onChange: (value: Icon, closeMenu?: boolean) => void; +}; + +const TabContent = ({ icons, type, value, onChange }: TabContentProps) => { + const [filter, setFilter] = useState(""); + const [color, setColor] = useState(value.color || "#0000008a"); + + const onColorChange = useCallback((newColor: string) => { + setColor(newColor); + }, []); + + const onFilterChange = useCallback( + (value, cb) => { + setFilter(value); + cb(); + }, + [filter] + ); + + useEffect(() => { + if (value.type === "icon" && value.color !== color) { + onChange({ ...value, color, skinTone: undefined }, false); + } + }, [color]); + + const filteredIcons = useMemo(() => { + return filter ? icons.filter(ic => ic.name.includes(filter)) : icons; + }, [filter, icons]); + + const renderCell = useCallback(() => { + return function renderCell({ + columnIndex, + key, + rowIndex, + style + }: GridCellProps): React.ReactNode { + const item = filteredIcons[rowIndex * COLUMN_COUNT + columnIndex]; + if (!item) { + return null; + } + + return ( + { + onChange({ + type: item.type, + name: item.name, + ...(item.type === "emoji" ? { skinTone: item.skinTone } : {}), + ...(item.type === "icon" ? { color } : {}), + ...(item.width ? { width: item.width } : {}), + value: item.value + }); + }} + color={color} + isActive={item.name === value.name} + > + + + ); + }; + }, [filteredIcons, color]); + + return ( + + + + {({ value, onChange }) => ( + + )} + + {type === "emoji" && ( + + )} + {type === "icon" && ( + + {({ value, onChange }) => } + + )} + + {filteredIcons.length === 0 ? ( + + No results found. + + ) : ( + + )} + + ); +}; + +export interface IconPickerProps extends FormComponentProps { + label?: string; + description?: string; +} + +const IconPicker = ({ value, onChange, validation, label, description }: IconPickerProps) => { + const { isValid: validationIsValid, message: validationMessage } = validation || {}; + + const tabsRef = useRef(); const { icons } = useIconPickerConfig(); + // const emojisByCategory = groupBy( + // icons.filter(icon => icon.type === "emoji"), + // "category" + // ); + const emojis = icons.filter(icon => icon.type === "emoji"); + const defaultIcons = icons.filter(icon => icon.type === "icon"); + + const onIconChange = useCallback( + (icon: Icon) => { + if (onChange) { + onChange(icon); + } + }, + [onChange] + ); + + const handleSwitchTab = useCallback(() => { + if (!tabsRef.current) { + return; + } + + switch (value.type) { + case "icon": + tabsRef.current.switchTab(0); + break; + case "emoji": + tabsRef.current.switchTab(1); + break; + case "custom": + tabsRef.current.switchTab(2); + break; + } + }, [value.type, tabsRef]); + return ( - <> - Icon Picker - {icons.map((icon, index) => ( - {icon.value} - ))} - + + {label && ( +
+ {label} +
+ )} + + + + + } + onOpen={handleSwitchTab} + > + {({ closeMenu }: { closeMenu: () => void }) => ( + <> + + Select an icon + closeMenu()} /> + + + + + + + + + + + + + + )} + + + {validationIsValid === false && ( + {validationMessage} + )} + {validationIsValid !== false && description && ( + {description} + )} +
); }; -export const IconPicker = () => { +const IconPickerComponent = (props: IconPickerProps) => { return ( <> - - + ); }; + +IconPickerComponent.Icon = IconRenderer; + +export { IconPickerComponent as IconPicker }; diff --git a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx new file mode 100644 index 00000000000..7cdbf0c15fc --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx @@ -0,0 +1,44 @@ +import React from "react"; +import styled from "@emotion/styled"; + +const EmojiStyled = styled.div<{ size: number }>` + color: black; + width: ${({ size }) => `${size}px`}; + height: ${({ size }) => `${size}px`}; + font-size: ${({ size }) => `${size * 0.8}px`}; + line-height: ${({ size }) => `${size}px`}; +`; + +export type Icon = { + type: string; + name: string; + color?: string; + skinTone?: string; + width?: number; + value: string; +}; + +type IconProps = { + icon: Icon; + size?: number; +}; + +export const IconRenderer = ({ icon, size = 32 }: IconProps) => { + if (icon.type === "emoji") { + return ( + + {icon.skinTone ? icon.value + icon.skinTone : icon.value} + + ); + } + + return ( + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx b/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx new file mode 100644 index 00000000000..451f8a14d2e --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx @@ -0,0 +1,77 @@ +import React from "react"; +import styled from "@emotion/styled"; + +import { Menu } from "@webiny/ui/Menu"; + +import { Icon, IconRenderer } from "./IconRenderer"; +import { IconProps } from "./config/Icon"; + +const SKIN_TONES = ["", "\u{1f3fb}", "\u{1f3fc}", "\u{1f3fd}", "\u{1f3fe}", "\u{1f3ff}"]; + +const SkinToneSelectWrapper = styled.div` + padding: 4px; + width: 32px; + flex-shrink: 0; + background: #fff; + border-radius: 1px; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + display: inline-block; + cursor: pointer; +`; + +const SkinTonesGrid = styled.div` + display: grid; + gap: 4px; + padding: 4px; +`; + +const SkinTone = styled.div` + cursor: pointer; +`; + +type SkinToneSelectProps = { + emojis: IconProps[]; + icon: Icon; + onChange: (value: Icon) => void; +}; + +export const SkinToneSelect = ({ emojis, icon, onChange }: SkinToneSelectProps) => { + const hasSkinToneSupport = emojis.find(emoji => emoji.value === icon.value)?.skinToneSupport; + + if (!hasSkinToneSupport) { + return ( + + {icon.type === "emoji" && } + + ); + } + + return ( + + + + } + > + {({ closeMenu }: { closeMenu: () => void }) => ( + + {SKIN_TONES.map((skinTone, index) => ( + { + onChange({ ...icon, skinTone, color: undefined }); + closeMenu(); + }} + > + + + ))} + + )} + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/config/Icon.tsx b/packages/app-admin/src/components/IconPicker/config/Icon.tsx index 607c3f2728a..a1fc7c5a4d5 100644 --- a/packages/app-admin/src/components/IconPicker/config/Icon.tsx +++ b/packages/app-admin/src/components/IconPicker/config/Icon.tsx @@ -1,20 +1,13 @@ import React from "react"; import { Property, useIdGenerator } from "@webiny/react-properties"; -export interface IconConfig { - type: string; - name: string; - color?: string; - skinTone?: string; - value: string; -} - export interface IconProps { type: string; name: string; - color?: string; - skinTone?: string; + skinToneSupport?: boolean; + category?: string; value: string; + width?: number; remove?: boolean; before?: string; after?: string; @@ -23,9 +16,10 @@ export interface IconProps { export const Icon: React.FC = ({ type, name, - color, - skinTone, + skinToneSupport, + category, value, + width, after = undefined, before = undefined, remove = false @@ -46,10 +40,17 @@ export const Icon: React.FC = ({ > - {color ? : null} - {skinTone ? ( - + {typeof skinToneSupport !== "undefined" ? ( + + ) : null} + {category ? ( + ) : null} + {width ? : null} ); diff --git a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx index 88af3ec9df7..3d1e9687119 100644 --- a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx +++ b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx @@ -1,10 +1,10 @@ import React from "react"; import { Property } from "@webiny/react-properties"; -import { Icon, IconConfig } from "./Icon"; +import { Icon, IconProps } from "./Icon"; export type IconPackProviderProps = { - provider: () => IconConfig[]; + provider: () => IconProps[]; }; export const IconPackProvider = ({ provider }: IconPackProviderProps) => { diff --git a/packages/app-admin/src/components/IconPicker/config/emojis.json b/packages/app-admin/src/components/IconPicker/config/emojis.json new file mode 100644 index 00000000000..072484d31ee --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/emojis.json @@ -0,0 +1,15267 @@ +{ + "๐Ÿ˜€": { + "name": "grinning face", + "slug": "grinning_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ƒ": { + "name": "grinning face with big eyes", + "slug": "grinning_face_with_big_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜„": { + "name": "grinning face with smiling eyes", + "slug": "grinning_face_with_smiling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "beaming face with smiling eyes", + "slug": "beaming_face_with_smiling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜†": { + "name": "grinning squinting face", + "slug": "grinning_squinting_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜…": { + "name": "grinning face with sweat", + "slug": "grinning_face_with_sweat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคฃ": { + "name": "rolling on the floor laughing", + "slug": "rolling_on_the_floor_laughing", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ˜‚": { + "name": "face with tears of joy", + "slug": "face_with_tears_of_joy", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™‚": { + "name": "slightly smiling face", + "slug": "slightly_smiling_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ™ƒ": { + "name": "upside-down face", + "slug": "upside_down_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซ ": { + "name": "melting face", + "slug": "melting_face", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ˜‰": { + "name": "winking face", + "slug": "winking_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜Š": { + "name": "smiling face with smiling eyes", + "slug": "smiling_face_with_smiling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜‡": { + "name": "smiling face with halo", + "slug": "smiling_face_with_halo", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅฐ": { + "name": "smiling face with hearts", + "slug": "smiling_face_with_hearts", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "smiling face with heart-eyes", + "slug": "smiling_face_with_heart_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคฉ": { + "name": "star-struck", + "slug": "star_struck", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜˜": { + "name": "face blowing a kiss", + "slug": "face_blowing_a_kiss", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜—": { + "name": "kissing face", + "slug": "kissing_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ˜บ๏ธ": { + "name": "smiling face", + "slug": "smiling_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜š": { + "name": "kissing face with closed eyes", + "slug": "kissing_face_with_closed_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜™": { + "name": "kissing face with smiling eyes", + "slug": "kissing_face_with_smiling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅฒ": { + "name": "smiling face with tear", + "slug": "smiling_face_with_tear", + "group": "Smileys & Emotion", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ˜‹": { + "name": "face savoring food", + "slug": "face_savoring_food", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜›": { + "name": "face with tongue", + "slug": "face_with_tongue", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜œ": { + "name": "winking face with tongue", + "slug": "winking_face_with_tongue", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคช": { + "name": "zany face", + "slug": "zany_face", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "squinting face with tongue", + "slug": "squinting_face_with_tongue", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค‘": { + "name": "money-mouth face", + "slug": "money_mouth_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿค—": { + "name": "smiling face with open hands", + "slug": "smiling_face_with_open_hands", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿคญ": { + "name": "face with hand over mouth", + "slug": "face_with_hand_over_mouth", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿซข": { + "name": "face with open eyes and hand over mouth", + "slug": "face_with_open_eyes_and_hand_over_mouth", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿซฃ": { + "name": "face with peeking eye", + "slug": "face_with_peeking_eye", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿคซ": { + "name": "shushing face", + "slug": "shushing_face", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿค”": { + "name": "thinking face", + "slug": "thinking_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซก": { + "name": "saluting face", + "slug": "saluting_face", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿค": { + "name": "zipper-mouth face", + "slug": "zipper_mouth_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿคจ": { + "name": "face with raised eyebrow", + "slug": "face_with_raised_eyebrow", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "neutral face", + "slug": "neutral_face", + "group": "Smileys & Emotion", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ˜‘": { + "name": "expressionless face", + "slug": "expressionless_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ถ": { + "name": "face without mouth", + "slug": "face_without_mouth", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซฅ": { + "name": "dotted line face", + "slug": "dotted_line_face", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": { + "name": "face in clouds", + "slug": "face_in_clouds", + "group": "Smileys & Emotion", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "smirking face", + "slug": "smirking_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜’": { + "name": "unamused face", + "slug": "unamused_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™„": { + "name": "face with rolling eyes", + "slug": "face_with_rolling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ฌ": { + "name": "grimacing face", + "slug": "grimacing_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ฎโ€๐Ÿ’จ": { + "name": "face exhaling", + "slug": "face_exhaling", + "group": "Smileys & Emotion", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": false + }, + "๐Ÿคฅ": { + "name": "lying face", + "slug": "lying_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿซจ": { + "name": "shaking face", + "slug": "shaking_face", + "group": "Smileys & Emotion", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ˜Œ": { + "name": "relieved face", + "slug": "relieved_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜”": { + "name": "pensive face", + "slug": "pensive_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ช": { + "name": "sleepy face", + "slug": "sleepy_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคค": { + "name": "drooling face", + "slug": "drooling_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ˜ด": { + "name": "sleeping face", + "slug": "sleeping_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ท": { + "name": "face with medical mask", + "slug": "face_with_medical_mask", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค’": { + "name": "face with thermometer", + "slug": "face_with_thermometer", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿค•": { + "name": "face with head-bandage", + "slug": "face_with_head_bandage", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿคข": { + "name": "nauseated face", + "slug": "nauseated_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿคฎ": { + "name": "face vomiting", + "slug": "face_vomiting", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿคง": { + "name": "sneezing face", + "slug": "sneezing_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅต": { + "name": "hot face", + "slug": "hot_face", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅถ": { + "name": "cold face", + "slug": "cold_face", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅด": { + "name": "woozy face", + "slug": "woozy_face", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ˜ต": { + "name": "face with crossed-out eyes", + "slug": "face_with_crossed_out_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ตโ€๐Ÿ’ซ": { + "name": "face with spiral eyes", + "slug": "face_with_spiral_eyes", + "group": "Smileys & Emotion", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": false + }, + "๐Ÿคฏ": { + "name": "exploding head", + "slug": "exploding_head", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿค ": { + "name": "cowboy hat face", + "slug": "cowboy_hat_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅณ": { + "name": "partying face", + "slug": "partying_face", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅธ": { + "name": "disguised face", + "slug": "disguised_face", + "group": "Smileys & Emotion", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ˜Ž": { + "name": "smiling face with sunglasses", + "slug": "smiling_face_with_sunglasses", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿค“": { + "name": "nerd face", + "slug": "nerd_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿง": { + "name": "face with monocle", + "slug": "face_with_monocle", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜•": { + "name": "confused face", + "slug": "confused_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซค": { + "name": "face with diagonal mouth", + "slug": "face_with_diagonal_mouth", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ˜Ÿ": { + "name": "worried face", + "slug": "worried_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ™": { + "name": "slightly frowning face", + "slug": "slightly_frowning_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ˜น๏ธ": { + "name": "frowning face", + "slug": "frowning_face", + "group": "Smileys & Emotion", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ˜ฎ": { + "name": "face with open mouth", + "slug": "face_with_open_mouth", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ฏ": { + "name": "hushed face", + "slug": "hushed_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ฒ": { + "name": "astonished face", + "slug": "astonished_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ณ": { + "name": "flushed face", + "slug": "flushed_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅบ": { + "name": "pleading face", + "slug": "pleading_face", + "group": "Smileys & Emotion", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅน": { + "name": "face holding back tears", + "slug": "face_holding_back_tears", + "group": "Smileys & Emotion", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ˜ฆ": { + "name": "frowning face with open mouth", + "slug": "frowning_face_with_open_mouth", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜ง": { + "name": "anguished face", + "slug": "anguished_face", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜จ": { + "name": "fearful face", + "slug": "fearful_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฐ": { + "name": "anxious face with sweat", + "slug": "anxious_face_with_sweat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฅ": { + "name": "sad but relieved face", + "slug": "sad_but_relieved_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ข": { + "name": "crying face", + "slug": "crying_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ญ": { + "name": "loudly crying face", + "slug": "loudly_crying_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฑ": { + "name": "face screaming in fear", + "slug": "face_screaming_in_fear", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜–": { + "name": "confounded face", + "slug": "confounded_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฃ": { + "name": "persevering face", + "slug": "persevering_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ž": { + "name": "disappointed face", + "slug": "disappointed_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜“": { + "name": "downcast face with sweat", + "slug": "downcast_face_with_sweat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฉ": { + "name": "weary face", + "slug": "weary_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ซ": { + "name": "tired face", + "slug": "tired_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅฑ": { + "name": "yawning face", + "slug": "yawning_face", + "group": "Smileys & Emotion", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ˜ค": { + "name": "face with steam from nose", + "slug": "face_with_steam_from_nose", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ก": { + "name": "enraged face", + "slug": "enraged_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ ": { + "name": "angry face", + "slug": "angry_face", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคฌ": { + "name": "face with symbols on mouth", + "slug": "face_with_symbols_on_mouth", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜ˆ": { + "name": "smiling face with horns", + "slug": "smiling_face_with_horns", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฟ": { + "name": "angry face with horns", + "slug": "angry_face_with_horns", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’€": { + "name": "skull", + "slug": "skull", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜ ๏ธ": { + "name": "skull and crossbones", + "slug": "skull_and_crossbones", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’ฉ": { + "name": "pile of poo", + "slug": "pile_of_poo", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคก": { + "name": "clown face", + "slug": "clown_face", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ‘น": { + "name": "ogre", + "slug": "ogre", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘บ": { + "name": "goblin", + "slug": "goblin", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘ป": { + "name": "ghost", + "slug": "ghost", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘ฝ": { + "name": "alien", + "slug": "alien", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘พ": { + "name": "alien monster", + "slug": "alien_monster", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค–": { + "name": "robot", + "slug": "robot", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ˜บ": { + "name": "grinning cat", + "slug": "grinning_cat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ธ": { + "name": "grinning cat with smiling eyes", + "slug": "grinning_cat_with_smiling_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜น": { + "name": "cat with tears of joy", + "slug": "cat_with_tears_of_joy", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ป": { + "name": "smiling cat with heart-eyes", + "slug": "smiling_cat_with_heart_eyes", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ผ": { + "name": "cat with wry smile", + "slug": "cat_with_wry_smile", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฝ": { + "name": "kissing cat", + "slug": "kissing_cat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™€": { + "name": "weary cat", + "slug": "weary_cat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜ฟ": { + "name": "crying cat", + "slug": "crying_cat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜พ": { + "name": "pouting cat", + "slug": "pouting_cat", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™ˆ": { + "name": "see-no-evil monkey", + "slug": "see_no_evil_monkey", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™‰": { + "name": "hear-no-evil monkey", + "slug": "hear_no_evil_monkey", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™Š": { + "name": "speak-no-evil monkey", + "slug": "speak_no_evil_monkey", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’Œ": { + "name": "love letter", + "slug": "love_letter", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’˜": { + "name": "heart with arrow", + "slug": "heart_with_arrow", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "heart with ribbon", + "slug": "heart_with_ribbon", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’–": { + "name": "sparkling heart", + "slug": "sparkling_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’—": { + "name": "growing heart", + "slug": "growing_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’“": { + "name": "beating heart", + "slug": "beating_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ž": { + "name": "revolving hearts", + "slug": "revolving_hearts", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’•": { + "name": "two hearts", + "slug": "two_hearts", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’Ÿ": { + "name": "heart decoration", + "slug": "heart_decoration", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฃ๏ธ": { + "name": "heart exclamation", + "slug": "heart_exclamation", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’”": { + "name": "broken heart", + "slug": "broken_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โค๏ธโ€๐Ÿ”ฅ": { + "name": "heart on fire", + "slug": "heart_on_fire", + "group": "Smileys & Emotion", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": false + }, + "โค๏ธโ€๐Ÿฉน": { + "name": "mending heart", + "slug": "mending_heart", + "group": "Smileys & Emotion", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": false + }, + "โค๏ธ": { + "name": "red heart", + "slug": "red_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉท": { + "name": "pink heart", + "slug": "pink_heart", + "group": "Smileys & Emotion", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿงก": { + "name": "orange heart", + "slug": "orange_heart", + "group": "Smileys & Emotion", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ’›": { + "name": "yellow heart", + "slug": "yellow_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’š": { + "name": "green heart", + "slug": "green_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’™": { + "name": "blue heart", + "slug": "blue_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉต": { + "name": "light blue heart", + "slug": "light_blue_heart", + "group": "Smileys & Emotion", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ’œ": { + "name": "purple heart", + "slug": "purple_heart", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸคŽ": { + "name": "brown heart", + "slug": "brown_heart", + "group": "Smileys & Emotion", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ–ค": { + "name": "black heart", + "slug": "black_heart", + "group": "Smileys & Emotion", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฉถ": { + "name": "grey heart", + "slug": "grey_heart", + "group": "Smileys & Emotion", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿค": { + "name": "white heart", + "slug": "white_heart", + "group": "Smileys & Emotion", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ’‹": { + "name": "kiss mark", + "slug": "kiss_mark", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฏ": { + "name": "hundred points", + "slug": "hundred_points", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ข": { + "name": "anger symbol", + "slug": "anger_symbol", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฅ": { + "name": "collision", + "slug": "collision", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ซ": { + "name": "dizzy", + "slug": "dizzy", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฆ": { + "name": "sweat droplets", + "slug": "sweat_droplets", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’จ": { + "name": "dashing away", + "slug": "dashing_away", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ณ๏ธ": { + "name": "hole", + "slug": "hole", + "group": "Smileys & Emotion", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ’ฌ": { + "name": "speech balloon", + "slug": "speech_balloon", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ": { + "name": "eye in speech bubble", + "slug": "eye_in_speech_bubble", + "group": "Smileys & Emotion", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ—จ๏ธ": { + "name": "left speech bubble", + "slug": "left_speech_bubble", + "group": "Smileys & Emotion", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ—ฏ๏ธ": { + "name": "right anger bubble", + "slug": "right_anger_bubble", + "group": "Smileys & Emotion", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ’ญ": { + "name": "thought balloon", + "slug": "thought_balloon", + "group": "Smileys & Emotion", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’ค": { + "name": "ZZZ", + "slug": "zzz", + "group": "Smileys & Emotion", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘‹": { + "name": "waving hand", + "slug": "waving_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿคš": { + "name": "raised back of hand", + "slug": "raised_back_of_hand", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ–๏ธ": { + "name": "hand with fingers splayed", + "slug": "hand_with_fingers_splayed", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "โœ‹": { + "name": "raised hand", + "slug": "raised_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ––": { + "name": "vulcan salute", + "slug": "vulcan_salute", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿซฑ": { + "name": "rightwards hand", + "slug": "rightwards_hand", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿซฒ": { + "name": "leftwards hand", + "slug": "leftwards_hand", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿซณ": { + "name": "palm down hand", + "slug": "palm_down_hand", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿซด": { + "name": "palm up hand", + "slug": "palm_up_hand", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿซท": { + "name": "leftwards pushing hand", + "slug": "leftwards_pushing_hand", + "group": "People & Body", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "15.0" + }, + "๐Ÿซธ": { + "name": "rightwards pushing hand", + "slug": "rightwards_pushing_hand", + "group": "People & Body", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "15.0" + }, + "๐Ÿ‘Œ": { + "name": "OK hand", + "slug": "ok_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐ŸคŒ": { + "name": "pinched fingers", + "slug": "pinched_fingers", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿค": { + "name": "pinching hand", + "slug": "pinching_hand", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "โœŒ๏ธ": { + "name": "victory hand", + "slug": "victory_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿคž": { + "name": "crossed fingers", + "slug": "crossed_fingers", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿซฐ": { + "name": "hand with index finger and thumb crossed", + "slug": "hand_with_index_finger_and_thumb_crossed", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐ŸคŸ": { + "name": "love-you gesture", + "slug": "love_you_gesture", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿค˜": { + "name": "sign of the horns", + "slug": "sign_of_the_horns", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿค™": { + "name": "call me hand", + "slug": "call_me_hand", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ‘ˆ": { + "name": "backhand index pointing left", + "slug": "backhand_index_pointing_left", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘‰": { + "name": "backhand index pointing right", + "slug": "backhand_index_pointing_right", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘†": { + "name": "backhand index pointing up", + "slug": "backhand_index_pointing_up", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ–•": { + "name": "middle finger", + "slug": "middle_finger", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘‡": { + "name": "backhand index pointing down", + "slug": "backhand_index_pointing_down", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "โ˜๏ธ": { + "name": "index pointing up", + "slug": "index_pointing_up", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿซต": { + "name": "index pointing at the viewer", + "slug": "index_pointing_at_the_viewer", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿ‘": { + "name": "thumbs up", + "slug": "thumbs_up", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘Ž": { + "name": "thumbs down", + "slug": "thumbs_down", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "โœŠ": { + "name": "raised fist", + "slug": "raised_fist", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘Š": { + "name": "oncoming fist", + "slug": "oncoming_fist", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿค›": { + "name": "left-facing fist", + "slug": "left_facing_fist", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคœ": { + "name": "right-facing fist", + "slug": "right_facing_fist", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ‘": { + "name": "clapping hands", + "slug": "clapping_hands", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™Œ": { + "name": "raising hands", + "slug": "raising_hands", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿซถ": { + "name": "heart hands", + "slug": "heart_hands", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿ‘": { + "name": "open hands", + "slug": "open_hands", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿคฒ": { + "name": "palms up together", + "slug": "palms_up_together", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿค": { + "name": "handshake", + "slug": "handshake", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿ™": { + "name": "folded hands", + "slug": "folded_hands", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "โœ๏ธ": { + "name": "writing hand", + "slug": "writing_hand", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ’…": { + "name": "nail polish", + "slug": "nail_polish", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿคณ": { + "name": "selfie", + "slug": "selfie", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ’ช": { + "name": "flexed biceps", + "slug": "flexed_biceps", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿฆพ": { + "name": "mechanical arm", + "slug": "mechanical_arm", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆฟ": { + "name": "mechanical leg", + "slug": "mechanical_leg", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆต": { + "name": "leg", + "slug": "leg", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆถ": { + "name": "foot", + "slug": "foot", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿ‘‚": { + "name": "ear", + "slug": "ear", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿฆป": { + "name": "ear with hearing aid", + "slug": "ear_with_hearing_aid", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ƒ": { + "name": "nose", + "slug": "nose", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿง ": { + "name": "brain", + "slug": "brain", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿซ€": { + "name": "anatomical heart", + "slug": "anatomical_heart", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "lungs", + "slug": "lungs", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆท": { + "name": "tooth", + "slug": "tooth", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆด": { + "name": "bone", + "slug": "bone", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ‘€": { + "name": "eyes", + "slug": "eyes", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘๏ธ": { + "name": "eye", + "slug": "eye", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ‘…": { + "name": "tongue", + "slug": "tongue", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘„": { + "name": "mouth", + "slug": "mouth", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซฆ": { + "name": "biting lip", + "slug": "biting_lip", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ‘ถ": { + "name": "baby", + "slug": "baby", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿง’": { + "name": "child", + "slug": "child", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿ‘ฆ": { + "name": "boy", + "slug": "boy", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ง": { + "name": "girl", + "slug": "girl", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿง‘": { + "name": "person", + "slug": "person", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿ‘ฑ": { + "name": "person blond hair", + "slug": "person_blond_hair", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘จ": { + "name": "man", + "slug": "man", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿง”": { + "name": "person beard", + "slug": "person_beard", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง”โ€โ™‚๏ธ": { + "name": "man beard", + "slug": "man_beard", + "group": "People & Body", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿง”โ€โ™€๏ธ": { + "name": "woman beard", + "slug": "woman_beard", + "group": "People & Body", + "emoji_version": "13.1", + "unicode_version": "13.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘จโ€๐Ÿฆฐ": { + "name": "man red hair", + "slug": "man_red_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿ‘จโ€๐Ÿฆฑ": { + "name": "man curly hair", + "slug": "man_curly_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿ‘จโ€๐Ÿฆณ": { + "name": "man white hair", + "slug": "man_white_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿ‘จโ€๐Ÿฆฒ": { + "name": "man bald", + "slug": "man_bald", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿ‘ฉ": { + "name": "woman", + "slug": "woman", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ฉโ€๐Ÿฆฐ": { + "name": "woman red hair", + "slug": "woman_red_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿง‘โ€๐Ÿฆฐ": { + "name": "person red hair", + "slug": "person_red_hair", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘ฉโ€๐Ÿฆฑ": { + "name": "woman curly hair", + "slug": "woman_curly_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿง‘โ€๐Ÿฆฑ": { + "name": "person curly hair", + "slug": "person_curly_hair", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘ฉโ€๐Ÿฆณ": { + "name": "woman white hair", + "slug": "woman_white_hair", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿง‘โ€๐Ÿฆณ": { + "name": "person white hair", + "slug": "person_white_hair", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘ฉโ€๐Ÿฆฒ": { + "name": "woman bald", + "slug": "woman_bald", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿง‘โ€๐Ÿฆฒ": { + "name": "person bald", + "slug": "person_bald", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘ฑโ€โ™€๏ธ": { + "name": "woman blond hair", + "slug": "woman_blond_hair", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฑโ€โ™‚๏ธ": { + "name": "man blond hair", + "slug": "man_blond_hair", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง“": { + "name": "older person", + "slug": "older_person", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿ‘ด": { + "name": "old man", + "slug": "old_man", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ต": { + "name": "old woman", + "slug": "old_woman", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™": { + "name": "person frowning", + "slug": "person_frowning", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™โ€โ™‚๏ธ": { + "name": "man frowning", + "slug": "man_frowning", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™โ€โ™€๏ธ": { + "name": "woman frowning", + "slug": "woman_frowning", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™Ž": { + "name": "person pouting", + "slug": "person_pouting", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™Žโ€โ™‚๏ธ": { + "name": "man pouting", + "slug": "man_pouting", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™Žโ€โ™€๏ธ": { + "name": "woman pouting", + "slug": "woman_pouting", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™…": { + "name": "person gesturing NO", + "slug": "person_gesturing_no", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™…โ€โ™‚๏ธ": { + "name": "man gesturing NO", + "slug": "man_gesturing_no", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™…โ€โ™€๏ธ": { + "name": "woman gesturing NO", + "slug": "woman_gesturing_no", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™†": { + "name": "person gesturing OK", + "slug": "person_gesturing_ok", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™†โ€โ™‚๏ธ": { + "name": "man gesturing OK", + "slug": "man_gesturing_ok", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™†โ€โ™€๏ธ": { + "name": "woman gesturing OK", + "slug": "woman_gesturing_ok", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’": { + "name": "person tipping hand", + "slug": "person_tipping_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ’โ€โ™‚๏ธ": { + "name": "man tipping hand", + "slug": "man_tipping_hand", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’โ€โ™€๏ธ": { + "name": "woman tipping hand", + "slug": "woman_tipping_hand", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™‹": { + "name": "person raising hand", + "slug": "person_raising_hand", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™‹โ€โ™‚๏ธ": { + "name": "man raising hand", + "slug": "man_raising_hand", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™‹โ€โ™€๏ธ": { + "name": "woman raising hand", + "slug": "woman_raising_hand", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง": { + "name": "deaf person", + "slug": "deaf_person", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿงโ€โ™‚๏ธ": { + "name": "deaf man", + "slug": "deaf_man", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿงโ€โ™€๏ธ": { + "name": "deaf woman", + "slug": "deaf_woman", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ™‡": { + "name": "person bowing", + "slug": "person_bowing", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ™‡โ€โ™‚๏ธ": { + "name": "man bowing", + "slug": "man_bowing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ™‡โ€โ™€๏ธ": { + "name": "woman bowing", + "slug": "woman_bowing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคฆ": { + "name": "person facepalming", + "slug": "person_facepalming", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคฆโ€โ™‚๏ธ": { + "name": "man facepalming", + "slug": "man_facepalming", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคฆโ€โ™€๏ธ": { + "name": "woman facepalming", + "slug": "woman_facepalming", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคท": { + "name": "person shrugging", + "slug": "person_shrugging", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคทโ€โ™‚๏ธ": { + "name": "man shrugging", + "slug": "man_shrugging", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคทโ€โ™€๏ธ": { + "name": "woman shrugging", + "slug": "woman_shrugging", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€โš•๏ธ": { + "name": "health worker", + "slug": "health_worker", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€โš•๏ธ": { + "name": "man health worker", + "slug": "man_health_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€โš•๏ธ": { + "name": "woman health worker", + "slug": "woman_health_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐ŸŽ“": { + "name": "student", + "slug": "student", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐ŸŽ“": { + "name": "man student", + "slug": "man_student", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐ŸŽ“": { + "name": "woman student", + "slug": "woman_student", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿซ": { + "name": "teacher", + "slug": "teacher", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿซ": { + "name": "man teacher", + "slug": "man_teacher", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿซ": { + "name": "woman teacher", + "slug": "woman_teacher", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€โš–๏ธ": { + "name": "judge", + "slug": "judge", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€โš–๏ธ": { + "name": "man judge", + "slug": "man_judge", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€โš–๏ธ": { + "name": "woman judge", + "slug": "woman_judge", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐ŸŒพ": { + "name": "farmer", + "slug": "farmer", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐ŸŒพ": { + "name": "man farmer", + "slug": "man_farmer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐ŸŒพ": { + "name": "woman farmer", + "slug": "woman_farmer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿณ": { + "name": "cook", + "slug": "cook", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿณ": { + "name": "man cook", + "slug": "man_cook", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿณ": { + "name": "woman cook", + "slug": "woman_cook", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿ”ง": { + "name": "mechanic", + "slug": "mechanic", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿ”ง": { + "name": "man mechanic", + "slug": "man_mechanic", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿ”ง": { + "name": "woman mechanic", + "slug": "woman_mechanic", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿญ": { + "name": "factory worker", + "slug": "factory_worker", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿญ": { + "name": "man factory worker", + "slug": "man_factory_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿญ": { + "name": "woman factory worker", + "slug": "woman_factory_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿ’ผ": { + "name": "office worker", + "slug": "office_worker", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿ’ผ": { + "name": "man office worker", + "slug": "man_office_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿ’ผ": { + "name": "woman office worker", + "slug": "woman_office_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿ”ฌ": { + "name": "scientist", + "slug": "scientist", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿ”ฌ": { + "name": "man scientist", + "slug": "man_scientist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿ”ฌ": { + "name": "woman scientist", + "slug": "woman_scientist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿ’ป": { + "name": "technologist", + "slug": "technologist", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿ’ป": { + "name": "man technologist", + "slug": "man_technologist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿ’ป": { + "name": "woman technologist", + "slug": "woman_technologist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐ŸŽค": { + "name": "singer", + "slug": "singer", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐ŸŽค": { + "name": "man singer", + "slug": "man_singer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐ŸŽค": { + "name": "woman singer", + "slug": "woman_singer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐ŸŽจ": { + "name": "artist", + "slug": "artist", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐ŸŽจ": { + "name": "man artist", + "slug": "man_artist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐ŸŽจ": { + "name": "woman artist", + "slug": "woman_artist", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€โœˆ๏ธ": { + "name": "pilot", + "slug": "pilot", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€โœˆ๏ธ": { + "name": "man pilot", + "slug": "man_pilot", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€โœˆ๏ธ": { + "name": "woman pilot", + "slug": "woman_pilot", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿš€": { + "name": "astronaut", + "slug": "astronaut", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿš€": { + "name": "man astronaut", + "slug": "man_astronaut", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿš€": { + "name": "woman astronaut", + "slug": "woman_astronaut", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿš’": { + "name": "firefighter", + "slug": "firefighter", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿš’": { + "name": "man firefighter", + "slug": "man_firefighter", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฉโ€๐Ÿš’": { + "name": "woman firefighter", + "slug": "woman_firefighter", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฎ": { + "name": "police officer", + "slug": "police_officer", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ฎโ€โ™‚๏ธ": { + "name": "man police officer", + "slug": "man_police_officer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฎโ€โ™€๏ธ": { + "name": "woman police officer", + "slug": "woman_police_officer", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ•ต๏ธ": { + "name": "detective", + "slug": "detective", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "2.0" + }, + "๐Ÿ•ต๏ธโ€โ™‚๏ธ": { + "name": "man detective", + "slug": "man_detective", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ•ต๏ธโ€โ™€๏ธ": { + "name": "woman detective", + "slug": "woman_detective", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’‚": { + "name": "guard", + "slug": "guard", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ’‚โ€โ™‚๏ธ": { + "name": "man guard", + "slug": "man_guard", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’‚โ€โ™€๏ธ": { + "name": "woman guard", + "slug": "woman_guard", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿฅท": { + "name": "ninja", + "slug": "ninja", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿ‘ท": { + "name": "construction worker", + "slug": "construction_worker", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ทโ€โ™‚๏ธ": { + "name": "man construction worker", + "slug": "man_construction_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ทโ€โ™€๏ธ": { + "name": "woman construction worker", + "slug": "woman_construction_worker", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿซ…": { + "name": "person with crown", + "slug": "person_with_crown", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿคด": { + "name": "prince", + "slug": "prince", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ‘ธ": { + "name": "princess", + "slug": "princess", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ณ": { + "name": "person wearing turban", + "slug": "person_wearing_turban", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ณโ€โ™‚๏ธ": { + "name": "man wearing turban", + "slug": "man_wearing_turban", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ณโ€โ™€๏ธ": { + "name": "woman wearing turban", + "slug": "woman_wearing_turban", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฒ": { + "name": "person with skullcap", + "slug": "person_with_skullcap", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿง•": { + "name": "woman with headscarf", + "slug": "woman_with_headscarf", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿคต": { + "name": "person in tuxedo", + "slug": "person_in_tuxedo", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคตโ€โ™‚๏ธ": { + "name": "man in tuxedo", + "slug": "man_in_tuxedo", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿคตโ€โ™€๏ธ": { + "name": "woman in tuxedo", + "slug": "woman_in_tuxedo", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿ‘ฐ": { + "name": "person with veil", + "slug": "person_with_veil", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ‘ฐโ€โ™‚๏ธ": { + "name": "man with veil", + "slug": "man_with_veil", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿ‘ฐโ€โ™€๏ธ": { + "name": "woman with veil", + "slug": "woman_with_veil", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿคฐ": { + "name": "pregnant woman", + "slug": "pregnant_woman", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿซƒ": { + "name": "pregnant man", + "slug": "pregnant_man", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿซ„": { + "name": "pregnant person", + "slug": "pregnant_person", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "14.0" + }, + "๐Ÿคฑ": { + "name": "breast-feeding", + "slug": "breast_feeding", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿ‘ฉโ€๐Ÿผ": { + "name": "woman feeding baby", + "slug": "woman_feeding_baby", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿ‘จโ€๐Ÿผ": { + "name": "man feeding baby", + "slug": "man_feeding_baby", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿง‘โ€๐Ÿผ": { + "name": "person feeding baby", + "slug": "person_feeding_baby", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿ‘ผ": { + "name": "baby angel", + "slug": "baby_angel", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐ŸŽ…": { + "name": "Santa Claus", + "slug": "santa_claus", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿคถ": { + "name": "Mrs. Claus", + "slug": "mrs_claus", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿง‘โ€๐ŸŽ„": { + "name": "mx claus", + "slug": "mx_claus", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.0" + }, + "๐Ÿฆธ": { + "name": "superhero", + "slug": "superhero", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆธโ€โ™‚๏ธ": { + "name": "man superhero", + "slug": "man_superhero", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆธโ€โ™€๏ธ": { + "name": "woman superhero", + "slug": "woman_superhero", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆน": { + "name": "supervillain", + "slug": "supervillain", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆนโ€โ™‚๏ธ": { + "name": "man supervillain", + "slug": "man_supervillain", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿฆนโ€โ™€๏ธ": { + "name": "woman supervillain", + "slug": "woman_supervillain", + "group": "People & Body", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "11.0" + }, + "๐Ÿง™": { + "name": "mage", + "slug": "mage", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง™โ€โ™‚๏ธ": { + "name": "man mage", + "slug": "man_mage", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง™โ€โ™€๏ธ": { + "name": "woman mage", + "slug": "woman_mage", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงš": { + "name": "fairy", + "slug": "fairy", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงšโ€โ™‚๏ธ": { + "name": "man fairy", + "slug": "man_fairy", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงšโ€โ™€๏ธ": { + "name": "woman fairy", + "slug": "woman_fairy", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง›": { + "name": "vampire", + "slug": "vampire", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง›โ€โ™‚๏ธ": { + "name": "man vampire", + "slug": "man_vampire", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง›โ€โ™€๏ธ": { + "name": "woman vampire", + "slug": "woman_vampire", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงœ": { + "name": "merperson", + "slug": "merperson", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงœโ€โ™‚๏ธ": { + "name": "merman", + "slug": "merman", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงœโ€โ™€๏ธ": { + "name": "mermaid", + "slug": "mermaid", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง": { + "name": "elf", + "slug": "elf", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงโ€โ™‚๏ธ": { + "name": "man elf", + "slug": "man_elf", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงโ€โ™€๏ธ": { + "name": "woman elf", + "slug": "woman_elf", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿงž": { + "name": "genie", + "slug": "genie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿงžโ€โ™‚๏ธ": { + "name": "man genie", + "slug": "man_genie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿงžโ€โ™€๏ธ": { + "name": "woman genie", + "slug": "woman_genie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸงŸ": { + "name": "zombie", + "slug": "zombie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸงŸโ€โ™‚๏ธ": { + "name": "man zombie", + "slug": "man_zombie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸงŸโ€โ™€๏ธ": { + "name": "woman zombie", + "slug": "woman_zombie", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸงŒ": { + "name": "troll", + "slug": "troll", + "group": "People & Body", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ’†": { + "name": "person getting massage", + "slug": "person_getting_massage", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ’†โ€โ™‚๏ธ": { + "name": "man getting massage", + "slug": "man_getting_massage", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’†โ€โ™€๏ธ": { + "name": "woman getting massage", + "slug": "woman_getting_massage", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’‡": { + "name": "person getting haircut", + "slug": "person_getting_haircut", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ’‡โ€โ™‚๏ธ": { + "name": "man getting haircut", + "slug": "man_getting_haircut", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’‡โ€โ™€๏ธ": { + "name": "woman getting haircut", + "slug": "woman_getting_haircut", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšถ": { + "name": "person walking", + "slug": "person_walking", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿšถโ€โ™‚๏ธ": { + "name": "man walking", + "slug": "man_walking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšถโ€โ™€๏ธ": { + "name": "woman walking", + "slug": "woman_walking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง": { + "name": "person standing", + "slug": "person_standing", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿงโ€โ™‚๏ธ": { + "name": "man standing", + "slug": "man_standing", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿงโ€โ™€๏ธ": { + "name": "woman standing", + "slug": "woman_standing", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐ŸงŽ": { + "name": "person kneeling", + "slug": "person_kneeling", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐ŸงŽโ€โ™‚๏ธ": { + "name": "man kneeling", + "slug": "man_kneeling", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐ŸงŽโ€โ™€๏ธ": { + "name": "woman kneeling", + "slug": "woman_kneeling", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿง‘โ€๐Ÿฆฏ": { + "name": "person with white cane", + "slug": "person_with_white_cane", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿฆฏ": { + "name": "man with white cane", + "slug": "man_with_white_cane", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ฉโ€๐Ÿฆฏ": { + "name": "woman with white cane", + "slug": "woman_with_white_cane", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿง‘โ€๐Ÿฆผ": { + "name": "person in motorized wheelchair", + "slug": "person_in_motorized_wheelchair", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿฆผ": { + "name": "man in motorized wheelchair", + "slug": "man_in_motorized_wheelchair", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ฉโ€๐Ÿฆผ": { + "name": "woman in motorized wheelchair", + "slug": "woman_in_motorized_wheelchair", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿง‘โ€๐Ÿฆฝ": { + "name": "person in manual wheelchair", + "slug": "person_in_manual_wheelchair", + "group": "People & Body", + "emoji_version": "12.1", + "unicode_version": "12.1", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.1" + }, + "๐Ÿ‘จโ€๐Ÿฆฝ": { + "name": "man in manual wheelchair", + "slug": "man_in_manual_wheelchair", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ฉโ€๐Ÿฆฝ": { + "name": "woman in manual wheelchair", + "slug": "woman_in_manual_wheelchair", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿƒ": { + "name": "person running", + "slug": "person_running", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿƒโ€โ™‚๏ธ": { + "name": "man running", + "slug": "man_running", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿƒโ€โ™€๏ธ": { + "name": "woman running", + "slug": "woman_running", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ’ƒ": { + "name": "woman dancing", + "slug": "woman_dancing", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ•บ": { + "name": "man dancing", + "slug": "man_dancing", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿ•ด๏ธ": { + "name": "person in suit levitating", + "slug": "person_in_suit_levitating", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‘ฏ": { + "name": "people with bunny ears", + "slug": "people_with_bunny_ears", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘ฏโ€โ™‚๏ธ": { + "name": "men with bunny ears", + "slug": "men_with_bunny_ears", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฏโ€โ™€๏ธ": { + "name": "women with bunny ears", + "slug": "women_with_bunny_ears", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿง–": { + "name": "person in steamy room", + "slug": "person_in_steamy_room", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง–โ€โ™‚๏ธ": { + "name": "man in steamy room", + "slug": "man_in_steamy_room", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง–โ€โ™€๏ธ": { + "name": "woman in steamy room", + "slug": "woman_in_steamy_room", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง—": { + "name": "person climbing", + "slug": "person_climbing", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง—โ€โ™‚๏ธ": { + "name": "man climbing", + "slug": "man_climbing", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง—โ€โ™€๏ธ": { + "name": "woman climbing", + "slug": "woman_climbing", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿคบ": { + "name": "person fencing", + "slug": "person_fencing", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ‡": { + "name": "horse racing", + "slug": "horse_racing", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "โ›ท๏ธ": { + "name": "skier", + "slug": "skier", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ‚": { + "name": "snowboarder", + "slug": "snowboarder", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐ŸŒ๏ธ": { + "name": "person golfing", + "slug": "person_golfing", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐ŸŒ๏ธโ€โ™‚๏ธ": { + "name": "man golfing", + "slug": "man_golfing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐ŸŒ๏ธโ€โ™€๏ธ": { + "name": "woman golfing", + "slug": "woman_golfing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ„": { + "name": "person surfing", + "slug": "person_surfing", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ„โ€โ™‚๏ธ": { + "name": "man surfing", + "slug": "man_surfing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ„โ€โ™€๏ธ": { + "name": "woman surfing", + "slug": "woman_surfing", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšฃ": { + "name": "person rowing boat", + "slug": "person_rowing_boat", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿšฃโ€โ™‚๏ธ": { + "name": "man rowing boat", + "slug": "man_rowing_boat", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšฃโ€โ™€๏ธ": { + "name": "woman rowing boat", + "slug": "woman_rowing_boat", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐ŸŠ": { + "name": "person swimming", + "slug": "person_swimming", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐ŸŠโ€โ™‚๏ธ": { + "name": "man swimming", + "slug": "man_swimming", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐ŸŠโ€โ™€๏ธ": { + "name": "woman swimming", + "slug": "woman_swimming", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "โ›น๏ธ": { + "name": "person bouncing ball", + "slug": "person_bouncing_ball", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "2.0" + }, + "โ›น๏ธโ€โ™‚๏ธ": { + "name": "man bouncing ball", + "slug": "man_bouncing_ball", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "โ›น๏ธโ€โ™€๏ธ": { + "name": "woman bouncing ball", + "slug": "woman_bouncing_ball", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‹๏ธ": { + "name": "person lifting weights", + "slug": "person_lifting_weights", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "2.0" + }, + "๐Ÿ‹๏ธโ€โ™‚๏ธ": { + "name": "man lifting weights", + "slug": "man_lifting_weights", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿ‹๏ธโ€โ™€๏ธ": { + "name": "woman lifting weights", + "slug": "woman_lifting_weights", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšด": { + "name": "person biking", + "slug": "person_biking", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿšดโ€โ™‚๏ธ": { + "name": "man biking", + "slug": "man_biking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšดโ€โ™€๏ธ": { + "name": "woman biking", + "slug": "woman_biking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšต": { + "name": "person mountain biking", + "slug": "person_mountain_biking", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿšตโ€โ™‚๏ธ": { + "name": "man mountain biking", + "slug": "man_mountain_biking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿšตโ€โ™€๏ธ": { + "name": "woman mountain biking", + "slug": "woman_mountain_biking", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคธ": { + "name": "person cartwheeling", + "slug": "person_cartwheeling", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคธโ€โ™‚๏ธ": { + "name": "man cartwheeling", + "slug": "man_cartwheeling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคธโ€โ™€๏ธ": { + "name": "woman cartwheeling", + "slug": "woman_cartwheeling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคผ": { + "name": "people wrestling", + "slug": "people_wrestling", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿคผโ€โ™‚๏ธ": { + "name": "men wrestling", + "slug": "men_wrestling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿคผโ€โ™€๏ธ": { + "name": "women wrestling", + "slug": "women_wrestling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿคฝ": { + "name": "person playing water polo", + "slug": "person_playing_water_polo", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคฝโ€โ™‚๏ธ": { + "name": "man playing water polo", + "slug": "man_playing_water_polo", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคฝโ€โ™€๏ธ": { + "name": "woman playing water polo", + "slug": "woman_playing_water_polo", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคพ": { + "name": "person playing handball", + "slug": "person_playing_handball", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคพโ€โ™‚๏ธ": { + "name": "man playing handball", + "slug": "man_playing_handball", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคพโ€โ™€๏ธ": { + "name": "woman playing handball", + "slug": "woman_playing_handball", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคน": { + "name": "person juggling", + "slug": "person_juggling", + "group": "People & Body", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "3.0" + }, + "๐Ÿคนโ€โ™‚๏ธ": { + "name": "man juggling", + "slug": "man_juggling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿคนโ€โ™€๏ธ": { + "name": "woman juggling", + "slug": "woman_juggling", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง˜": { + "name": "person in lotus position", + "slug": "person_in_lotus_position", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง˜โ€โ™‚๏ธ": { + "name": "man in lotus position", + "slug": "man_in_lotus_position", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿง˜โ€โ™€๏ธ": { + "name": "woman in lotus position", + "slug": "woman_in_lotus_position", + "group": "People & Body", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "5.0" + }, + "๐Ÿ›€": { + "name": "person taking bath", + "slug": "person_taking_bath", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "1.0" + }, + "๐Ÿ›Œ": { + "name": "person in bed", + "slug": "person_in_bed", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "4.0" + }, + "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘": { + "name": "people holding hands", + "slug": "people_holding_hands", + "group": "People & Body", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ญ": { + "name": "women holding hands", + "slug": "women_holding_hands", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ซ": { + "name": "woman and man holding hands", + "slug": "woman_and_man_holding_hands", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ‘ฌ": { + "name": "men holding hands", + "slug": "men_holding_hands", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "12.0" + }, + "๐Ÿ’": { + "name": "kiss", + "slug": "kiss", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": { + "name": "kiss woman, man", + "slug": "kiss_woman_man", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": { + "name": "kiss man, man", + "slug": "kiss_man_man", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ": { + "name": "kiss woman, woman", + "slug": "kiss_woman_woman", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ’‘": { + "name": "couple with heart", + "slug": "couple_with_heart", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ": { + "name": "couple with heart woman, man", + "slug": "couple_with_heart_woman_man", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ": { + "name": "couple with heart man, man", + "slug": "couple_with_heart_man_man", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ": { + "name": "couple with heart woman, woman", + "slug": "couple_with_heart_woman_woman", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": true, + "skin_tone_support_unicode_version": "13.1" + }, + "๐Ÿ‘ช": { + "name": "family", + "slug": "family", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { + "name": "family man, woman, boy", + "slug": "family_man_woman_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": { + "name": "family man, woman, girl", + "slug": "family_man_woman_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { + "name": "family man, woman, girl, boy", + "slug": "family_man_woman_girl_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { + "name": "family man, woman, boy, boy", + "slug": "family_man_woman_boy_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { + "name": "family man, woman, girl, girl", + "slug": "family_man_woman_girl_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ": { + "name": "family man, man, boy", + "slug": "family_man_man_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง": { + "name": "family man, man, girl", + "slug": "family_man_man_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { + "name": "family man, man, girl, boy", + "slug": "family_man_man_girl_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { + "name": "family man, man, boy, boy", + "slug": "family_man_man_boy_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": { + "name": "family man, man, girl, girl", + "slug": "family_man_man_girl_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { + "name": "family woman, woman, boy", + "slug": "family_woman_woman_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": { + "name": "family woman, woman, girl", + "slug": "family_woman_woman_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { + "name": "family woman, woman, girl, boy", + "slug": "family_woman_woman_girl_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { + "name": "family woman, woman, boy, boy", + "slug": "family_woman_woman_boy_boy", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { + "name": "family woman, woman, girl, girl", + "slug": "family_woman_woman_girl_girl", + "group": "People & Body", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฆ": { + "name": "family man, boy", + "slug": "family_man_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { + "name": "family man, boy, boy", + "slug": "family_man_boy_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘ง": { + "name": "family man, girl", + "slug": "family_man_girl", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { + "name": "family man, girl, boy", + "slug": "family_man_girl_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": { + "name": "family man, girl, girl", + "slug": "family_man_girl_girl", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { + "name": "family woman, boy", + "slug": "family_woman_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { + "name": "family woman, boy, boy", + "slug": "family_woman_boy_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘ง": { + "name": "family woman, girl", + "slug": "family_woman_girl", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { + "name": "family woman, girl, boy", + "slug": "family_woman_girl_boy", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { + "name": "family woman, girl, girl", + "slug": "family_woman_girl_girl", + "group": "People & Body", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ—ฃ๏ธ": { + "name": "speaking head", + "slug": "speaking_head", + "group": "People & Body", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ‘ค": { + "name": "bust in silhouette", + "slug": "bust_in_silhouette", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘ฅ": { + "name": "busts in silhouette", + "slug": "busts_in_silhouette", + "group": "People & Body", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซ‚": { + "name": "people hugging", + "slug": "people_hugging", + "group": "People & Body", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ‘ฃ": { + "name": "footprints", + "slug": "footprints", + "group": "People & Body", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿต": { + "name": "monkey face", + "slug": "monkey_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "monkey", + "slug": "monkey", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "gorilla", + "slug": "gorilla", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆง": { + "name": "orangutan", + "slug": "orangutan", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿถ": { + "name": "dog face", + "slug": "dog_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•": { + "name": "dog", + "slug": "dog", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿฆฎ": { + "name": "guide dog", + "slug": "guide_dog", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ•โ€๐Ÿฆบ": { + "name": "service dog", + "slug": "service_dog", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉ": { + "name": "poodle", + "slug": "poodle", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿบ": { + "name": "wolf", + "slug": "wolf", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸฆŠ": { + "name": "fox", + "slug": "fox", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "raccoon", + "slug": "raccoon", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฑ": { + "name": "cat face", + "slug": "cat_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆ": { + "name": "cat", + "slug": "cat", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿˆโ€โฌ›": { + "name": "black cat", + "slug": "black_cat", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "lion", + "slug": "lion", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฏ": { + "name": "tiger face", + "slug": "tiger_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…": { + "name": "tiger", + "slug": "tiger", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ†": { + "name": "leopard", + "slug": "leopard", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿด": { + "name": "horse face", + "slug": "horse_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸซŽ": { + "name": "moose", + "slug": "moose", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "donkey", + "slug": "donkey", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "horse", + "slug": "horse", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ„": { + "name": "unicorn", + "slug": "unicorn", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฆ“": { + "name": "zebra", + "slug": "zebra", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸฆŒ": { + "name": "deer", + "slug": "deer", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆฌ": { + "name": "bison", + "slug": "bison", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฎ": { + "name": "cow face", + "slug": "cow_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‚": { + "name": "ox", + "slug": "ox", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿƒ": { + "name": "water buffalo", + "slug": "water_buffalo", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ„": { + "name": "cow", + "slug": "cow", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿท": { + "name": "pig face", + "slug": "pig_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ–": { + "name": "pig", + "slug": "pig", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ—": { + "name": "boar", + "slug": "boar", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฝ": { + "name": "pig nose", + "slug": "pig_nose", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "ram", + "slug": "ram", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ‘": { + "name": "ewe", + "slug": "ewe", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "goat", + "slug": "goat", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "camel", + "slug": "camel", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "two-hump camel", + "slug": "two_hump_camel", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ™": { + "name": "llama", + "slug": "llama", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆ’": { + "name": "giraffe", + "slug": "giraffe", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "elephant", + "slug": "elephant", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆฃ": { + "name": "mammoth", + "slug": "mammoth", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "rhinoceros", + "slug": "rhinoceros", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆ›": { + "name": "hippopotamus", + "slug": "hippopotamus", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿญ": { + "name": "mouse face", + "slug": "mouse_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "mouse", + "slug": "mouse", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ€": { + "name": "rat", + "slug": "rat", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿน": { + "name": "hamster", + "slug": "hamster", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฐ": { + "name": "rabbit face", + "slug": "rabbit_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡": { + "name": "rabbit", + "slug": "rabbit", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฟ๏ธ": { + "name": "chipmunk", + "slug": "chipmunk", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿฆซ": { + "name": "beaver", + "slug": "beaver", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆ”": { + "name": "hedgehog", + "slug": "hedgehog", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฆ‡": { + "name": "bat", + "slug": "bat", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿป": { + "name": "bear", + "slug": "bear", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿปโ€โ„๏ธ": { + "name": "polar bear", + "slug": "polar_bear", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿจ": { + "name": "koala", + "slug": "koala", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿผ": { + "name": "panda", + "slug": "panda", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆฅ": { + "name": "sloth", + "slug": "sloth", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆฆ": { + "name": "otter", + "slug": "otter", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆจ": { + "name": "skunk", + "slug": "skunk", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆ˜": { + "name": "kangaroo", + "slug": "kangaroo", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆก": { + "name": "badger", + "slug": "badger", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿพ": { + "name": "paw prints", + "slug": "paw_prints", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆƒ": { + "name": "turkey", + "slug": "turkey", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "chicken", + "slug": "chicken", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "rooster", + "slug": "rooster", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฃ": { + "name": "hatching chick", + "slug": "hatching_chick", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค": { + "name": "baby chick", + "slug": "baby_chick", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "front-facing baby chick", + "slug": "front_facing_baby_chick", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "bird", + "slug": "bird", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿง": { + "name": "penguin", + "slug": "penguin", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•Š๏ธ": { + "name": "dove", + "slug": "dove", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿฆ…": { + "name": "eagle", + "slug": "eagle", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆ†": { + "name": "duck", + "slug": "duck", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆข": { + "name": "swan", + "slug": "swan", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆ‰": { + "name": "owl", + "slug": "owl", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆค": { + "name": "dodo", + "slug": "dodo", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชถ": { + "name": "feather", + "slug": "feather", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆฉ": { + "name": "flamingo", + "slug": "flamingo", + "group": "Animals & Nature", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆš": { + "name": "peacock", + "slug": "peacock", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆœ": { + "name": "parrot", + "slug": "parrot", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชฝ": { + "name": "wing", + "slug": "wing", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿฆโ€โฌ›": { + "name": "black bird", + "slug": "black_bird", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿชฟ": { + "name": "goose", + "slug": "goose", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿธ": { + "name": "frog", + "slug": "frog", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŠ": { + "name": "crocodile", + "slug": "crocodile", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿข": { + "name": "turtle", + "slug": "turtle", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸฆŽ": { + "name": "lizard", + "slug": "lizard", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "snake", + "slug": "snake", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฒ": { + "name": "dragon face", + "slug": "dragon_face", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‰": { + "name": "dragon", + "slug": "dragon", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฆ•": { + "name": "sauropod", + "slug": "sauropod", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฆ–": { + "name": "T-Rex", + "slug": "t_rex", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿณ": { + "name": "spouting whale", + "slug": "spouting_whale", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‹": { + "name": "whale", + "slug": "whale", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฌ": { + "name": "dolphin", + "slug": "dolphin", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆญ": { + "name": "seal", + "slug": "seal", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐ŸŸ": { + "name": "fish", + "slug": "fish", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ ": { + "name": "tropical fish", + "slug": "tropical_fish", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿก": { + "name": "blowfish", + "slug": "blowfish", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆˆ": { + "name": "shark", + "slug": "shark", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ™": { + "name": "octopus", + "slug": "octopus", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "spiral shell", + "slug": "spiral_shell", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชธ": { + "name": "coral", + "slug": "coral", + "group": "Animals & Nature", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿชผ": { + "name": "jellyfish", + "slug": "jellyfish", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "snail", + "slug": "snail", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ‹": { + "name": "butterfly", + "slug": "butterfly", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ›": { + "name": "bug", + "slug": "bug", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿœ": { + "name": "ant", + "slug": "ant", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "honeybee", + "slug": "honeybee", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชฒ": { + "name": "beetle", + "slug": "beetle", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿž": { + "name": "lady beetle", + "slug": "lady_beetle", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ—": { + "name": "cricket", + "slug": "cricket", + "group": "Animals & Nature", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿชณ": { + "name": "cockroach", + "slug": "cockroach", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ•ท๏ธ": { + "name": "spider", + "slug": "spider", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•ธ๏ธ": { + "name": "spider web", + "slug": "spider_web", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿฆ‚": { + "name": "scorpion", + "slug": "scorpion", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸฆŸ": { + "name": "mosquito", + "slug": "mosquito", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชฐ": { + "name": "fly", + "slug": "fly", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชฑ": { + "name": "worm", + "slug": "worm", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฆ ": { + "name": "microbe", + "slug": "microbe", + "group": "Animals & Nature", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "bouquet", + "slug": "bouquet", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒธ": { + "name": "cherry blossom", + "slug": "cherry_blossom", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฎ": { + "name": "white flower", + "slug": "white_flower", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชท": { + "name": "lotus", + "slug": "lotus", + "group": "Animals & Nature", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿต๏ธ": { + "name": "rosette", + "slug": "rosette", + "group": "Animals & Nature", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒน": { + "name": "rose", + "slug": "rose", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ€": { + "name": "wilted flower", + "slug": "wilted_flower", + "group": "Animals & Nature", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐ŸŒบ": { + "name": "hibiscus", + "slug": "hibiscus", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒป": { + "name": "sunflower", + "slug": "sunflower", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒผ": { + "name": "blossom", + "slug": "blossom", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒท": { + "name": "tulip", + "slug": "tulip", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชป": { + "name": "hyacinth", + "slug": "hyacinth", + "group": "Animals & Nature", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐ŸŒฑ": { + "name": "seedling", + "slug": "seedling", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชด": { + "name": "potted plant", + "slug": "potted_plant", + "group": "Animals & Nature", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐ŸŒฒ": { + "name": "evergreen tree", + "slug": "evergreen_tree", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒณ": { + "name": "deciduous tree", + "slug": "deciduous_tree", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒด": { + "name": "palm tree", + "slug": "palm_tree", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒต": { + "name": "cactus", + "slug": "cactus", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒพ": { + "name": "sheaf of rice", + "slug": "sheaf_of_rice", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒฟ": { + "name": "herb", + "slug": "herb", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜˜๏ธ": { + "name": "shamrock", + "slug": "shamrock", + "group": "Animals & Nature", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ€": { + "name": "four leaf clover", + "slug": "four_leaf_clover", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "maple leaf", + "slug": "maple_leaf", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‚": { + "name": "fallen leaf", + "slug": "fallen_leaf", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿƒ": { + "name": "leaf fluttering in wind", + "slug": "leaf_fluttering_in_wind", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชน": { + "name": "empty nest", + "slug": "empty_nest", + "group": "Animals & Nature", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿชบ": { + "name": "nest with eggs", + "slug": "nest_with_eggs", + "group": "Animals & Nature", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ„": { + "name": "mushroom", + "slug": "mushroom", + "group": "Animals & Nature", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡": { + "name": "grapes", + "slug": "grapes", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆ": { + "name": "melon", + "slug": "melon", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‰": { + "name": "watermelon", + "slug": "watermelon", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŠ": { + "name": "tangerine", + "slug": "tangerine", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‹": { + "name": "lemon", + "slug": "lemon", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "banana", + "slug": "banana", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "pineapple", + "slug": "pineapple", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅญ": { + "name": "mango", + "slug": "mango", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "red apple", + "slug": "red_apple", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "green apple", + "slug": "green_apple", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "pear", + "slug": "pear", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ‘": { + "name": "peach", + "slug": "peach", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "cherries", + "slug": "cherries", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "strawberry", + "slug": "strawberry", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "blueberries", + "slug": "blueberries", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "kiwi fruit", + "slug": "kiwi_fruit", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ…": { + "name": "tomato", + "slug": "tomato", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ’": { + "name": "olive", + "slug": "olive", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅฅ": { + "name": "coconut", + "slug": "coconut", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅ‘": { + "name": "avocado", + "slug": "avocado", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ†": { + "name": "eggplant", + "slug": "eggplant", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ”": { + "name": "potato", + "slug": "potato", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅ•": { + "name": "carrot", + "slug": "carrot", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐ŸŒฝ": { + "name": "ear of corn", + "slug": "ear_of_corn", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒถ๏ธ": { + "name": "hot pepper", + "slug": "hot_pepper", + "group": "Food & Drink", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿซ‘": { + "name": "bell pepper", + "slug": "bell_pepper", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅ’": { + "name": "cucumber", + "slug": "cucumber", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅฌ": { + "name": "leafy green", + "slug": "leafy_green", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅฆ": { + "name": "broccoli", + "slug": "broccoli", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿง„": { + "name": "garlic", + "slug": "garlic", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿง…": { + "name": "onion", + "slug": "onion", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฅœ": { + "name": "peanuts", + "slug": "peanuts", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿซ˜": { + "name": "beans", + "slug": "beans", + "group": "Food & Drink", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐ŸŒฐ": { + "name": "chestnut", + "slug": "chestnut", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซš": { + "name": "ginger root", + "slug": "ginger_root", + "group": "Food & Drink", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿซ›": { + "name": "pea pod", + "slug": "pea_pod", + "group": "Food & Drink", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿž": { + "name": "bread", + "slug": "bread", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "croissant", + "slug": "croissant", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅ–": { + "name": "baguette bread", + "slug": "baguette_bread", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿซ“": { + "name": "flatbread", + "slug": "flatbread", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅจ": { + "name": "pretzel", + "slug": "pretzel", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅฏ": { + "name": "bagel", + "slug": "bagel", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅž": { + "name": "pancakes", + "slug": "pancakes", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿง‡": { + "name": "waffle", + "slug": "waffle", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿง€": { + "name": "cheese wedge", + "slug": "cheese_wedge", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ–": { + "name": "meat on bone", + "slug": "meat_on_bone", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—": { + "name": "poultry leg", + "slug": "poultry_leg", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅฉ": { + "name": "cut of meat", + "slug": "cut_of_meat", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅ“": { + "name": "bacon", + "slug": "bacon", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "hamburger", + "slug": "hamburger", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŸ": { + "name": "french fries", + "slug": "french_fries", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•": { + "name": "pizza", + "slug": "pizza", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒญ": { + "name": "hot dog", + "slug": "hot_dog", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅช": { + "name": "sandwich", + "slug": "sandwich", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸŒฎ": { + "name": "taco", + "slug": "taco", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒฏ": { + "name": "burrito", + "slug": "burrito", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿซ”": { + "name": "tamale", + "slug": "tamale", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅ™": { + "name": "stuffed flatbread", + "slug": "stuffed_flatbread", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿง†": { + "name": "falafel", + "slug": "falafel", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฅš": { + "name": "egg", + "slug": "egg", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿณ": { + "name": "cooking", + "slug": "cooking", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ˜": { + "name": "shallow pan of food", + "slug": "shallow_pan_of_food", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฒ": { + "name": "pot of food", + "slug": "pot_of_food", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ•": { + "name": "fondue", + "slug": "fondue", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿฅฃ": { + "name": "bowl with spoon", + "slug": "bowl_with_spoon", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅ—": { + "name": "green salad", + "slug": "green_salad", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฟ": { + "name": "popcorn", + "slug": "popcorn", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿงˆ": { + "name": "butter", + "slug": "butter", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿง‚": { + "name": "salt", + "slug": "salt", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅซ": { + "name": "canned food", + "slug": "canned_food", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฑ": { + "name": "bento box", + "slug": "bento_box", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ˜": { + "name": "rice cracker", + "slug": "rice_cracker", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™": { + "name": "rice ball", + "slug": "rice_ball", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "cooked rice", + "slug": "cooked_rice", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›": { + "name": "curry rice", + "slug": "curry_rice", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿœ": { + "name": "steaming bowl", + "slug": "steaming_bowl", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "spaghetti", + "slug": "spaghetti", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ ": { + "name": "roasted sweet potato", + "slug": "roasted_sweet_potato", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿข": { + "name": "oden", + "slug": "oden", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฃ": { + "name": "sushi", + "slug": "sushi", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค": { + "name": "fried shrimp", + "slug": "fried_shrimp", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "fish cake with swirl", + "slug": "fish_cake_with_swirl", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅฎ": { + "name": "moon cake", + "slug": "moon_cake", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿก": { + "name": "dango", + "slug": "dango", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸฅŸ": { + "name": "dumpling", + "slug": "dumpling", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅ ": { + "name": "fortune cookie", + "slug": "fortune_cookie", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฅก": { + "name": "takeout box", + "slug": "takeout_box", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฆ€": { + "name": "crab", + "slug": "crab", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฆž": { + "name": "lobster", + "slug": "lobster", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "shrimp", + "slug": "shrimp", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆ‘": { + "name": "squid", + "slug": "squid", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆช": { + "name": "oyster", + "slug": "oyster", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "soft ice cream", + "slug": "soft_ice_cream", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿง": { + "name": "shaved ice", + "slug": "shaved_ice", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿจ": { + "name": "ice cream", + "slug": "ice_cream", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉ": { + "name": "doughnut", + "slug": "doughnut", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "cookie", + "slug": "cookie", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ‚": { + "name": "birthday cake", + "slug": "birthday_cake", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฐ": { + "name": "shortcake", + "slug": "shortcake", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿง": { + "name": "cupcake", + "slug": "cupcake", + "group": "Food & Drink", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅง": { + "name": "pie", + "slug": "pie", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "chocolate bar", + "slug": "chocolate_bar", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฌ": { + "name": "candy", + "slug": "candy", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿญ": { + "name": "lollipop", + "slug": "lollipop", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฎ": { + "name": "custard", + "slug": "custard", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฏ": { + "name": "honey pot", + "slug": "honey_pot", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿผ": { + "name": "baby bottle", + "slug": "baby_bottle", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅ›": { + "name": "glass of milk", + "slug": "glass_of_milk", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "โ˜•": { + "name": "hot beverage", + "slug": "hot_beverage", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ–": { + "name": "teapot", + "slug": "teapot", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿต": { + "name": "teacup without handle", + "slug": "teacup_without_handle", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿถ": { + "name": "sake", + "slug": "sake", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿพ": { + "name": "bottle with popping cork", + "slug": "bottle_with_popping_cork", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿท": { + "name": "wine glass", + "slug": "wine_glass", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿธ": { + "name": "cocktail glass", + "slug": "cocktail_glass", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿน": { + "name": "tropical drink", + "slug": "tropical_drink", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿบ": { + "name": "beer mug", + "slug": "beer_mug", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿป": { + "name": "clinking beer mugs", + "slug": "clinking_beer_mugs", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ‚": { + "name": "clinking glasses", + "slug": "clinking_glasses", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅƒ": { + "name": "tumbler glass", + "slug": "tumbler_glass", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿซ—": { + "name": "pouring liquid", + "slug": "pouring_liquid", + "group": "Food & Drink", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿฅค": { + "name": "cup with straw", + "slug": "cup_with_straw", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿง‹": { + "name": "bubble tea", + "slug": "bubble_tea", + "group": "Food & Drink", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿงƒ": { + "name": "beverage box", + "slug": "beverage_box", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿง‰": { + "name": "mate", + "slug": "mate", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸงŠ": { + "name": "ice", + "slug": "ice", + "group": "Food & Drink", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฅข": { + "name": "chopsticks", + "slug": "chopsticks", + "group": "Food & Drink", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿฝ๏ธ": { + "name": "fork and knife with plate", + "slug": "fork_and_knife_with_plate", + "group": "Food & Drink", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿด": { + "name": "fork and knife", + "slug": "fork_and_knife", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ„": { + "name": "spoon", + "slug": "spoon", + "group": "Food & Drink", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ”ช": { + "name": "kitchen knife", + "slug": "kitchen_knife", + "group": "Food & Drink", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ™": { + "name": "jar", + "slug": "jar", + "group": "Food & Drink", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿบ": { + "name": "amphora", + "slug": "amphora", + "group": "Food & Drink", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "globe showing Europe-Africa", + "slug": "globe_showing_europe_africa", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒŽ": { + "name": "globe showing Americas", + "slug": "globe_showing_americas", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "globe showing Asia-Australia", + "slug": "globe_showing_asia_australia", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "globe with meridians", + "slug": "globe_with_meridians", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ—บ๏ธ": { + "name": "world map", + "slug": "world_map", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—พ": { + "name": "map of Japan", + "slug": "map_of_japan", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงญ": { + "name": "compass", + "slug": "compass", + "group": "Travel & Places", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ”๏ธ": { + "name": "snow-capped mountain", + "slug": "snow_capped_mountain", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ›ฐ๏ธ": { + "name": "mountain", + "slug": "mountain", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒ‹": { + "name": "volcano", + "slug": "volcano", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ป": { + "name": "mount fuji", + "slug": "mount_fuji", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•๏ธ": { + "name": "camping", + "slug": "camping", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–๏ธ": { + "name": "beach with umbrella", + "slug": "beach_with_umbrella", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿœ๏ธ": { + "name": "desert", + "slug": "desert", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ๏ธ": { + "name": "desert island", + "slug": "desert_island", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿž๏ธ": { + "name": "national park", + "slug": "national_park", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŸ๏ธ": { + "name": "stadium", + "slug": "stadium", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›๏ธ": { + "name": "classical building", + "slug": "classical_building", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—๏ธ": { + "name": "building construction", + "slug": "building_construction", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿงฑ": { + "name": "brick", + "slug": "brick", + "group": "Travel & Places", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชจ": { + "name": "rock", + "slug": "rock", + "group": "Travel & Places", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชต": { + "name": "wood", + "slug": "wood", + "group": "Travel & Places", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ›–": { + "name": "hut", + "slug": "hut", + "group": "Travel & Places", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ˜๏ธ": { + "name": "houses", + "slug": "houses", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿš๏ธ": { + "name": "derelict house", + "slug": "derelict_house", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ ": { + "name": "house", + "slug": "house", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿก": { + "name": "house with garden", + "slug": "house_with_garden", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿข": { + "name": "office building", + "slug": "office_building", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฃ": { + "name": "Japanese post office", + "slug": "japanese_post_office", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿค": { + "name": "post office", + "slug": "post_office", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "hospital", + "slug": "hospital", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฆ": { + "name": "bank", + "slug": "bank", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿจ": { + "name": "hotel", + "slug": "hotel", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉ": { + "name": "love hotel", + "slug": "love_hotel", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "convenience store", + "slug": "convenience_store", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿซ": { + "name": "school", + "slug": "school", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฌ": { + "name": "department store", + "slug": "department_store", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿญ": { + "name": "factory", + "slug": "factory", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฏ": { + "name": "Japanese castle", + "slug": "japanese_castle", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฐ": { + "name": "castle", + "slug": "castle", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’’": { + "name": "wedding", + "slug": "wedding", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ผ": { + "name": "Tokyo tower", + "slug": "tokyo_tower", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ฝ": { + "name": "Statue of Liberty", + "slug": "statue_of_liberty", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›ช": { + "name": "church", + "slug": "church", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•Œ": { + "name": "mosque", + "slug": "mosque", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›•": { + "name": "hindu temple", + "slug": "hindu_temple", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ•": { + "name": "synagogue", + "slug": "synagogue", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ›ฉ๏ธ": { + "name": "shinto shrine", + "slug": "shinto_shrine", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•‹": { + "name": "kaaba", + "slug": "kaaba", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ›ฒ": { + "name": "fountain", + "slug": "fountain", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›บ": { + "name": "tent", + "slug": "tent", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "foggy", + "slug": "foggy", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒƒ": { + "name": "night with stars", + "slug": "night_with_stars", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ™๏ธ": { + "name": "cityscape", + "slug": "cityscape", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒ„": { + "name": "sunrise over mountains", + "slug": "sunrise_over_mountains", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ…": { + "name": "sunrise", + "slug": "sunrise", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ†": { + "name": "cityscape at dusk", + "slug": "cityscape_at_dusk", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ‡": { + "name": "sunset", + "slug": "sunset", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ‰": { + "name": "bridge at night", + "slug": "bridge_at_night", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™จ๏ธ": { + "name": "hot springs", + "slug": "hot_springs", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ ": { + "name": "carousel horse", + "slug": "carousel_horse", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›": { + "name": "playground slide", + "slug": "playground_slide", + "group": "Travel & Places", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐ŸŽก": { + "name": "ferris wheel", + "slug": "ferris_wheel", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽข": { + "name": "roller coaster", + "slug": "roller_coaster", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ˆ": { + "name": "barber pole", + "slug": "barber_pole", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽช": { + "name": "circus tent", + "slug": "circus_tent", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš‚": { + "name": "locomotive", + "slug": "locomotive", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšƒ": { + "name": "railway car", + "slug": "railway_car", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš„": { + "name": "high-speed train", + "slug": "high_speed_train", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš…": { + "name": "bullet train", + "slug": "bullet_train", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš†": { + "name": "train", + "slug": "train", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš‡": { + "name": "metro", + "slug": "metro", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšˆ": { + "name": "light rail", + "slug": "light_rail", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš‰": { + "name": "station", + "slug": "station", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸšŠ": { + "name": "tram", + "slug": "tram", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "monorail", + "slug": "monorail", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšž": { + "name": "mountain railway", + "slug": "mountain_railway", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš‹": { + "name": "tram car", + "slug": "tram_car", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸšŒ": { + "name": "bus", + "slug": "bus", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "oncoming bus", + "slug": "oncoming_bus", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸšŽ": { + "name": "trolleybus", + "slug": "trolleybus", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "minibus", + "slug": "minibus", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš‘": { + "name": "ambulance", + "slug": "ambulance", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš’": { + "name": "fire engine", + "slug": "fire_engine", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš“": { + "name": "police car", + "slug": "police_car", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš”": { + "name": "oncoming police car", + "slug": "oncoming_police_car", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿš•": { + "name": "taxi", + "slug": "taxi", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš–": { + "name": "oncoming taxi", + "slug": "oncoming_taxi", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš—": { + "name": "automobile", + "slug": "automobile", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš˜": { + "name": "oncoming automobile", + "slug": "oncoming_automobile", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿš™": { + "name": "sport utility vehicle", + "slug": "sport_utility_vehicle", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ป": { + "name": "pickup truck", + "slug": "pickup_truck", + "group": "Travel & Places", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿšš": { + "name": "delivery truck", + "slug": "delivery_truck", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš›": { + "name": "articulated lorry", + "slug": "articulated_lorry", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšœ": { + "name": "tractor", + "slug": "tractor", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŽ๏ธ": { + "name": "racing car", + "slug": "racing_car", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ๏ธ": { + "name": "motorcycle", + "slug": "motorcycle", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›ต": { + "name": "motor scooter", + "slug": "motor_scooter", + "group": "Travel & Places", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฆฝ": { + "name": "manual wheelchair", + "slug": "manual_wheelchair", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฆผ": { + "name": "motorized wheelchair", + "slug": "motorized_wheelchair", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ›บ": { + "name": "auto rickshaw", + "slug": "auto_rickshaw", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿšฒ": { + "name": "bicycle", + "slug": "bicycle", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ด": { + "name": "kick scooter", + "slug": "kick_scooter", + "group": "Travel & Places", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿ›น": { + "name": "skateboard", + "slug": "skateboard", + "group": "Travel & Places", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ›ผ": { + "name": "roller skate", + "slug": "roller_skate", + "group": "Travel & Places", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "bus stop", + "slug": "bus_stop", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ฃ๏ธ": { + "name": "motorway", + "slug": "motorway", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›ค๏ธ": { + "name": "railway track", + "slug": "railway_track", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›ข๏ธ": { + "name": "oil drum", + "slug": "oil_drum", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ›ฝ": { + "name": "fuel pump", + "slug": "fuel_pump", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ž": { + "name": "wheel", + "slug": "wheel", + "group": "Travel & Places", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿšจ": { + "name": "police car light", + "slug": "police_car_light", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšฅ": { + "name": "horizontal traffic light", + "slug": "horizontal_traffic_light", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšฆ": { + "name": "vertical traffic light", + "slug": "vertical_traffic_light", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›‘": { + "name": "stop sign", + "slug": "stop_sign", + "group": "Travel & Places", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿšง": { + "name": "construction", + "slug": "construction", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โš“": { + "name": "anchor", + "slug": "anchor", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›Ÿ": { + "name": "ring buoy", + "slug": "ring_buoy", + "group": "Travel & Places", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "โ›ต": { + "name": "sailboat", + "slug": "sailboat", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ถ": { + "name": "canoe", + "slug": "canoe", + "group": "Travel & Places", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿšค": { + "name": "speedboat", + "slug": "speedboat", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ณ๏ธ": { + "name": "passenger ship", + "slug": "passenger_ship", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ›ด๏ธ": { + "name": "ferry", + "slug": "ferry", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›ฅ๏ธ": { + "name": "motor boat", + "slug": "motor_boat", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿšข": { + "name": "ship", + "slug": "ship", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœˆ๏ธ": { + "name": "airplane", + "slug": "airplane", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ฉ๏ธ": { + "name": "small airplane", + "slug": "small_airplane", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›ซ": { + "name": "airplane departure", + "slug": "airplane_departure", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›ฌ": { + "name": "airplane arrival", + "slug": "airplane_arrival", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿช‚": { + "name": "parachute", + "slug": "parachute", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ’บ": { + "name": "seat", + "slug": "seat", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿš": { + "name": "helicopter", + "slug": "helicopter", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸšŸ": { + "name": "suspension railway", + "slug": "suspension_railway", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿš ": { + "name": "mountain cableway", + "slug": "mountain_cableway", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšก": { + "name": "aerial tramway", + "slug": "aerial_tramway", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›ฐ๏ธ": { + "name": "satellite", + "slug": "satellite", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿš€": { + "name": "rocket", + "slug": "rocket", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ธ": { + "name": "flying saucer", + "slug": "flying_saucer", + "group": "Travel & Places", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ›Ž๏ธ": { + "name": "bellhop bell", + "slug": "bellhop_bell", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿงณ": { + "name": "luggage", + "slug": "luggage", + "group": "Travel & Places", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "โŒ›": { + "name": "hourglass done", + "slug": "hourglass_done", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โณ": { + "name": "hourglass not done", + "slug": "hourglass_not_done", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โŒš": { + "name": "watch", + "slug": "watch", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฐ": { + "name": "alarm clock", + "slug": "alarm_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฑ๏ธ": { + "name": "stopwatch", + "slug": "stopwatch", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โฒ๏ธ": { + "name": "timer clock", + "slug": "timer_clock", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ•ฐ๏ธ": { + "name": "mantelpiece clock", + "slug": "mantelpiece_clock", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•›": { + "name": "twelve oโ€™clock", + "slug": "twelve_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ง": { + "name": "twelve-thirty", + "slug": "twelve_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•": { + "name": "one oโ€™clock", + "slug": "one_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•œ": { + "name": "one-thirty", + "slug": "one_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•‘": { + "name": "two oโ€™clock", + "slug": "two_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•": { + "name": "two-thirty", + "slug": "two_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•’": { + "name": "three oโ€™clock", + "slug": "three_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ž": { + "name": "three-thirty", + "slug": "three_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•“": { + "name": "four oโ€™clock", + "slug": "four_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•Ÿ": { + "name": "four-thirty", + "slug": "four_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•”": { + "name": "five oโ€™clock", + "slug": "five_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ• ": { + "name": "five-thirty", + "slug": "five_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ••": { + "name": "six oโ€™clock", + "slug": "six_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ก": { + "name": "six-thirty", + "slug": "six_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•–": { + "name": "seven oโ€™clock", + "slug": "seven_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ข": { + "name": "seven-thirty", + "slug": "seven_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•—": { + "name": "eight oโ€™clock", + "slug": "eight_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ฃ": { + "name": "eight-thirty", + "slug": "eight_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•˜": { + "name": "nine oโ€™clock", + "slug": "nine_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ค": { + "name": "nine-thirty", + "slug": "nine_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•™": { + "name": "ten oโ€™clock", + "slug": "ten_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ฅ": { + "name": "ten-thirty", + "slug": "ten_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ•š": { + "name": "eleven oโ€™clock", + "slug": "eleven_o_clock", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ฆ": { + "name": "eleven-thirty", + "slug": "eleven_thirty", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒ‘": { + "name": "new moon", + "slug": "new_moon", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ’": { + "name": "waxing crescent moon", + "slug": "waxing_crescent_moon", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ“": { + "name": "first quarter moon", + "slug": "first_quarter_moon", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ”": { + "name": "waxing gibbous moon", + "slug": "waxing_gibbous_moon", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ•": { + "name": "full moon", + "slug": "full_moon", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ–": { + "name": "waning gibbous moon", + "slug": "waning_gibbous_moon", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ—": { + "name": "last quarter moon", + "slug": "last_quarter_moon", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ˜": { + "name": "waning crescent moon", + "slug": "waning_crescent_moon", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ™": { + "name": "crescent moon", + "slug": "crescent_moon", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒš": { + "name": "new moon face", + "slug": "new_moon_face", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒ›": { + "name": "first quarter moon face", + "slug": "first_quarter_moon_face", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒœ": { + "name": "last quarter moon face", + "slug": "last_quarter_moon_face", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒก๏ธ": { + "name": "thermometer", + "slug": "thermometer", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜€๏ธ": { + "name": "sun", + "slug": "sun", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ": { + "name": "full moon face", + "slug": "full_moon_face", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŒž": { + "name": "sun with face", + "slug": "sun_with_face", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "ringed planet", + "slug": "ringed_planet", + "group": "Travel & Places", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "โญ": { + "name": "star", + "slug": "star", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒŸ": { + "name": "glowing star", + "slug": "glowing_star", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ ": { + "name": "shooting star", + "slug": "shooting_star", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒŒ": { + "name": "milky way", + "slug": "milky_way", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜๏ธ": { + "name": "cloud", + "slug": "cloud", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›…": { + "name": "sun behind cloud", + "slug": "sun_behind_cloud", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›ˆ๏ธ": { + "name": "cloud with lightning and rain", + "slug": "cloud_with_lightning_and_rain", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒค๏ธ": { + "name": "sun behind small cloud", + "slug": "sun_behind_small_cloud", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒฅ๏ธ": { + "name": "sun behind large cloud", + "slug": "sun_behind_large_cloud", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒฆ๏ธ": { + "name": "sun behind rain cloud", + "slug": "sun_behind_rain_cloud", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒง๏ธ": { + "name": "cloud with rain", + "slug": "cloud_with_rain", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒจ๏ธ": { + "name": "cloud with snow", + "slug": "cloud_with_snow", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒฉ๏ธ": { + "name": "cloud with lightning", + "slug": "cloud_with_lightning", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒช๏ธ": { + "name": "tornado", + "slug": "tornado", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒซ๏ธ": { + "name": "fog", + "slug": "fog", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒฌ๏ธ": { + "name": "wind face", + "slug": "wind_face", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŒ€": { + "name": "cyclone", + "slug": "cyclone", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒˆ": { + "name": "rainbow", + "slug": "rainbow", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒ‚": { + "name": "closed umbrella", + "slug": "closed_umbrella", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜‚๏ธ": { + "name": "umbrella", + "slug": "umbrella", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜”": { + "name": "umbrella with rain drops", + "slug": "umbrella_with_rain_drops", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›ฑ๏ธ": { + "name": "umbrella on ground", + "slug": "umbrella_on_ground", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โšก": { + "name": "high voltage", + "slug": "high_voltage", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ„๏ธ": { + "name": "snowflake", + "slug": "snowflake", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜ƒ๏ธ": { + "name": "snowman", + "slug": "snowman", + "group": "Travel & Places", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ›„": { + "name": "snowman without snow", + "slug": "snowman_without_snow", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜„๏ธ": { + "name": "comet", + "slug": "comet", + "group": "Travel & Places", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ฅ": { + "name": "fire", + "slug": "fire", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ง": { + "name": "droplet", + "slug": "droplet", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŒŠ": { + "name": "water wave", + "slug": "water_wave", + "group": "Travel & Places", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽƒ": { + "name": "jack-o-lantern", + "slug": "jack_o_lantern", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ„": { + "name": "Christmas tree", + "slug": "christmas_tree", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ†": { + "name": "fireworks", + "slug": "fireworks", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ‡": { + "name": "sparkler", + "slug": "sparkler", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงจ": { + "name": "firecracker", + "slug": "firecracker", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "โœจ": { + "name": "sparkles", + "slug": "sparkles", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽˆ": { + "name": "balloon", + "slug": "balloon", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ‰": { + "name": "party popper", + "slug": "party_popper", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽŠ": { + "name": "confetti ball", + "slug": "confetti_ball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ‹": { + "name": "tanabata tree", + "slug": "tanabata_tree", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "pine decoration", + "slug": "pine_decoration", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽŽ": { + "name": "Japanese dolls", + "slug": "japanese_dolls", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "carp streamer", + "slug": "carp_streamer", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "wind chime", + "slug": "wind_chime", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ‘": { + "name": "moon viewing ceremony", + "slug": "moon_viewing_ceremony", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงง": { + "name": "red envelope", + "slug": "red_envelope", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐ŸŽ€": { + "name": "ribbon", + "slug": "ribbon", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ": { + "name": "wrapped gift", + "slug": "wrapped_gift", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ—๏ธ": { + "name": "reminder ribbon", + "slug": "reminder_ribbon", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽŸ๏ธ": { + "name": "admission tickets", + "slug": "admission_tickets", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽซ": { + "name": "ticket", + "slug": "ticket", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ–๏ธ": { + "name": "military medal", + "slug": "military_medal", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ†": { + "name": "trophy", + "slug": "trophy", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…": { + "name": "sports medal", + "slug": "sports_medal", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅ‡": { + "name": "1st place medal", + "slug": "1st_place_medal", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅˆ": { + "name": "2nd place medal", + "slug": "2nd_place_medal", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅ‰": { + "name": "3rd place medal", + "slug": "3rd_place_medal", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "โšฝ": { + "name": "soccer ball", + "slug": "soccer_ball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โšพ": { + "name": "baseball", + "slug": "baseball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸฅŽ": { + "name": "softball", + "slug": "softball", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ€": { + "name": "basketball", + "slug": "basketball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "volleyball", + "slug": "volleyball", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿˆ": { + "name": "american football", + "slug": "american_football", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‰": { + "name": "rugby football", + "slug": "rugby_football", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŽพ": { + "name": "tennis", + "slug": "tennis", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "flying disc", + "slug": "flying_disc", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐ŸŽณ": { + "name": "bowling", + "slug": "bowling", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "cricket game", + "slug": "cricket_game", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ‘": { + "name": "field hockey", + "slug": "field_hockey", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "ice hockey", + "slug": "ice_hockey", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "lacrosse", + "slug": "lacrosse", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "ping pong", + "slug": "ping_pong", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿธ": { + "name": "badminton", + "slug": "badminton", + "group": "Activities", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸฅŠ": { + "name": "boxing glove", + "slug": "boxing_glove", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅ‹": { + "name": "martial arts uniform", + "slug": "martial_arts_uniform", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿฅ…": { + "name": "goal net", + "slug": "goal_net", + "group": "Activities", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "โ›ณ": { + "name": "flag in hole", + "slug": "flag_in_hole", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›ธ๏ธ": { + "name": "ice skate", + "slug": "ice_skate", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽฃ": { + "name": "fishing pole", + "slug": "fishing_pole", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿคฟ": { + "name": "diving mask", + "slug": "diving_mask", + "group": "Activities", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŽฝ": { + "name": "running shirt", + "slug": "running_shirt", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽฟ": { + "name": "skis", + "slug": "skis", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›ท": { + "name": "sled", + "slug": "sled", + "group": "Activities", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸฅŒ": { + "name": "curling stone", + "slug": "curling_stone", + "group": "Activities", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐ŸŽฏ": { + "name": "bullseye", + "slug": "bullseye", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช€": { + "name": "yo-yo", + "slug": "yo_yo", + "group": "Activities", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "kite", + "slug": "kite", + "group": "Activities", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ”ซ": { + "name": "water pistol", + "slug": "water_pistol", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽฑ": { + "name": "pool 8 ball", + "slug": "pool_8_ball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฎ": { + "name": "crystal ball", + "slug": "crystal_ball", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช„": { + "name": "magic wand", + "slug": "magic_wand", + "group": "Activities", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐ŸŽฎ": { + "name": "video game", + "slug": "video_game", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•น๏ธ": { + "name": "joystick", + "slug": "joystick", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽฐ": { + "name": "slot machine", + "slug": "slot_machine", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽฒ": { + "name": "game die", + "slug": "game_die", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงฉ": { + "name": "puzzle piece", + "slug": "puzzle_piece", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงธ": { + "name": "teddy bear", + "slug": "teddy_bear", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿช…": { + "name": "piรฑata", + "slug": "pinata", + "group": "Activities", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชฉ": { + "name": "mirror ball", + "slug": "mirror_ball", + "group": "Activities", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿช†": { + "name": "nesting dolls", + "slug": "nesting_dolls", + "group": "Activities", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "โ™ ๏ธ": { + "name": "spade suit", + "slug": "spade_suit", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™ฅ๏ธ": { + "name": "heart suit", + "slug": "heart_suit", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™ฆ๏ธ": { + "name": "diamond suit", + "slug": "diamond_suit", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™ฃ๏ธ": { + "name": "club suit", + "slug": "club_suit", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™Ÿ๏ธ": { + "name": "chess pawn", + "slug": "chess_pawn", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿƒ": { + "name": "joker", + "slug": "joker", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ€„": { + "name": "mahjong red dragon", + "slug": "mahjong_red_dragon", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽด": { + "name": "flower playing cards", + "slug": "flower_playing_cards", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽญ": { + "name": "performing arts", + "slug": "performing_arts", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ–ผ๏ธ": { + "name": "framed picture", + "slug": "framed_picture", + "group": "Activities", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽจ": { + "name": "artist palette", + "slug": "artist_palette", + "group": "Activities", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงต": { + "name": "thread", + "slug": "thread", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชก": { + "name": "sewing needle", + "slug": "sewing_needle", + "group": "Activities", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿงถ": { + "name": "yarn", + "slug": "yarn", + "group": "Activities", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชข": { + "name": "knot", + "slug": "knot", + "group": "Activities", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ‘“": { + "name": "glasses", + "slug": "glasses", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ถ๏ธ": { + "name": "sunglasses", + "slug": "sunglasses", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿฅฝ": { + "name": "goggles", + "slug": "goggles", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅผ": { + "name": "lab coat", + "slug": "lab_coat", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฆบ": { + "name": "safety vest", + "slug": "safety_vest", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ‘”": { + "name": "necktie", + "slug": "necktie", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘•": { + "name": "t-shirt", + "slug": "t_shirt", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘–": { + "name": "jeans", + "slug": "jeans", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงฃ": { + "name": "scarf", + "slug": "scarf", + "group": "Objects", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿงค": { + "name": "gloves", + "slug": "gloves", + "group": "Objects", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿงฅ": { + "name": "coat", + "slug": "coat", + "group": "Objects", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿงฆ": { + "name": "socks", + "slug": "socks", + "group": "Objects", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿ‘—": { + "name": "dress", + "slug": "dress", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘˜": { + "name": "kimono", + "slug": "kimono", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅป": { + "name": "sari", + "slug": "sari", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉฑ": { + "name": "one-piece swimsuit", + "slug": "one_piece_swimsuit", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉฒ": { + "name": "briefs", + "slug": "briefs", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉณ": { + "name": "shorts", + "slug": "shorts", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ‘™": { + "name": "bikini", + "slug": "bikini", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘š": { + "name": "womanโ€™s clothes", + "slug": "woman_s_clothes", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชญ": { + "name": "folding hand fan", + "slug": "folding_hand_fan", + "group": "Objects", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ‘›": { + "name": "purse", + "slug": "purse", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘œ": { + "name": "handbag", + "slug": "handbag", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘": { + "name": "clutch bag", + "slug": "clutch_bag", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›๏ธ": { + "name": "shopping bags", + "slug": "shopping_bags", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽ’": { + "name": "backpack", + "slug": "backpack", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉด": { + "name": "thong sandal", + "slug": "thong_sandal", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ‘ž": { + "name": "manโ€™s shoe", + "slug": "man_s_shoe", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘Ÿ": { + "name": "running shoe", + "slug": "running_shoe", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฅพ": { + "name": "hiking boot", + "slug": "hiking_boot", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿฅฟ": { + "name": "flat shoe", + "slug": "flat_shoe", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ‘ ": { + "name": "high-heeled shoe", + "slug": "high_heeled_shoe", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘ก": { + "name": "womanโ€™s sandal", + "slug": "woman_s_sandal", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉฐ": { + "name": "ballet shoes", + "slug": "ballet_shoes", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ‘ข": { + "name": "womanโ€™s boot", + "slug": "woman_s_boot", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชฎ": { + "name": "hair pick", + "slug": "hair_pick", + "group": "Objects", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ‘‘": { + "name": "crown", + "slug": "crown", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‘’": { + "name": "womanโ€™s hat", + "slug": "woman_s_hat", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽฉ": { + "name": "top hat", + "slug": "top_hat", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ“": { + "name": "graduation cap", + "slug": "graduation_cap", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงข": { + "name": "billed cap", + "slug": "billed_cap", + "group": "Objects", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿช–": { + "name": "military helmet", + "slug": "military_helmet", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "โ›‘๏ธ": { + "name": "rescue workerโ€™s helmet", + "slug": "rescue_worker_s_helmet", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“ฟ": { + "name": "prayer beads", + "slug": "prayer_beads", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’„": { + "name": "lipstick", + "slug": "lipstick", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’": { + "name": "ring", + "slug": "ring", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’Ž": { + "name": "gem stone", + "slug": "gem_stone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”‡": { + "name": "muted speaker", + "slug": "muted_speaker", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ˆ": { + "name": "speaker low volume", + "slug": "speaker_low_volume", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ”‰": { + "name": "speaker medium volume", + "slug": "speaker_medium_volume", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”Š": { + "name": "speaker high volume", + "slug": "speaker_high_volume", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ข": { + "name": "loudspeaker", + "slug": "loudspeaker", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฃ": { + "name": "megaphone", + "slug": "megaphone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฏ": { + "name": "postal horn", + "slug": "postal_horn", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ””": { + "name": "bell", + "slug": "bell", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”•": { + "name": "bell with slash", + "slug": "bell_with_slash", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŽผ": { + "name": "musical score", + "slug": "musical_score", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽต": { + "name": "musical note", + "slug": "musical_note", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽถ": { + "name": "musical notes", + "slug": "musical_notes", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽ™๏ธ": { + "name": "studio microphone", + "slug": "studio_microphone", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽš๏ธ": { + "name": "level slider", + "slug": "level_slider", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽ›๏ธ": { + "name": "control knobs", + "slug": "control_knobs", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽค": { + "name": "microphone", + "slug": "microphone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽง": { + "name": "headphone", + "slug": "headphone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ป": { + "name": "radio", + "slug": "radio", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽท": { + "name": "saxophone", + "slug": "saxophone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช—": { + "name": "accordion", + "slug": "accordion", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐ŸŽธ": { + "name": "guitar", + "slug": "guitar", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽน": { + "name": "musical keyboard", + "slug": "musical_keyboard", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽบ": { + "name": "trumpet", + "slug": "trumpet", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽป": { + "name": "violin", + "slug": "violin", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช•": { + "name": "banjo", + "slug": "banjo", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฅ": { + "name": "drum", + "slug": "drum", + "group": "Objects", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿช˜": { + "name": "long drum", + "slug": "long_drum", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿช‡": { + "name": "maracas", + "slug": "maracas", + "group": "Objects", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿชˆ": { + "name": "flute", + "slug": "flute", + "group": "Objects", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ“ฑ": { + "name": "mobile phone", + "slug": "mobile_phone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฒ": { + "name": "mobile phone with arrow", + "slug": "mobile_phone_with_arrow", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜Ž๏ธ": { + "name": "telephone", + "slug": "telephone", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ž": { + "name": "telephone receiver", + "slug": "telephone_receiver", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“Ÿ": { + "name": "pager", + "slug": "pager", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ ": { + "name": "fax machine", + "slug": "fax_machine", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”‹": { + "name": "battery", + "slug": "battery", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชซ": { + "name": "low battery", + "slug": "low_battery", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ”Œ": { + "name": "electric plug", + "slug": "electric_plug", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ป": { + "name": "laptop", + "slug": "laptop", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ–ฅ๏ธ": { + "name": "desktop computer", + "slug": "desktop_computer", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–จ๏ธ": { + "name": "printer", + "slug": "printer", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โŒจ๏ธ": { + "name": "keyboard", + "slug": "keyboard", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ–ฑ๏ธ": { + "name": "computer mouse", + "slug": "computer_mouse", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–ฒ๏ธ": { + "name": "trackball", + "slug": "trackball", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ’ฝ": { + "name": "computer disk", + "slug": "computer_disk", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’พ": { + "name": "floppy disk", + "slug": "floppy_disk", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฟ": { + "name": "optical disk", + "slug": "optical_disk", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“€": { + "name": "dvd", + "slug": "dvd", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงฎ": { + "name": "abacus", + "slug": "abacus", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐ŸŽฅ": { + "name": "movie camera", + "slug": "movie_camera", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽž๏ธ": { + "name": "film frames", + "slug": "film_frames", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“ฝ๏ธ": { + "name": "film projector", + "slug": "film_projector", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐ŸŽฌ": { + "name": "clapper board", + "slug": "clapper_board", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“บ": { + "name": "television", + "slug": "television", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ท": { + "name": "camera", + "slug": "camera", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ธ": { + "name": "camera with flash", + "slug": "camera_with_flash", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ“น": { + "name": "video camera", + "slug": "video_camera", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ผ": { + "name": "videocassette", + "slug": "videocassette", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "magnifying glass tilted left", + "slug": "magnifying_glass_tilted_left", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”Ž": { + "name": "magnifying glass tilted right", + "slug": "magnifying_glass_tilted_right", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ•ฏ๏ธ": { + "name": "candle", + "slug": "candle", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ’ก": { + "name": "light bulb", + "slug": "light_bulb", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฆ": { + "name": "flashlight", + "slug": "flashlight", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฎ": { + "name": "red paper lantern", + "slug": "red_paper_lantern", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช”": { + "name": "diya lamp", + "slug": "diya_lamp", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ“”": { + "name": "notebook with decorative cover", + "slug": "notebook_with_decorative_cover", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“•": { + "name": "closed book", + "slug": "closed_book", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“–": { + "name": "open book", + "slug": "open_book", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“—": { + "name": "green book", + "slug": "green_book", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“˜": { + "name": "blue book", + "slug": "blue_book", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“™": { + "name": "orange book", + "slug": "orange_book", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“š": { + "name": "books", + "slug": "books", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ““": { + "name": "notebook", + "slug": "notebook", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“’": { + "name": "ledger", + "slug": "ledger", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ƒ": { + "name": "page with curl", + "slug": "page_with_curl", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“œ": { + "name": "scroll", + "slug": "scroll", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“„": { + "name": "page facing up", + "slug": "page_facing_up", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฐ": { + "name": "newspaper", + "slug": "newspaper", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ž๏ธ": { + "name": "rolled-up newspaper", + "slug": "rolled_up_newspaper", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“‘": { + "name": "bookmark tabs", + "slug": "bookmark_tabs", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”–": { + "name": "bookmark", + "slug": "bookmark", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿท๏ธ": { + "name": "label", + "slug": "label", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ’ฐ": { + "name": "money bag", + "slug": "money_bag", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช™": { + "name": "coin", + "slug": "coin", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ’ด": { + "name": "yen banknote", + "slug": "yen_banknote", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ต": { + "name": "dollar banknote", + "slug": "dollar_banknote", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ถ": { + "name": "euro banknote", + "slug": "euro_banknote", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’ท": { + "name": "pound banknote", + "slug": "pound_banknote", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’ธ": { + "name": "money with wings", + "slug": "money_with_wings", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ณ": { + "name": "credit card", + "slug": "credit_card", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿงพ": { + "name": "receipt", + "slug": "receipt", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ’น": { + "name": "chart increasing with yen", + "slug": "chart_increasing_with_yen", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœ‰๏ธ": { + "name": "envelope", + "slug": "envelope", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ง": { + "name": "e-mail", + "slug": "e_mail", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“จ": { + "name": "incoming envelope", + "slug": "incoming_envelope", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฉ": { + "name": "envelope with arrow", + "slug": "envelope_with_arrow", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ค": { + "name": "outbox tray", + "slug": "outbox_tray", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฅ": { + "name": "inbox tray", + "slug": "inbox_tray", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฆ": { + "name": "package", + "slug": "package", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ซ": { + "name": "closed mailbox with raised flag", + "slug": "closed_mailbox_with_raised_flag", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ช": { + "name": "closed mailbox with lowered flag", + "slug": "closed_mailbox_with_lowered_flag", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ฌ": { + "name": "open mailbox with raised flag", + "slug": "open_mailbox_with_raised_flag", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“ญ": { + "name": "open mailbox with lowered flag", + "slug": "open_mailbox_with_lowered_flag", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“ฎ": { + "name": "postbox", + "slug": "postbox", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ณ๏ธ": { + "name": "ballot box with ballot", + "slug": "ballot_box_with_ballot", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โœ๏ธ": { + "name": "pencil", + "slug": "pencil", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœ’๏ธ": { + "name": "black nib", + "slug": "black_nib", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ–‹๏ธ": { + "name": "fountain pen", + "slug": "fountain_pen", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–Š๏ธ": { + "name": "pen", + "slug": "pen", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–Œ๏ธ": { + "name": "paintbrush", + "slug": "paintbrush", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ–๏ธ": { + "name": "crayon", + "slug": "crayon", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "memo", + "slug": "memo", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ผ": { + "name": "briefcase", + "slug": "briefcase", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "file folder", + "slug": "file_folder", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“‚": { + "name": "open file folder", + "slug": "open_file_folder", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—‚๏ธ": { + "name": "card index dividers", + "slug": "card_index_dividers", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“…": { + "name": "calendar", + "slug": "calendar", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“†": { + "name": "tear-off calendar", + "slug": "tear_off_calendar", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—’๏ธ": { + "name": "spiral notepad", + "slug": "spiral_notepad", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—“๏ธ": { + "name": "spiral calendar", + "slug": "spiral_calendar", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“‡": { + "name": "card index", + "slug": "card_index", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ˆ": { + "name": "chart increasing", + "slug": "chart_increasing", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“‰": { + "name": "chart decreasing", + "slug": "chart_decreasing", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“Š": { + "name": "bar chart", + "slug": "bar_chart", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“‹": { + "name": "clipboard", + "slug": "clipboard", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“Œ": { + "name": "pushpin", + "slug": "pushpin", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "round pushpin", + "slug": "round_pushpin", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“Ž": { + "name": "paperclip", + "slug": "paperclip", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ–‡๏ธ": { + "name": "linked paperclips", + "slug": "linked_paperclips", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "straight ruler", + "slug": "straight_ruler", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“": { + "name": "triangular ruler", + "slug": "triangular_ruler", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœ‚๏ธ": { + "name": "scissors", + "slug": "scissors", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—ƒ๏ธ": { + "name": "card file box", + "slug": "card_file_box", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—„๏ธ": { + "name": "file cabinet", + "slug": "file_cabinet", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—‘๏ธ": { + "name": "wastebasket", + "slug": "wastebasket", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ”’": { + "name": "locked", + "slug": "locked", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”“": { + "name": "unlocked", + "slug": "unlocked", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "locked with pen", + "slug": "locked_with_pen", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "locked with key", + "slug": "locked_with_key", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”‘": { + "name": "key", + "slug": "key", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ—๏ธ": { + "name": "old key", + "slug": "old_key", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ”จ": { + "name": "hammer", + "slug": "hammer", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช“": { + "name": "axe", + "slug": "axe", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "โ›๏ธ": { + "name": "pick", + "slug": "pick", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โš’๏ธ": { + "name": "hammer and pick", + "slug": "hammer_and_pick", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ› ๏ธ": { + "name": "hammer and wrench", + "slug": "hammer_and_wrench", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ—ก๏ธ": { + "name": "dagger", + "slug": "dagger", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โš”๏ธ": { + "name": "crossed swords", + "slug": "crossed_swords", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ’ฃ": { + "name": "bomb", + "slug": "bomb", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชƒ": { + "name": "boomerang", + "slug": "boomerang", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿน": { + "name": "bow and arrow", + "slug": "bow_and_arrow", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›ก๏ธ": { + "name": "shield", + "slug": "shield", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿชš": { + "name": "carpentry saw", + "slug": "carpentry_saw", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ”ง": { + "name": "wrench", + "slug": "wrench", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช›": { + "name": "screwdriver", + "slug": "screwdriver", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ”ฉ": { + "name": "nut and bolt", + "slug": "nut_and_bolt", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โš™๏ธ": { + "name": "gear", + "slug": "gear", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ—œ๏ธ": { + "name": "clamp", + "slug": "clamp", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โš–๏ธ": { + "name": "balance scale", + "slug": "balance_scale", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿฆฏ": { + "name": "white cane", + "slug": "white_cane", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ”—": { + "name": "link", + "slug": "link", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›“๏ธ": { + "name": "chains", + "slug": "chains", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿช": { + "name": "hook", + "slug": "hook", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿงฐ": { + "name": "toolbox", + "slug": "toolbox", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงฒ": { + "name": "magnet", + "slug": "magnet", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชœ": { + "name": "ladder", + "slug": "ladder", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "โš—๏ธ": { + "name": "alembic", + "slug": "alembic", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿงช": { + "name": "test tube", + "slug": "test_tube", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงซ": { + "name": "petri dish", + "slug": "petri_dish", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงฌ": { + "name": "dna", + "slug": "dna", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ”ฌ": { + "name": "microscope", + "slug": "microscope", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ญ": { + "name": "telescope", + "slug": "telescope", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ“ก": { + "name": "satellite antenna", + "slug": "satellite_antenna", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’‰": { + "name": "syringe", + "slug": "syringe", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉธ": { + "name": "drop of blood", + "slug": "drop_of_blood", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ’Š": { + "name": "pill", + "slug": "pill", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿฉน": { + "name": "adhesive bandage", + "slug": "adhesive_bandage", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉผ": { + "name": "crutch", + "slug": "crutch", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿฉบ": { + "name": "stethoscope", + "slug": "stethoscope", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿฉป": { + "name": "x-ray", + "slug": "x_ray", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿšช": { + "name": "door", + "slug": "door", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›—": { + "name": "elevator", + "slug": "elevator", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชž": { + "name": "mirror", + "slug": "mirror", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐ŸชŸ": { + "name": "window", + "slug": "window", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿ›๏ธ": { + "name": "bed", + "slug": "bed", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ›‹๏ธ": { + "name": "couch and lamp", + "slug": "couch_and_lamp", + "group": "Objects", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿช‘": { + "name": "chair", + "slug": "chair", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿšฝ": { + "name": "toilet", + "slug": "toilet", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿช ": { + "name": "plunger", + "slug": "plunger", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿšฟ": { + "name": "shower", + "slug": "shower", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›": { + "name": "bathtub", + "slug": "bathtub", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿชค": { + "name": "mouse trap", + "slug": "mouse_trap", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿช’": { + "name": "razor", + "slug": "razor", + "group": "Objects", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿงด": { + "name": "lotion bottle", + "slug": "lotion_bottle", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงท": { + "name": "safety pin", + "slug": "safety_pin", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงน": { + "name": "broom", + "slug": "broom", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงบ": { + "name": "basket", + "slug": "basket", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงป": { + "name": "roll of paper", + "slug": "roll_of_paper", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชฃ": { + "name": "bucket", + "slug": "bucket", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿงผ": { + "name": "soap", + "slug": "soap", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿซง": { + "name": "bubbles", + "slug": "bubbles", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿชฅ": { + "name": "toothbrush", + "slug": "toothbrush", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿงฝ": { + "name": "sponge", + "slug": "sponge", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿงฏ": { + "name": "fire extinguisher", + "slug": "fire_extinguisher", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ›’": { + "name": "shopping cart", + "slug": "shopping_cart", + "group": "Objects", + "emoji_version": "3.0", + "unicode_version": "3.0", + "skin_tone_support": false + }, + "๐Ÿšฌ": { + "name": "cigarette", + "slug": "cigarette", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โšฐ๏ธ": { + "name": "coffin", + "slug": "coffin", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿชฆ": { + "name": "headstone", + "slug": "headstone", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "โšฑ๏ธ": { + "name": "funeral urn", + "slug": "funeral_urn", + "group": "Objects", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿงฟ": { + "name": "nazar amulet", + "slug": "nazar_amulet", + "group": "Objects", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿชฌ": { + "name": "hamsa", + "slug": "hamsa", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿ—ฟ": { + "name": "moai", + "slug": "moai", + "group": "Objects", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชง": { + "name": "placard", + "slug": "placard", + "group": "Objects", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿชช": { + "name": "identification card", + "slug": "identification_card", + "group": "Objects", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "๐Ÿง": { + "name": "ATM sign", + "slug": "atm_sign", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšฎ": { + "name": "litter in bin sign", + "slug": "litter_in_bin_sign", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšฐ": { + "name": "potable water", + "slug": "potable_water", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ™ฟ": { + "name": "wheelchair symbol", + "slug": "wheelchair_symbol", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšน": { + "name": "menโ€™s room", + "slug": "men_s_room", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšบ": { + "name": "womenโ€™s room", + "slug": "women_s_room", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšป": { + "name": "restroom", + "slug": "restroom", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšผ": { + "name": "baby symbol", + "slug": "baby_symbol", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšพ": { + "name": "water closet", + "slug": "water_closet", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›‚": { + "name": "passport control", + "slug": "passport_control", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›ƒ": { + "name": "customs", + "slug": "customs", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›„": { + "name": "baggage claim", + "slug": "baggage_claim", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ›…": { + "name": "left luggage", + "slug": "left_luggage", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โš ๏ธ": { + "name": "warning", + "slug": "warning", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšธ": { + "name": "children crossing", + "slug": "children_crossing", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ›”": { + "name": "no entry", + "slug": "no_entry", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšซ": { + "name": "prohibited", + "slug": "prohibited", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšณ": { + "name": "no bicycles", + "slug": "no_bicycles", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšญ": { + "name": "no smoking", + "slug": "no_smoking", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšฏ": { + "name": "no littering", + "slug": "no_littering", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšฑ": { + "name": "non-potable water", + "slug": "non_potable_water", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿšท": { + "name": "no pedestrians", + "slug": "no_pedestrians", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ“ต": { + "name": "no mobile phones", + "slug": "no_mobile_phones", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ž": { + "name": "no one under eighteen", + "slug": "no_one_under_eighteen", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜ข๏ธ": { + "name": "radioactive", + "slug": "radioactive", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ˜ฃ๏ธ": { + "name": "biohazard", + "slug": "biohazard", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โฌ†๏ธ": { + "name": "up arrow", + "slug": "up_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†—๏ธ": { + "name": "up-right arrow", + "slug": "up_right_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โžก๏ธ": { + "name": "right arrow", + "slug": "right_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†˜๏ธ": { + "name": "down-right arrow", + "slug": "down_right_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฌ‡๏ธ": { + "name": "down arrow", + "slug": "down_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†™๏ธ": { + "name": "down-left arrow", + "slug": "down_left_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฌ…๏ธ": { + "name": "left arrow", + "slug": "left_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†–๏ธ": { + "name": "up-left arrow", + "slug": "up_left_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†•๏ธ": { + "name": "up-down arrow", + "slug": "up_down_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†”๏ธ": { + "name": "left-right arrow", + "slug": "left_right_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†ฉ๏ธ": { + "name": "right arrow curving left", + "slug": "right_arrow_curving_left", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ†ช๏ธ": { + "name": "left arrow curving right", + "slug": "left_arrow_curving_right", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โคด๏ธ": { + "name": "right arrow curving up", + "slug": "right_arrow_curving_up", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โคต๏ธ": { + "name": "right arrow curving down", + "slug": "right_arrow_curving_down", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ƒ": { + "name": "clockwise vertical arrows", + "slug": "clockwise_vertical_arrows", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”„": { + "name": "counterclockwise arrows button", + "slug": "counterclockwise_arrows_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”™": { + "name": "BACK arrow", + "slug": "back_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”š": { + "name": "END arrow", + "slug": "end_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”›": { + "name": "ON! arrow", + "slug": "on_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”œ": { + "name": "SOON arrow", + "slug": "soon_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "TOP arrow", + "slug": "top_arrow", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›": { + "name": "place of worship", + "slug": "place_of_worship", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โš›๏ธ": { + "name": "atom symbol", + "slug": "atom_symbol", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ•‰๏ธ": { + "name": "om", + "slug": "om", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โœก๏ธ": { + "name": "star of David", + "slug": "star_of_david", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜ธ๏ธ": { + "name": "wheel of dharma", + "slug": "wheel_of_dharma", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜ฏ๏ธ": { + "name": "yin yang", + "slug": "yin_yang", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โœ๏ธ": { + "name": "latin cross", + "slug": "latin_cross", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜ฆ๏ธ": { + "name": "orthodox cross", + "slug": "orthodox_cross", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ˜ช๏ธ": { + "name": "star and crescent", + "slug": "star_and_crescent", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ˜ฎ๏ธ": { + "name": "peace symbol", + "slug": "peace_symbol", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ•Ž": { + "name": "menorah", + "slug": "menorah", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ฏ": { + "name": "dotted six-pointed star", + "slug": "dotted_six_pointed_star", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿชฏ": { + "name": "khanda", + "slug": "khanda", + "group": "Symbols", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "โ™ˆ": { + "name": "Aries", + "slug": "aries", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™‰": { + "name": "Taurus", + "slug": "taurus", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™Š": { + "name": "Gemini", + "slug": "gemini", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™‹": { + "name": "Cancer", + "slug": "cancer", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™Œ": { + "name": "Leo", + "slug": "leo", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™": { + "name": "Virgo", + "slug": "virgo", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™Ž": { + "name": "Libra", + "slug": "libra", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™": { + "name": "Scorpio", + "slug": "scorpio", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™": { + "name": "Sagittarius", + "slug": "sagittarius", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™‘": { + "name": "Capricorn", + "slug": "capricorn", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™’": { + "name": "Aquarius", + "slug": "aquarius", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™“": { + "name": "Pisces", + "slug": "pisces", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ›Ž": { + "name": "Ophiuchus", + "slug": "ophiuchus", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”€": { + "name": "shuffle tracks button", + "slug": "shuffle_tracks_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”": { + "name": "repeat button", + "slug": "repeat_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”‚": { + "name": "repeat single button", + "slug": "repeat_single_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ–ถ๏ธ": { + "name": "play button", + "slug": "play_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฉ": { + "name": "fast-forward button", + "slug": "fast_forward_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โญ๏ธ": { + "name": "next track button", + "slug": "next_track_button", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โฏ๏ธ": { + "name": "play or pause button", + "slug": "play_or_pause_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "โ—€๏ธ": { + "name": "reverse button", + "slug": "reverse_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โช": { + "name": "fast reverse button", + "slug": "fast_reverse_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฎ๏ธ": { + "name": "last track button", + "slug": "last_track_button", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿ”ผ": { + "name": "upwards button", + "slug": "upwards_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โซ": { + "name": "fast up button", + "slug": "fast_up_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฝ": { + "name": "downwards button", + "slug": "downwards_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฌ": { + "name": "fast down button", + "slug": "fast_down_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โธ๏ธ": { + "name": "pause button", + "slug": "pause_button", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โน๏ธ": { + "name": "stop button", + "slug": "stop_button", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โบ๏ธ": { + "name": "record button", + "slug": "record_button", + "group": "Symbols", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "โ๏ธ": { + "name": "eject button", + "slug": "eject_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐ŸŽฆ": { + "name": "cinema", + "slug": "cinema", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”…": { + "name": "dim button", + "slug": "dim_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”†": { + "name": "bright button", + "slug": "bright_button", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ“ถ": { + "name": "antenna bars", + "slug": "antenna_bars", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ›œ": { + "name": "wireless", + "slug": "wireless", + "group": "Symbols", + "emoji_version": "15.0", + "unicode_version": "15.0", + "skin_tone_support": false + }, + "๐Ÿ“ณ": { + "name": "vibration mode", + "slug": "vibration_mode", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“ด": { + "name": "mobile phone off", + "slug": "mobile_phone_off", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ™€๏ธ": { + "name": "female sign", + "slug": "female_sign", + "group": "Symbols", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "โ™‚๏ธ": { + "name": "male sign", + "slug": "male_sign", + "group": "Symbols", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "โšง๏ธ": { + "name": "transgender symbol", + "slug": "transgender_symbol", + "group": "Symbols", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "โœ–๏ธ": { + "name": "multiply", + "slug": "multiply", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โž•": { + "name": "plus", + "slug": "plus", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โž–": { + "name": "minus", + "slug": "minus", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โž—": { + "name": "divide", + "slug": "divide", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŸฐ": { + "name": "heavy equals sign", + "slug": "heavy_equals_sign", + "group": "Symbols", + "emoji_version": "14.0", + "unicode_version": "14.0", + "skin_tone_support": false + }, + "โ™พ๏ธ": { + "name": "infinity", + "slug": "infinity", + "group": "Symbols", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "โ€ผ๏ธ": { + "name": "double exclamation mark", + "slug": "double_exclamation_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ‰๏ธ": { + "name": "exclamation question mark", + "slug": "exclamation_question_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ“": { + "name": "red question mark", + "slug": "red_question_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ”": { + "name": "white question mark", + "slug": "white_question_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ•": { + "name": "white exclamation mark", + "slug": "white_exclamation_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ—": { + "name": "red exclamation mark", + "slug": "red_exclamation_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "ใ€ฐ๏ธ": { + "name": "wavy dash", + "slug": "wavy_dash", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฑ": { + "name": "currency exchange", + "slug": "currency_exchange", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ฒ": { + "name": "heavy dollar sign", + "slug": "heavy_dollar_sign", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โš•๏ธ": { + "name": "medical symbol", + "slug": "medical_symbol", + "group": "Symbols", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "โ™ป๏ธ": { + "name": "recycling symbol", + "slug": "recycling_symbol", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โšœ๏ธ": { + "name": "fleur-de-lis", + "slug": "fleur_de_lis", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿ”ฑ": { + "name": "trident emblem", + "slug": "trident_emblem", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ“›": { + "name": "name badge", + "slug": "name_badge", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฐ": { + "name": "Japanese symbol for beginner", + "slug": "japanese_symbol_for_beginner", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โญ•": { + "name": "hollow red circle", + "slug": "hollow_red_circle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœ…": { + "name": "check mark button", + "slug": "check_mark_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ˜‘๏ธ": { + "name": "check box with check", + "slug": "check_box_with_check", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœ”๏ธ": { + "name": "check mark", + "slug": "check_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โŒ": { + "name": "cross mark", + "slug": "cross_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โŽ": { + "name": "cross mark button", + "slug": "cross_mark_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โžฐ": { + "name": "curly loop", + "slug": "curly_loop", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โžฟ": { + "name": "double curly loop", + "slug": "double_curly_loop", + "group": "Symbols", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "ใ€ฝ๏ธ": { + "name": "part alternation mark", + "slug": "part_alternation_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœณ๏ธ": { + "name": "eight-spoked asterisk", + "slug": "eight_spoked_asterisk", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โœด๏ธ": { + "name": "eight-pointed star", + "slug": "eight_pointed_star", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ‡๏ธ": { + "name": "sparkle", + "slug": "sparkle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "ยฉ๏ธ": { + "name": "copyright", + "slug": "copyright", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "ยฎ๏ธ": { + "name": "registered", + "slug": "registered", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ„ข๏ธ": { + "name": "trade mark", + "slug": "trade_mark", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "#๏ธโƒฃ": { + "name": "keycap #", + "slug": "keycap_number_sign", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "*๏ธโƒฃ": { + "name": "keycap *", + "slug": "keycap_asterisk", + "group": "Symbols", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "0๏ธโƒฃ": { + "name": "keycap 0", + "slug": "keycap_0", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "1๏ธโƒฃ": { + "name": "keycap 1", + "slug": "keycap_1", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "2๏ธโƒฃ": { + "name": "keycap 2", + "slug": "keycap_2", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "3๏ธโƒฃ": { + "name": "keycap 3", + "slug": "keycap_3", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "4๏ธโƒฃ": { + "name": "keycap 4", + "slug": "keycap_4", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "5๏ธโƒฃ": { + "name": "keycap 5", + "slug": "keycap_5", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "6๏ธโƒฃ": { + "name": "keycap 6", + "slug": "keycap_6", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "7๏ธโƒฃ": { + "name": "keycap 7", + "slug": "keycap_7", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "8๏ธโƒฃ": { + "name": "keycap 8", + "slug": "keycap_8", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "9๏ธโƒฃ": { + "name": "keycap 9", + "slug": "keycap_9", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”Ÿ": { + "name": "keycap 10", + "slug": "keycap_10", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ” ": { + "name": "input latin uppercase", + "slug": "input_latin_uppercase", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ก": { + "name": "input latin lowercase", + "slug": "input_latin_lowercase", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ข": { + "name": "input numbers", + "slug": "input_numbers", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฃ": { + "name": "input symbols", + "slug": "input_symbols", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ค": { + "name": "input latin letters", + "slug": "input_latin_letters", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…ฐ๏ธ": { + "name": "A button (blood type)", + "slug": "a_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†Ž": { + "name": "AB button (blood type)", + "slug": "ab_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…ฑ๏ธ": { + "name": "B button (blood type)", + "slug": "b_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†‘": { + "name": "CL button", + "slug": "cl_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†’": { + "name": "COOL button", + "slug": "cool_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†“": { + "name": "FREE button", + "slug": "free_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ„น๏ธ": { + "name": "information", + "slug": "information", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†”": { + "name": "ID button", + "slug": "id_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ“‚๏ธ": { + "name": "circled M", + "slug": "circled_m", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†•": { + "name": "NEW button", + "slug": "new_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†–": { + "name": "NG button", + "slug": "ng_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…พ๏ธ": { + "name": "O button (blood type)", + "slug": "o_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†—": { + "name": "OK button", + "slug": "ok_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ…ฟ๏ธ": { + "name": "P button", + "slug": "p_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†˜": { + "name": "SOS button", + "slug": "sos_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†™": { + "name": "UP! button", + "slug": "up_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ†š": { + "name": "VS button", + "slug": "vs_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆ": { + "name": "Japanese โ€œhereโ€ button", + "slug": "japanese_here_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆ‚๏ธ": { + "name": "Japanese โ€œservice chargeโ€ button", + "slug": "japanese_service_charge_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆท๏ธ": { + "name": "Japanese โ€œmonthly amountโ€ button", + "slug": "japanese_monthly_amount_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆถ": { + "name": "Japanese โ€œnot free of chargeโ€ button", + "slug": "japanese_not_free_of_charge_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆฏ": { + "name": "Japanese โ€œreservedโ€ button", + "slug": "japanese_reserved_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‰": { + "name": "Japanese โ€œbargainโ€ button", + "slug": "japanese_bargain_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆน": { + "name": "Japanese โ€œdiscountโ€ button", + "slug": "japanese_discount_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆš": { + "name": "Japanese โ€œfree of chargeโ€ button", + "slug": "japanese_free_of_charge_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆฒ": { + "name": "Japanese โ€œprohibitedโ€ button", + "slug": "japanese_prohibited_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‰‘": { + "name": "Japanese โ€œacceptableโ€ button", + "slug": "japanese_acceptable_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆธ": { + "name": "Japanese โ€œapplicationโ€ button", + "slug": "japanese_application_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆด": { + "name": "Japanese โ€œpassing gradeโ€ button", + "slug": "japanese_passing_grade_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆณ": { + "name": "Japanese โ€œvacancyโ€ button", + "slug": "japanese_vacancy_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "ใŠ—๏ธ": { + "name": "Japanese โ€œcongratulationsโ€ button", + "slug": "japanese_congratulations_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "ใŠ™๏ธ": { + "name": "Japanese โ€œsecretโ€ button", + "slug": "japanese_secret_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆบ": { + "name": "Japanese โ€œopen for businessโ€ button", + "slug": "japanese_open_for_business_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿˆต": { + "name": "Japanese โ€œno vacancyโ€ button", + "slug": "japanese_no_vacancy_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ด": { + "name": "red circle", + "slug": "red_circle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŸ ": { + "name": "orange circle", + "slug": "orange_circle", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸก": { + "name": "yellow circle", + "slug": "yellow_circle", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸข": { + "name": "green circle", + "slug": "green_circle", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐Ÿ”ต": { + "name": "blue circle", + "slug": "blue_circle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŸฃ": { + "name": "purple circle", + "slug": "purple_circle", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸค": { + "name": "brown circle", + "slug": "brown_circle", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "โšซ": { + "name": "black circle", + "slug": "black_circle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โšช": { + "name": "white circle", + "slug": "white_circle", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŸฅ": { + "name": "red square", + "slug": "red_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸง": { + "name": "orange square", + "slug": "orange_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸจ": { + "name": "yellow square", + "slug": "yellow_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸฉ": { + "name": "green square", + "slug": "green_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸฆ": { + "name": "blue square", + "slug": "blue_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸช": { + "name": "purple square", + "slug": "purple_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "๐ŸŸซ": { + "name": "brown square", + "slug": "brown_square", + "group": "Symbols", + "emoji_version": "12.0", + "unicode_version": "12.0", + "skin_tone_support": false + }, + "โฌ›": { + "name": "black large square", + "slug": "black_large_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โฌœ": { + "name": "white large square", + "slug": "white_large_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ—ผ๏ธ": { + "name": "black medium square", + "slug": "black_medium_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ—ป๏ธ": { + "name": "white medium square", + "slug": "white_medium_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ—พ": { + "name": "black medium-small square", + "slug": "black_medium_small_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ—ฝ": { + "name": "white medium-small square", + "slug": "white_medium_small_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ–ช๏ธ": { + "name": "black small square", + "slug": "black_small_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "โ–ซ๏ธ": { + "name": "white small square", + "slug": "white_small_square", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ถ": { + "name": "large orange diamond", + "slug": "large_orange_diamond", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ท": { + "name": "large blue diamond", + "slug": "large_blue_diamond", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ธ": { + "name": "small orange diamond", + "slug": "small_orange_diamond", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”น": { + "name": "small blue diamond", + "slug": "small_blue_diamond", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”บ": { + "name": "red triangle pointed up", + "slug": "red_triangle_pointed_up", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ป": { + "name": "red triangle pointed down", + "slug": "red_triangle_pointed_down", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ’ ": { + "name": "diamond with a dot", + "slug": "diamond_with_a_dot", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”˜": { + "name": "radio button", + "slug": "radio_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ณ": { + "name": "white square button", + "slug": "white_square_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ”ฒ": { + "name": "black square button", + "slug": "black_square_button", + "group": "Symbols", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ": { + "name": "chequered flag", + "slug": "chequered_flag", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿšฉ": { + "name": "triangular flag", + "slug": "triangular_flag", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐ŸŽŒ": { + "name": "crossed flags", + "slug": "crossed_flags", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿด": { + "name": "black flag", + "slug": "black_flag", + "group": "Flags", + "emoji_version": "1.0", + "unicode_version": "1.0", + "skin_tone_support": false + }, + "๐Ÿณ๏ธ": { + "name": "white flag", + "slug": "white_flag", + "group": "Flags", + "emoji_version": "0.7", + "unicode_version": "0.7", + "skin_tone_support": false + }, + "๐Ÿณ๏ธโ€๐ŸŒˆ": { + "name": "rainbow flag", + "slug": "rainbow_flag", + "group": "Flags", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿณ๏ธโ€โšง๏ธ": { + "name": "transgender flag", + "slug": "transgender_flag", + "group": "Flags", + "emoji_version": "13.0", + "unicode_version": "13.0", + "skin_tone_support": false + }, + "๐Ÿดโ€โ˜ ๏ธ": { + "name": "pirate flag", + "slug": "pirate_flag", + "group": "Flags", + "emoji_version": "11.0", + "unicode_version": "11.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡จ": { + "name": "flag Ascension Island", + "slug": "flag_ascension_island", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฉ": { + "name": "flag Andorra", + "slug": "flag_andorra", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ช": { + "name": "flag United Arab Emirates", + "slug": "flag_united_arab_emirates", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ซ": { + "name": "flag Afghanistan", + "slug": "flag_afghanistan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฌ": { + "name": "flag Antigua & Barbuda", + "slug": "flag_antigua_barbuda", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฎ": { + "name": "flag Anguilla", + "slug": "flag_anguilla", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฑ": { + "name": "flag Albania", + "slug": "flag_albania", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฒ": { + "name": "flag Armenia", + "slug": "flag_armenia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ด": { + "name": "flag Angola", + "slug": "flag_angola", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ถ": { + "name": "flag Antarctica", + "slug": "flag_antarctica", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ท": { + "name": "flag Argentina", + "slug": "flag_argentina", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ธ": { + "name": "flag American Samoa", + "slug": "flag_american_samoa", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡น": { + "name": "flag Austria", + "slug": "flag_austria", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡บ": { + "name": "flag Australia", + "slug": "flag_australia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ผ": { + "name": "flag Aruba", + "slug": "flag_aruba", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฝ": { + "name": "flag ร…land Islands", + "slug": "flag_aland_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฆ๐Ÿ‡ฟ": { + "name": "flag Azerbaijan", + "slug": "flag_azerbaijan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฆ": { + "name": "flag Bosnia & Herzegovina", + "slug": "flag_bosnia_herzegovina", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ง": { + "name": "flag Barbados", + "slug": "flag_barbados", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฉ": { + "name": "flag Bangladesh", + "slug": "flag_bangladesh", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ช": { + "name": "flag Belgium", + "slug": "flag_belgium", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ซ": { + "name": "flag Burkina Faso", + "slug": "flag_burkina_faso", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฌ": { + "name": "flag Bulgaria", + "slug": "flag_bulgaria", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ญ": { + "name": "flag Bahrain", + "slug": "flag_bahrain", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฎ": { + "name": "flag Burundi", + "slug": "flag_burundi", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฏ": { + "name": "flag Benin", + "slug": "flag_benin", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฑ": { + "name": "flag St. Barthรฉlemy", + "slug": "flag_st_barthelemy", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฒ": { + "name": "flag Bermuda", + "slug": "flag_bermuda", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ณ": { + "name": "flag Brunei", + "slug": "flag_brunei", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ด": { + "name": "flag Bolivia", + "slug": "flag_bolivia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ถ": { + "name": "flag Caribbean Netherlands", + "slug": "flag_caribbean_netherlands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ท": { + "name": "flag Brazil", + "slug": "flag_brazil", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ธ": { + "name": "flag Bahamas", + "slug": "flag_bahamas", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡น": { + "name": "flag Bhutan", + "slug": "flag_bhutan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ป": { + "name": "flag Bouvet Island", + "slug": "flag_bouvet_island", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ผ": { + "name": "flag Botswana", + "slug": "flag_botswana", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡พ": { + "name": "flag Belarus", + "slug": "flag_belarus", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ง๐Ÿ‡ฟ": { + "name": "flag Belize", + "slug": "flag_belize", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฆ": { + "name": "flag Canada", + "slug": "flag_canada", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡จ": { + "name": "flag Cocos (Keeling) Islands", + "slug": "flag_cocos_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฉ": { + "name": "flag Congo - Kinshasa", + "slug": "flag_congo_kinshasa", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ซ": { + "name": "flag Central African Republic", + "slug": "flag_central_african_republic", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฌ": { + "name": "flag Congo - Brazzaville", + "slug": "flag_congo_brazzaville", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ญ": { + "name": "flag Switzerland", + "slug": "flag_switzerland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฎ": { + "name": "flag Cรดte dโ€™Ivoire", + "slug": "flag_cote_d_ivoire", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฐ": { + "name": "flag Cook Islands", + "slug": "flag_cook_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฑ": { + "name": "flag Chile", + "slug": "flag_chile", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฒ": { + "name": "flag Cameroon", + "slug": "flag_cameroon", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ณ": { + "name": "flag China", + "slug": "flag_china", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ด": { + "name": "flag Colombia", + "slug": "flag_colombia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ต": { + "name": "flag Clipperton Island", + "slug": "flag_clipperton_island", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ท": { + "name": "flag Costa Rica", + "slug": "flag_costa_rica", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡บ": { + "name": "flag Cuba", + "slug": "flag_cuba", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ป": { + "name": "flag Cape Verde", + "slug": "flag_cape_verde", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ผ": { + "name": "flag Curaรงao", + "slug": "flag_curacao", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฝ": { + "name": "flag Christmas Island", + "slug": "flag_christmas_island", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡พ": { + "name": "flag Cyprus", + "slug": "flag_cyprus", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡จ๐Ÿ‡ฟ": { + "name": "flag Czechia", + "slug": "flag_czechia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ช": { + "name": "flag Germany", + "slug": "flag_germany", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ฌ": { + "name": "flag Diego Garcia", + "slug": "flag_diego_garcia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ฏ": { + "name": "flag Djibouti", + "slug": "flag_djibouti", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ฐ": { + "name": "flag Denmark", + "slug": "flag_denmark", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ฒ": { + "name": "flag Dominica", + "slug": "flag_dominica", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ด": { + "name": "flag Dominican Republic", + "slug": "flag_dominican_republic", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฉ๐Ÿ‡ฟ": { + "name": "flag Algeria", + "slug": "flag_algeria", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ฆ": { + "name": "flag Ceuta & Melilla", + "slug": "flag_ceuta_melilla", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡จ": { + "name": "flag Ecuador", + "slug": "flag_ecuador", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ช": { + "name": "flag Estonia", + "slug": "flag_estonia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ฌ": { + "name": "flag Egypt", + "slug": "flag_egypt", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ญ": { + "name": "flag Western Sahara", + "slug": "flag_western_sahara", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ท": { + "name": "flag Eritrea", + "slug": "flag_eritrea", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡ธ": { + "name": "flag Spain", + "slug": "flag_spain", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡น": { + "name": "flag Ethiopia", + "slug": "flag_ethiopia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ช๐Ÿ‡บ": { + "name": "flag European Union", + "slug": "flag_european_union", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ฎ": { + "name": "flag Finland", + "slug": "flag_finland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ฏ": { + "name": "flag Fiji", + "slug": "flag_fiji", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ฐ": { + "name": "flag Falkland Islands", + "slug": "flag_falkland_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ฒ": { + "name": "flag Micronesia", + "slug": "flag_micronesia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ด": { + "name": "flag Faroe Islands", + "slug": "flag_faroe_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ซ๐Ÿ‡ท": { + "name": "flag France", + "slug": "flag_france", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฆ": { + "name": "flag Gabon", + "slug": "flag_gabon", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ง": { + "name": "flag United Kingdom", + "slug": "flag_united_kingdom", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฉ": { + "name": "flag Grenada", + "slug": "flag_grenada", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ช": { + "name": "flag Georgia", + "slug": "flag_georgia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ซ": { + "name": "flag French Guiana", + "slug": "flag_french_guiana", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฌ": { + "name": "flag Guernsey", + "slug": "flag_guernsey", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ญ": { + "name": "flag Ghana", + "slug": "flag_ghana", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฎ": { + "name": "flag Gibraltar", + "slug": "flag_gibraltar", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฑ": { + "name": "flag Greenland", + "slug": "flag_greenland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ฒ": { + "name": "flag Gambia", + "slug": "flag_gambia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ณ": { + "name": "flag Guinea", + "slug": "flag_guinea", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ต": { + "name": "flag Guadeloupe", + "slug": "flag_guadeloupe", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ถ": { + "name": "flag Equatorial Guinea", + "slug": "flag_equatorial_guinea", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ท": { + "name": "flag Greece", + "slug": "flag_greece", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ธ": { + "name": "flag South Georgia & South Sandwich Islands", + "slug": "flag_south_georgia_south_sandwich_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡น": { + "name": "flag Guatemala", + "slug": "flag_guatemala", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡บ": { + "name": "flag Guam", + "slug": "flag_guam", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡ผ": { + "name": "flag Guinea-Bissau", + "slug": "flag_guinea_bissau", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฌ๐Ÿ‡พ": { + "name": "flag Guyana", + "slug": "flag_guyana", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡ฐ": { + "name": "flag Hong Kong SAR China", + "slug": "flag_hong_kong_sar_china", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡ฒ": { + "name": "flag Heard & McDonald Islands", + "slug": "flag_heard_mcdonald_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡ณ": { + "name": "flag Honduras", + "slug": "flag_honduras", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡ท": { + "name": "flag Croatia", + "slug": "flag_croatia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡น": { + "name": "flag Haiti", + "slug": "flag_haiti", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ญ๐Ÿ‡บ": { + "name": "flag Hungary", + "slug": "flag_hungary", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡จ": { + "name": "flag Canary Islands", + "slug": "flag_canary_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ฉ": { + "name": "flag Indonesia", + "slug": "flag_indonesia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ช": { + "name": "flag Ireland", + "slug": "flag_ireland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ฑ": { + "name": "flag Israel", + "slug": "flag_israel", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ฒ": { + "name": "flag Isle of Man", + "slug": "flag_isle_of_man", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ณ": { + "name": "flag India", + "slug": "flag_india", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ด": { + "name": "flag British Indian Ocean Territory", + "slug": "flag_british_indian_ocean_territory", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ถ": { + "name": "flag Iraq", + "slug": "flag_iraq", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ท": { + "name": "flag Iran", + "slug": "flag_iran", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡ธ": { + "name": "flag Iceland", + "slug": "flag_iceland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฎ๐Ÿ‡น": { + "name": "flag Italy", + "slug": "flag_italy", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฏ๐Ÿ‡ช": { + "name": "flag Jersey", + "slug": "flag_jersey", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฏ๐Ÿ‡ฒ": { + "name": "flag Jamaica", + "slug": "flag_jamaica", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฏ๐Ÿ‡ด": { + "name": "flag Jordan", + "slug": "flag_jordan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฏ๐Ÿ‡ต": { + "name": "flag Japan", + "slug": "flag_japan", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ช": { + "name": "flag Kenya", + "slug": "flag_kenya", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ฌ": { + "name": "flag Kyrgyzstan", + "slug": "flag_kyrgyzstan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ญ": { + "name": "flag Cambodia", + "slug": "flag_cambodia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ฎ": { + "name": "flag Kiribati", + "slug": "flag_kiribati", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ฒ": { + "name": "flag Comoros", + "slug": "flag_comoros", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ณ": { + "name": "flag St. Kitts & Nevis", + "slug": "flag_st_kitts_nevis", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ต": { + "name": "flag North Korea", + "slug": "flag_north_korea", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ท": { + "name": "flag South Korea", + "slug": "flag_south_korea", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ผ": { + "name": "flag Kuwait", + "slug": "flag_kuwait", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡พ": { + "name": "flag Cayman Islands", + "slug": "flag_cayman_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฐ๐Ÿ‡ฟ": { + "name": "flag Kazakhstan", + "slug": "flag_kazakhstan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ฆ": { + "name": "flag Laos", + "slug": "flag_laos", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ง": { + "name": "flag Lebanon", + "slug": "flag_lebanon", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡จ": { + "name": "flag St. Lucia", + "slug": "flag_st_lucia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ฎ": { + "name": "flag Liechtenstein", + "slug": "flag_liechtenstein", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ฐ": { + "name": "flag Sri Lanka", + "slug": "flag_sri_lanka", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ท": { + "name": "flag Liberia", + "slug": "flag_liberia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ธ": { + "name": "flag Lesotho", + "slug": "flag_lesotho", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡น": { + "name": "flag Lithuania", + "slug": "flag_lithuania", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡บ": { + "name": "flag Luxembourg", + "slug": "flag_luxembourg", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡ป": { + "name": "flag Latvia", + "slug": "flag_latvia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฑ๐Ÿ‡พ": { + "name": "flag Libya", + "slug": "flag_libya", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฆ": { + "name": "flag Morocco", + "slug": "flag_morocco", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡จ": { + "name": "flag Monaco", + "slug": "flag_monaco", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฉ": { + "name": "flag Moldova", + "slug": "flag_moldova", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ช": { + "name": "flag Montenegro", + "slug": "flag_montenegro", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ซ": { + "name": "flag St. Martin", + "slug": "flag_st_martin", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฌ": { + "name": "flag Madagascar", + "slug": "flag_madagascar", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ญ": { + "name": "flag Marshall Islands", + "slug": "flag_marshall_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฐ": { + "name": "flag North Macedonia", + "slug": "flag_north_macedonia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฑ": { + "name": "flag Mali", + "slug": "flag_mali", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฒ": { + "name": "flag Myanmar (Burma)", + "slug": "flag_myanmar", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ณ": { + "name": "flag Mongolia", + "slug": "flag_mongolia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ด": { + "name": "flag Macao SAR China", + "slug": "flag_macao_sar_china", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ต": { + "name": "flag Northern Mariana Islands", + "slug": "flag_northern_mariana_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ถ": { + "name": "flag Martinique", + "slug": "flag_martinique", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ท": { + "name": "flag Mauritania", + "slug": "flag_mauritania", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ธ": { + "name": "flag Montserrat", + "slug": "flag_montserrat", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡น": { + "name": "flag Malta", + "slug": "flag_malta", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡บ": { + "name": "flag Mauritius", + "slug": "flag_mauritius", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ป": { + "name": "flag Maldives", + "slug": "flag_maldives", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ผ": { + "name": "flag Malawi", + "slug": "flag_malawi", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฝ": { + "name": "flag Mexico", + "slug": "flag_mexico", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡พ": { + "name": "flag Malaysia", + "slug": "flag_malaysia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฒ๐Ÿ‡ฟ": { + "name": "flag Mozambique", + "slug": "flag_mozambique", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ฆ": { + "name": "flag Namibia", + "slug": "flag_namibia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡จ": { + "name": "flag New Caledonia", + "slug": "flag_new_caledonia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ช": { + "name": "flag Niger", + "slug": "flag_niger", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ซ": { + "name": "flag Norfolk Island", + "slug": "flag_norfolk_island", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ฌ": { + "name": "flag Nigeria", + "slug": "flag_nigeria", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ฎ": { + "name": "flag Nicaragua", + "slug": "flag_nicaragua", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ฑ": { + "name": "flag Netherlands", + "slug": "flag_netherlands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ด": { + "name": "flag Norway", + "slug": "flag_norway", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ต": { + "name": "flag Nepal", + "slug": "flag_nepal", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ท": { + "name": "flag Nauru", + "slug": "flag_nauru", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡บ": { + "name": "flag Niue", + "slug": "flag_niue", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ณ๐Ÿ‡ฟ": { + "name": "flag New Zealand", + "slug": "flag_new_zealand", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ด๐Ÿ‡ฒ": { + "name": "flag Oman", + "slug": "flag_oman", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ฆ": { + "name": "flag Panama", + "slug": "flag_panama", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ช": { + "name": "flag Peru", + "slug": "flag_peru", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ซ": { + "name": "flag French Polynesia", + "slug": "flag_french_polynesia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ฌ": { + "name": "flag Papua New Guinea", + "slug": "flag_papua_new_guinea", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ญ": { + "name": "flag Philippines", + "slug": "flag_philippines", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ฐ": { + "name": "flag Pakistan", + "slug": "flag_pakistan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ฑ": { + "name": "flag Poland", + "slug": "flag_poland", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ฒ": { + "name": "flag St. Pierre & Miquelon", + "slug": "flag_st_pierre_miquelon", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ณ": { + "name": "flag Pitcairn Islands", + "slug": "flag_pitcairn_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ท": { + "name": "flag Puerto Rico", + "slug": "flag_puerto_rico", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ธ": { + "name": "flag Palestinian Territories", + "slug": "flag_palestinian_territories", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡น": { + "name": "flag Portugal", + "slug": "flag_portugal", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡ผ": { + "name": "flag Palau", + "slug": "flag_palau", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ต๐Ÿ‡พ": { + "name": "flag Paraguay", + "slug": "flag_paraguay", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ถ๐Ÿ‡ฆ": { + "name": "flag Qatar", + "slug": "flag_qatar", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ท๐Ÿ‡ช": { + "name": "flag Rรฉunion", + "slug": "flag_reunion", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ท๐Ÿ‡ด": { + "name": "flag Romania", + "slug": "flag_romania", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ท๐Ÿ‡ธ": { + "name": "flag Serbia", + "slug": "flag_serbia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ท๐Ÿ‡บ": { + "name": "flag Russia", + "slug": "flag_russia", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡ท๐Ÿ‡ผ": { + "name": "flag Rwanda", + "slug": "flag_rwanda", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฆ": { + "name": "flag Saudi Arabia", + "slug": "flag_saudi_arabia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ง": { + "name": "flag Solomon Islands", + "slug": "flag_solomon_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡จ": { + "name": "flag Seychelles", + "slug": "flag_seychelles", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฉ": { + "name": "flag Sudan", + "slug": "flag_sudan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ช": { + "name": "flag Sweden", + "slug": "flag_sweden", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฌ": { + "name": "flag Singapore", + "slug": "flag_singapore", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ญ": { + "name": "flag St. Helena", + "slug": "flag_st_helena", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฎ": { + "name": "flag Slovenia", + "slug": "flag_slovenia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฏ": { + "name": "flag Svalbard & Jan Mayen", + "slug": "flag_svalbard_jan_mayen", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฐ": { + "name": "flag Slovakia", + "slug": "flag_slovakia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฑ": { + "name": "flag Sierra Leone", + "slug": "flag_sierra_leone", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฒ": { + "name": "flag San Marino", + "slug": "flag_san_marino", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ณ": { + "name": "flag Senegal", + "slug": "flag_senegal", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ด": { + "name": "flag Somalia", + "slug": "flag_somalia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ท": { + "name": "flag Suriname", + "slug": "flag_suriname", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ธ": { + "name": "flag South Sudan", + "slug": "flag_south_sudan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡น": { + "name": "flag Sรฃo Tomรฉ & Prรญncipe", + "slug": "flag_sao_tome_principe", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ป": { + "name": "flag El Salvador", + "slug": "flag_el_salvador", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฝ": { + "name": "flag Sint Maarten", + "slug": "flag_sint_maarten", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡พ": { + "name": "flag Syria", + "slug": "flag_syria", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ธ๐Ÿ‡ฟ": { + "name": "flag Eswatini", + "slug": "flag_eswatini", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฆ": { + "name": "flag Tristan da Cunha", + "slug": "flag_tristan_da_cunha", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡จ": { + "name": "flag Turks & Caicos Islands", + "slug": "flag_turks_caicos_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฉ": { + "name": "flag Chad", + "slug": "flag_chad", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ซ": { + "name": "flag French Southern Territories", + "slug": "flag_french_southern_territories", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฌ": { + "name": "flag Togo", + "slug": "flag_togo", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ญ": { + "name": "flag Thailand", + "slug": "flag_thailand", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฏ": { + "name": "flag Tajikistan", + "slug": "flag_tajikistan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฐ": { + "name": "flag Tokelau", + "slug": "flag_tokelau", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฑ": { + "name": "flag Timor-Leste", + "slug": "flag_timor_leste", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฒ": { + "name": "flag Turkmenistan", + "slug": "flag_turkmenistan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ณ": { + "name": "flag Tunisia", + "slug": "flag_tunisia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ด": { + "name": "flag Tonga", + "slug": "flag_tonga", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ท": { + "name": "flag Turkey", + "slug": "flag_turkey", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡น": { + "name": "flag Trinidad & Tobago", + "slug": "flag_trinidad_tobago", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ป": { + "name": "flag Tuvalu", + "slug": "flag_tuvalu", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ผ": { + "name": "flag Taiwan", + "slug": "flag_taiwan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡น๐Ÿ‡ฟ": { + "name": "flag Tanzania", + "slug": "flag_tanzania", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ฆ": { + "name": "flag Ukraine", + "slug": "flag_ukraine", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ฌ": { + "name": "flag Uganda", + "slug": "flag_uganda", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ฒ": { + "name": "flag U.S. Outlying Islands", + "slug": "flag_u_s_outlying_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ณ": { + "name": "flag United Nations", + "slug": "flag_united_nations", + "group": "Flags", + "emoji_version": "4.0", + "unicode_version": "4.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ธ": { + "name": "flag United States", + "slug": "flag_united_states", + "group": "Flags", + "emoji_version": "0.6", + "unicode_version": "0.6", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡พ": { + "name": "flag Uruguay", + "slug": "flag_uruguay", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡บ๐Ÿ‡ฟ": { + "name": "flag Uzbekistan", + "slug": "flag_uzbekistan", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡ฆ": { + "name": "flag Vatican City", + "slug": "flag_vatican_city", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡จ": { + "name": "flag St. Vincent & Grenadines", + "slug": "flag_st_vincent_grenadines", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡ช": { + "name": "flag Venezuela", + "slug": "flag_venezuela", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡ฌ": { + "name": "flag British Virgin Islands", + "slug": "flag_british_virgin_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡ฎ": { + "name": "flag U.S. Virgin Islands", + "slug": "flag_u_s_virgin_islands", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡ณ": { + "name": "flag Vietnam", + "slug": "flag_vietnam", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ป๐Ÿ‡บ": { + "name": "flag Vanuatu", + "slug": "flag_vanuatu", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ผ๐Ÿ‡ซ": { + "name": "flag Wallis & Futuna", + "slug": "flag_wallis_futuna", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ผ๐Ÿ‡ธ": { + "name": "flag Samoa", + "slug": "flag_samoa", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฝ๐Ÿ‡ฐ": { + "name": "flag Kosovo", + "slug": "flag_kosovo", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡พ๐Ÿ‡ช": { + "name": "flag Yemen", + "slug": "flag_yemen", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡พ๐Ÿ‡น": { + "name": "flag Mayotte", + "slug": "flag_mayotte", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฟ๐Ÿ‡ฆ": { + "name": "flag South Africa", + "slug": "flag_south_africa", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฟ๐Ÿ‡ฒ": { + "name": "flag Zambia", + "slug": "flag_zambia", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿ‡ฟ๐Ÿ‡ผ": { + "name": "flag Zimbabwe", + "slug": "flag_zimbabwe", + "group": "Flags", + "emoji_version": "2.0", + "unicode_version": "2.0", + "skin_tone_support": false + }, + "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": { + "name": "flag England", + "slug": "flag_england", + "group": "Flags", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": { + "name": "flag Scotland", + "slug": "flag_scotland", + "group": "Flags", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + }, + "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": { + "name": "flag Wales", + "slug": "flag_wales", + "group": "Flags", + "emoji_version": "5.0", + "unicode_version": "5.0", + "skin_tone_support": false + } +} diff --git a/packages/app-admin/src/components/IconPicker/config/fa6-regular.json b/packages/app-admin/src/components/IconPicker/config/fa6-regular.json new file mode 100644 index 00000000000..a157d247c40 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/fa6-regular.json @@ -0,0 +1,879 @@ +{ + "prefix": "fa6-regular", + "info": { + "name": "Font Awesome Regular", + "total": 163, + "version": "6.4.2", + "author": { + "name": "Dave Gandy", + "url": "https://github.com/FortAwesome/Font-Awesome" + }, + "license": { + "title": "CC BY 4.0", + "spdx": "CC-BY-4.0", + "url": "https://creativecommons.org/licenses/by/4.0/" + }, + "samples": ["message", "clock", "folder"], + "height": 32, + "displayHeight": 16, + "category": "General", + "palette": false + }, + "lastModified": 1691127010, + "icons": { + "address-book": { + "body": "" + }, + "address-card": { + "body": "", + "width": 576 + }, + "bell": { + "body": "", + "width": 448 + }, + "bell-slash": { + "body": "", + "width": 640 + }, + "bookmark": { + "body": "", + "width": 384 + }, + "building": { + "body": "", + "width": 384 + }, + "calendar": { + "body": "", + "width": 448 + }, + "calendar-check": { + "body": "", + "width": 448 + }, + "calendar-days": { + "body": "", + "width": 448 + }, + "calendar-minus": { + "body": "" + }, + "calendar-plus": { + "body": "" + }, + "calendar-xmark": { + "body": "" + }, + "chart-bar": { + "body": "" + }, + "chess-bishop": { + "body": "", + "width": 320 + }, + "chess-king": { + "body": "", + "width": 448 + }, + "chess-knight": { + "body": "", + "width": 448 + }, + "chess-pawn": { + "body": "", + "width": 320 + }, + "chess-queen": { + "body": "" + }, + "chess-rook": { + "body": "", + "width": 448 + }, + "circle": { + "body": "" + }, + "circle-check": { + "body": "" + }, + "circle-dot": { + "body": "" + }, + "circle-down": { + "body": "" + }, + "circle-left": { + "body": "" + }, + "circle-pause": { + "body": "" + }, + "circle-play": { + "body": "" + }, + "circle-question": { + "body": "" + }, + "circle-right": { + "body": "" + }, + "circle-stop": { + "body": "" + }, + "circle-up": { + "body": "" + }, + "circle-user": { + "body": "" + }, + "circle-xmark": { + "body": "" + }, + "clipboard": { + "body": "", + "width": 384 + }, + "clock": { + "body": "" + }, + "clone": { + "body": "" + }, + "closed-captioning": { + "body": "", + "width": 576 + }, + "comment": { + "body": "" + }, + "comment-dots": { + "body": "" + }, + "comments": { + "body": "", + "width": 640 + }, + "compass": { + "body": "" + }, + "copy": { + "body": "", + "width": 448 + }, + "copyright": { + "body": "" + }, + "credit-card": { + "body": "", + "width": 576 + }, + "envelope": { + "body": "" + }, + "envelope-open": { + "body": "" + }, + "eye": { + "body": "", + "width": 576 + }, + "eye-slash": { + "body": "", + "width": 640 + }, + "face-angry": { + "body": "" + }, + "face-dizzy": { + "body": "" + }, + "face-flushed": { + "body": "" + }, + "face-frown": { + "body": "" + }, + "face-frown-open": { + "body": "" + }, + "face-grimace": { + "body": "" + }, + "face-grin": { + "body": "" + }, + "face-grin-beam": { + "body": "" + }, + "face-grin-beam-sweat": { + "body": "" + }, + "face-grin-hearts": { + "body": "" + }, + "face-grin-squint": { + "body": "" + }, + "face-grin-squint-tears": { + "body": "" + }, + "face-grin-stars": { + "body": "" + }, + "face-grin-tears": { + "body": "", + "width": 640 + }, + "face-grin-tongue": { + "body": "" + }, + "face-grin-tongue-squint": { + "body": "" + }, + "face-grin-tongue-wink": { + "body": "" + }, + "face-grin-wide": { + "body": "" + }, + "face-grin-wink": { + "body": "" + }, + "face-kiss": { + "body": "" + }, + "face-kiss-beam": { + "body": "" + }, + "face-kiss-wink-heart": { + "body": "" + }, + "face-laugh": { + "body": "" + }, + "face-laugh-beam": { + "body": "" + }, + "face-laugh-squint": { + "body": "" + }, + "face-laugh-wink": { + "body": "" + }, + "face-meh": { + "body": "" + }, + "face-meh-blank": { + "body": "" + }, + "face-rolling-eyes": { + "body": "" + }, + "face-sad-cry": { + "body": "" + }, + "face-sad-tear": { + "body": "" + }, + "face-smile": { + "body": "" + }, + "face-smile-beam": { + "body": "" + }, + "face-smile-wink": { + "body": "" + }, + "face-surprise": { + "body": "" + }, + "face-tired": { + "body": "" + }, + "file": { + "body": "", + "width": 384 + }, + "file-audio": { + "body": "", + "width": 384 + }, + "file-code": { + "body": "", + "width": 384 + }, + "file-excel": { + "body": "", + "width": 384 + }, + "file-image": { + "body": "", + "width": 384 + }, + "file-lines": { + "body": "", + "width": 384 + }, + "file-pdf": { + "body": "" + }, + "file-powerpoint": { + "body": "", + "width": 384 + }, + "file-video": { + "body": "", + "width": 384 + }, + "file-word": { + "body": "", + "width": 384 + }, + "file-zipper": { + "body": "", + "width": 384 + }, + "flag": { + "body": "", + "width": 448 + }, + "floppy-disk": { + "body": "", + "width": 448 + }, + "folder": { + "body": "" + }, + "folder-closed": { + "body": "" + }, + "folder-open": { + "body": "", + "width": 576 + }, + "font-awesome": { + "body": "", + "width": 448 + }, + "futbol": { + "body": "" + }, + "gem": { + "body": "" + }, + "hand": { + "body": "" + }, + "hand-back-fist": { + "body": "", + "width": 448 + }, + "hand-lizard": { + "body": "" + }, + "hand-peace": { + "body": "" + }, + "hand-point-down": { + "body": "", + "width": 384 + }, + "hand-point-left": { + "body": "" + }, + "hand-point-right": { + "body": "" + }, + "hand-point-up": { + "body": "", + "width": 384 + }, + "hand-pointer": { + "body": "", + "width": 448 + }, + "hand-scissors": { + "body": "" + }, + "hand-spock": { + "body": "", + "width": 576 + }, + "handshake": { + "body": "", + "width": 640 + }, + "hard-drive": { + "body": "" + }, + "heart": { + "body": "" + }, + "hospital": { + "body": "", + "width": 640 + }, + "hourglass": { + "body": "", + "width": 384 + }, + "hourglass-half": { + "body": "", + "width": 384 + }, + "id-badge": { + "body": "", + "width": 384 + }, + "id-card": { + "body": "", + "width": 576 + }, + "image": { + "body": "" + }, + "images": { + "body": "", + "width": 576 + }, + "keyboard": { + "body": "", + "width": 576 + }, + "lemon": { + "body": "", + "width": 448 + }, + "life-ring": { + "body": "" + }, + "lightbulb": { + "body": "", + "width": 384 + }, + "map": { + "body": "", + "width": 576 + }, + "message": { + "body": "" + }, + "money-bill-1": { + "body": "", + "width": 576 + }, + "moon": { + "body": "", + "width": 384 + }, + "newspaper": { + "body": "" + }, + "notdef": { + "body": "", + "width": 384, + "hidden": true + }, + "note-sticky": { + "body": "", + "width": 448 + }, + "object-group": { + "body": "", + "width": 576 + }, + "object-ungroup": { + "body": "", + "width": 640 + }, + "paper-plane": { + "body": "" + }, + "paste": { + "body": "" + }, + "pen-to-square": { + "body": "" + }, + "rectangle-list": { + "body": "", + "width": 576 + }, + "rectangle-xmark": { + "body": "" + }, + "registered": { + "body": "" + }, + "share-from-square": { + "body": "", + "width": 576 + }, + "snowflake": { + "body": "", + "width": 448 + }, + "square": { + "body": "", + "width": 448 + }, + "square-caret-down": { + "body": "", + "width": 448 + }, + "square-caret-left": { + "body": "", + "width": 448 + }, + "square-caret-right": { + "body": "", + "width": 448 + }, + "square-caret-up": { + "body": "", + "width": 448 + }, + "square-check": { + "body": "", + "width": 448 + }, + "square-full": { + "body": "" + }, + "square-minus": { + "body": "", + "width": 448 + }, + "square-plus": { + "body": "", + "width": 448 + }, + "star": { + "body": "", + "width": 576 + }, + "star-half": { + "body": "", + "width": 576 + }, + "star-half-stroke": { + "body": "", + "width": 640 + }, + "sun": { + "body": "" + }, + "thumbs-down": { + "body": "" + }, + "thumbs-up": { + "body": "" + }, + "trash-can": { + "body": "", + "width": 448 + }, + "user": { + "body": "", + "width": 448 + }, + "window-maximize": { + "body": "" + }, + "window-minimize": { + "body": "" + }, + "window-restore": { + "body": "" + } + }, + "categories": { + "Accessibility": ["closed-captioning"], + "Alert": ["bell", "bell-slash"], + "Arrows": [ + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer" + ], + "Audio & Video": ["circle", "closed-captioning", "file-audio", "file-video"], + "Buildings": ["building", "hospital"], + "Business": [ + "address-book", + "address-card", + "building", + "calendar", + "chart-bar", + "clipboard", + "compass", + "copy", + "copyright", + "envelope", + "envelope-open", + "file", + "folder", + "folder-open", + "paste", + "registered" + ], + "Camping": ["compass", "map"], + "Charity": ["handshake", "heart"], + "Chat": ["comment", "comment-dots", "comments"], + "Chess": [ + "chess-bishop", + "chess-king", + "chess-knight", + "chess-pawn", + "chess-queen", + "chess-rook", + "square-full" + ], + "Code": [ + "file", + "file-code", + "folder", + "folder-open", + "keyboard", + "window-maximize", + "window-minimize", + "window-restore" + ], + "Communication": [ + "address-book", + "address-card", + "bell", + "bell-slash", + "comment", + "comments", + "envelope", + "envelope-open", + "paper-plane" + ], + "Computers": ["keyboard"], + "Date & Time": [ + "bell", + "bell-slash", + "calendar", + "calendar-check", + "calendar-minus", + "calendar-plus", + "clock", + "hourglass", + "hourglass-half" + ], + "Design": ["clone", "copy", "eye", "eye-slash", "object-group", "object-ungroup", "paste"], + "Editors": ["clipboard", "clone", "copy", "file", "paper-plane", "paste"], + "Education": ["bell", "bell-slash"], + "Energy": ["lightbulb", "sun"], + "Files": [ + "clone", + "copy", + "file", + "file-audio", + "file-code", + "file-excel", + "file-image", + "file-pdf", + "file-powerpoint", + "file-video", + "file-word", + "folder", + "folder-open", + "paste" + ], + "Finance": ["credit-card"], + "Fitness": ["heart"], + "Food": ["lemon"], + "Fruits & Vegetables": ["lemon"], + "Games": [ + "chess-bishop", + "chess-king", + "chess-knight", + "chess-pawn", + "chess-queen", + "chess-rook", + "heart" + ], + "Hands": [ + "hand-lizard", + "hand-peace", + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer", + "hand-scissors", + "hand-spock", + "handshake", + "thumbs-down", + "thumbs-up" + ], + "Health": ["heart", "hospital"], + "Hotel": ["snowflake"], + "Household": ["bell", "lightbulb", "snowflake"], + "Images": ["clone", "eye", "eye-slash", "file-image", "id-badge", "id-card", "image", "images"], + "Interfaces": [ + "bell", + "bell-slash", + "calendar", + "calendar-check", + "calendar-minus", + "calendar-plus", + "circle", + "clipboard", + "clone", + "copy", + "envelope", + "envelope-open", + "eye", + "eye-slash", + "file", + "flag", + "folder", + "folder-open", + "heart", + "paste", + "star", + "star-half", + "thumbs-down", + "thumbs-up", + "user" + ], + "Maps": [ + "bell", + "bell-slash", + "bookmark", + "building", + "eye", + "eye-slash", + "flag", + "heart", + "hospital", + "image", + "images", + "lemon", + "life-ring", + "lightbulb", + "map", + "newspaper" + ], + "Maritime": ["compass"], + "Marketing": ["lightbulb"], + "Medical": ["heart", "hospital"], + "Music": ["file-audio"], + "Objects": [ + "bell", + "bookmark", + "building", + "calendar", + "clipboard", + "compass", + "copy", + "envelope", + "envelope-open", + "eye", + "file", + "flag", + "futbol", + "gem", + "heart", + "hospital", + "hourglass", + "image", + "images", + "keyboard", + "lemon", + "life-ring", + "lightbulb", + "map", + "moon", + "newspaper", + "paper-plane", + "paste", + "snowflake", + "star", + "sun" + ], + "Payments & Shopping": [ + "bell", + "bookmark", + "credit-card", + "gem", + "handshake", + "heart", + "star", + "thumbs-down", + "thumbs-up" + ], + "Political": ["handshake"], + "Science Fiction": ["hand-spock", "moon"], + "Security": ["eye", "eye-slash", "id-badge", "id-card"], + "Shapes": [ + "bookmark", + "calendar", + "circle", + "comment", + "file", + "folder", + "heart", + "square", + "star" + ], + "Social": [ + "bell", + "comment", + "envelope", + "heart", + "image", + "images", + "star", + "thumbs-down", + "thumbs-up", + "user" + ], + "Spinners": ["compass", "life-ring", "snowflake", "sun"], + "Sports": ["futbol"], + "Status": [ + "bell", + "bell-slash", + "calendar", + "calendar-check", + "calendar-minus", + "calendar-plus", + "comment", + "compass", + "eye", + "eye-slash", + "file", + "folder", + "folder-open", + "lightbulb", + "star", + "star-half", + "thumbs-down", + "thumbs-up", + "user" + ], + "Summer": ["lemon", "sun"], + "Toggle": ["circle", "star", "star-half"], + "Travel": ["map"], + "Users & People": ["address-book", "address-card", "id-badge", "id-card", "user"], + "Vehicles": ["paper-plane"], + "Weather": ["moon", "snowflake", "sun"], + "Writing": [ + "bookmark", + "envelope", + "envelope-open", + "file", + "folder", + "folder-open", + "keyboard", + "newspaper", + "paper-plane" + ] + }, + "width": 512, + "height": 512 +} diff --git a/packages/app-admin/src/components/IconPicker/config/fa6-solid.json b/packages/app-admin/src/components/IconPicker/config/fa6-solid.json new file mode 100644 index 00000000000..e3bc2c1c361 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/fa6-solid.json @@ -0,0 +1,6779 @@ +{ + "prefix": "fa6-solid", + "info": { + "name": "Font Awesome Solid", + "total": 1390, + "version": "6.4.2", + "author": { + "name": "Dave Gandy", + "url": "https://github.com/FortAwesome/Font-Awesome" + }, + "license": { + "title": "CC BY 4.0", + "spdx": "CC-BY-4.0", + "url": "https://creativecommons.org/licenses/by/4.0/" + }, + "samples": ["location-pin", "gem", "folder"], + "height": 32, + "displayHeight": 16, + "category": "General", + "palette": false + }, + "lastModified": 1691127033, + "icons": { + "0": { + "body": "", + "width": 320 + }, + "1": { + "body": "", + "width": 256 + }, + "2": { + "body": "", + "width": 320 + }, + "3": { + "body": "", + "width": 320 + }, + "4": { + "body": "", + "width": 384 + }, + "5": { + "body": "", + "width": 320 + }, + "6": { + "body": "", + "width": 320 + }, + "7": { + "body": "", + "width": 320 + }, + "8": { + "body": "", + "width": 320 + }, + "9": { + "body": "", + "width": 320 + }, + "a": { + "body": "", + "width": 384 + }, + "address-book": { + "body": "" + }, + "address-card": { + "body": "", + "width": 576 + }, + "align-center": { + "body": "", + "width": 448 + }, + "align-justify": { + "body": "", + "width": 448 + }, + "align-left": { + "body": "", + "width": 448 + }, + "align-right": { + "body": "", + "width": 448 + }, + "anchor": { + "body": "", + "width": 576 + }, + "anchor-circle-check": { + "body": "", + "width": 640 + }, + "anchor-circle-exclamation": { + "body": "", + "width": 640 + }, + "anchor-circle-xmark": { + "body": "", + "width": 640 + }, + "anchor-lock": { + "body": "", + "width": 640 + }, + "angle-down": { + "body": "", + "width": 448 + }, + "angle-left": { + "body": "", + "width": 320 + }, + "angle-right": { + "body": "", + "width": 320 + }, + "angle-up": { + "body": "", + "width": 448 + }, + "angles-down": { + "body": "", + "width": 448 + }, + "angles-left": { + "body": "" + }, + "angles-right": { + "body": "" + }, + "angles-up": { + "body": "", + "width": 448 + }, + "ankh": { + "body": "", + "width": 320 + }, + "apple-whole": { + "body": "", + "width": 448 + }, + "archway": { + "body": "" + }, + "arrow-down": { + "body": "", + "width": 384 + }, + "arrow-down-1-9": { + "body": "", + "width": 576 + }, + "arrow-down-9-1": { + "body": "", + "width": 576 + }, + "arrow-down-a-z": { + "body": "", + "width": 576 + }, + "arrow-down-long": { + "body": "", + "width": 384 + }, + "arrow-down-short-wide": { + "body": "", + "width": 576 + }, + "arrow-down-up-across-line": { + "body": "", + "width": 576 + }, + "arrow-down-up-lock": { + "body": "", + "width": 640 + }, + "arrow-down-wide-short": { + "body": "", + "width": 576 + }, + "arrow-down-z-a": { + "body": "", + "width": 576 + }, + "arrow-left": { + "body": "", + "width": 448 + }, + "arrow-left-long": { + "body": "" + }, + "arrow-pointer": { + "body": "", + "width": 320 + }, + "arrow-right": { + "body": "", + "width": 448 + }, + "arrow-right-arrow-left": { + "body": "", + "width": 448 + }, + "arrow-right-from-bracket": { + "body": "" + }, + "arrow-right-long": { + "body": "" + }, + "arrow-right-to-bracket": { + "body": "" + }, + "arrow-right-to-city": { + "body": "", + "width": 640 + }, + "arrow-rotate-left": { + "body": "" + }, + "arrow-rotate-right": { + "body": "" + }, + "arrow-trend-down": { + "body": "", + "width": 576 + }, + "arrow-trend-up": { + "body": "", + "width": 576 + }, + "arrow-turn-down": { + "body": "", + "width": 384 + }, + "arrow-turn-up": { + "body": "", + "width": 384 + }, + "arrow-up": { + "body": "", + "width": 384 + }, + "arrow-up-1-9": { + "body": "", + "width": 576 + }, + "arrow-up-9-1": { + "body": "", + "width": 576 + }, + "arrow-up-a-z": { + "body": "", + "width": 576 + }, + "arrow-up-from-bracket": { + "body": "", + "width": 448 + }, + "arrow-up-from-ground-water": { + "body": "", + "width": 576 + }, + "arrow-up-from-water-pump": { + "body": "", + "width": 576 + }, + "arrow-up-long": { + "body": "", + "width": 384 + }, + "arrow-up-right-dots": { + "body": "", + "width": 576 + }, + "arrow-up-right-from-square": { + "body": "" + }, + "arrow-up-short-wide": { + "body": "", + "width": 576 + }, + "arrow-up-wide-short": { + "body": "", + "width": 576 + }, + "arrow-up-z-a": { + "body": "", + "width": 576 + }, + "arrows-down-to-line": { + "body": "", + "width": 576 + }, + "arrows-down-to-people": { + "body": "", + "width": 640 + }, + "arrows-left-right": { + "body": "" + }, + "arrows-left-right-to-line": { + "body": "", + "width": 640 + }, + "arrows-rotate": { + "body": "" + }, + "arrows-spin": { + "body": "" + }, + "arrows-split-up-and-left": { + "body": "" + }, + "arrows-to-circle": { + "body": "", + "width": 640 + }, + "arrows-to-dot": { + "body": "" + }, + "arrows-to-eye": { + "body": "", + "width": 640 + }, + "arrows-turn-right": { + "body": "", + "width": 448 + }, + "arrows-turn-to-dots": { + "body": "" + }, + "arrows-up-down": { + "body": "", + "width": 320 + }, + "arrows-up-down-left-right": { + "body": "" + }, + "arrows-up-to-line": { + "body": "", + "width": 576 + }, + "asterisk": { + "body": "", + "width": 384 + }, + "at": { + "body": "" + }, + "atom": { + "body": "" + }, + "audio-description": { + "body": "", + "width": 576 + }, + "austral-sign": { + "body": "", + "width": 448 + }, + "award": { + "body": "", + "width": 384 + }, + "b": { + "body": "", + "width": 320 + }, + "baby": { + "body": "", + "width": 448 + }, + "baby-carriage": { + "body": "" + }, + "backward": { + "body": "" + }, + "backward-fast": { + "body": "" + }, + "backward-step": { + "body": "", + "width": 320 + }, + "bacon": { + "body": "", + "width": 576 + }, + "bacteria": { + "body": "", + "width": 640 + }, + "bacterium": { + "body": "" + }, + "bag-shopping": { + "body": "", + "width": 448 + }, + "bahai": { + "body": "", + "width": 576 + }, + "baht-sign": { + "body": "", + "width": 320 + }, + "ban": { + "body": "" + }, + "ban-smoking": { + "body": "" + }, + "bandage": { + "body": "", + "width": 640 + }, + "bangladeshi-taka-sign": { + "body": "", + "width": 384 + }, + "barcode": { + "body": "" + }, + "bars": { + "body": "", + "width": 448 + }, + "bars-progress": { + "body": "" + }, + "bars-staggered": { + "body": "" + }, + "baseball": { + "body": "" + }, + "baseball-bat-ball": { + "body": "" + }, + "basket-shopping": { + "body": "", + "width": 576 + }, + "basketball": { + "body": "" + }, + "bath": { + "body": "" + }, + "battery-empty": { + "body": "", + "width": 576 + }, + "battery-full": { + "body": "", + "width": 576 + }, + "battery-half": { + "body": "", + "width": 576 + }, + "battery-quarter": { + "body": "", + "width": 576 + }, + "battery-three-quarters": { + "body": "", + "width": 576 + }, + "bed": { + "body": "", + "width": 640 + }, + "bed-pulse": { + "body": "", + "width": 640 + }, + "beer-mug-empty": { + "body": "" + }, + "bell": { + "body": "", + "width": 448 + }, + "bell-concierge": { + "body": "" + }, + "bell-slash": { + "body": "", + "width": 640 + }, + "bezier-curve": { + "body": "", + "width": 640 + }, + "bicycle": { + "body": "", + "width": 640 + }, + "binoculars": { + "body": "" + }, + "biohazard": { + "body": "", + "width": 576 + }, + "bitcoin-sign": { + "body": "", + "width": 320 + }, + "blender": { + "body": "" + }, + "blender-phone": { + "body": "", + "width": 576 + }, + "blog": { + "body": "" + }, + "bold": { + "body": "", + "width": 384 + }, + "bolt": { + "body": "", + "width": 448 + }, + "bolt-lightning": { + "body": "", + "width": 384 + }, + "bomb": { + "body": "" + }, + "bone": { + "body": "", + "width": 576 + }, + "bong": { + "body": "", + "width": 448 + }, + "book": { + "body": "", + "width": 448 + }, + "book-atlas": { + "body": "", + "width": 448 + }, + "book-bible": { + "body": "", + "width": 448 + }, + "book-bookmark": { + "body": "", + "width": 448 + }, + "book-journal-whills": { + "body": "", + "width": 448 + }, + "book-medical": { + "body": "", + "width": 448 + }, + "book-open": { + "body": "", + "width": 576 + }, + "book-open-reader": { + "body": "" + }, + "book-quran": { + "body": "", + "width": 448 + }, + "book-skull": { + "body": "", + "width": 448 + }, + "book-tanakh": { + "body": "", + "width": 448 + }, + "bookmark": { + "body": "", + "width": 384 + }, + "border-all": { + "body": "", + "width": 448 + }, + "border-none": { + "body": "", + "width": 448 + }, + "border-top-left": { + "body": "", + "width": 448 + }, + "bore-hole": { + "body": "" + }, + "bottle-droplet": { + "body": "", + "width": 320 + }, + "bottle-water": { + "body": "", + "width": 320 + }, + "bowl-food": { + "body": "" + }, + "bowl-rice": { + "body": "" + }, + "bowling-ball": { + "body": "" + }, + "box": { + "body": "", + "width": 448 + }, + "box-archive": { + "body": "" + }, + "box-open": { + "body": "", + "width": 640 + }, + "box-tissue": { + "body": "" + }, + "boxes-packing": { + "body": "", + "width": 640 + }, + "boxes-stacked": { + "body": "", + "width": 576 + }, + "braille": { + "body": "", + "width": 640 + }, + "brain": { + "body": "" + }, + "brazilian-real-sign": { + "body": "" + }, + "bread-slice": { + "body": "" + }, + "bridge": { + "body": "", + "width": 576 + }, + "bridge-circle-check": { + "body": "", + "width": 640 + }, + "bridge-circle-exclamation": { + "body": "", + "width": 640 + }, + "bridge-circle-xmark": { + "body": "", + "width": 640 + }, + "bridge-lock": { + "body": "", + "width": 640 + }, + "bridge-water": { + "body": "", + "width": 576 + }, + "briefcase": { + "body": "" + }, + "briefcase-medical": { + "body": "" + }, + "broom": { + "body": "", + "width": 576 + }, + "broom-ball": { + "body": "", + "width": 576 + }, + "brush": { + "body": "", + "width": 384 + }, + "bucket": { + "body": "", + "width": 448 + }, + "bug": { + "body": "" + }, + "bug-slash": { + "body": "", + "width": 640 + }, + "bugs": { + "body": "", + "width": 576 + }, + "building": { + "body": "", + "width": 384 + }, + "building-circle-arrow-right": { + "body": "", + "width": 640 + }, + "building-circle-check": { + "body": "", + "width": 640 + }, + "building-circle-exclamation": { + "body": "", + "width": 640 + }, + "building-circle-xmark": { + "body": "", + "width": 640 + }, + "building-columns": { + "body": "" + }, + "building-flag": { + "body": "", + "width": 640 + }, + "building-lock": { + "body": "", + "width": 576 + }, + "building-ngo": { + "body": "", + "width": 384 + }, + "building-shield": { + "body": "", + "width": 576 + }, + "building-un": { + "body": "", + "width": 384 + }, + "building-user": { + "body": "", + "width": 640 + }, + "building-wheat": { + "body": "", + "width": 640 + }, + "bullhorn": { + "body": "" + }, + "bullseye": { + "body": "" + }, + "burger": { + "body": "" + }, + "burst": { + "body": "" + }, + "bus": { + "body": "", + "width": 576 + }, + "bus-simple": { + "body": "", + "width": 448 + }, + "business-time": { + "body": "", + "width": 640 + }, + "c": { + "body": "", + "width": 384 + }, + "cable-car": { + "body": "" + }, + "cake-candles": { + "body": "", + "width": 448 + }, + "calculator": { + "body": "", + "width": 384 + }, + "calendar": { + "body": "", + "width": 448 + }, + "calendar-check": { + "body": "", + "width": 448 + }, + "calendar-day": { + "body": "", + "width": 448 + }, + "calendar-days": { + "body": "", + "width": 448 + }, + "calendar-minus": { + "body": "" + }, + "calendar-plus": { + "body": "" + }, + "calendar-week": { + "body": "", + "width": 448 + }, + "calendar-xmark": { + "body": "" + }, + "camera": { + "body": "" + }, + "camera-retro": { + "body": "" + }, + "camera-rotate": { + "body": "", + "width": 640 + }, + "campground": { + "body": "", + "width": 576 + }, + "candy-cane": { + "body": "" + }, + "cannabis": { + "body": "" + }, + "capsules": { + "body": "", + "width": 576 + }, + "car": { + "body": "" + }, + "car-battery": { + "body": "" + }, + "car-burst": { + "body": "", + "width": 640 + }, + "car-crash": { + "body": "", + "width": 640, + "hidden": true + }, + "car-on": { + "body": "" + }, + "car-rear": { + "body": "" + }, + "car-side": { + "body": "", + "width": 640 + }, + "car-tunnel": { + "body": "" + }, + "caravan": { + "body": "", + "width": 640 + }, + "caret-down": { + "body": "", + "width": 320 + }, + "caret-left": { + "body": "", + "width": 256 + }, + "caret-right": { + "body": "", + "width": 256 + }, + "caret-up": { + "body": "", + "width": 320 + }, + "carrot": { + "body": "" + }, + "cart-arrow-down": { + "body": "", + "width": 576 + }, + "cart-flatbed": { + "body": "", + "width": 640 + }, + "cart-flatbed-suitcase": { + "body": "", + "width": 640 + }, + "cart-plus": { + "body": "", + "width": 576 + }, + "cart-shopping": { + "body": "", + "width": 576 + }, + "cash-register": { + "body": "" + }, + "cat": { + "body": "", + "width": 576 + }, + "cedi-sign": { + "body": "", + "width": 384 + }, + "cent-sign": { + "body": "", + "width": 384 + }, + "certificate": { + "body": "" + }, + "chair": { + "body": "", + "width": 448 + }, + "chalkboard": { + "body": "", + "width": 576 + }, + "chalkboard-user": { + "body": "", + "width": 640 + }, + "champagne-glasses": { + "body": "", + "width": 640 + }, + "charging-station": { + "body": "", + "width": 576 + }, + "chart-area": { + "body": "" + }, + "chart-bar": { + "body": "" + }, + "chart-column": { + "body": "" + }, + "chart-gantt": { + "body": "" + }, + "chart-line": { + "body": "" + }, + "chart-pie": { + "body": "", + "width": 576 + }, + "chart-simple": { + "body": "", + "width": 448 + }, + "check": { + "body": "", + "width": 448 + }, + "check-double": { + "body": "", + "width": 448 + }, + "check-to-slot": { + "body": "", + "width": 576 + }, + "cheese": { + "body": "" + }, + "chess": { + "body": "" + }, + "chess-bishop": { + "body": "", + "width": 320 + }, + "chess-board": { + "body": "", + "width": 448 + }, + "chess-king": { + "body": "", + "width": 448 + }, + "chess-knight": { + "body": "", + "width": 448 + }, + "chess-pawn": { + "body": "", + "width": 320 + }, + "chess-queen": { + "body": "" + }, + "chess-rook": { + "body": "", + "width": 448 + }, + "chevron-down": { + "body": "" + }, + "chevron-left": { + "body": "", + "width": 320 + }, + "chevron-right": { + "body": "", + "width": 320 + }, + "chevron-up": { + "body": "" + }, + "child": { + "body": "", + "width": 320 + }, + "child-combatant": { + "body": "", + "width": 576 + }, + "child-dress": { + "body": "", + "width": 320 + }, + "child-reaching": { + "body": "", + "width": 384 + }, + "children": { + "body": "", + "width": 640 + }, + "church": { + "body": "", + "width": 640 + }, + "circle": { + "body": "" + }, + "circle-arrow-down": { + "body": "" + }, + "circle-arrow-left": { + "body": "" + }, + "circle-arrow-right": { + "body": "" + }, + "circle-arrow-up": { + "body": "" + }, + "circle-check": { + "body": "" + }, + "circle-chevron-down": { + "body": "" + }, + "circle-chevron-left": { + "body": "" + }, + "circle-chevron-right": { + "body": "" + }, + "circle-chevron-up": { + "body": "" + }, + "circle-dollar-to-slot": { + "body": "" + }, + "circle-dot": { + "body": "" + }, + "circle-down": { + "body": "" + }, + "circle-exclamation": { + "body": "" + }, + "circle-h": { + "body": "" + }, + "circle-half-stroke": { + "body": "" + }, + "circle-info": { + "body": "" + }, + "circle-left": { + "body": "" + }, + "circle-minus": { + "body": "" + }, + "circle-nodes": { + "body": "" + }, + "circle-notch": { + "body": "" + }, + "circle-pause": { + "body": "" + }, + "circle-play": { + "body": "" + }, + "circle-plus": { + "body": "" + }, + "circle-question": { + "body": "" + }, + "circle-radiation": { + "body": "" + }, + "circle-right": { + "body": "" + }, + "circle-stop": { + "body": "" + }, + "circle-up": { + "body": "" + }, + "circle-user": { + "body": "" + }, + "circle-xmark": { + "body": "" + }, + "city": { + "body": "", + "width": 640 + }, + "clapperboard": { + "body": "" + }, + "clipboard": { + "body": "", + "width": 384 + }, + "clipboard-check": { + "body": "", + "width": 384 + }, + "clipboard-list": { + "body": "", + "width": 384 + }, + "clipboard-question": { + "body": "", + "width": 384 + }, + "clipboard-user": { + "body": "", + "width": 384 + }, + "clock": { + "body": "" + }, + "clock-rotate-left": { + "body": "" + }, + "clone": { + "body": "" + }, + "closed-captioning": { + "body": "", + "width": 576 + }, + "cloud": { + "body": "", + "width": 640 + }, + "cloud-arrow-down": { + "body": "", + "width": 640 + }, + "cloud-arrow-up": { + "body": "", + "width": 640 + }, + "cloud-bolt": { + "body": "" + }, + "cloud-meatball": { + "body": "" + }, + "cloud-moon": { + "body": "", + "width": 640 + }, + "cloud-moon-rain": { + "body": "", + "width": 576 + }, + "cloud-rain": { + "body": "" + }, + "cloud-showers-heavy": { + "body": "" + }, + "cloud-showers-water": { + "body": "", + "width": 576 + }, + "cloud-sun": { + "body": "", + "width": 640 + }, + "cloud-sun-rain": { + "body": "", + "width": 640 + }, + "clover": { + "body": "", + "width": 448 + }, + "code": { + "body": "", + "width": 640 + }, + "code-branch": { + "body": "", + "width": 448 + }, + "code-commit": { + "body": "", + "width": 640 + }, + "code-compare": { + "body": "" + }, + "code-fork": { + "body": "", + "width": 448 + }, + "code-merge": { + "body": "", + "width": 448 + }, + "code-pull-request": { + "body": "" + }, + "coins": { + "body": "" + }, + "colon-sign": { + "body": "", + "width": 384 + }, + "comment": { + "body": "" + }, + "comment-dollar": { + "body": "" + }, + "comment-dots": { + "body": "" + }, + "comment-medical": { + "body": "" + }, + "comment-slash": { + "body": "", + "width": 640 + }, + "comment-sms": { + "body": "" + }, + "comments": { + "body": "", + "width": 640 + }, + "comments-dollar": { + "body": "", + "width": 640 + }, + "compact-disc": { + "body": "" + }, + "compass": { + "body": "" + }, + "compass-drafting": { + "body": "" + }, + "compress": { + "body": "", + "width": 448 + }, + "computer": { + "body": "", + "width": 640 + }, + "computer-mouse": { + "body": "", + "width": 384 + }, + "cookie": { + "body": "" + }, + "cookie-bite": { + "body": "" + }, + "copy": { + "body": "", + "width": 448 + }, + "copyright": { + "body": "" + }, + "couch": { + "body": "", + "width": 640 + }, + "cow": { + "body": "", + "width": 640 + }, + "credit-card": { + "body": "", + "width": 576 + }, + "crop": { + "body": "" + }, + "crop-simple": { + "body": "" + }, + "cross": { + "body": "", + "width": 384 + }, + "crosshairs": { + "body": "" + }, + "crow": { + "body": "", + "width": 640 + }, + "crown": { + "body": "", + "width": 576 + }, + "crutch": { + "body": "" + }, + "cruzeiro-sign": { + "body": "", + "width": 448 + }, + "cube": { + "body": "" + }, + "cubes": { + "body": "", + "width": 576 + }, + "cubes-stacked": { + "body": "", + "width": 448 + }, + "d": { + "body": "", + "width": 384 + }, + "database": { + "body": "", + "width": 448 + }, + "delete-left": { + "body": "", + "width": 576 + }, + "democrat": { + "body": "", + "width": 640 + }, + "desktop": { + "body": "", + "width": 576 + }, + "dharmachakra": { + "body": "" + }, + "diagram-next": { + "body": "" + }, + "diagram-predecessor": { + "body": "" + }, + "diagram-project": { + "body": "", + "width": 576 + }, + "diagram-successor": { + "body": "" + }, + "diamond": { + "body": "" + }, + "diamond-turn-right": { + "body": "" + }, + "dice": { + "body": "", + "width": 640 + }, + "dice-d20": { + "body": "" + }, + "dice-d6": { + "body": "", + "width": 448 + }, + "dice-five": { + "body": "", + "width": 448 + }, + "dice-four": { + "body": "", + "width": 448 + }, + "dice-one": { + "body": "", + "width": 448 + }, + "dice-six": { + "body": "", + "width": 448 + }, + "dice-three": { + "body": "", + "width": 448 + }, + "dice-two": { + "body": "", + "width": 448 + }, + "disease": { + "body": "" + }, + "display": { + "body": "", + "width": 576 + }, + "divide": { + "body": "", + "width": 448 + }, + "dna": { + "body": "", + "width": 448 + }, + "dog": { + "body": "", + "width": 576 + }, + "dollar-sign": { + "body": "", + "width": 320 + }, + "dolly": { + "body": "", + "width": 576 + }, + "dong-sign": { + "body": "", + "width": 384 + }, + "door-closed": { + "body": "", + "width": 576 + }, + "door-open": { + "body": "", + "width": 576 + }, + "dove": { + "body": "" + }, + "down-left-and-up-right-to-center": { + "body": "" + }, + "down-long": { + "body": "", + "width": 320 + }, + "download": { + "body": "" + }, + "dragon": { + "body": "", + "width": 640 + }, + "draw-polygon": { + "body": "", + "width": 448 + }, + "droplet": { + "body": "", + "width": 384 + }, + "droplet-slash": { + "body": "", + "width": 640 + }, + "drum": { + "body": "" + }, + "drum-steelpan": { + "body": "", + "width": 576 + }, + "drumstick-bite": { + "body": "" + }, + "dumbbell": { + "body": "", + "width": 640 + }, + "dumpster": { + "body": "", + "width": 576 + }, + "dumpster-fire": { + "body": "", + "width": 640 + }, + "dungeon": { + "body": "" + }, + "e": { + "body": "", + "width": 320 + }, + "ear-deaf": { + "body": "" + }, + "ear-listen": { + "body": "" + }, + "earth-africa": { + "body": "" + }, + "earth-americas": { + "body": "" + }, + "earth-asia": { + "body": "" + }, + "earth-europe": { + "body": "" + }, + "earth-oceania": { + "body": "" + }, + "egg": { + "body": "", + "width": 384 + }, + "eject": { + "body": "", + "width": 448 + }, + "elevator": { + "body": "" + }, + "ellipsis": { + "body": "", + "width": 448 + }, + "ellipsis-vertical": { + "body": "", + "width": 128 + }, + "envelope": { + "body": "" + }, + "envelope-circle-check": { + "body": "", + "width": 640 + }, + "envelope-open": { + "body": "" + }, + "envelope-open-text": { + "body": "" + }, + "envelopes-bulk": { + "body": "", + "width": 640 + }, + "equals": { + "body": "", + "width": 448 + }, + "eraser": { + "body": "", + "width": 576 + }, + "ethernet": { + "body": "" + }, + "euro-sign": { + "body": "", + "width": 320 + }, + "exclamation": { + "body": "", + "width": 64 + }, + "expand": { + "body": "", + "width": 448 + }, + "explosion": { + "body": "", + "width": 576 + }, + "eye": { + "body": "", + "width": 576 + }, + "eye-dropper": { + "body": "" + }, + "eye-low-vision": { + "body": "", + "width": 640 + }, + "eye-slash": { + "body": "", + "width": 640 + }, + "f": { + "body": "", + "width": 320 + }, + "face-angry": { + "body": "" + }, + "face-dizzy": { + "body": "" + }, + "face-flushed": { + "body": "" + }, + "face-frown": { + "body": "" + }, + "face-frown-open": { + "body": "" + }, + "face-grimace": { + "body": "" + }, + "face-grin": { + "body": "" + }, + "face-grin-beam": { + "body": "" + }, + "face-grin-beam-sweat": { + "body": "" + }, + "face-grin-hearts": { + "body": "" + }, + "face-grin-squint": { + "body": "" + }, + "face-grin-squint-tears": { + "body": "" + }, + "face-grin-stars": { + "body": "" + }, + "face-grin-tears": { + "body": "", + "width": 640 + }, + "face-grin-tongue": { + "body": "" + }, + "face-grin-tongue-squint": { + "body": "" + }, + "face-grin-tongue-wink": { + "body": "" + }, + "face-grin-wide": { + "body": "" + }, + "face-grin-wink": { + "body": "" + }, + "face-kiss": { + "body": "" + }, + "face-kiss-beam": { + "body": "" + }, + "face-kiss-wink-heart": { + "body": "" + }, + "face-laugh": { + "body": "" + }, + "face-laugh-beam": { + "body": "" + }, + "face-laugh-squint": { + "body": "" + }, + "face-laugh-wink": { + "body": "" + }, + "face-meh": { + "body": "" + }, + "face-meh-blank": { + "body": "" + }, + "face-rolling-eyes": { + "body": "" + }, + "face-sad-cry": { + "body": "" + }, + "face-sad-tear": { + "body": "" + }, + "face-smile": { + "body": "" + }, + "face-smile-beam": { + "body": "" + }, + "face-smile-wink": { + "body": "" + }, + "face-surprise": { + "body": "" + }, + "face-tired": { + "body": "" + }, + "fan": { + "body": "" + }, + "faucet": { + "body": "" + }, + "faucet-drip": { + "body": "" + }, + "fax": { + "body": "" + }, + "feather": { + "body": "" + }, + "feather-pointed": { + "body": "" + }, + "ferry": { + "body": "", + "width": 576 + }, + "file": { + "body": "", + "width": 384 + }, + "file-arrow-down": { + "body": "", + "width": 384 + }, + "file-arrow-up": { + "body": "", + "width": 384 + }, + "file-audio": { + "body": "", + "width": 384 + }, + "file-circle-check": { + "body": "", + "width": 576 + }, + "file-circle-exclamation": { + "body": "", + "width": 576 + }, + "file-circle-minus": { + "body": "", + "width": 576 + }, + "file-circle-plus": { + "body": "", + "width": 576 + }, + "file-circle-question": { + "body": "", + "width": 576 + }, + "file-circle-xmark": { + "body": "", + "width": 576 + }, + "file-code": { + "body": "", + "width": 384 + }, + "file-contract": { + "body": "", + "width": 384 + }, + "file-csv": { + "body": "" + }, + "file-excel": { + "body": "", + "width": 384 + }, + "file-export": { + "body": "", + "width": 576 + }, + "file-image": { + "body": "", + "width": 384 + }, + "file-import": { + "body": "" + }, + "file-invoice": { + "body": "", + "width": 384 + }, + "file-invoice-dollar": { + "body": "", + "width": 384 + }, + "file-lines": { + "body": "", + "width": 384 + }, + "file-medical": { + "body": "", + "width": 384 + }, + "file-pdf": { + "body": "" + }, + "file-pen": { + "body": "", + "width": 576 + }, + "file-powerpoint": { + "body": "", + "width": 384 + }, + "file-prescription": { + "body": "", + "width": 384 + }, + "file-shield": { + "body": "", + "width": 576 + }, + "file-signature": { + "body": "", + "width": 576 + }, + "file-video": { + "body": "", + "width": 384 + }, + "file-waveform": { + "body": "", + "width": 448 + }, + "file-word": { + "body": "", + "width": 384 + }, + "file-zipper": { + "body": "", + "width": 384 + }, + "fill": { + "body": "" + }, + "fill-drip": { + "body": "", + "width": 576 + }, + "film": { + "body": "" + }, + "filter": { + "body": "" + }, + "filter-circle-dollar": { + "body": "", + "width": 576 + }, + "filter-circle-xmark": { + "body": "", + "width": 576 + }, + "fingerprint": { + "body": "" + }, + "fire": { + "body": "", + "width": 448 + }, + "fire-burner": { + "body": "", + "width": 640 + }, + "fire-extinguisher": { + "body": "" + }, + "fire-flame-curved": { + "body": "", + "width": 384 + }, + "fire-flame-simple": { + "body": "", + "width": 384 + }, + "fish": { + "body": "", + "width": 576 + }, + "fish-fins": { + "body": "", + "width": 576 + }, + "flag": { + "body": "", + "width": 448 + }, + "flag-checkered": { + "body": "", + "width": 448 + }, + "flag-usa": { + "body": "", + "width": 448 + }, + "flask": { + "body": "", + "width": 448 + }, + "flask-vial": { + "body": "", + "width": 640 + }, + "floppy-disk": { + "body": "", + "width": 448 + }, + "florin-sign": { + "body": "", + "width": 384 + }, + "folder": { + "body": "" + }, + "folder-closed": { + "body": "" + }, + "folder-minus": { + "body": "" + }, + "folder-open": { + "body": "", + "width": 576 + }, + "folder-plus": { + "body": "" + }, + "folder-tree": { + "body": "", + "width": 576 + }, + "font": { + "body": "", + "width": 448 + }, + "font-awesome": { + "body": "", + "width": 448 + }, + "football": { + "body": "" + }, + "forward": { + "body": "" + }, + "forward-fast": { + "body": "" + }, + "forward-step": { + "body": "", + "width": 320 + }, + "franc-sign": { + "body": "", + "width": 320 + }, + "frog": { + "body": "", + "width": 576 + }, + "futbol": { + "body": "" + }, + "g": { + "body": "", + "width": 448 + }, + "gamepad": { + "body": "", + "width": 640 + }, + "gas-pump": { + "body": "" + }, + "gauge": { + "body": "" + }, + "gauge-high": { + "body": "" + }, + "gauge-simple": { + "body": "" + }, + "gauge-simple-high": { + "body": "" + }, + "gavel": { + "body": "" + }, + "gear": { + "body": "" + }, + "gears": { + "body": "", + "width": 640 + }, + "gem": { + "body": "" + }, + "genderless": { + "body": "", + "width": 384 + }, + "ghost": { + "body": "", + "width": 384 + }, + "gift": { + "body": "" + }, + "gifts": { + "body": "", + "width": 640 + }, + "glass-water": { + "body": "", + "width": 384 + }, + "glass-water-droplet": { + "body": "", + "width": 384 + }, + "glasses": { + "body": "", + "width": 576 + }, + "globe": { + "body": "" + }, + "golf-ball-tee": { + "body": "", + "width": 384 + }, + "gopuram": { + "body": "" + }, + "graduation-cap": { + "body": "", + "width": 640 + }, + "greater-than": { + "body": "", + "width": 384 + }, + "greater-than-equal": { + "body": "", + "width": 448 + }, + "grip": { + "body": "", + "width": 448 + }, + "grip-lines": { + "body": "", + "width": 448 + }, + "grip-lines-vertical": { + "body": "", + "width": 192 + }, + "grip-vertical": { + "body": "", + "width": 320 + }, + "group-arrows-rotate": { + "body": "" + }, + "guarani-sign": { + "body": "", + "width": 384 + }, + "guitar": { + "body": "" + }, + "gun": { + "body": "", + "width": 576 + }, + "h": { + "body": "", + "width": 384 + }, + "hammer": { + "body": "", + "width": 576 + }, + "hamsa": { + "body": "" + }, + "hand": { + "body": "" + }, + "hand-back-fist": { + "body": "", + "width": 448 + }, + "hand-dots": { + "body": "" + }, + "hand-fist": { + "body": "", + "width": 448 + }, + "hand-holding": { + "body": "", + "width": 576 + }, + "hand-holding-dollar": { + "body": "", + "width": 576 + }, + "hand-holding-droplet": { + "body": "", + "width": 576 + }, + "hand-holding-hand": { + "body": "", + "width": 576 + }, + "hand-holding-heart": { + "body": "", + "width": 576 + }, + "hand-holding-medical": { + "body": "", + "width": 576 + }, + "hand-lizard": { + "body": "" + }, + "hand-middle-finger": { + "body": "", + "width": 448 + }, + "hand-peace": { + "body": "" + }, + "hand-point-down": { + "body": "", + "width": 384 + }, + "hand-point-left": { + "body": "" + }, + "hand-point-right": { + "body": "" + }, + "hand-point-up": { + "body": "", + "width": 384 + }, + "hand-pointer": { + "body": "", + "width": 448 + }, + "hand-scissors": { + "body": "" + }, + "hand-sparkles": { + "body": "", + "width": 640 + }, + "hand-spock": { + "body": "", + "width": 576 + }, + "handcuffs": { + "body": "", + "width": 640 + }, + "hands": { + "body": "", + "width": 576 + }, + "hands-asl-interpreting": { + "body": "", + "width": 640 + }, + "hands-bound": { + "body": "", + "width": 640 + }, + "hands-bubbles": { + "body": "", + "width": 576 + }, + "hands-clapping": { + "body": "" + }, + "hands-holding": { + "body": "", + "width": 640 + }, + "hands-holding-child": { + "body": "", + "width": 640 + }, + "hands-holding-circle": { + "body": "", + "width": 640 + }, + "hands-praying": { + "body": "", + "width": 640 + }, + "handshake": { + "body": "", + "width": 640 + }, + "handshake-angle": { + "body": "", + "width": 640 + }, + "handshake-simple": { + "body": "", + "width": 640 + }, + "handshake-simple-slash": { + "body": "", + "width": 640 + }, + "handshake-slash": { + "body": "", + "width": 640 + }, + "hanukiah": { + "body": "", + "width": 640 + }, + "hard-drive": { + "body": "" + }, + "hashtag": { + "body": "", + "width": 448 + }, + "hat-cowboy": { + "body": "", + "width": 640 + }, + "hat-cowboy-side": { + "body": "", + "width": 640 + }, + "hat-wizard": { + "body": "" + }, + "head-side-cough": { + "body": "", + "width": 640 + }, + "head-side-cough-slash": { + "body": "", + "width": 640 + }, + "head-side-mask": { + "body": "", + "width": 576 + }, + "head-side-virus": { + "body": "" + }, + "heading": { + "body": "", + "width": 448 + }, + "headphones": { + "body": "" + }, + "headphones-simple": { + "body": "" + }, + "headset": { + "body": "" + }, + "heart": { + "body": "" + }, + "heart-circle-bolt": { + "body": "", + "width": 576 + }, + "heart-circle-check": { + "body": "", + "width": 576 + }, + "heart-circle-exclamation": { + "body": "", + "width": 576 + }, + "heart-circle-minus": { + "body": "", + "width": 576 + }, + "heart-circle-plus": { + "body": "", + "width": 576 + }, + "heart-circle-xmark": { + "body": "", + "width": 576 + }, + "heart-crack": { + "body": "" + }, + "heart-pulse": { + "body": "" + }, + "helicopter": { + "body": "", + "width": 640 + }, + "helicopter-symbol": { + "body": "" + }, + "helmet-safety": { + "body": "", + "width": 576 + }, + "helmet-un": { + "body": "" + }, + "highlighter": { + "body": "", + "width": 576 + }, + "hill-avalanche": { + "body": "", + "width": 576 + }, + "hill-rockslide": { + "body": "", + "width": 576 + }, + "hippo": { + "body": "", + "width": 640 + }, + "hockey-puck": { + "body": "" + }, + "holly-berry": { + "body": "" + }, + "horse": { + "body": "", + "width": 576 + }, + "horse-head": { + "body": "", + "width": 640 + }, + "hospital": { + "body": "", + "width": 640 + }, + "hospital-user": { + "body": "", + "width": 576 + }, + "hot-tub-person": { + "body": "" + }, + "hotdog": { + "body": "" + }, + "hotel": { + "body": "" + }, + "hourglass": { + "body": "", + "width": 384 + }, + "hourglass-empty": { + "body": "", + "width": 384, + "hidden": true + }, + "hourglass-end": { + "body": "", + "width": 384 + }, + "hourglass-half": { + "body": "", + "width": 384 + }, + "hourglass-start": { + "body": "", + "width": 384 + }, + "house": { + "body": "", + "width": 576 + }, + "house-chimney": { + "body": "", + "width": 576 + }, + "house-chimney-crack": { + "body": "", + "width": 576 + }, + "house-chimney-medical": { + "body": "", + "width": 576 + }, + "house-chimney-user": { + "body": "", + "width": 576 + }, + "house-chimney-window": { + "body": "", + "width": 576 + }, + "house-circle-check": { + "body": "", + "width": 640 + }, + "house-circle-exclamation": { + "body": "", + "width": 640 + }, + "house-circle-xmark": { + "body": "", + "width": 640 + }, + "house-crack": { + "body": "", + "width": 576 + }, + "house-fire": { + "body": "", + "width": 640 + }, + "house-flag": { + "body": "", + "width": 640 + }, + "house-flood-water": { + "body": "", + "width": 576 + }, + "house-flood-water-circle-arrow-right": { + "body": "", + "width": 640 + }, + "house-laptop": { + "body": "", + "width": 640 + }, + "house-lock": { + "body": "", + "width": 640 + }, + "house-medical": { + "body": "", + "width": 576 + }, + "house-medical-circle-check": { + "body": "", + "width": 640 + }, + "house-medical-circle-exclamation": { + "body": "", + "width": 640 + }, + "house-medical-circle-xmark": { + "body": "", + "width": 640 + }, + "house-medical-flag": { + "body": "", + "width": 640 + }, + "house-signal": { + "body": "", + "width": 576 + }, + "house-tsunami": { + "body": "", + "width": 576 + }, + "house-user": { + "body": "", + "width": 576 + }, + "hryvnia-sign": { + "body": "", + "width": 384 + }, + "hurricane": { + "body": "", + "width": 384 + }, + "i": { + "body": "", + "width": 320 + }, + "i-cursor": { + "body": "", + "width": 256 + }, + "ice-cream": { + "body": "", + "width": 448 + }, + "icicles": { + "body": "" + }, + "icons": { + "body": "" + }, + "id-badge": { + "body": "", + "width": 384 + }, + "id-card": { + "body": "", + "width": 576 + }, + "id-card-clip": { + "body": "", + "width": 576 + }, + "igloo": { + "body": "", + "width": 576 + }, + "image": { + "body": "" + }, + "image-portrait": { + "body": "", + "width": 384 + }, + "images": { + "body": "", + "width": 576 + }, + "inbox": { + "body": "" + }, + "indent": { + "body": "", + "width": 448 + }, + "indian-rupee-sign": { + "body": "", + "width": 320 + }, + "industry": { + "body": "", + "width": 576 + }, + "infinity": { + "body": "", + "width": 640 + }, + "info": { + "body": "", + "width": 192 + }, + "italic": { + "body": "", + "width": 384 + }, + "j": { + "body": "", + "width": 320 + }, + "jar": { + "body": "", + "width": 320 + }, + "jar-wheat": { + "body": "", + "width": 320 + }, + "jedi": { + "body": "", + "width": 576 + }, + "jet-fighter": { + "body": "", + "width": 640 + }, + "jet-fighter-up": { + "body": "" + }, + "joint": { + "body": "", + "width": 640 + }, + "jug-detergent": { + "body": "", + "width": 384 + }, + "k": { + "body": "", + "width": 320 + }, + "kaaba": { + "body": "", + "width": 576 + }, + "key": { + "body": "" + }, + "keyboard": { + "body": "", + "width": 576 + }, + "khanda": { + "body": "" + }, + "kip-sign": { + "body": "", + "width": 384 + }, + "kit-medical": { + "body": "", + "width": 576 + }, + "kitchen-set": { + "body": "", + "width": 576 + }, + "kiwi-bird": { + "body": "", + "width": 576 + }, + "l": { + "body": "", + "width": 320 + }, + "land-mine-on": { + "body": "", + "width": 640 + }, + "landmark": { + "body": "" + }, + "landmark-dome": { + "body": "" + }, + "landmark-flag": { + "body": "" + }, + "language": { + "body": "", + "width": 640 + }, + "laptop": { + "body": "", + "width": 640 + }, + "laptop-code": { + "body": "", + "width": 640 + }, + "laptop-file": { + "body": "", + "width": 640 + }, + "laptop-medical": { + "body": "", + "width": 640 + }, + "lari-sign": { + "body": "", + "width": 384 + }, + "layer-group": { + "body": "", + "width": 576 + }, + "leaf": { + "body": "" + }, + "left-long": { + "body": "" + }, + "left-right": { + "body": "" + }, + "lemon": { + "body": "", + "width": 448 + }, + "less-than": { + "body": "", + "width": 384 + }, + "less-than-equal": { + "body": "", + "width": 448 + }, + "life-ring": { + "body": "" + }, + "lightbulb": { + "body": "", + "width": 384 + }, + "lines-leaning": { + "body": "", + "width": 384 + }, + "link": { + "body": "", + "width": 640 + }, + "link-slash": { + "body": "", + "width": 640 + }, + "lira-sign": { + "body": "", + "width": 320 + }, + "list": { + "body": "" + }, + "list-check": { + "body": "" + }, + "list-ol": { + "body": "" + }, + "list-ul": { + "body": "" + }, + "litecoin-sign": { + "body": "", + "width": 384 + }, + "location-arrow": { + "body": "", + "width": 448 + }, + "location-crosshairs": { + "body": "" + }, + "location-dot": { + "body": "", + "width": 384 + }, + "location-pin": { + "body": "", + "width": 384 + }, + "location-pin-lock": { + "body": "" + }, + "lock": { + "body": "", + "width": 448 + }, + "lock-open": { + "body": "", + "width": 576 + }, + "locust": { + "body": "", + "width": 576 + }, + "lungs": { + "body": "", + "width": 640 + }, + "lungs-virus": { + "body": "", + "width": 640 + }, + "m": { + "body": "", + "width": 448 + }, + "magnet": { + "body": "", + "width": 448 + }, + "magnifying-glass": { + "body": "" + }, + "magnifying-glass-arrow-right": { + "body": "" + }, + "magnifying-glass-chart": { + "body": "" + }, + "magnifying-glass-dollar": { + "body": "" + }, + "magnifying-glass-location": { + "body": "" + }, + "magnifying-glass-minus": { + "body": "" + }, + "magnifying-glass-plus": { + "body": "" + }, + "manat-sign": { + "body": "", + "width": 384 + }, + "map": { + "body": "", + "width": 576 + }, + "map-location": { + "body": "", + "width": 576 + }, + "map-location-dot": { + "body": "", + "width": 576 + }, + "map-pin": { + "body": "", + "width": 320 + }, + "marker": { + "body": "" + }, + "mars": { + "body": "", + "width": 448 + }, + "mars-and-venus": { + "body": "" + }, + "mars-and-venus-burst": { + "body": "", + "width": 640 + }, + "mars-double": { + "body": "", + "width": 640 + }, + "mars-stroke": { + "body": "" + }, + "mars-stroke-right": { + "body": "", + "width": 640 + }, + "mars-stroke-up": { + "body": "", + "width": 320 + }, + "martini-glass": { + "body": "" + }, + "martini-glass-citrus": { + "body": "", + "width": 576 + }, + "martini-glass-empty": { + "body": "" + }, + "mask": { + "body": "", + "width": 576 + }, + "mask-face": { + "body": "", + "width": 640 + }, + "mask-ventilator": { + "body": "", + "width": 640 + }, + "masks-theater": { + "body": "", + "width": 640 + }, + "mattress-pillow": { + "body": "", + "width": 640 + }, + "maximize": { + "body": "" + }, + "medal": { + "body": "" + }, + "memory": { + "body": "", + "width": 576 + }, + "menorah": { + "body": "", + "width": 640 + }, + "mercury": { + "body": "", + "width": 384 + }, + "message": { + "body": "" + }, + "meteor": { + "body": "" + }, + "microchip": { + "body": "" + }, + "microphone": { + "body": "", + "width": 384 + }, + "microphone-lines": { + "body": "", + "width": 384 + }, + "microphone-lines-slash": { + "body": "", + "width": 640 + }, + "microphone-slash": { + "body": "", + "width": 640 + }, + "microscope": { + "body": "" + }, + "mill-sign": { + "body": "", + "width": 384 + }, + "minimize": { + "body": "" + }, + "minus": { + "body": "", + "width": 448 + }, + "mitten": { + "body": "", + "width": 448 + }, + "mobile": { + "body": "", + "width": 384 + }, + "mobile-button": { + "body": "", + "width": 384 + }, + "mobile-retro": { + "body": "", + "width": 320 + }, + "mobile-screen": { + "body": "", + "width": 384 + }, + "mobile-screen-button": { + "body": "", + "width": 384 + }, + "money-bill": { + "body": "", + "width": 576 + }, + "money-bill-1": { + "body": "", + "width": 576 + }, + "money-bill-1-wave": { + "body": "", + "width": 576 + }, + "money-bill-transfer": { + "body": "", + "width": 640 + }, + "money-bill-trend-up": { + "body": "" + }, + "money-bill-wave": { + "body": "", + "width": 576 + }, + "money-bill-wheat": { + "body": "" + }, + "money-bills": { + "body": "", + "width": 640 + }, + "money-check": { + "body": "", + "width": 576 + }, + "money-check-dollar": { + "body": "", + "width": 576 + }, + "monument": { + "body": "", + "width": 384 + }, + "moon": { + "body": "", + "width": 384 + }, + "mortar-pestle": { + "body": "" + }, + "mosque": { + "body": "", + "width": 640 + }, + "mosquito": { + "body": "", + "width": 640 + }, + "mosquito-net": { + "body": "", + "width": 640 + }, + "motorcycle": { + "body": "", + "width": 640 + }, + "mound": { + "body": "", + "width": 576 + }, + "mountain": { + "body": "" + }, + "mountain-city": { + "body": "", + "width": 640 + }, + "mountain-sun": { + "body": "", + "width": 640 + }, + "mug-hot": { + "body": "" + }, + "mug-saucer": { + "body": "", + "width": 640 + }, + "music": { + "body": "" + }, + "n": { + "body": "", + "width": 384 + }, + "naira-sign": { + "body": "", + "width": 448 + }, + "network-wired": { + "body": "", + "width": 640 + }, + "neuter": { + "body": "", + "width": 384 + }, + "newspaper": { + "body": "" + }, + "not-equal": { + "body": "", + "width": 448 + }, + "notdef": { + "body": "", + "width": 384 + }, + "note-sticky": { + "body": "", + "width": 448 + }, + "notes-medical": { + "body": "" + }, + "o": { + "body": "", + "width": 448 + }, + "object-group": { + "body": "", + "width": 576 + }, + "object-ungroup": { + "body": "", + "width": 640 + }, + "oil-can": { + "body": "", + "width": 640 + }, + "oil-well": { + "body": "", + "width": 576 + }, + "om": { + "body": "" + }, + "otter": { + "body": "", + "width": 640 + }, + "outdent": { + "body": "", + "width": 448 + }, + "p": { + "body": "", + "width": 320 + }, + "pager": { + "body": "" + }, + "paint-roller": { + "body": "" + }, + "paintbrush": { + "body": "", + "width": 576 + }, + "palette": { + "body": "" + }, + "pallet": { + "body": "", + "width": 640 + }, + "panorama": { + "body": "", + "width": 640 + }, + "paper-plane": { + "body": "" + }, + "paperclip": { + "body": "", + "width": 448 + }, + "parachute-box": { + "body": "" + }, + "paragraph": { + "body": "", + "width": 448 + }, + "passport": { + "body": "", + "width": 448 + }, + "paste": { + "body": "" + }, + "pause": { + "body": "", + "width": 320 + }, + "paw": { + "body": "" + }, + "peace": { + "body": "" + }, + "pen": { + "body": "" + }, + "pen-clip": { + "body": "" + }, + "pen-fancy": { + "body": "" + }, + "pen-nib": { + "body": "" + }, + "pen-ruler": { + "body": "" + }, + "pen-to-square": { + "body": "" + }, + "pencil": { + "body": "" + }, + "people-arrows": { + "body": "", + "width": 640 + }, + "people-arrows-left-right": { + "body": "", + "width": 576, + "hidden": true + }, + "people-carry-box": { + "body": "", + "width": 640 + }, + "people-group": { + "body": "", + "width": 640 + }, + "people-line": { + "body": "", + "width": 640 + }, + "people-pulling": { + "body": "", + "width": 576 + }, + "people-robbery": { + "body": "", + "width": 576 + }, + "people-roof": { + "body": "", + "width": 640 + }, + "pepper-hot": { + "body": "" + }, + "percent": { + "body": "", + "width": 384 + }, + "person": { + "body": "", + "width": 320 + }, + "person-arrow-down-to-line": { + "body": "", + "width": 640 + }, + "person-arrow-up-from-line": { + "body": "", + "width": 640 + }, + "person-biking": { + "body": "", + "width": 640 + }, + "person-booth": { + "body": "", + "width": 576 + }, + "person-breastfeeding": { + "body": "", + "width": 448 + }, + "person-burst": { + "body": "", + "width": 640 + }, + "person-cane": { + "body": "", + "width": 448 + }, + "person-chalkboard": { + "body": "", + "width": 640 + }, + "person-circle-check": { + "body": "", + "width": 576 + }, + "person-circle-exclamation": { + "body": "", + "width": 576 + }, + "person-circle-minus": { + "body": "", + "width": 576 + }, + "person-circle-plus": { + "body": "", + "width": 576 + }, + "person-circle-question": { + "body": "", + "width": 576 + }, + "person-circle-xmark": { + "body": "", + "width": 576 + }, + "person-digging": { + "body": "", + "width": 576 + }, + "person-dots-from-line": { + "body": "", + "width": 576 + }, + "person-dress": { + "body": "", + "width": 320 + }, + "person-dress-burst": { + "body": "", + "width": 640 + }, + "person-drowning": { + "body": "", + "width": 576 + }, + "person-falling": { + "body": "" + }, + "person-falling-burst": { + "body": "", + "width": 640 + }, + "person-half-dress": { + "body": "", + "width": 320 + }, + "person-harassing": { + "body": "", + "width": 576 + }, + "person-hiking": { + "body": "", + "width": 384 + }, + "person-military-pointing": { + "body": "", + "width": 576 + }, + "person-military-rifle": { + "body": "" + }, + "person-military-to-person": { + "body": "" + }, + "person-praying": { + "body": "", + "width": 448 + }, + "person-pregnant": { + "body": "", + "width": 384 + }, + "person-rays": { + "body": "" + }, + "person-rifle": { + "body": "", + "width": 576 + }, + "person-running": { + "body": "", + "width": 448 + }, + "person-shelter": { + "body": "" + }, + "person-skating": { + "body": "", + "width": 448 + }, + "person-skiing": { + "body": "" + }, + "person-skiing-nordic": { + "body": "", + "width": 576 + }, + "person-snowboarding": { + "body": "" + }, + "person-swimming": { + "body": "", + "width": 576 + }, + "person-through-window": { + "body": "", + "width": 640 + }, + "person-walking": { + "body": "", + "width": 320 + }, + "person-walking-arrow-loop-left": { + "body": "", + "width": 640 + }, + "person-walking-arrow-right": { + "body": "", + "width": 640 + }, + "person-walking-dashed-line-arrow-right": { + "body": "", + "width": 640 + }, + "person-walking-luggage": { + "body": "", + "width": 576 + }, + "person-walking-with-cane": { + "body": "" + }, + "peseta-sign": { + "body": "", + "width": 384 + }, + "peso-sign": { + "body": "", + "width": 384 + }, + "phone": { + "body": "" + }, + "phone-flip": { + "body": "" + }, + "phone-slash": { + "body": "", + "width": 640 + }, + "phone-volume": { + "body": "" + }, + "photo-film": { + "body": "", + "width": 640 + }, + "piggy-bank": { + "body": "", + "width": 576 + }, + "pills": { + "body": "", + "width": 576 + }, + "pizza-slice": { + "body": "" + }, + "place-of-worship": { + "body": "", + "width": 640 + }, + "plane": { + "body": "", + "width": 576 + }, + "plane-arrival": { + "body": "", + "width": 640 + }, + "plane-circle-check": { + "body": "", + "width": 640 + }, + "plane-circle-exclamation": { + "body": "", + "width": 640 + }, + "plane-circle-xmark": { + "body": "", + "width": 640 + }, + "plane-departure": { + "body": "", + "width": 640 + }, + "plane-lock": { + "body": "", + "width": 640 + }, + "plane-slash": { + "body": "", + "width": 640 + }, + "plane-up": { + "body": "" + }, + "plant-wilt": { + "body": "" + }, + "plate-wheat": { + "body": "" + }, + "play": { + "body": "", + "width": 384 + }, + "plug": { + "body": "", + "width": 384 + }, + "plug-circle-bolt": { + "body": "", + "width": 576 + }, + "plug-circle-check": { + "body": "", + "width": 576 + }, + "plug-circle-exclamation": { + "body": "", + "width": 576 + }, + "plug-circle-minus": { + "body": "", + "width": 576 + }, + "plug-circle-plus": { + "body": "", + "width": 576 + }, + "plug-circle-xmark": { + "body": "", + "width": 576 + }, + "plus": { + "body": "", + "width": 448 + }, + "plus-minus": { + "body": "", + "width": 384 + }, + "podcast": { + "body": "", + "width": 448 + }, + "poo": { + "body": "" + }, + "poo-storm": { + "body": "", + "width": 448 + }, + "poop": { + "body": "" + }, + "power-off": { + "body": "" + }, + "prescription": { + "body": "", + "width": 448 + }, + "prescription-bottle": { + "body": "", + "width": 384 + }, + "prescription-bottle-medical": { + "body": "", + "width": 384 + }, + "print": { + "body": "" + }, + "pump-medical": { + "body": "", + "width": 448 + }, + "pump-soap": { + "body": "", + "width": 448 + }, + "puzzle-piece": { + "body": "" + }, + "q": { + "body": "", + "width": 448 + }, + "qrcode": { + "body": "", + "width": 448 + }, + "question": { + "body": "", + "width": 320 + }, + "quote-left": { + "body": "", + "width": 448 + }, + "quote-right": { + "body": "", + "width": 448 + }, + "r": { + "body": "", + "width": 320 + }, + "radiation": { + "body": "" + }, + "radio": { + "body": "" + }, + "rainbow": { + "body": "", + "width": 640 + }, + "ranking-star": { + "body": "", + "width": 640 + }, + "receipt": { + "body": "", + "width": 384 + }, + "record-vinyl": { + "body": "" + }, + "rectangle-ad": { + "body": "", + "width": 576 + }, + "rectangle-list": { + "body": "", + "width": 576 + }, + "rectangle-xmark": { + "body": "" + }, + "recycle": { + "body": "" + }, + "registered": { + "body": "" + }, + "repeat": { + "body": "" + }, + "reply": { + "body": "" + }, + "reply-all": { + "body": "", + "width": 576 + }, + "republican": { + "body": "", + "width": 640 + }, + "restroom": { + "body": "", + "width": 640 + }, + "retweet": { + "body": "", + "width": 576 + }, + "ribbon": { + "body": "", + "width": 448 + }, + "right-from-bracket": { + "body": "" + }, + "right-left": { + "body": "" + }, + "right-long": { + "body": "" + }, + "right-to-bracket": { + "body": "" + }, + "ring": { + "body": "" + }, + "road": { + "body": "", + "width": 576 + }, + "road-barrier": { + "body": "", + "width": 640 + }, + "road-bridge": { + "body": "", + "width": 640 + }, + "road-circle-check": { + "body": "", + "width": 640 + }, + "road-circle-exclamation": { + "body": "", + "width": 640 + }, + "road-circle-xmark": { + "body": "", + "width": 640 + }, + "road-lock": { + "body": "", + "width": 640 + }, + "road-spikes": { + "body": "", + "width": 640 + }, + "robot": { + "body": "", + "width": 640 + }, + "rocket": { + "body": "" + }, + "rotate": { + "body": "" + }, + "rotate-left": { + "body": "" + }, + "rotate-right": { + "body": "" + }, + "route": { + "body": "" + }, + "rss": { + "body": "", + "width": 448 + }, + "ruble-sign": { + "body": "", + "width": 384 + }, + "rug": { + "body": "", + "width": 640 + }, + "ruler": { + "body": "" + }, + "ruler-combined": { + "body": "" + }, + "ruler-horizontal": { + "body": "", + "width": 640 + }, + "ruler-vertical": { + "body": "", + "width": 256 + }, + "rupee-sign": { + "body": "", + "width": 448 + }, + "rupiah-sign": { + "body": "" + }, + "s": { + "body": "", + "width": 320 + }, + "sack-dollar": { + "body": "" + }, + "sack-xmark": { + "body": "" + }, + "sailboat": { + "body": "", + "width": 576 + }, + "satellite": { + "body": "" + }, + "satellite-dish": { + "body": "" + }, + "scale-balanced": { + "body": "", + "width": 640 + }, + "scale-unbalanced": { + "body": "", + "width": 640 + }, + "scale-unbalanced-flip": { + "body": "", + "width": 640 + }, + "school": { + "body": "", + "width": 640 + }, + "school-circle-check": { + "body": "", + "width": 640 + }, + "school-circle-exclamation": { + "body": "", + "width": 640 + }, + "school-circle-xmark": { + "body": "", + "width": 640 + }, + "school-flag": { + "body": "", + "width": 576 + }, + "school-lock": { + "body": "", + "width": 640 + }, + "scissors": { + "body": "" + }, + "screwdriver": { + "body": "" + }, + "screwdriver-wrench": { + "body": "" + }, + "scroll": { + "body": "", + "width": 576 + }, + "scroll-torah": { + "body": "", + "width": 640 + }, + "sd-card": { + "body": "", + "width": 384 + }, + "section": { + "body": "", + "width": 256 + }, + "seedling": { + "body": "" + }, + "server": { + "body": "" + }, + "shapes": { + "body": "" + }, + "share": { + "body": "" + }, + "share-from-square": { + "body": "", + "width": 576 + }, + "share-nodes": { + "body": "", + "width": 448 + }, + "sheet-plastic": { + "body": "", + "width": 384 + }, + "shekel-sign": { + "body": "", + "width": 448 + }, + "shield": { + "body": "" + }, + "shield-blank": { + "body": "", + "hidden": true + }, + "shield-cat": { + "body": "" + }, + "shield-dog": { + "body": "" + }, + "shield-halved": { + "body": "" + }, + "shield-heart": { + "body": "" + }, + "shield-virus": { + "body": "" + }, + "ship": { + "body": "", + "width": 576 + }, + "shirt": { + "body": "", + "width": 640 + }, + "shoe-prints": { + "body": "", + "width": 640 + }, + "shop": { + "body": "", + "width": 640 + }, + "shop-lock": { + "body": "", + "width": 640 + }, + "shop-slash": { + "body": "", + "width": 640 + }, + "shower": { + "body": "" + }, + "shrimp": { + "body": "" + }, + "shuffle": { + "body": "" + }, + "shuttle-space": { + "body": "", + "width": 640 + }, + "sign-hanging": { + "body": "" + }, + "signal": { + "body": "", + "width": 640 + }, + "signature": { + "body": "", + "width": 640 + }, + "signs-post": { + "body": "" + }, + "sim-card": { + "body": "", + "width": 384 + }, + "sink": { + "body": "" + }, + "sitemap": { + "body": "", + "width": 576 + }, + "skull": { + "body": "" + }, + "skull-crossbones": { + "body": "", + "width": 448 + }, + "slash": { + "body": "", + "width": 640 + }, + "sleigh": { + "body": "", + "width": 640 + }, + "sliders": { + "body": "" + }, + "smog": { + "body": "", + "width": 640 + }, + "smoking": { + "body": "", + "width": 640 + }, + "snowflake": { + "body": "", + "width": 448 + }, + "snowman": { + "body": "" + }, + "snowplow": { + "body": "", + "width": 640 + }, + "soap": { + "body": "" + }, + "socks": { + "body": "" + }, + "solar-panel": { + "body": "", + "width": 640 + }, + "sort": { + "body": "", + "width": 320 + }, + "sort-down": { + "body": "", + "width": 320 + }, + "sort-up": { + "body": "", + "width": 320 + }, + "spa": { + "body": "", + "width": 576 + }, + "spaghetti-monster-flying": { + "body": "", + "width": 640 + }, + "spell-check": { + "body": "", + "width": 576 + }, + "spider": { + "body": "" + }, + "spinner": { + "body": "" + }, + "splotch": { + "body": "" + }, + "spoon": { + "body": "" + }, + "spray-can": { + "body": "" + }, + "spray-can-sparkles": { + "body": "" + }, + "square": { + "body": "", + "width": 448 + }, + "square-arrow-up-right": { + "body": "", + "width": 448 + }, + "square-caret-down": { + "body": "", + "width": 448 + }, + "square-caret-left": { + "body": "", + "width": 448 + }, + "square-caret-right": { + "body": "", + "width": 448 + }, + "square-caret-up": { + "body": "", + "width": 448 + }, + "square-check": { + "body": "", + "width": 448 + }, + "square-envelope": { + "body": "", + "width": 448 + }, + "square-full": { + "body": "" + }, + "square-h": { + "body": "", + "width": 448 + }, + "square-minus": { + "body": "", + "width": 448 + }, + "square-nfi": { + "body": "", + "width": 448 + }, + "square-parking": { + "body": "", + "width": 448 + }, + "square-pen": { + "body": "", + "width": 448 + }, + "square-person-confined": { + "body": "", + "width": 448 + }, + "square-phone": { + "body": "", + "width": 448 + }, + "square-phone-flip": { + "body": "", + "width": 448 + }, + "square-plus": { + "body": "", + "width": 448 + }, + "square-poll-horizontal": { + "body": "", + "width": 448 + }, + "square-poll-vertical": { + "body": "", + "width": 448 + }, + "square-root-variable": { + "body": "", + "width": 576 + }, + "square-rss": { + "body": "", + "width": 448 + }, + "square-share-nodes": { + "body": "", + "width": 448 + }, + "square-up-right": { + "body": "", + "width": 448 + }, + "square-virus": { + "body": "", + "width": 448 + }, + "square-xmark": { + "body": "", + "width": 448 + }, + "staff-aesculapius": { + "body": "", + "width": 384, + "hidden": true + }, + "staff-snake": { + "body": "", + "width": 384 + }, + "stairs": { + "body": "", + "width": 576 + }, + "stamp": { + "body": "" + }, + "stapler": { + "body": "", + "width": 640 + }, + "star": { + "body": "", + "width": 576 + }, + "star-and-crescent": { + "body": "" + }, + "star-half": { + "body": "", + "width": 576 + }, + "star-half-stroke": { + "body": "", + "width": 640 + }, + "star-of-david": { + "body": "" + }, + "star-of-life": { + "body": "" + }, + "sterling-sign": { + "body": "", + "width": 320 + }, + "stethoscope": { + "body": "", + "width": 576 + }, + "stop": { + "body": "", + "width": 384 + }, + "stopwatch": { + "body": "", + "width": 448 + }, + "stopwatch-20": { + "body": "", + "width": 448 + }, + "store": { + "body": "", + "width": 576 + }, + "store-slash": { + "body": "", + "width": 640 + }, + "street-view": { + "body": "" + }, + "strikethrough": { + "body": "" + }, + "stroopwafel": { + "body": "" + }, + "subscript": { + "body": "" + }, + "suitcase": { + "body": "" + }, + "suitcase-medical": { + "body": "" + }, + "suitcase-rolling": { + "body": "", + "width": 384 + }, + "sun": { + "body": "" + }, + "sun-plant-wilt": { + "body": "", + "width": 640 + }, + "superscript": { + "body": "" + }, + "swatchbook": { + "body": "" + }, + "synagogue": { + "body": "", + "width": 640 + }, + "syringe": { + "body": "" + }, + "t": { + "body": "", + "width": 384 + }, + "table": { + "body": "" + }, + "table-cells": { + "body": "" + }, + "table-cells-large": { + "body": "" + }, + "table-columns": { + "body": "" + }, + "table-list": { + "body": "" + }, + "table-tennis-paddle-ball": { + "body": "", + "width": 640 + }, + "tablet": { + "body": "", + "width": 448 + }, + "tablet-button": { + "body": "", + "width": 448 + }, + "tablet-screen-button": { + "body": "", + "width": 448 + }, + "tablets": { + "body": "", + "width": 640 + }, + "tachograph-digital": { + "body": "", + "width": 640 + }, + "tag": { + "body": "", + "width": 448 + }, + "tags": { + "body": "" + }, + "tape": { + "body": "", + "width": 576 + }, + "tarp": { + "body": "", + "width": 576 + }, + "tarp-droplet": { + "body": "", + "width": 576 + }, + "taxi": { + "body": "" + }, + "teeth": { + "body": "", + "width": 576 + }, + "teeth-open": { + "body": "", + "width": 576 + }, + "temperature-arrow-down": { + "body": "", + "width": 576 + }, + "temperature-arrow-up": { + "body": "", + "width": 576 + }, + "temperature-empty": { + "body": "", + "width": 320 + }, + "temperature-full": { + "body": "", + "width": 320 + }, + "temperature-half": { + "body": "", + "width": 320 + }, + "temperature-high": { + "body": "" + }, + "temperature-low": { + "body": "" + }, + "temperature-quarter": { + "body": "", + "width": 320 + }, + "temperature-three-quarters": { + "body": "", + "width": 320 + }, + "tenge-sign": { + "body": "", + "width": 384 + }, + "tent": { + "body": "", + "width": 576 + }, + "tent-arrow-down-to-line": { + "body": "", + "width": 640 + }, + "tent-arrow-left-right": { + "body": "", + "width": 576 + }, + "tent-arrow-turn-left": { + "body": "", + "width": 576 + }, + "tent-arrows-down": { + "body": "", + "width": 576 + }, + "tents": { + "body": "", + "width": 640 + }, + "terminal": { + "body": "", + "width": 576 + }, + "text-height": { + "body": "", + "width": 576 + }, + "text-slash": { + "body": "", + "width": 640 + }, + "text-width": { + "body": "", + "width": 448 + }, + "thermometer": { + "body": "" + }, + "thumbs-down": { + "body": "" + }, + "thumbs-up": { + "body": "" + }, + "thumbtack": { + "body": "", + "width": 384 + }, + "ticket": { + "body": "", + "width": 576 + }, + "ticket-simple": { + "body": "", + "width": 576 + }, + "timeline": { + "body": "", + "width": 640 + }, + "toggle-off": { + "body": "", + "width": 576 + }, + "toggle-on": { + "body": "", + "width": 576 + }, + "toilet": { + "body": "", + "width": 448 + }, + "toilet-paper": { + "body": "", + "width": 640 + }, + "toilet-paper-slash": { + "body": "", + "width": 640 + }, + "toilet-portable": { + "body": "", + "width": 320 + }, + "toilets-portable": { + "body": "", + "width": 576 + }, + "toolbox": { + "body": "" + }, + "tooth": { + "body": "", + "width": 448 + }, + "torii-gate": { + "body": "" + }, + "tornado": { + "body": "", + "width": 448 + }, + "tower-broadcast": { + "body": "", + "width": 576 + }, + "tower-cell": { + "body": "", + "width": 576 + }, + "tower-observation": { + "body": "" + }, + "tractor": { + "body": "", + "width": 640 + }, + "trademark": { + "body": "", + "width": 640 + }, + "traffic-light": { + "body": "", + "width": 320 + }, + "trailer": { + "body": "", + "width": 640 + }, + "train": { + "body": "", + "width": 448 + }, + "train-subway": { + "body": "", + "width": 448 + }, + "train-tram": { + "body": "", + "width": 448 + }, + "transgender": { + "body": "" + }, + "trash": { + "body": "", + "width": 448 + }, + "trash-arrow-up": { + "body": "", + "width": 448 + }, + "trash-can": { + "body": "", + "width": 448 + }, + "trash-can-arrow-up": { + "body": "", + "width": 448 + }, + "tree": { + "body": "", + "width": 448 + }, + "tree-city": { + "body": "", + "width": 640 + }, + "triangle-exclamation": { + "body": "" + }, + "trophy": { + "body": "", + "width": 576 + }, + "trowel": { + "body": "" + }, + "trowel-bricks": { + "body": "" + }, + "truck": { + "body": "", + "width": 640 + }, + "truck-arrow-right": { + "body": "", + "width": 640 + }, + "truck-droplet": { + "body": "", + "width": 640 + }, + "truck-fast": { + "body": "", + "width": 640 + }, + "truck-field": { + "body": "", + "width": 640 + }, + "truck-field-un": { + "body": "", + "width": 640 + }, + "truck-front": { + "body": "" + }, + "truck-medical": { + "body": "", + "width": 640 + }, + "truck-monster": { + "body": "", + "width": 640 + }, + "truck-moving": { + "body": "", + "width": 640 + }, + "truck-pickup": { + "body": "", + "width": 640 + }, + "truck-plane": { + "body": "", + "width": 640 + }, + "truck-ramp-box": { + "body": "", + "width": 640 + }, + "tty": { + "body": "" + }, + "turkish-lira-sign": { + "body": "", + "width": 384 + }, + "turn-down": { + "body": "", + "width": 384 + }, + "turn-up": { + "body": "", + "width": 384 + }, + "tv": { + "body": "", + "width": 640 + }, + "u": { + "body": "", + "width": 384 + }, + "umbrella": { + "body": "", + "width": 576 + }, + "umbrella-beach": { + "body": "", + "width": 576 + }, + "underline": { + "body": "", + "width": 448 + }, + "universal-access": { + "body": "" + }, + "unlock": { + "body": "", + "width": 448 + }, + "unlock-keyhole": { + "body": "", + "width": 448 + }, + "up-down": { + "body": "", + "width": 256 + }, + "up-down-left-right": { + "body": "" + }, + "up-long": { + "body": "", + "width": 320 + }, + "up-right-and-down-left-from-center": { + "body": "" + }, + "up-right-from-square": { + "body": "" + }, + "upload": { + "body": "" + }, + "user": { + "body": "", + "width": 448 + }, + "user-astronaut": { + "body": "", + "width": 448 + }, + "user-check": { + "body": "", + "width": 640 + }, + "user-clock": { + "body": "", + "width": 640 + }, + "user-doctor": { + "body": "", + "width": 448 + }, + "user-gear": { + "body": "", + "width": 640 + }, + "user-graduate": { + "body": "", + "width": 448 + }, + "user-group": { + "body": "", + "width": 640 + }, + "user-injured": { + "body": "", + "width": 448 + }, + "user-large": { + "body": "" + }, + "user-large-slash": { + "body": "", + "width": 640 + }, + "user-lock": { + "body": "", + "width": 640 + }, + "user-minus": { + "body": "", + "width": 640 + }, + "user-ninja": { + "body": "", + "width": 448 + }, + "user-nurse": { + "body": "", + "width": 448 + }, + "user-pen": { + "body": "", + "width": 640 + }, + "user-plus": { + "body": "", + "width": 640 + }, + "user-secret": { + "body": "", + "width": 448 + }, + "user-shield": { + "body": "", + "width": 640 + }, + "user-slash": { + "body": "", + "width": 640 + }, + "user-tag": { + "body": "", + "width": 640 + }, + "user-tie": { + "body": "", + "width": 448 + }, + "user-xmark": { + "body": "", + "width": 640 + }, + "users": { + "body": "", + "width": 640 + }, + "users-between-lines": { + "body": "", + "width": 640 + }, + "users-gear": { + "body": "", + "width": 640 + }, + "users-line": { + "body": "", + "width": 640 + }, + "users-rays": { + "body": "", + "width": 640 + }, + "users-rectangle": { + "body": "", + "width": 640 + }, + "users-slash": { + "body": "", + "width": 640 + }, + "users-viewfinder": { + "body": "", + "width": 640 + }, + "utensils": { + "body": "", + "width": 448 + }, + "v": { + "body": "", + "width": 384 + }, + "van-shuttle": { + "body": "", + "width": 640 + }, + "vault": { + "body": "", + "width": 576 + }, + "vector-square": { + "body": "", + "width": 448 + }, + "venus": { + "body": "", + "width": 384 + }, + "venus-double": { + "body": "", + "width": 640 + }, + "venus-mars": { + "body": "", + "width": 640 + }, + "vest": { + "body": "", + "width": 448 + }, + "vest-patches": { + "body": "", + "width": 448 + }, + "vial": { + "body": "" + }, + "vial-circle-check": { + "body": "" + }, + "vial-virus": { + "body": "" + }, + "vials": { + "body": "" + }, + "video": { + "body": "", + "width": 576 + }, + "video-slash": { + "body": "", + "width": 640 + }, + "vihara": { + "body": "", + "width": 640 + }, + "virus": { + "body": "" + }, + "virus-covid": { + "body": "" + }, + "virus-covid-slash": { + "body": "", + "width": 640 + }, + "virus-slash": { + "body": "", + "width": 640 + }, + "viruses": { + "body": "", + "width": 640 + }, + "voicemail": { + "body": "", + "width": 640 + }, + "volcano": { + "body": "" + }, + "volleyball": { + "body": "" + }, + "volume-high": { + "body": "", + "width": 640 + }, + "volume-low": { + "body": "", + "width": 448 + }, + "volume-off": { + "body": "", + "width": 320 + }, + "volume-xmark": { + "body": "", + "width": 576 + }, + "vr-cardboard": { + "body": "", + "width": 640 + }, + "w": { + "body": "", + "width": 576 + }, + "walkie-talkie": { + "body": "", + "width": 384 + }, + "wallet": { + "body": "" + }, + "wand-magic": { + "body": "" + }, + "wand-magic-sparkles": { + "body": "", + "width": 576 + }, + "wand-sparkles": { + "body": "" + }, + "warehouse": { + "body": "", + "width": 640 + }, + "water": { + "body": "", + "width": 576 + }, + "water-ladder": { + "body": "", + "width": 576 + }, + "wave-square": { + "body": "", + "width": 640 + }, + "weight-hanging": { + "body": "" + }, + "weight-scale": { + "body": "" + }, + "wheat-awn": { + "body": "" + }, + "wheat-awn-circle-exclamation": { + "body": "", + "width": 640 + }, + "wheelchair": { + "body": "" + }, + "wheelchair-move": { + "body": "", + "width": 448 + }, + "whiskey-glass": { + "body": "" + }, + "wifi": { + "body": "", + "width": 640 + }, + "wind": { + "body": "" + }, + "window-maximize": { + "body": "" + }, + "window-minimize": { + "body": "" + }, + "window-restore": { + "body": "" + }, + "wine-bottle": { + "body": "" + }, + "wine-glass": { + "body": "", + "width": 320 + }, + "wine-glass-empty": { + "body": "", + "width": 320 + }, + "won-sign": { + "body": "" + }, + "worm": { + "body": "" + }, + "wrench": { + "body": "" + }, + "x": { + "body": "", + "width": 384 + }, + "x-ray": { + "body": "" + }, + "xmark": { + "body": "", + "width": 384 + }, + "xmarks-lines": { + "body": "", + "width": 640 + }, + "y": { + "body": "", + "width": 384 + }, + "yen-sign": { + "body": "", + "width": 320 + }, + "yin-yang": { + "body": "" + }, + "z": { + "body": "", + "width": 384 + } + }, + "aliases": { + "child-rifle": { + "parent": "child-combatant" + } + }, + "categories": { + "Accessibility": [ + "audio-description", + "braille", + "closed-captioning", + "phone-volume", + "tty", + "universal-access", + "wheelchair" + ], + "Alert": ["bell", "bell-slash", "exclamation", "radiation", "skull-crossbones"], + "Animals": [ + "cat", + "crow", + "dog", + "dove", + "dragon", + "feather", + "fish", + "frog", + "hippo", + "horse", + "horse-head", + "kiwi-bird", + "otter", + "paw", + "spider" + ], + "Arrows": [ + "angle-down", + "angle-left", + "angle-right", + "angle-up", + "arrow-down", + "arrow-left", + "arrow-right", + "arrow-up", + "caret-down", + "caret-left", + "caret-right", + "caret-up", + "cart-arrow-down", + "chart-line", + "chevron-down", + "chevron-left", + "chevron-right", + "chevron-up", + "download", + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer", + "location-arrow", + "play", + "recycle", + "reply", + "reply-all", + "retweet", + "share", + "sort", + "sort-down", + "sort-up", + "text-height", + "text-slash", + "text-width", + "upload" + ], + "Audio & Video": [ + "audio-description", + "backward", + "circle", + "closed-captioning", + "compress", + "eject", + "expand", + "file-audio", + "file-video", + "film", + "forward", + "headphones", + "microphone", + "microphone-slash", + "music", + "pause", + "phone-volume", + "play", + "podcast", + "rss", + "stop", + "tv", + "video", + "volume-off" + ], + "Automotive": [ + "bus", + "car", + "car-battery", + "car-side", + "caravan", + "charging-station", + "gas-pump", + "motorcycle", + "oil-can", + "taxi", + "trailer", + "truck", + "truck-monster", + "truck-pickup" + ], + "Autumn": [ + "campground", + "cloud-sun", + "drumstick-bite", + "mountain", + "tractor", + "tree", + "wind", + "wine-bottle" + ], + "Beverage": ["blender", "flask", "mug-hot", "wine-bottle", "wine-glass"], + "Buildings": [ + "archway", + "building", + "campground", + "church", + "city", + "dungeon", + "gopuram", + "hospital", + "hospital-user", + "hotel", + "igloo", + "industry", + "kaaba", + "landmark", + "monument", + "mosque", + "place-of-worship", + "school", + "store", + "synagogue", + "torii-gate", + "vihara", + "warehouse" + ], + "Business": [ + "address-book", + "address-card", + "book", + "briefcase", + "building", + "bullhorn", + "bullseye", + "business-time", + "calculator", + "calendar", + "certificate", + "chart-area", + "chart-bar", + "chart-line", + "chart-pie", + "city", + "clipboard", + "compass", + "copy", + "copyright", + "envelope", + "envelope-open", + "eraser", + "fax", + "file", + "folder", + "folder-minus", + "folder-open", + "folder-plus", + "glasses", + "globe", + "highlighter", + "industry", + "landmark", + "marker", + "paperclip", + "paste", + "pen", + "pen-fancy", + "pen-nib", + "percent", + "phone", + "phone-slash", + "phone-volume", + "print", + "registered", + "sitemap", + "socks", + "table", + "tag", + "tags", + "thumbtack", + "trademark", + "wallet" + ], + "Camping": [ + "binoculars", + "campground", + "caravan", + "compass", + "faucet", + "fire", + "frog", + "map", + "mountain", + "route", + "toilet-paper", + "trailer", + "tree" + ], + "Charity": [ + "dollar-sign", + "dove", + "gift", + "globe", + "hand-holding-heart", + "handshake", + "heart", + "leaf", + "parachute-box", + "piggy-bank", + "ribbon", + "seedling" + ], + "Chat": [ + "comment", + "comment-dots", + "comment-medical", + "comment-slash", + "comments", + "icons", + "phone", + "phone-slash", + "poo", + "quote-left", + "quote-right", + "video", + "video-slash" + ], + "Chess": [ + "chess", + "chess-bishop", + "chess-board", + "chess-king", + "chess-knight", + "chess-pawn", + "chess-queen", + "chess-rook", + "square-full" + ], + "Childhood": [ + "baby", + "baby-carriage", + "bath", + "cookie", + "cookie-bite", + "gamepad", + "ice-cream", + "mitten", + "robot", + "school", + "shapes", + "snowman" + ], + "Clothing": [ + "graduation-cap", + "hat-cowboy", + "hat-cowboy-side", + "hat-wizard", + "mitten", + "shoe-prints", + "socks", + "user-tie" + ], + "Code": [ + "barcode", + "bath", + "bug", + "code", + "code-branch", + "file", + "file-code", + "file-csv", + "filter", + "fire-extinguisher", + "folder", + "folder-open", + "keyboard", + "laptop-code", + "microchip", + "qrcode", + "sitemap", + "terminal", + "user-secret", + "window-maximize", + "window-minimize", + "window-restore" + ], + "Communication": [ + "address-book", + "address-card", + "at", + "bell", + "bell-slash", + "bullhorn", + "chalkboard", + "comment", + "comments", + "envelope", + "envelope-open", + "fax", + "inbox", + "language", + "microphone", + "microphone-slash", + "mobile", + "paper-plane", + "phone", + "phone-slash", + "phone-volume", + "rss", + "tty", + "voicemail", + "wifi" + ], + "Computers": [ + "compact-disc", + "database", + "desktop", + "download", + "ethernet", + "headphones", + "keyboard", + "laptop", + "memory", + "microchip", + "mobile", + "plug", + "power-off", + "print", + "satellite", + "satellite-dish", + "sd-card", + "server", + "sim-card", + "tablet", + "tv", + "upload" + ], + "Construction": [ + "brush", + "dumpster", + "hammer", + "paint-roller", + "ruler", + "ruler-combined", + "ruler-horizontal", + "ruler-vertical", + "screwdriver", + "toolbox", + "truck-pickup", + "wrench" + ], + "Currency": [ + "dollar-sign", + "euro-sign", + "lira-sign", + "money-bill", + "money-bill-wave", + "money-check", + "ruble-sign", + "rupee-sign", + "shekel-sign", + "won-sign", + "yen-sign" + ], + "Date & Time": [ + "bell", + "bell-slash", + "calendar", + "calendar-check", + "calendar-minus", + "calendar-plus", + "clock", + "hourglass", + "hourglass-end", + "hourglass-half", + "hourglass-start", + "stopwatch", + "stopwatch-20" + ], + "Design": [ + "bezier-curve", + "brush", + "clone", + "copy", + "crop", + "crosshairs", + "draw-polygon", + "eraser", + "eye", + "eye-dropper", + "eye-slash", + "fill", + "fill-drip", + "highlighter", + "icons", + "layer-group", + "marker", + "object-group", + "object-ungroup", + "paint-roller", + "palette", + "paste", + "pen", + "pen-fancy", + "pen-nib", + "ruler-combined", + "ruler-horizontal", + "ruler-vertical", + "splotch", + "spray-can", + "stamp", + "swatchbook", + "vector-square" + ], + "Editors": [ + "align-center", + "align-justify", + "align-left", + "align-right", + "bold", + "border-all", + "border-none", + "clipboard", + "clone", + "copy", + "eraser", + "file", + "font", + "glasses", + "heading", + "highlighter", + "i-cursor", + "icons", + "indent", + "italic", + "link", + "list", + "list-ol", + "list-ul", + "marker", + "outdent", + "paper-plane", + "paperclip", + "paragraph", + "paste", + "pen", + "pen-fancy", + "pen-nib", + "print", + "quote-left", + "quote-right", + "reply", + "reply-all", + "screwdriver", + "share", + "spell-check", + "strikethrough", + "subscript", + "superscript", + "table", + "text-height", + "text-slash", + "text-width", + "trash", + "underline", + "wrench" + ], + "Education": [ + "atom", + "award", + "bell", + "bell-slash", + "book-open", + "chalkboard", + "graduation-cap", + "laptop-code", + "microscope", + "music", + "school", + "shapes", + "user-graduate" + ], + "Energy": [ + "atom", + "battery-empty", + "battery-full", + "battery-half", + "battery-quarter", + "battery-three-quarters", + "charging-station", + "fan", + "fire", + "gas-pump", + "industry", + "leaf", + "lightbulb", + "plug", + "poop", + "power-off", + "radiation", + "seedling", + "solar-panel", + "sun", + "water", + "wind" + ], + "Files": [ + "clone", + "copy", + "file", + "file-audio", + "file-code", + "file-csv", + "file-excel", + "file-image", + "file-pdf", + "file-powerpoint", + "file-video", + "file-word", + "folder", + "folder-open", + "paste" + ], + "Finance": [ + "book", + "cash-register", + "chart-line", + "chart-pie", + "coins", + "comment-dollar", + "comments-dollar", + "credit-card", + "file-invoice", + "file-invoice-dollar", + "landmark", + "money-bill", + "money-bill-wave", + "money-check", + "piggy-bank", + "receipt", + "stamp", + "wallet" + ], + "Fitness": ["bicycle", "heart", "shoe-prints", "spa"], + "Food": [ + "bacon", + "bone", + "bread-slice", + "candy-cane", + "carrot", + "cheese", + "cloud-meatball", + "cookie", + "drumstick-bite", + "egg", + "fish", + "hotdog", + "ice-cream", + "lemon", + "pepper-hot", + "pizza-slice", + "seedling", + "stroopwafel" + ], + "Fruits & Vegetables": ["carrot", "leaf", "lemon", "pepper-hot", "seedling"], + "Games": [ + "chess", + "chess-bishop", + "chess-board", + "chess-king", + "chess-knight", + "chess-pawn", + "chess-queen", + "chess-rook", + "dice", + "dice-d20", + "dice-d6", + "dice-five", + "dice-four", + "dice-one", + "dice-six", + "dice-three", + "dice-two", + "gamepad", + "ghost", + "headset", + "heart", + "puzzle-piece" + ], + "Genders": [ + "genderless", + "mars", + "mars-double", + "mars-stroke", + "mercury", + "neuter", + "transgender", + "venus", + "venus-double", + "venus-mars" + ], + "Halloween": [ + "broom", + "cat", + "cloud-moon", + "crow", + "ghost", + "hat-wizard", + "mask", + "skull-crossbones", + "spider", + "toilet-paper" + ], + "Hands": [ + "hand-holding", + "hand-holding-heart", + "hand-holding-medical", + "hand-lizard", + "hand-middle-finger", + "hand-peace", + "hand-point-down", + "hand-point-left", + "hand-point-right", + "hand-point-up", + "hand-pointer", + "hand-scissors", + "hand-sparkles", + "hand-spock", + "hands", + "handshake", + "handshake-slash", + "thumbs-down", + "thumbs-up" + ], + "Health": ["heart", "hospital", "prescription", "stethoscope", "wheelchair"], + "Holiday": [ + "candy-cane", + "carrot", + "cookie-bite", + "gift", + "gifts", + "holly-berry", + "mug-hot", + "sleigh", + "snowman" + ], + "Hotel": [ + "baby-carriage", + "bath", + "bed", + "briefcase", + "car", + "dice", + "dice-five", + "door-closed", + "door-open", + "dumbbell", + "hotel", + "infinity", + "key", + "shower", + "smoking", + "snowflake", + "spa", + "suitcase", + "suitcase-rolling", + "tv", + "umbrella-beach", + "utensils", + "wheelchair", + "wifi" + ], + "Household": [ + "bath", + "bed", + "bell", + "blender", + "box-tissue", + "chair", + "couch", + "door-closed", + "door-open", + "dungeon", + "fan", + "faucet", + "house-user", + "lightbulb", + "plug", + "pump-soap", + "shower", + "sink", + "snowflake", + "soap", + "toilet-paper", + "toilet-paper-slash", + "tv" + ], + "Images": [ + "bolt", + "camera", + "camera-retro", + "chalkboard", + "clone", + "compress", + "expand", + "eye", + "eye-dropper", + "eye-slash", + "file-image", + "film", + "id-badge", + "id-card", + "image", + "images" + ], + "Interfaces": [ + "award", + "ban", + "barcode", + "bars", + "bell", + "bell-slash", + "blog", + "bug", + "bullhorn", + "bullseye", + "calculator", + "calendar", + "calendar-check", + "calendar-minus", + "calendar-plus", + "certificate", + "check", + "check-double", + "circle", + "clipboard", + "clone", + "cloud", + "copy", + "database", + "download", + "envelope", + "envelope-open", + "eraser", + "exclamation", + "eye", + "eye-slash", + "file", + "file-export", + "file-import", + "filter", + "fingerprint", + "flag", + "flag-checkered", + "folder", + "folder-open", + "glasses", + "grip-lines", + "grip-lines-vertical", + "grip-vertical", + "hashtag", + "heart", + "i-cursor", + "info", + "language", + "marker", + "medal", + "microphone", + "microphone-slash", + "minus", + "paste", + "pen", + "pen-fancy", + "plus", + "poo", + "qrcode", + "question", + "quote-left", + "quote-right", + "reply", + "reply-all", + "rss", + "screwdriver", + "share", + "signal", + "sitemap", + "sort", + "sort-down", + "sort-up", + "star", + "star-half", + "thumbs-down", + "thumbs-up", + "toggle-off", + "toggle-on", + "trash", + "trophy", + "upload", + "user", + "volume-off", + "wifi", + "wrench" + ], + "Logistics": [ + "box", + "clipboard-check", + "clipboard-list", + "dolly", + "pallet", + "truck", + "warehouse" + ], + "Maps": [ + "anchor", + "bath", + "bed", + "bell", + "bell-slash", + "bicycle", + "binoculars", + "bomb", + "book", + "bookmark", + "briefcase", + "building", + "car", + "crosshairs", + "dollar-sign", + "draw-polygon", + "eye", + "eye-slash", + "fire", + "fire-extinguisher", + "flag", + "flag-checkered", + "flask", + "gamepad", + "gavel", + "gift", + "globe", + "graduation-cap", + "heart", + "helicopter", + "hospital", + "image", + "images", + "industry", + "info", + "key", + "landmark", + "layer-group", + "leaf", + "lemon", + "life-ring", + "lightbulb", + "location-arrow", + "magnet", + "map", + "map-pin", + "money-bill", + "motorcycle", + "music", + "newspaper", + "paw", + "phone", + "phone-volume", + "plane", + "plane-slash", + "plug", + "plus", + "print", + "recycle", + "restroom", + "road", + "rocket", + "route", + "ship", + "shoe-prints", + "shower", + "snowplow", + "street-view", + "suitcase", + "tag", + "tags", + "taxi", + "thumbtack", + "traffic-light", + "train", + "tree", + "trophy", + "truck", + "tty", + "umbrella", + "utensils", + "vest", + "vest-patches", + "wheelchair", + "wifi", + "wine-glass", + "wrench" + ], + "Maritime": [ + "anchor", + "binoculars", + "compass", + "dharmachakra", + "frog", + "ship", + "skull-crossbones", + "water", + "wind" + ], + "Marketing": [ + "bullhorn", + "bullseye", + "comment-dollar", + "comments-dollar", + "envelope-open-text", + "lightbulb" + ], + "Mathematics": [ + "calculator", + "divide", + "equals", + "greater-than", + "greater-than-equal", + "infinity", + "less-than", + "less-than-equal", + "minus", + "not-equal", + "plus", + "subscript", + "superscript", + "wave-square" + ], + "Medical": [ + "bacteria", + "bacterium", + "biohazard", + "bone", + "bong", + "book-medical", + "brain", + "briefcase-medical", + "cannabis", + "capsules", + "comment-medical", + "crutch", + "disease", + "dna", + "file-medical", + "file-prescription", + "hand-holding-medical", + "head-side-cough", + "head-side-cough-slash", + "head-side-mask", + "head-side-virus", + "heart", + "hospital", + "hospital-user", + "joint", + "laptop-medical", + "lungs", + "lungs-virus", + "microscope", + "mortar-pestle", + "notes-medical", + "pager", + "pills", + "plus", + "poop", + "prescription", + "prescription-bottle", + "pump-medical", + "radiation", + "shield-virus", + "smoking", + "star-of-life", + "stethoscope", + "syringe", + "tablets", + "teeth", + "teeth-open", + "thermometer", + "tooth", + "user-nurse", + "vial", + "vials", + "virus", + "virus-slash", + "viruses", + "x-ray" + ], + "Moving": [ + "box-open", + "caravan", + "couch", + "dolly", + "route", + "suitcase", + "tape", + "trailer", + "truck-moving", + "wine-glass" + ], + "Music": [ + "compact-disc", + "drum", + "drum-steelpan", + "file-audio", + "guitar", + "headphones", + "microphone", + "microphone-slash", + "music", + "play", + "record-vinyl", + "volume-off" + ], + "Objects": [ + "anchor", + "award", + "baby-carriage", + "bath", + "bed", + "bell", + "bicycle", + "binoculars", + "blender", + "bomb", + "book", + "bookmark", + "briefcase", + "bug", + "building", + "bullhorn", + "bullseye", + "bus", + "calculator", + "calendar", + "camera", + "camera-retro", + "candy-cane", + "car", + "carrot", + "church", + "clipboard", + "cloud", + "compass", + "cookie", + "cookie-bite", + "copy", + "cube", + "cubes", + "dice", + "dice-d20", + "dice-d6", + "dice-five", + "dice-four", + "dice-one", + "dice-six", + "dice-three", + "dice-two", + "door-closed", + "door-open", + "drum", + "drum-steelpan", + "envelope", + "envelope-open", + "eraser", + "eye", + "eye-dropper", + "fax", + "feather", + "file", + "file-prescription", + "film", + "fire", + "fire-extinguisher", + "flag", + "flag-checkered", + "flask", + "futbol", + "gamepad", + "gavel", + "gem", + "gift", + "gifts", + "glasses", + "globe", + "graduation-cap", + "guitar", + "hat-wizard", + "headphones", + "headset", + "heart", + "helicopter", + "highlighter", + "holly-berry", + "hospital", + "hourglass", + "igloo", + "image", + "images", + "industry", + "key", + "keyboard", + "laptop", + "leaf", + "lemon", + "life-ring", + "lightbulb", + "lock", + "lock-open", + "magnet", + "map", + "map-pin", + "marker", + "medal", + "memory", + "microchip", + "microphone", + "mitten", + "mobile", + "money-bill", + "money-check", + "moon", + "motorcycle", + "mug-hot", + "newspaper", + "paper-plane", + "paperclip", + "paste", + "paw", + "pen", + "pen-fancy", + "pen-nib", + "phone", + "plane", + "plane-slash", + "plug", + "print", + "puzzle-piece", + "ring", + "road", + "rocket", + "ruler-combined", + "ruler-horizontal", + "ruler-vertical", + "satellite", + "satellite-dish", + "school", + "screwdriver", + "scroll", + "sd-card", + "shower", + "sim-card", + "skull-crossbones", + "sleigh", + "snowflake", + "snowplow", + "star", + "stopwatch", + "stopwatch-20", + "stroopwafel", + "suitcase", + "sun", + "tablet", + "tag", + "tags", + "taxi", + "thumbtack", + "toilet", + "toolbox", + "train", + "trash", + "tree", + "trophy", + "truck", + "tv", + "umbrella", + "unlock", + "utensils", + "wallet", + "wheelchair", + "wine-glass", + "wrench" + ], + "Payments & Shopping": [ + "bell", + "bookmark", + "bullhorn", + "camera", + "camera-retro", + "cart-arrow-down", + "cart-plus", + "certificate", + "credit-card", + "gem", + "gift", + "handshake", + "heart", + "key", + "money-check", + "receipt", + "star", + "tag", + "tags", + "thumbs-down", + "thumbs-up", + "trophy" + ], + "Pharmacy": [ + "book-medical", + "cannabis", + "capsules", + "disease", + "eye-dropper", + "file-medical", + "file-prescription", + "flask", + "joint", + "laptop-medical", + "mortar-pestle", + "notes-medical", + "pills", + "prescription", + "prescription-bottle", + "receipt", + "skull-crossbones", + "syringe", + "tablets", + "thermometer", + "vial", + "vials" + ], + "Political": [ + "award", + "bullhorn", + "check-double", + "democrat", + "dove", + "flag-usa", + "handshake", + "person-booth", + "piggy-bank", + "republican" + ], + "Religion": [ + "ankh", + "atom", + "bahai", + "church", + "cross", + "dharmachakra", + "dove", + "gopuram", + "hamsa", + "hanukiah", + "jedi", + "kaaba", + "khanda", + "menorah", + "mosque", + "om", + "peace", + "place-of-worship", + "star-and-crescent", + "star-of-david", + "synagogue", + "torii-gate", + "vihara", + "yin-yang" + ], + "Science": [ + "atom", + "biohazard", + "brain", + "capsules", + "clipboard-check", + "disease", + "dna", + "eye-dropper", + "filter", + "fire", + "flask", + "frog", + "magnet", + "microscope", + "mortar-pestle", + "pills", + "prescription-bottle", + "radiation", + "seedling", + "skull-crossbones", + "syringe", + "tablets", + "temperature-high", + "temperature-low", + "vial", + "vials" + ], + "Science Fiction": [ + "atom", + "globe", + "hand-spock", + "jedi", + "meteor", + "moon", + "robot", + "rocket", + "satellite", + "satellite-dish", + "user-astronaut" + ], + "Security": [ + "ban", + "bug", + "door-closed", + "door-open", + "dungeon", + "eye", + "eye-slash", + "file-contract", + "file-signature", + "fingerprint", + "id-badge", + "id-card", + "key", + "lock", + "lock-open", + "mask", + "passport", + "unlock", + "user-lock", + "user-secret", + "user-shield" + ], + "Shapes": [ + "bookmark", + "calendar", + "certificate", + "circle", + "cloud", + "comment", + "file", + "folder", + "heart", + "play", + "shapes", + "square", + "star" + ], + "Shopping": [ + "barcode", + "cart-arrow-down", + "cart-plus", + "cash-register", + "gift", + "gifts", + "person-booth", + "receipt", + "store", + "store-slash", + "truck" + ], + "Social": [ + "bell", + "camera", + "comment", + "envelope", + "hashtag", + "heart", + "icons", + "image", + "images", + "retweet", + "share", + "star", + "thumbs-down", + "thumbs-up", + "thumbtack", + "user", + "user-plus", + "users", + "video" + ], + "Spinners": [ + "asterisk", + "atom", + "bahai", + "certificate", + "circle-notch", + "compact-disc", + "compass", + "crosshairs", + "dharmachakra", + "fan", + "life-ring", + "palette", + "ring", + "slash", + "snowflake", + "spinner", + "stroopwafel", + "sun", + "yin-yang" + ], + "Sports": ["bowling-ball", "dumbbell", "futbol", "hockey-puck"], + "Spring": ["broom", "cloud-sun", "cloud-sun-rain", "frog", "rainbow", "seedling", "umbrella"], + "Status": [ + "ban", + "battery-empty", + "battery-full", + "battery-half", + "battery-quarter", + "battery-three-quarters", + "bell", + "bell-slash", + "calendar", + "calendar-check", + "calendar-day", + "calendar-minus", + "calendar-plus", + "calendar-week", + "cart-arrow-down", + "cart-plus", + "comment", + "comment-slash", + "compass", + "door-closed", + "door-open", + "exclamation", + "eye", + "eye-slash", + "file", + "folder", + "folder-open", + "gas-pump", + "info", + "lightbulb", + "lock", + "lock-open", + "microphone", + "microphone-slash", + "minus", + "phone", + "phone-slash", + "plus", + "print", + "question", + "signal", + "star", + "star-half", + "thumbs-down", + "thumbs-up", + "toggle-off", + "toggle-on", + "unlock", + "user", + "user-slash", + "video", + "video-slash", + "volume-off", + "wifi" + ], + "Summer": ["anchor", "fish", "hotdog", "ice-cream", "lemon", "sun", "umbrella-beach", "water"], + "Tabletop Gaming": [ + "dice-d20", + "dice-d6", + "dragon", + "dungeon", + "hat-wizard", + "ring", + "scroll", + "skull-crossbones" + ], + "Toggle": [ + "bullseye", + "circle", + "microphone", + "microphone-slash", + "star", + "star-half", + "toggle-off", + "toggle-on", + "wifi" + ], + "Travel": [ + "archway", + "bed", + "bus", + "caravan", + "dumbbell", + "hotel", + "map", + "monument", + "passport", + "plane", + "plane-arrival", + "plane-departure", + "plane-slash", + "spa", + "suitcase", + "suitcase-rolling", + "taxi", + "tv", + "umbrella-beach", + "wine-glass" + ], + "Users & People": [ + "address-book", + "address-card", + "baby", + "bed", + "child", + "id-badge", + "id-card", + "people-arrows", + "person-booth", + "poo", + "power-off", + "restroom", + "street-view", + "user", + "user-astronaut", + "user-check", + "user-clock", + "user-graduate", + "user-injured", + "user-lock", + "user-minus", + "user-ninja", + "user-nurse", + "user-plus", + "user-secret", + "user-shield", + "user-slash", + "user-tag", + "user-tie", + "users", + "users-slash", + "wheelchair" + ], + "Vehicles": [ + "baby-carriage", + "bicycle", + "bus", + "car", + "car-side", + "helicopter", + "horse", + "motorcycle", + "paper-plane", + "plane", + "plane-slash", + "rocket", + "ship", + "sleigh", + "snowplow", + "taxi", + "tractor", + "train", + "truck", + "truck-monster", + "truck-pickup", + "wheelchair" + ], + "Weather": [ + "bolt", + "cloud", + "cloud-meatball", + "cloud-moon", + "cloud-moon-rain", + "cloud-rain", + "cloud-showers-heavy", + "cloud-sun", + "cloud-sun-rain", + "meteor", + "moon", + "poo-storm", + "rainbow", + "smog", + "snowflake", + "sun", + "temperature-high", + "temperature-low", + "umbrella", + "water", + "wind" + ], + "Winter": ["icicles", "igloo", "mitten", "snowplow"], + "Writing": [ + "blog", + "book", + "bookmark", + "envelope", + "envelope-open", + "eraser", + "file", + "folder", + "folder-open", + "keyboard", + "newspaper", + "paper-plane", + "paperclip", + "paragraph", + "pen", + "quote-left", + "quote-right", + "thumbtack" + ] + }, + "width": 512, + "height": 512 +} diff --git a/packages/app-admin/src/components/IconPicker/config/index.tsx b/packages/app-admin/src/components/IconPicker/config/index.tsx index bd19e66b52e..60c115be508 100644 --- a/packages/app-admin/src/components/IconPicker/config/index.tsx +++ b/packages/app-admin/src/components/IconPicker/config/index.tsx @@ -3,7 +3,11 @@ import React, { useMemo } from "react"; import { createConfigurableComponent } from "@webiny/react-properties"; import { IconPackProvider } from "./IconPackProvider"; -import { IconConfig } from "./Icon"; +import { IconProps } from "./Icon"; + +const { icons: fa6RegularIcons } = require("./fa6-regular.json"); +const { icons: fa6SolidIcons } = require("./fa6-solid.json"); +const emojis = require("./emojis.json"); const base = createConfigurableComponent("IconPicker"); @@ -12,7 +16,7 @@ export const IconPickerWithConfig = base.WithConfig; interface IconPickerConfig { iconPackProvider: { - icons: IconConfig[]; + icons: IconProps[]; }; } @@ -32,15 +36,60 @@ export function useIconPickerConfig() { export const DefaultIcons = () => { return ( + {/* Default Emojis Provider */} [ - { type: "emoji", name: "thumbs_up", skinTone: "", value: "๐Ÿ‘" }, - { type: "emoji", name: "thumbs_down", skinTone: "", value: "๐Ÿ‘Ž" } - ]} + provider={() => + Object.keys(emojis).map(key => { + const emoji = emojis[key]; + return { + type: "emoji", + name: emoji.slug, + value: key, + category: emoji.group, + skinToneSupport: emoji.skin_tone_support + }; + }) + } + /> + {/* Default Icons Providers */} + + Object.keys(fa6RegularIcons).map(key => { + const icon = fa6RegularIcons[key]; + return { + type: "icon", + name: key, + value: icon.body, + width: icon.width + }; + }) + } + /> + + Object.keys(fa6SolidIcons).map(key => { + const icon = fa6SolidIcons[key]; + return { + type: "icon", + name: key, + value: icon.body, + width: icon.width + }; + }) + } + /> + + {/* Custom Icons/Emojis Providers */} + [{ type: "emoji", name: "testing_face", value: "๐Ÿ˜€" }]} /> [ - { type: "emoji", name: "grinning_face", skinTone: "", value: "๐Ÿ˜€" } + { + type: "icon", + name: "testing_book", + value: '' + } ]} /> From 5b0402d6119d4d400847abd08d04de93e4ea2088 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis Date: Fri, 15 Sep 2023 16:01:51 +0000 Subject: [PATCH 3/7] feat: custom icons support and requested changes --- packages/app-admin/package.json | 2 + .../app-admin/src/base/ui/FileManager.tsx | 12 +- .../IconPicker/IconPicker.styles.ts | 108 ++++++ .../src/components/IconPicker/IconPicker.tsx | 327 ++++++++++-------- .../components/IconPicker/IconRenderer.tsx | 4 + .../components/IconPicker/SkinToneSelect.tsx | 2 +- .../src/components/IconPicker/config/Icon.tsx | 57 --- .../IconPicker/config/IconPackProvider.tsx | 64 +++- .../components/IconPicker/config/graphql.ts | 28 ++ .../components/IconPicker/config/index.tsx | 79 ++++- packages/app-admin/tsconfig.build.json | 1 + packages/app-admin/tsconfig.json | 3 + .../FileManagerView/index.tsx | 4 +- yarn.lock | 2 + 14 files changed, 466 insertions(+), 227 deletions(-) create mode 100644 packages/app-admin/src/components/IconPicker/IconPicker.styles.ts delete mode 100644 packages/app-admin/src/components/IconPicker/config/Icon.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/graphql.ts diff --git a/packages/app-admin/package.json b/packages/app-admin/package.json index 93fc21ba3bb..550b5cd5e0b 100644 --- a/packages/app-admin/package.json +++ b/packages/app-admin/package.json @@ -28,6 +28,7 @@ "@webiny/lexical-editor": "0.0.0", "@webiny/plugins": "0.0.0", "@webiny/react-composition": "0.0.0", + "@webiny/react-properties": "0.0.0", "@webiny/react-router": "0.0.0", "@webiny/telemetry": "0.0.0", "@webiny/ui": "0.0.0", @@ -50,6 +51,7 @@ "react-dom": "17.0.2", "react-hotkeyz": "^1.0.4", "react-transition-group": "^4.3.0", + "react-virtualized": "^9.21.2", "store": "^2.0.12" }, "devDependencies": { diff --git a/packages/app-admin/src/base/ui/FileManager.tsx b/packages/app-admin/src/base/ui/FileManager.tsx index 46c45c1d2df..7c10c0340a9 100644 --- a/packages/app-admin/src/base/ui/FileManager.tsx +++ b/packages/app-admin/src/base/ui/FileManager.tsx @@ -12,6 +12,7 @@ export interface FileManagerOnChange { export interface FileManagerFileItem { id: string; src: string; + name?: string; meta?: Array; } @@ -98,6 +99,7 @@ export const FileManager: React.FC = ({ children, render, onChange, + onClose, ...rest }) => { const containerRef = useRef(getPortalTarget()); @@ -115,12 +117,20 @@ export const FileManager: React.FC = ({ setShow(true); }, []); + const handleClose = useCallback(() => { + if (onClose) { + onClose(); + } + + setShow(false); + }, [onClose]); + return ( <> {show && ReactDOM.createPortal( setShow(false)} + onClose={handleClose} onChange={ /* TODO: figure out how to create a conditional type based on the value of `rest.multiple` */ onChangeRef.current as any diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts new file mode 100644 index 00000000000..dbc10f72286 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts @@ -0,0 +1,108 @@ +import { css } from "emotion"; +import styled from "@emotion/styled"; + +export const IconPickerWrapper = styled.div` + .mdc-menu-surface { + overflow: visible !important; + } +`; + +export const iconPickerLabel = css` + margin-bottom: 5px; + margin-left: 2px; +`; + +export const IconPickerInput = styled.div` + background-color: ${props => props.theme.styles.colors.color5}; + border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; + padding: 8px; + height: 32px; + width: fit-content; + cursor: pointer; + :hover { + border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; + } +`; + +export const MenuHeader = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + text-transform: uppercase; + padding: 12px; + border-bottom: 1px solid ${props => props.theme.styles.colors.color5}; + color: ${props => props.theme.styles.colors.color4}; + + & > svg { + cursor: pointer; + fill: ${props => props.theme.styles.colors.color4}; + } +`; + +export const Row = styled.div` + display: flex; + align-items: center; +`; + +export const Cell = styled.div<{ color: string; isActive: boolean }>` + cursor: pointer; + color: ${({ color }) => color}; + background-color: ${({ isActive, theme }) => + isActive ? theme.styles.colors.color5 : theme.styles.colors.color6}; + + & > * { + padding: 4px; + } +`; + +export const CategoryLabel = styled.div` + align-self: flex-end; + margin-bottom: 4px; + text-transform: uppercase; + ${props => props.theme.styles.typography.paragraphs.stylesById("paragraph2")}; + color: ${props => props.theme.styles.colors.color4}; +`; + +export const TabContentWrapper = styled.div` + width: 340px; + padding: 12px; +`; + +export const ListWrapper = styled.div` + position: relative; +`; + +export const NoResultsWrapper = styled.div` + display: flex; + align-items: center; + justify-content: center; + height: 400px; +`; + +export const InputsWrapper = styled.div` + display: flex; + column-gap: 12px; + padding-bottom: 12px; + height: 40px; + + [class$="color"] { + height: 24px; + width: 24px; + margin: 3px; + border-radius: 50%; + } + + [class$="classNames"] { + display: none; + } + + .webiny-ui-input { + height: 40px !important; + } +`; + +export const addButtonStyle = css` + &.mdc-button { + height: 40px; + } +`; diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx index 77d92402054..805df8ee554 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -1,117 +1,68 @@ import React, { useCallback, useRef, useState, useMemo, useEffect } from "react"; -import { css } from "emotion"; -import styled from "@emotion/styled"; -// import groupBy from "lodash/groupBy"; -import { Grid } from "react-virtualized"; -import { GridCellProps } from "react-virtualized/dist/es/Grid"; +import groupBy from "lodash/groupBy"; +import { List } from "react-virtualized"; +import { useQuery } from "@apollo/react-hooks"; +import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; import { Menu } from "@webiny/ui/Menu"; +import { ButtonSecondary } from "@webiny/ui/Button"; import { Tab, Tabs, TabsImperativeApi } from "@webiny/ui/Tabs"; import { Typography } from "@webiny/ui/Typography"; -import { FormComponentProps } from "@webiny/ui/types"; import { FormElementMessage } from "@webiny/ui/FormElementMessage"; import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; import { Input } from "@webiny/ui/Input"; import { ColorPicker } from "@webiny/ui/ColorPicker"; -import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; +import { CircularProgress } from "@webiny/ui/Progress"; +import { FormComponentProps } from "@webiny/ui/types"; +import { FileManager } from "~/components"; import { IconRenderer, Icon } from "./IconRenderer"; import { useIconPickerConfig, IconPickerWithConfig } from "./config"; import { SkinToneSelect } from "./SkinToneSelect"; +import { + LIST_ICON_FILES, + ListIconFilesQueryResponse +} from "~/components/IconPicker/config/graphql"; +import { + IconPickerWrapper, + iconPickerLabel, + IconPickerInput, + MenuHeader, + Row, + Cell, + CategoryLabel, + TabContentWrapper, + ListWrapper, + NoResultsWrapper, + InputsWrapper, + addButtonStyle +} from "./IconPicker.styles"; const COLUMN_COUNT = 8; -const IconPickerWrapper = styled.div` - .mdc-menu-surface { - overflow: visible !important; - } -`; - -const iconPickerLabel = css` - margin-bottom: 5px; - margin-left: 2px; -`; - -const IconPickerInput = styled.div` - background-color: ${props => props.theme.styles.colors.color5}; - border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; - padding: 8px; - height: 32px; - width: fit-content; - cursor: pointer; - :hover { - border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; - } -`; - -const MenuHeader = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - text-transform: uppercase; - padding: 12px; - border-bottom: 1px solid ${props => props.theme.styles.colors.color5}; - color: ${props => props.theme.styles.colors.color4}; - - & > svg { - cursor: pointer; - fill: ${props => props.theme.styles.colors.color4}; - } -`; - -const Cell = styled.div<{ color: string; isActive: boolean }>` - cursor: pointer; - color: ${({ color }) => color}; - background-color: ${({ isActive, theme }) => - isActive ? theme.styles.colors.color5 : theme.styles.colors.color6}; - - & > * { - padding: 4px; - } -`; - -const TabContentWrapper = styled.div` - width: 340px; - padding: 12px; -`; - -const NoResultsWrapper = styled.div` - display: flex; - align-items: center; - justify-content: center; - height: 400px; -`; - -const InputsWrapper = styled.div` - display: flex; - column-gap: 12px; - padding-bottom: 12px; - height: 40px; - - [class$="color"] { - height: 24px; - width: 24px; - margin: 3px; - border-radius: 50%; - } - - [class$="classNames"] { - display: none; - } - - .webiny-ui-input { - height: 40px !important; - } -`; +type RenderRowProps = { + index: number; + key: string; + style: Record; +}; type TabContentProps = { icons: Icon[]; type: string; value: Icon; onChange: (value: Icon, closeMenu?: boolean) => void; + refetchCustomIcons?: () => void; + isLoading?: boolean; }; -const TabContent = ({ icons, type, value, onChange }: TabContentProps) => { +const TabContent = ({ + icons, + type, + value, + onChange, + refetchCustomIcons, + isLoading +}: TabContentProps) => { const [filter, setFilter] = useState(""); const [color, setColor] = useState(value.color || "#0000008a"); @@ -134,43 +85,77 @@ const TabContent = ({ icons, type, value, onChange }: TabContentProps) => { }, [color]); const filteredIcons = useMemo(() => { - return filter ? icons.filter(ic => ic.name.includes(filter)) : icons; + return icons.filter(icon => icon.name.includes(filter)); }, [filter, icons]); - const renderCell = useCallback(() => { - return function renderCell({ - columnIndex, - key, - rowIndex, - style - }: GridCellProps): React.ReactNode { - const item = filteredIcons[rowIndex * COLUMN_COUNT + columnIndex]; - if (!item) { - return null; + const rows = useMemo(() => { + const groupedObjects = groupBy(filteredIcons, "category"); + const rows = []; + + for (const key in groupedObjects) { + if (key !== "undefined") { + const rowIcons = groupedObjects[key]; + + rows.push([{ categoryName: key }]); + + while (rowIcons.length) { + rows.push(rowIcons.splice(0, COLUMN_COUNT)); + } + } + } + + if (groupedObjects.undefined) { + const rowIcons = groupedObjects.undefined; + + rows.push([{ categoryName: "Uncategorized" }]); + + while (rowIcons.length) { + rows.push(rowIcons.splice(0, COLUMN_COUNT)); + } + } + + return rows; + }, [filteredIcons]); + + const renderRow = useCallback( + ({ index, key, style }: RenderRowProps) => { + const currentRow = rows[index]; + const categoryName = (currentRow[0] as { categoryName: string }).categoryName; + + if (categoryName) { + return ( + + {categoryName} + + ); } return ( - { - onChange({ - type: item.type, - name: item.name, - ...(item.type === "emoji" ? { skinTone: item.skinTone } : {}), - ...(item.type === "icon" ? { color } : {}), - ...(item.width ? { width: item.width } : {}), - value: item.value - }); - }} - color={color} - isActive={item.name === value.name} - > - - + + {(currentRow as Icon[]).map((item, itemKey) => ( + { + onChange({ + type: item.type, + name: item.name, + ...(item.type === "emoji" ? { skinTone: item.skinTone } : {}), + ...(item.type === "icon" ? { color } : {}), + ...(item.width ? { width: item.width } : {}), + value: item.value + }); + }} + > + + + ))} + ); - }; - }, [filteredIcons, color]); + }, + [rows, color, value] + ); return ( @@ -188,22 +173,59 @@ const TabContent = ({ icons, type, value, onChange }: TabContentProps) => { {({ value, onChange }) => } )} + {type === "custom" && ( + { + onChange({ + type: "custom", + name: name || "", + value: src + }); + }} + onChange={({ name, src }) => + onChange({ + type: "custom", + name: name || "", + value: src + }) + } + onClose={() => { + if (refetchCustomIcons) { + refetchCustomIcons(); + } + }} + scope="scope:iconPicker" + accept={["image/svg+xml"]} + > + {({ showFileManager }) => ( + { + showFileManager(); + }} + > + Browse + + )} + + )} - {filteredIcons.length === 0 ? ( - - No results found. - - ) : ( - - )} + + {isLoading && } + {filteredIcons.length === 0 ? ( + + No results found. + + ) : ( + + )} + ); }; @@ -213,18 +235,30 @@ export interface IconPickerProps extends FormComponentProps { description?: string; } -const IconPicker = ({ value, onChange, validation, label, description }: IconPickerProps) => { +const IconPicker = ({ value = {}, onChange, validation, label, description }: IconPickerProps) => { const { isValid: validationIsValid, message: validationMessage } = validation || {}; const tabsRef = useRef(); - const { icons } = useIconPickerConfig(); + const { icons, initialize, isLoading } = useIconPickerConfig(); + const { data, refetch: refetchCustomIcons } = + useQuery(LIST_ICON_FILES); + const customIconsData = data?.fileManager.listFiles.data || []; + + useEffect(() => { + initialize(); + }, [initialize]); + + const emojis = useMemo(() => { + return icons.filter(icon => icon.type === "emoji"); + }, [icons]); + + const defaultIcons = useMemo(() => { + return icons.filter(icon => icon.type === "icon"); + }, [icons]); - // const emojisByCategory = groupBy( - // icons.filter(icon => icon.type === "emoji"), - // "category" - // ); - const emojis = icons.filter(icon => icon.type === "emoji"); - const defaultIcons = icons.filter(icon => icon.type === "icon"); + const customIcons = useMemo(() => { + return customIconsData.map(icon => ({ type: "custom", name: icon.name, value: icon.src })); + }, [customIconsData]); const onIconChange = useCallback( (icon: Icon) => { @@ -282,6 +316,7 @@ const IconPicker = ({ value, onChange, validation, label, description }: IconPic type="icon" value={value} onChange={onIconChange} + isLoading={isLoading} /> @@ -290,14 +325,16 @@ const IconPicker = ({ value, onChange, validation, label, description }: IconPic type="emoji" value={value} onChange={onIconChange} + isLoading={isLoading} /> diff --git a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx index 7cdbf0c15fc..5bb59529dad 100644 --- a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx +++ b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx @@ -32,6 +32,10 @@ export const IconRenderer = ({ icon, size = 32 }: IconProps) => { ); } + if (icon.type === "custom") { + return {icon.name}; + } + return ( = ({ - type, - name, - skinToneSupport, - category, - value, - width, - after = undefined, - before = undefined, - remove = false -}) => { - const getId = useIdGenerator("icon"); - - const placeAfter = after !== undefined ? getId(after) : undefined; - const placeBefore = before !== undefined ? getId(before) : undefined; - - return ( - - - - {typeof skinToneSupport !== "undefined" ? ( - - ) : null} - {category ? ( - - ) : null} - {width ? : null} - - - ); -}; diff --git a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx index 3d1e9687119..c352481556d 100644 --- a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx +++ b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx @@ -1,20 +1,64 @@ -import React from "react"; -import { Property } from "@webiny/react-properties"; +import React, { useCallback, useState, useRef, useEffect } from "react"; +import { Property, useIdGenerator } from "@webiny/react-properties"; -import { Icon, IconProps } from "./Icon"; +export interface IconProps { + type: string; + name: string; + skinToneSupport?: boolean; + category?: string; + value: string; + width?: number; +} export type IconPackProviderProps = { - provider: () => IconProps[]; + name: string; + provider: () => Promise | IconProps[]; }; -export const IconPackProvider = ({ provider }: IconPackProviderProps) => { - const icons = provider(); +export const IconPackProvider = ({ name, provider }: IconPackProviderProps) => { + const getId = useIdGenerator("iconPackProvider"); + + const isMounted = useRef(true); + const [icons, setIcons] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [isInitialized, setIsInitialized] = useState(false); + + const initialize = useCallback(async () => { + setIsLoading(true); + + const iconsData = await provider(); + + if (!isMounted.current) { + return; + } + + setIcons(iconsData); + setIsInitialized(true); + setIsLoading(false); + }, [provider]); + + useEffect(() => { + return () => { + isMounted.current = false; + }; + }, []); return ( - - {icons.map((icon, index) => ( - - ))} + + + {isLoading && ( + + )} + {isInitialized && ( + + )} + {Boolean(icons.length) && ( + + )} ); }; diff --git a/packages/app-admin/src/components/IconPicker/config/graphql.ts b/packages/app-admin/src/components/IconPicker/config/graphql.ts new file mode 100644 index 00000000000..1236781dd80 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/graphql.ts @@ -0,0 +1,28 @@ +import gql from "graphql-tag"; + +/** + * ########################### + * List Icon Files Query Response + */ +export interface ListIconFilesQueryResponse { + fileManager: { + listFiles: { + data: [{ name: string; src: string }] | null; + error: { message: string; data: Record; code: string } | null; + }; + }; +} + +export const LIST_ICON_FILES = gql` + query ListIconFiles { + fileManager { + listFiles(where: { tags_contains: "scope:iconPicker" }) { + data { + name + src + tags + } + } + } + } +`; diff --git a/packages/app-admin/src/components/IconPicker/config/index.tsx b/packages/app-admin/src/components/IconPicker/config/index.tsx index 60c115be508..2b280c7075a 100644 --- a/packages/app-admin/src/components/IconPicker/config/index.tsx +++ b/packages/app-admin/src/components/IconPicker/config/index.tsx @@ -1,12 +1,11 @@ -import React, { useMemo } from "react"; +import React, { useCallback, useMemo } from "react"; import { createConfigurableComponent } from "@webiny/react-properties"; -import { IconPackProvider } from "./IconPackProvider"; -import { IconProps } from "./Icon"; +import { IconPackProvider, IconProps } from "./IconPackProvider"; -const { icons: fa6RegularIcons } = require("./fa6-regular.json"); -const { icons: fa6SolidIcons } = require("./fa6-solid.json"); +const { icons: fa6RegularIcons, categories: fa6RegularCategories } = require("./fa6-regular.json"); +const { icons: fa6SolidIcons, categories: fa6SolidCategories } = require("./fa6-solid.json"); const emojis = require("./emojis.json"); const base = createConfigurableComponent("IconPicker"); @@ -15,19 +14,35 @@ export const IconPickerConfig = Object.assign(base.Config, { IconPackProvider }) export const IconPickerWithConfig = base.WithConfig; interface IconPickerConfig { - iconPackProvider: { + iconPackProviders: { icons: IconProps[]; - }; + initialize: () => Promise | void; + isLoading: boolean; + isInitialized: boolean; + }[]; } export function useIconPickerConfig() { const config = base.useConfig(); - const iconPackProvider = config.iconPackProvider || {}; + const iconPackProviders = config.iconPackProviders || []; + const isLoading = iconPackProviders.some(iconProvider => iconProvider.isLoading); + + const initialize = useCallback(async () => { + await Promise.all( + iconPackProviders.map(async provider => { + if (!provider.isInitialized && !provider.isLoading) { + await provider.initialize(); + } + }) + ); + }, [iconPackProviders]); return useMemo( () => ({ - icons: [...(iconPackProvider.icons || [])] + icons: iconPackProviders.map(provider => provider.icons || []).flat(), + initialize, + isLoading }), [config] ); @@ -38,6 +53,7 @@ export const DefaultIcons = () => { {/* Default Emojis Provider */} Object.keys(emojis).map(key => { const emoji = emojis[key]; @@ -53,37 +69,47 @@ export const DefaultIcons = () => { /> {/* Default Icons Providers */} Object.keys(fa6RegularIcons).map(key => { const icon = fa6RegularIcons[key]; return { type: "icon", - name: key, + name: `regular_${key}`, value: icon.body, + category: Object.keys(fa6RegularCategories).find(categoryKey => + fa6RegularCategories[categoryKey].includes(key) + ), width: icon.width }; }) } /> Object.keys(fa6SolidIcons).map(key => { const icon = fa6SolidIcons[key]; return { type: "icon", - name: key, + name: `solid_${key}`, value: icon.body, + category: Object.keys(fa6SolidCategories).find(categoryKey => + fa6SolidCategories[categoryKey].includes(key) + ), width: icon.width }; }) } /> - {/* Custom Icons/Emojis Providers */} + {/* Examples of custom icons/emojis providers and async provider */} [{ type: "emoji", name: "testing_face", value: "๐Ÿ˜€" }]} /> [ { type: "icon", @@ -92,6 +118,35 @@ export const DefaultIcons = () => { } ]} /> + { + const iconsData = await fetch( + "https://raw.githubusercontent.com/iconify/icon-sets/master/json/fa6-brands.json" + ) + .then(res => res.json()) + .catch(() => null); + + if (!iconsData) { + return []; + } + + const { icons, categories } = iconsData; + + return Object.keys(icons).map(key => { + const icon = icons[key]; + return { + type: "icon", + name: `brands_${key}`, + value: icon.body, + category: Object.keys(categories).find(categoryKey => + categories[categoryKey].includes(key) + ), + width: icon.width + }; + }); + }} + /> ); }; diff --git a/packages/app-admin/tsconfig.build.json b/packages/app-admin/tsconfig.build.json index bda0cfb5cf0..e0a9f87499b 100644 --- a/packages/app-admin/tsconfig.build.json +++ b/packages/app-admin/tsconfig.build.json @@ -10,6 +10,7 @@ { "path": "../lexical-editor/tsconfig.build.json" }, { "path": "../plugins/tsconfig.build.json" }, { "path": "../react-composition/tsconfig.build.json" }, + { "path": "../react-properties/tsconfig.build.json" }, { "path": "../react-router/tsconfig.build.json" }, { "path": "../ui/tsconfig.build.json" }, { "path": "../ui-composer/tsconfig.build.json" }, diff --git a/packages/app-admin/tsconfig.json b/packages/app-admin/tsconfig.json index 734126f296f..37006687059 100644 --- a/packages/app-admin/tsconfig.json +++ b/packages/app-admin/tsconfig.json @@ -10,6 +10,7 @@ { "path": "../lexical-editor" }, { "path": "../plugins" }, { "path": "../react-composition" }, + { "path": "../react-properties" }, { "path": "../react-router" }, { "path": "../ui" }, { "path": "../ui-composer" }, @@ -38,6 +39,8 @@ "@webiny/plugins": ["../plugins/src"], "@webiny/react-composition/*": ["../react-composition/src/*"], "@webiny/react-composition": ["../react-composition/src"], + "@webiny/react-properties/*": ["../react-properties/src/*"], + "@webiny/react-properties": ["../react-properties/src"], "@webiny/react-router/*": ["../react-router/src/*"], "@webiny/react-router": ["../react-router/src"], "@webiny/ui/*": ["../ui/src/*"], diff --git a/packages/app-file-manager/src/modules/FileManagerRenderer/FileManagerView/index.tsx b/packages/app-file-manager/src/modules/FileManagerRenderer/FileManagerView/index.tsx index be61412e441..a4b0c54f23e 100644 --- a/packages/app-file-manager/src/modules/FileManagerRenderer/FileManagerView/index.tsx +++ b/packages/app-file-manager/src/modules/FileManagerRenderer/FileManagerView/index.tsx @@ -20,12 +20,13 @@ import { DialogsProvider } from "@webiny/app-aco"; /** * Convert a FileItem object to a FileManagerFileItem, which is then passed to `onChange` callback. */ -const formatFileItem = ({ id, src, ...rest }: FileItem): FileManagerFileItem => { +const formatFileItem = ({ id, src, name, ...rest }: FileItem): FileManagerFileItem => { const props: { [key: string]: any } = rest; return { id, src, + name, meta: Object.keys(rest).map(key => ({ key, value: props[key] })) }; }; @@ -50,6 +51,7 @@ export const FileManagerRenderer = createComponentPlugin(BaseFileManagerRenderer const { onChange, images, accept, ...forwardProps } = props; const handleFileOnChange = (value?: FileItem[] | FileItem) => { + console.log(value); if (!onChange || !value || (Array.isArray(value) && !value.length)) { return; } diff --git a/yarn.lock b/yarn.lock index 6c2ebdd5995..dfa914850bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14453,6 +14453,7 @@ __metadata: "@webiny/plugins": 0.0.0 "@webiny/project-utils": 0.0.0 "@webiny/react-composition": 0.0.0 + "@webiny/react-properties": 0.0.0 "@webiny/react-router": 0.0.0 "@webiny/telemetry": 0.0.0 "@webiny/ui": 0.0.0 @@ -14476,6 +14477,7 @@ __metadata: react-dom: 17.0.2 react-hotkeyz: ^1.0.4 react-transition-group: ^4.3.0 + react-virtualized: ^9.21.2 rimraf: ^3.0.2 store: ^2.0.12 ttypescript: ^1.5.12 From 021ec43c2b4fe9393a663ba4b2ccef8c50d78468 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis Date: Fri, 15 Sep 2023 16:12:52 +0000 Subject: [PATCH 4/7] fix: fix dependencies --- packages/app-admin/package.json | 1 + yarn.lock | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/app-admin/package.json b/packages/app-admin/package.json index 550b5cd5e0b..7e0a5fd7571 100644 --- a/packages/app-admin/package.json +++ b/packages/app-admin/package.json @@ -44,6 +44,7 @@ "emotion": "^10.0.17", "graphlib": "^2.1.7", "graphql": "^15.7.2", + "graphql-tag": "^2.12.6", "lodash": "^4.17.11", "nanoid": "^3.1.23", "prop-types": "^15.7.2", diff --git a/yarn.lock b/yarn.lock index dfa914850bf..3950de65d76 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14470,6 +14470,7 @@ __metadata: emotion: ^10.0.17 graphlib: ^2.1.7 graphql: ^15.7.2 + graphql-tag: ^2.12.6 lodash: ^4.17.11 nanoid: ^3.1.23 prop-types: ^15.7.2 From ef2949c1c5eacb5e7ccf6a29615d3d8a9d520287 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis Date: Wed, 18 Oct 2023 13:45:02 +0000 Subject: [PATCH 5/7] fix: requested UX changes --- .../IconPicker/IconPicker.styles.ts | 4 + .../src/components/IconPicker/IconPicker.tsx | 122 +++++++++++------- .../BlockCategories/BlockCategoriesForm.tsx | 6 +- 3 files changed, 78 insertions(+), 54 deletions(-) diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts index dbc10f72286..00c4360f165 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts +++ b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts @@ -106,3 +106,7 @@ export const addButtonStyle = css` height: 40px; } `; + +export const placeholderIcon = css` + fill: #00000040; +`; diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx index 805df8ee554..22c5b2ad25d 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -3,6 +3,7 @@ import groupBy from "lodash/groupBy"; import { List } from "react-virtualized"; import { useQuery } from "@apollo/react-hooks"; import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; +import { ReactComponent as SearchIcon } from "@material-design-icons/svg/outlined/search.svg"; import { Menu } from "@webiny/ui/Menu"; import { ButtonSecondary } from "@webiny/ui/Button"; @@ -10,6 +11,7 @@ import { Tab, Tabs, TabsImperativeApi } from "@webiny/ui/Tabs"; import { Typography } from "@webiny/ui/Typography"; import { FormElementMessage } from "@webiny/ui/FormElementMessage"; import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; +import { DelayedOnChangeProps } from "@webiny/ui/DelayedOnChange/DelayedOnChange"; import { Input } from "@webiny/ui/Input"; import { ColorPicker } from "@webiny/ui/ColorPicker"; import { CircularProgress } from "@webiny/ui/Progress"; @@ -35,7 +37,8 @@ import { ListWrapper, NoResultsWrapper, InputsWrapper, - addButtonStyle + addButtonStyle, + placeholderIcon } from "./IconPicker.styles"; const COLUMN_COUNT = 8; @@ -51,6 +54,8 @@ type TabContentProps = { type: string; value: Icon; onChange: (value: Icon, closeMenu?: boolean) => void; + filter: string; + onFilterChange: DelayedOnChangeProps["onChange"]; refetchCustomIcons?: () => void; isLoading?: boolean; }; @@ -60,24 +65,17 @@ const TabContent = ({ type, value, onChange, + filter, + onFilterChange, refetchCustomIcons, isLoading }: TabContentProps) => { - const [filter, setFilter] = useState(""); const [color, setColor] = useState(value.color || "#0000008a"); const onColorChange = useCallback((newColor: string) => { setColor(newColor); }, []); - const onFilterChange = useCallback( - (value, cb) => { - setFilter(value); - cb(); - }, - [filter] - ); - useEffect(() => { if (value.type === "icon" && value.color !== color) { onChange({ ...value, color, skinTone: undefined }, false); @@ -85,7 +83,14 @@ const TabContent = ({ }, [color]); const filteredIcons = useMemo(() => { - return icons.filter(icon => icon.name.includes(filter)); + const hyphenUnderscoreRegex = /[-_]/g; + + return icons.filter(icon => + icon.name + .replace(hyphenUnderscoreRegex, " ") + .toLowerCase() + .includes(filter.toLowerCase()) + ); }, [filter, icons]); const rows = useMemo(() => { @@ -238,12 +243,21 @@ export interface IconPickerProps extends FormComponentProps { const IconPicker = ({ value = {}, onChange, validation, label, description }: IconPickerProps) => { const { isValid: validationIsValid, message: validationMessage } = validation || {}; + const [filter, setFilter] = useState(""); const tabsRef = useRef(); const { icons, initialize, isLoading } = useIconPickerConfig(); const { data, refetch: refetchCustomIcons } = useQuery(LIST_ICON_FILES); const customIconsData = data?.fileManager.listFiles.data || []; + const onFilterChange = useCallback( + (value, cb) => { + setFilter(value); + cb(); + }, + [filter] + ); + useEffect(() => { initialize(); }, [initialize]); @@ -298,48 +312,58 @@ const IconPicker = ({ value = {}, onChange, validation, label, description }: Ic - + {value?.value ? ( + + ) : ( + + )} } onOpen={handleSwitchTab} > - {({ closeMenu }: { closeMenu: () => void }) => ( - <> - - Select an icon - closeMenu()} /> - - - - - - - - - - - - - - )} + {({ closeMenu }: { closeMenu: () => void }) => { + const commonTabProps = { + value, + onChange: (value: Icon, closeAfterChange = true) => { + onIconChange(value); + if (closeAfterChange) { + closeMenu(); + } + }, + filter, + onFilterChange, + isLoading + }; + + return ( + <> + + Select an icon + closeMenu()} /> + + + + + + + + + + + + + + ); + }} {validationIsValid === false && ( diff --git a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx index c9e415696a5..4488fcc0b65 100644 --- a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx +++ b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx @@ -208,11 +208,7 @@ const CategoriesForm: React.FC = ({ canCreate }) => {
- + From 22ee53d45bf727584f55a56bccbae29302598b03 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis <77202393+neatbyte-vnobis@users.noreply.github.com> Date: Thu, 4 Jan 2024 18:21:38 +0200 Subject: [PATCH 6/7] refactor: change Icon Picker architecture (#3701) Co-authored-by: Pavel Denisjuk Co-authored-by: Leonardo Giacone --- packages/app-admin/package.json | 5 +- packages/app-admin/src/base/Admin.tsx | 20 +- .../IconPicker/IconPicker.styles.ts | 19 +- .../src/components/IconPicker/IconPicker.tsx | 407 +- .../IconPicker/IconPickerComponent.tsx | 119 + .../IconPicker/IconPickerPresenter.test.ts | 118 + .../IconPicker/IconPickerPresenter.ts | 104 + .../IconPickerPresenterProvider.tsx | 31 + .../components/IconPicker/IconPickerTab.tsx | 185 + .../components/IconPicker/IconRenderer.tsx | 68 +- .../IconPicker/IconRepository.test.ts | 70 + .../components/IconPicker/IconRepository.ts | 74 + .../IconPicker/IconRepositoryFactory.ts | 25 + .../src/components/IconPicker/Loading.ts | 66 + .../components/IconPicker/SkinToneSelect.tsx | 77 - .../IconPicker/config/IconPackProvider.tsx | 55 +- .../components/IconPicker/config/IconType.tsx | 119 + .../components/IconPicker/config/emojis.json | 15267 ---------------- .../IconPicker/config/fa6-regular.json | 879 - .../IconPicker/config/fa6-solid.json | 6779 ------- .../components/IconPicker/config/index.tsx | 267 +- .../src/components/IconPicker/index.tsx | 4 + .../IconPicker/plugins/customPlugin.tsx | 133 + .../IconPicker/plugins/emojisPlugin.tsx | 162 + .../IconPicker/{config => plugins}/graphql.ts | 15 +- .../IconPicker/plugins/iconsPlugin.tsx | 105 + .../src/components/IconPicker/types.ts | 46 + packages/app-admin/src/index.ts | 1 + packages/app-admin/src/types.ts | 2 + packages/ui/src/ColorPicker/ColorPicker.tsx | 21 +- packages/ui/src/Menu/Menu.tsx | 145 +- tsconfig.build.json | 1 + yarn.lock | 34 + 33 files changed, 1735 insertions(+), 23688 deletions(-) create mode 100644 packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx create mode 100644 packages/app-admin/src/components/IconPicker/IconPickerPresenter.test.ts create mode 100644 packages/app-admin/src/components/IconPicker/IconPickerPresenter.ts create mode 100644 packages/app-admin/src/components/IconPicker/IconPickerPresenterProvider.tsx create mode 100644 packages/app-admin/src/components/IconPicker/IconPickerTab.tsx create mode 100644 packages/app-admin/src/components/IconPicker/IconRepository.test.ts create mode 100644 packages/app-admin/src/components/IconPicker/IconRepository.ts create mode 100644 packages/app-admin/src/components/IconPicker/IconRepositoryFactory.ts create mode 100644 packages/app-admin/src/components/IconPicker/Loading.ts delete mode 100644 packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx create mode 100644 packages/app-admin/src/components/IconPicker/config/IconType.tsx delete mode 100644 packages/app-admin/src/components/IconPicker/config/emojis.json delete mode 100644 packages/app-admin/src/components/IconPicker/config/fa6-regular.json delete mode 100644 packages/app-admin/src/components/IconPicker/config/fa6-solid.json create mode 100644 packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx create mode 100644 packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx rename packages/app-admin/src/components/IconPicker/{config => plugins}/graphql.ts (54%) create mode 100644 packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx create mode 100644 packages/app-admin/src/components/IconPicker/types.ts diff --git a/packages/app-admin/package.json b/packages/app-admin/package.json index 1316896863c..fcce47cbb79 100644 --- a/packages/app-admin/package.json +++ b/packages/app-admin/package.json @@ -16,6 +16,7 @@ "@editorjs/editorjs": "^2.19.0", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", + "@iconify/json": "^2.2.142", "@material-design-icons/svg": "^0.14.3", "@svgr/webpack": "^6.1.1", "@types/mime": "^2.0.3", @@ -49,13 +50,15 @@ "is-hotkey": "^0.1.3", "lodash": "^4.17.11", "mobx": "^6.9.0", + "mobx-react-lite": "^3.4.3", "prop-types": "^15.7.2", "react": "17.0.2", "react-dom": "17.0.2", "react-hotkeyz": "^1.0.4", "react-transition-group": "^4.3.0", "react-virtualized": "^9.21.2", - "store": "^2.0.12" + "store": "^2.0.12", + "unicode-emoji-json": "^0.4.0" }, "devDependencies": { "@babel/cli": "^7.22.6", diff --git a/packages/app-admin/src/base/Admin.tsx b/packages/app-admin/src/base/Admin.tsx index 8508320cb2a..d2116f993be 100644 --- a/packages/app-admin/src/base/Admin.tsx +++ b/packages/app-admin/src/base/Admin.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { App, Provider } from "@webiny/app"; +import { App } from "@webiny/app"; import { WcpProvider } from "@webiny/app-wcp"; import { ApolloClientFactory, createApolloProvider } from "./providers/ApolloProvider"; import { Base } from "./Base"; @@ -8,7 +8,7 @@ import { createUiStateProvider } from "./providers/UiStateProvider"; import { SearchProvider } from "./ui/Search"; import { UserMenuProvider } from "./ui/UserMenu"; import { NavigationProvider } from "./ui/Navigation"; -import { DefaultIcons } from "~/components/IconPicker/config"; +import { DefaultIcons, IconPickerConfigProvider } from "~/components/IconPicker/config"; import { CircularProgress } from "@webiny/ui/Progress"; import { ThemeProvider } from "@webiny/app-theme"; @@ -26,12 +26,16 @@ export const Admin: React.FC = ({ children, createApolloClient }) => }> - - - - - - + {children} diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts index 00c4360f165..17d0b3c68b7 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts +++ b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts @@ -39,17 +39,26 @@ export const MenuHeader = styled.div` } `; +export const MenuContent = styled.div` + position: relative; + width: 364px; + height: 524px; +`; + export const Row = styled.div` display: flex; align-items: center; `; -export const Cell = styled.div<{ color: string; isActive: boolean }>` +export const Cell = styled.div<{ isActive: boolean }>` cursor: pointer; - color: ${({ color }) => color}; background-color: ${({ isActive, theme }) => isActive ? theme.styles.colors.color5 : theme.styles.colors.color6}; + &:hover { + background: ${({ theme }) => theme.styles.colors.color5}; + } + & > * { padding: 4px; } @@ -101,12 +110,6 @@ export const InputsWrapper = styled.div` } `; -export const addButtonStyle = css` - &.mdc-button { - height: 40px; - } -`; - export const placeholderIcon = css` fill: #00000040; `; diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx index 22c5b2ad25d..8c84af23b47 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -1,391 +1,40 @@ -import React, { useCallback, useRef, useState, useMemo, useEffect } from "react"; -import groupBy from "lodash/groupBy"; -import { List } from "react-virtualized"; -import { useQuery } from "@apollo/react-hooks"; -import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; -import { ReactComponent as SearchIcon } from "@material-design-icons/svg/outlined/search.svg"; - -import { Menu } from "@webiny/ui/Menu"; -import { ButtonSecondary } from "@webiny/ui/Button"; -import { Tab, Tabs, TabsImperativeApi } from "@webiny/ui/Tabs"; -import { Typography } from "@webiny/ui/Typography"; -import { FormElementMessage } from "@webiny/ui/FormElementMessage"; -import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; -import { DelayedOnChangeProps } from "@webiny/ui/DelayedOnChange/DelayedOnChange"; -import { Input } from "@webiny/ui/Input"; -import { ColorPicker } from "@webiny/ui/ColorPicker"; -import { CircularProgress } from "@webiny/ui/Progress"; -import { FormComponentProps } from "@webiny/ui/types"; - -import { FileManager } from "~/components"; -import { IconRenderer, Icon } from "./IconRenderer"; -import { useIconPickerConfig, IconPickerWithConfig } from "./config"; -import { SkinToneSelect } from "./SkinToneSelect"; -import { - LIST_ICON_FILES, - ListIconFilesQueryResponse -} from "~/components/IconPicker/config/graphql"; -import { - IconPickerWrapper, - iconPickerLabel, - IconPickerInput, - MenuHeader, - Row, - Cell, - CategoryLabel, - TabContentWrapper, - ListWrapper, - NoResultsWrapper, - InputsWrapper, - addButtonStyle, - placeholderIcon -} from "./IconPicker.styles"; - -const COLUMN_COUNT = 8; - -type RenderRowProps = { - index: number; - key: string; - style: Record; -}; - -type TabContentProps = { - icons: Icon[]; - type: string; - value: Icon; - onChange: (value: Icon, closeMenu?: boolean) => void; - filter: string; - onFilterChange: DelayedOnChangeProps["onChange"]; - refetchCustomIcons?: () => void; - isLoading?: boolean; -}; - -const TabContent = ({ - icons, - type, - value, - onChange, - filter, - onFilterChange, - refetchCustomIcons, - isLoading -}: TabContentProps) => { - const [color, setColor] = useState(value.color || "#0000008a"); - - const onColorChange = useCallback((newColor: string) => { - setColor(newColor); - }, []); +import React, { useMemo, useEffect } from "react"; +import { useIconPickerConfig } from "./config"; +import { iconRepositoryFactory } from "./IconRepositoryFactory"; +import { IconPickerPresenter } from "./IconPickerPresenter"; +import { IconPickerComponent, IconPickerProps } from "./IconPickerComponent"; +import { IconProvider, IconRenderer } from "./IconRenderer"; +import { IconPickerTab } from "./IconPickerTab"; +import { Icon } from "./types"; + +const IconPicker = (props: IconPickerProps) => { + const { iconTypes, iconPackProviders } = useIconPickerConfig(); + const repository = iconRepositoryFactory.getRepository(iconTypes, iconPackProviders); + + const presenter = useMemo(() => { + return new IconPickerPresenter(repository); + }, [repository]); useEffect(() => { - if (value.type === "icon" && value.color !== color) { - onChange({ ...value, color, skinTone: undefined }, false); - } - }, [color]); - - const filteredIcons = useMemo(() => { - const hyphenUnderscoreRegex = /[-_]/g; - - return icons.filter(icon => - icon.name - .replace(hyphenUnderscoreRegex, " ") - .toLowerCase() - .includes(filter.toLowerCase()) - ); - }, [filter, icons]); - - const rows = useMemo(() => { - const groupedObjects = groupBy(filteredIcons, "category"); - const rows = []; - - for (const key in groupedObjects) { - if (key !== "undefined") { - const rowIcons = groupedObjects[key]; - - rows.push([{ categoryName: key }]); - - while (rowIcons.length) { - rows.push(rowIcons.splice(0, COLUMN_COUNT)); - } - } - } - - if (groupedObjects.undefined) { - const rowIcons = groupedObjects.undefined; - - rows.push([{ categoryName: "Uncategorized" }]); - - while (rowIcons.length) { - rows.push(rowIcons.splice(0, COLUMN_COUNT)); - } - } - - return rows; - }, [filteredIcons]); - - const renderRow = useCallback( - ({ index, key, style }: RenderRowProps) => { - const currentRow = rows[index]; - const categoryName = (currentRow[0] as { categoryName: string }).categoryName; - - if (categoryName) { - return ( - - {categoryName} - - ); - } - - return ( - - {(currentRow as Icon[]).map((item, itemKey) => ( - { - onChange({ - type: item.type, - name: item.name, - ...(item.type === "emoji" ? { skinTone: item.skinTone } : {}), - ...(item.type === "icon" ? { color } : {}), - ...(item.width ? { width: item.width } : {}), - value: item.value - }); - }} - > - - - ))} - - ); - }, - [rows, color, value] - ); + presenter.load(props.value); + }, [repository, props.value]); - return ( - - - - {({ value, onChange }) => ( - - )} - - {type === "emoji" && ( - - )} - {type === "icon" && ( - - {({ value, onChange }) => } - - )} - {type === "custom" && ( - { - onChange({ - type: "custom", - name: name || "", - value: src - }); - }} - onChange={({ name, src }) => - onChange({ - type: "custom", - name: name || "", - value: src - }) - } - onClose={() => { - if (refetchCustomIcons) { - refetchCustomIcons(); - } - }} - scope="scope:iconPicker" - accept={["image/svg+xml"]} - > - {({ showFileManager }) => ( - { - showFileManager(); - }} - > - Browse - - )} - - )} - - - {isLoading && } - {filteredIcons.length === 0 ? ( - - No results found. - - ) : ( - - )} - - - ); + return ; }; -export interface IconPickerProps extends FormComponentProps { - label?: string; - description?: string; +interface IconRendererWithProviderProps { + icon: Icon; } -const IconPicker = ({ value = {}, onChange, validation, label, description }: IconPickerProps) => { - const { isValid: validationIsValid, message: validationMessage } = validation || {}; - - const [filter, setFilter] = useState(""); - const tabsRef = useRef(); - const { icons, initialize, isLoading } = useIconPickerConfig(); - const { data, refetch: refetchCustomIcons } = - useQuery(LIST_ICON_FILES); - const customIconsData = data?.fileManager.listFiles.data || []; - - const onFilterChange = useCallback( - (value, cb) => { - setFilter(value); - cb(); - }, - [filter] - ); - - useEffect(() => { - initialize(); - }, [initialize]); - - const emojis = useMemo(() => { - return icons.filter(icon => icon.type === "emoji"); - }, [icons]); - - const defaultIcons = useMemo(() => { - return icons.filter(icon => icon.type === "icon"); - }, [icons]); - - const customIcons = useMemo(() => { - return customIconsData.map(icon => ({ type: "custom", name: icon.name, value: icon.src })); - }, [customIconsData]); - - const onIconChange = useCallback( - (icon: Icon) => { - if (onChange) { - onChange(icon); - } - }, - [onChange] - ); - - const handleSwitchTab = useCallback(() => { - if (!tabsRef.current) { - return; - } - - switch (value.type) { - case "icon": - tabsRef.current.switchTab(0); - break; - case "emoji": - tabsRef.current.switchTab(1); - break; - case "custom": - tabsRef.current.switchTab(2); - break; - } - }, [value.type, tabsRef]); - - return ( - - {label && ( -
- {label} -
- )} - - - {value?.value ? ( - - ) : ( - - )} - - } - onOpen={handleSwitchTab} - > - {({ closeMenu }: { closeMenu: () => void }) => { - const commonTabProps = { - value, - onChange: (value: Icon, closeAfterChange = true) => { - onIconChange(value); - if (closeAfterChange) { - closeMenu(); - } - }, - filter, - onFilterChange, - isLoading - }; - - return ( - <> - - Select an icon - closeMenu()} /> - - - - - - - - - - - - - - ); - }} - - - {validationIsValid === false && ( - {validationMessage} - )} - {validationIsValid !== false && description && ( - {description} - )} -
- ); -}; - -const IconPickerComponent = (props: IconPickerProps) => { +const IconRendererWithProvider = ({ icon }: IconRendererWithProviderProps) => { return ( - <> - - - - + + + ); }; -IconPickerComponent.Icon = IconRenderer; +IconPicker.Icon = IconRendererWithProvider; +IconPicker.IconPickerTab = IconPickerTab; -export { IconPickerComponent as IconPicker }; +export { IconPicker }; diff --git a/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx b/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx new file mode 100644 index 00000000000..0c8b0291061 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx @@ -0,0 +1,119 @@ +import React, { useEffect } from "react"; +import { observer } from "mobx-react-lite"; +import isEqual from "lodash/isEqual"; +import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; +import { ReactComponent as SearchIcon } from "@material-design-icons/svg/outlined/search.svg"; + +import { Menu } from "@webiny/ui/Menu"; +import { Tabs } from "@webiny/ui/Tabs"; +import { Typography } from "@webiny/ui/Typography"; +import { FormElementMessage } from "@webiny/ui/FormElementMessage"; +import { FormComponentProps } from "@webiny/ui/types"; +import { CircularProgress } from "@webiny/ui/Progress"; + +import { IconPickerPresenter } from "./IconPickerPresenter"; +import { IconProvider, IconRenderer } from "./IconRenderer"; +import { + IconPickerWrapper, + iconPickerLabel, + IconPickerInput, + MenuContent, + MenuHeader, + placeholderIcon +} from "./IconPicker.styles"; +import { IconPickerTabRenderer } from "./IconPickerTab"; +import { IconPickerPresenterProvider } from "./IconPickerPresenterProvider"; +import { IconTypeProvider } from "./config/IconType"; + +export interface IconPickerProps extends FormComponentProps { + label?: string; + description?: string; +} + +export interface IconPickerComponentProps extends IconPickerProps { + presenter: IconPickerPresenter; +} + +export const IconPickerComponent = observer( + ({ presenter, label, description, ...props }: IconPickerComponentProps) => { + const { value, onChange } = props; + const { isValid: validationIsValid, message: validationMessage } = props.validation || {}; + const { activeTab, isMenuOpened, isLoading, iconTypes, selectedIcon } = presenter.vm; + + useEffect(() => { + if (onChange && selectedIcon && !isEqual(selectedIcon, value)) { + onChange(selectedIcon); + } + }, [selectedIcon]); + + const setActiveTab = (index: number) => presenter.setActiveTab(index); + + const openMenu = () => presenter.openMenu(); + const closeMenu = () => presenter.closeMenu(); + + return ( + + + {label && ( +
+ {label} +
+ )} + + + {selectedIcon ? ( + + + + ) : ( + + )} + + } + onClose={closeMenu} + onOpen={openMenu} + > + {() => ( + <> + + Select an icon + + + + {isLoading && } + setActiveTab(value)} + > + {iconTypes.map(iconType => ( + + + + ))} + + + + )} + + + {validationIsValid === false && ( + {validationMessage} + )} + {validationIsValid !== false && description && ( + {description} + )} +
+
+ ); + } +); diff --git a/packages/app-admin/src/components/IconPicker/IconPickerPresenter.test.ts b/packages/app-admin/src/components/IconPicker/IconPickerPresenter.test.ts new file mode 100644 index 00000000000..104efc3fa75 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPickerPresenter.test.ts @@ -0,0 +1,118 @@ +import { IconPickerPresenter } from "./IconPickerPresenter"; +import { IconRepository } from "./IconRepository"; +import { Icon } from "./types"; + +const mockIconTypes = [{ name: "icon" }, { name: "emoji" }, { name: "custom" }]; + +const mockIcons: Icon[] = [ + { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘", + category: "People & Body", + skinToneSupport: true + }, + { + type: "icon", + name: "regular_address-book", + value: '', + category: "Business" + } +]; + +const mockIconPackProviders = [ + { + name: "mock_icons", + getIcons: async () => { + return mockIcons; + } + } +]; + +describe("IconPickerPresenter", () => { + const icon: Icon = { + type: "icon", + name: "solid_bullseye", + value: '', + category: "Business", + color: "#282fe6" + }; + + let presenter: IconPickerPresenter; + + beforeEach(() => { + const repository = new IconRepository(mockIconTypes, mockIconPackProviders); + presenter = new IconPickerPresenter(repository); + }); + + it("should create an IconPickerPresenter with the `vm` definition", async () => { + // let's load icons and set a predefined `selectedIcon` + await presenter.load(icon); + + // `vm` should have the expected `selectedIcon` definition + expect(presenter.vm.selectedIcon).toEqual(icon); + + // `vm` should have the expected `icons` definition + expect(presenter.vm.icons).toEqual(mockIcons); + }); + + it("should be able to select an icon", async () => { + // let's load icons + await presenter.load(); + + // should be able to set the icon + presenter.setIcon(presenter.vm.icons[0]); + + // `vm` should have the expected `selectedIcon` value + expect(presenter.vm.selectedIcon).toEqual(presenter.vm.icons[0]); + }); + + it("should be able to add an icon", async () => { + // let's load icons + await presenter.load(); + + // should be able to set the icon + presenter.addIcon(icon); + + // `vm` should have three icons + expect(presenter.vm.icons.length).toBe(3); + + // `vm` should have the expected `icons` value + expect(presenter.vm.icons).toEqual([...mockIcons, icon]); + }); + + it("should be able to filter icons by name", async () => { + // let's load icons + await presenter.load(); + + // should be able to set the filter + presenter.setFilter("book"); + + // `vm` should have only one icon + expect(presenter.vm.icons.length).toBe(1); + + // `vm` should have filtered icon + expect(presenter.vm.icons[0]).toEqual(mockIcons[1]); + }); + + it("should be able to set active tab on menu open", async () => { + // let's load icons and set a predefined `selectedIcon` + await presenter.load(mockIcons[0]); + + // default `isMenuOpened` should be false + expect(presenter.vm.isMenuOpened).toBe(false); + + // default `activeTab` should be 0 + expect(presenter.vm.activeTab).toBe(0); + + // should be able to set `isMenuOpened` + // should be able to set `activeTab` based on `selectedIcon` type + presenter.openMenu(); + + // `vm` should have the expected `isMenuOpened` value + expect(presenter.vm.isMenuOpened).toBe(true); + + // `vm` should have the expected `activeTab` value + expect(presenter.vm.activeTab).toBe(1); + }); +}); diff --git a/packages/app-admin/src/components/IconPicker/IconPickerPresenter.ts b/packages/app-admin/src/components/IconPicker/IconPickerPresenter.ts new file mode 100644 index 00000000000..3c2756044e5 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPickerPresenter.ts @@ -0,0 +1,104 @@ +import { makeAutoObservable, toJS } from "mobx"; + +import { IconRepository } from "./IconRepository"; +import { Icon } from "./types"; +import { IconType } from "./config"; + +export interface IconPickerPresenterInterface { + load(icon: Icon): Promise; + setIcon(icon: Icon): void; + addIcon(icon: Icon): void; + setFilter(value: string): void; + setActiveTab(index: number): void; + openMenu(): void; + closeMenu(): void; + get vm(): { + isLoading: boolean; + activeTab: number; + isMenuOpened: boolean; + icons: Icon[]; + iconTypes: IconType[]; + selectedIcon: Icon | null; + filter: string; + }; +} + +export class IconPickerPresenter implements IconPickerPresenterInterface { + private repository: IconRepository; + private selectedIcon: Icon | null = null; + private filter = ""; + private activeTab = 0; + private isMenuOpened = false; + + constructor(repository: IconRepository) { + this.repository = repository; + makeAutoObservable(this); + } + + async load(value: Icon | null = null) { + this.selectedIcon = value; + + await this.repository.loadIcons(); + } + + get vm() { + return { + activeTab: this.activeTab, + isMenuOpened: this.isMenuOpened, + isLoading: this.repository.getLoading().isLoading, + icons: this.getFilteredIcons(), + iconTypes: this.repository.getIconTypes(), + // `toJS` will unwrap an observable into a POJO. This will make it simple to use in child components. + selectedIcon: toJS(this.selectedIcon), + filter: this.filter + }; + } + + addIcon(icon: Icon) { + this.repository.addIcon(icon); + } + + closeMenu(): void { + this.isMenuOpened = false; + } + + openMenu(): void { + this.isMenuOpened = true; + this.resetActiveTab(); + } + + setActiveTab(index: number) { + this.activeTab = index; + } + + setIcon(icon: Icon) { + this.selectedIcon = icon; + } + + setFilter(value: string) { + this.filter = value; + } + + private getFilteredIcons() { + const hyphenUnderscoreRegex = /[-_]/g; + const icons = this.repository.getIcons(); + + return icons.filter(icon => + icon.name + .replace(hyphenUnderscoreRegex, " ") + .toLowerCase() + .includes(this.filter.toLowerCase()) + ); + } + + private getActiveTabByType(type: string) { + const iconTypes = this.repository.getIconTypes(); + const index = iconTypes.findIndex(iconsByType => iconsByType.name === type); + + return index !== -1 ? index : 0; + } + + private resetActiveTab() { + this.setActiveTab(this.selectedIcon ? this.getActiveTabByType(this.selectedIcon.type) : 0); + } +} diff --git a/packages/app-admin/src/components/IconPicker/IconPickerPresenterProvider.tsx b/packages/app-admin/src/components/IconPicker/IconPickerPresenterProvider.tsx new file mode 100644 index 00000000000..f3e89603c21 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPickerPresenterProvider.tsx @@ -0,0 +1,31 @@ +import React from "react"; + +import { IconPickerPresenterInterface } from "./IconPickerPresenter"; + +interface IconPickerPresenterProviderProps { + presenter: IconPickerPresenterInterface; + children: React.ReactNode; +} + +const IconPickerPresenterContext = React.createContext( + undefined +); + +export const IconPickerPresenterProvider = ({ + presenter, + children +}: IconPickerPresenterProviderProps) => { + return ( + + {children} + + ); +}; + +export function useIconPicker() { + const context = React.useContext(IconPickerPresenterContext); + if (!context) { + throw Error(`Missing in the component tree!`); + } + return context; +} diff --git a/packages/app-admin/src/components/IconPicker/IconPickerTab.tsx b/packages/app-admin/src/components/IconPicker/IconPickerTab.tsx new file mode 100644 index 00000000000..b4b2ac496d6 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconPickerTab.tsx @@ -0,0 +1,185 @@ +import React, { Fragment } from "react"; +import { List } from "react-virtualized"; +import groupBy from "lodash/groupBy"; + +import { Tab } from "@webiny/ui/Tabs"; +import { Typography } from "@webiny/ui/Typography"; +import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; +import { Input } from "@webiny/ui/Input"; +import { makeComposable } from "@webiny/react-composition"; + +import { IconProvider, IconRenderer } from "./IconRenderer"; +import { + Row, + Cell, + CategoryLabel, + TabContentWrapper, + ListWrapper, + NoResultsWrapper, + InputsWrapper +} from "./IconPicker.styles"; +import { useIconPicker } from "./IconPickerPresenterProvider"; +import { useIconType } from "./config/IconType"; +import { Icon, IconPickerGridRow } from "./types"; + +const COLUMN_COUNT = 8; + +export const IconPickerTabRenderer = makeComposable("IconPickerTabRenderer"); + +const getRows = (icons: Icon[]) => { + // Group the icons by their category. + const groupedObjects = groupBy(icons, "category"); + const rows: IconPickerGridRow[] = []; + + // Iterate over each category in the grouped icons. + for (const key in groupedObjects) { + // Skip any group where the key is `undefined` (these icons will be handled separately). + if (key !== "undefined") { + const rowIcons = groupedObjects[key]; + + // Add a row for the category name. + rows.push({ type: "category-name", name: key }); + + // Split the icons in this category into groups of COLUMN_COUNT and add them as rows. + while (rowIcons.length) { + rows.push({ type: "icons", icons: rowIcons.splice(0, COLUMN_COUNT) }); + } + } + } + + // Handle icons that don't have a category (key is `undefined`). + if (groupedObjects.undefined) { + const rowIcons = groupedObjects.undefined; + + // Add a row for the `Uncategorized` category name. + rows.push({ type: "category-name", name: "Uncategorized" }); + + // Split these icons into groups of COLUMN_COUNT and add them as rows. + while (rowIcons.length) { + rows.push({ type: "icons", icons: rowIcons.splice(0, COLUMN_COUNT) }); + } + } + + return rows; +}; + +const useIconTypeRows = (type: string) => { + const presenter = useIconPicker(); + const icons = presenter.vm.icons.filter(icon => icon.type === type); + const rows = getRows(icons); + + return { + isEmpty: rows.length === 0, + rows, + rowCount: rows.length + }; +}; + +interface RenderRowProps { + onIconClick: (icon: Icon) => void; + style: Record; + row: IconPickerGridRow; + cellDecorator: CellDecorator; +} + +const RowRenderer = ({ row, style, cellDecorator, onIconClick }: RenderRowProps) => { + const presenter = useIconPicker(); + const value = presenter.vm.selectedIcon; + + if (row.type === "category-name") { + return ( + + {row.name} + + ); + } + + return ( + + {row.icons.map((item, itemKey) => ( + + {cellDecorator( + onIconClick(item)} + > + + + + + )} + + ))} + + ); +}; + +interface CellDecorator { + (cell: React.ReactElement): React.ReactElement; +} + +const noopDecorator: CellDecorator = cell => cell; + +export interface IconPickerTabProps { + label: string; + onChange: (icon: Icon) => void; + actions?: React.ReactElement; + cellDecorator?: CellDecorator; +} + +export const IconPickerTab = ({ + label, + actions, + onChange, + cellDecorator = noopDecorator +}: IconPickerTabProps) => { + const { type } = useIconType(); + const { isEmpty, rowCount, rows } = useIconTypeRows(type); + const presenter = useIconPicker(); + + return ( + + + + presenter.setFilter(value)} + > + {({ value, onChange }) => ( + + )} + + {actions ? actions : null} + + + {isEmpty ? ( + + No results found. + + ) : ( + ( + + )} + height={400} + rowCount={rowCount} + rowHeight={40} + width={340} + /> + )} + + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx index 5bb59529dad..3f5e9c3dc1a 100644 --- a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx +++ b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx @@ -1,48 +1,32 @@ import React from "react"; -import styled from "@emotion/styled"; - -const EmojiStyled = styled.div<{ size: number }>` - color: black; - width: ${({ size }) => `${size}px`}; - height: ${({ size }) => `${size}px`}; - font-size: ${({ size }) => `${size * 0.8}px`}; - line-height: ${({ size }) => `${size}px`}; -`; - -export type Icon = { - type: string; - name: string; - color?: string; - skinTone?: string; - width?: number; - value: string; -}; +import { toJS } from "mobx"; -type IconProps = { - icon: Icon; - size?: number; -}; +import { makeComposable } from "@webiny/react-composition"; -export const IconRenderer = ({ icon, size = 32 }: IconProps) => { - if (icon.type === "emoji") { - return ( - - {icon.skinTone ? icon.value + icon.skinTone : icon.value} - - ); - } +import { Icon } from "./types"; - if (icon.type === "custom") { - return {icon.name}; - } +export const IconRenderer = makeComposable("IconPickerIcon"); + +interface IconContext { + icon: T; +} - return ( - - ); +const IconContext = React.createContext(undefined); + +interface IconProviderProps { + icon: Icon; + children: React.ReactNode; +} + +export const IconProvider = ({ icon, children }: IconProviderProps) => { + // I want to use the POJO via the context, to reduce the need of using `observer` HOC everywhere. + return {children}; }; + +export function useIcon(): IconContext { + const context = React.useContext(IconContext); + if (!context) { + throw Error(`Missing in the component tree!`); + } + return context as IconContext; +} diff --git a/packages/app-admin/src/components/IconPicker/IconRepository.test.ts b/packages/app-admin/src/components/IconPicker/IconRepository.test.ts new file mode 100644 index 00000000000..f8864c90e5e --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconRepository.test.ts @@ -0,0 +1,70 @@ +import { IconRepository } from "./IconRepository"; +import { Icon } from "./types"; + +const mockIconTypes = [{ name: "icon" }, { name: "emoji" }, { name: "custom" }]; + +const mockIcons: Icon[] = [ + { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘", + category: "People & Body", + skinToneSupport: true + }, + { + type: "icon", + name: "regular_address-book", + value: '', + category: "Business" + } +]; + +const mockIconPackProviders = [ + { + name: "mock_icons", + getIcons: async () => { + return mockIcons; + } + } +]; + +describe("IconRepository", () => { + const icon: Icon = { + type: "icon", + name: "solid_bullseye", + value: '', + category: "Business", + color: "#282fe6" + }; + + it("should create an IconRepository and load icons and iconTypes", async () => { + // create repository + const repository = new IconRepository(mockIconTypes, mockIconPackProviders); + + // repository should get the expected iconTypes array + expect(repository.getIconTypes()).toEqual(mockIconTypes); + + // getIcons should return empty array + expect(repository.getIcons()).toEqual([]); + + // load icons + await repository.loadIcons(); + + // getIcons should return the expected icons array + expect(repository.getIcons()).toEqual(mockIcons); + }); + + it("should create an IconRepository and add icon", () => { + // create repository + const repository = new IconRepository(mockIconTypes, mockIconPackProviders); + + // getIcons should return empty array + expect(repository.getIcons()).toEqual([]); + + // add icon + repository.addIcon(icon); + + // getIcons should return the expected icons array + expect(repository.getIcons()).toEqual([icon]); + }); +}); diff --git a/packages/app-admin/src/components/IconPicker/IconRepository.ts b/packages/app-admin/src/components/IconPicker/IconRepository.ts new file mode 100644 index 00000000000..e64ddf3ca73 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconRepository.ts @@ -0,0 +1,74 @@ +import cloneDeep from "lodash/cloneDeep"; +import { makeAutoObservable, runInAction } from "mobx"; + +import { Loading } from "./Loading"; +import { IconPackProviderInterface as IconPackProvider, IconType } from "./config"; +import { Icon } from "./types"; + +export class IconRepository { + private readonly iconPackProviders: IconPackProvider[]; + private readonly iconTypes: IconType[]; + private loading: Loading; + private icons: Icon[] = []; + + constructor(iconTypes: IconType[], iconPackProviders: IconPackProvider[]) { + this.iconTypes = iconTypes; + this.loading = new Loading(true); + this.iconPackProviders = iconPackProviders; + makeAutoObservable(this); + } + + async loadIcons() { + if (this.icons.length > 0) { + return; + } + + const icons = await this.runWithLoading(async () => { + const icons = await Promise.all( + this.iconPackProviders.map(provider => provider.getIcons()) + ); + return icons.flat(); + }); + + const iconTypes = this.iconTypes.map(iconType => iconType.name); + + runInAction(() => { + // Make sure we only work with known icon types. + this.icons = icons.filter(icon => iconTypes.includes(icon.type)); + }); + } + + getIcons() { + return cloneDeep(this.icons); + } + + addIcon(icon: Icon) { + this.icons = [...this.icons, icon]; + } + + getIconTypes() { + return this.iconTypes; + } + + getLoading() { + return { + isLoading: this.loading.isLoading, + loadingLabel: this.loading.loadingLabel, + message: this.loading.feedback + }; + } + + private async runWithLoading( + action: () => Promise, + loadingLabel?: string, + successMessage?: string, + failureMessage?: string + ) { + return await this.loading.runCallbackWithLoading( + action, + loadingLabel, + successMessage, + failureMessage + ); + } +} diff --git a/packages/app-admin/src/components/IconPicker/IconRepositoryFactory.ts b/packages/app-admin/src/components/IconPicker/IconRepositoryFactory.ts new file mode 100644 index 00000000000..4abbb930d1b --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/IconRepositoryFactory.ts @@ -0,0 +1,25 @@ +import { IconRepository } from "./IconRepository"; +import { IconPackProviderInterface as IconPackProvider, IconType } from "./config"; + +class IconRepositoryFactory { + private cache: Map = new Map(); + + getRepository(iconTypes: IconType[], iconPackProviders: IconPackProvider[]) { + const cacheKey = this.getCacheKey(iconTypes, iconPackProviders); + + if (!this.cache.has(cacheKey)) { + this.cache.set(cacheKey, new IconRepository(iconTypes, iconPackProviders)); + } + + return this.cache.get(cacheKey) as IconRepository; + } + + private getCacheKey(iconTypes: IconType[], iconPackProviders: IconPackProvider[]) { + return [ + ...iconTypes.map(iconType => iconType.name).sort(), + ...iconPackProviders.map(provider => provider.name).sort() + ].join("#"); + } +} + +export const iconRepositoryFactory = new IconRepositoryFactory(); diff --git a/packages/app-admin/src/components/IconPicker/Loading.ts b/packages/app-admin/src/components/IconPicker/Loading.ts new file mode 100644 index 00000000000..f7cdb135f85 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/Loading.ts @@ -0,0 +1,66 @@ +import { makeAutoObservable } from "mobx"; + +export class Loading { + private _isLoading: boolean; + private _loadingLabel: string; + private _feedback: string; + private _success: boolean; + + constructor(isLoading = false) { + this._isLoading = isLoading; + this._loadingLabel = ""; + this._feedback = ""; + this._success = false; + makeAutoObservable(this); + } + + startLoading(label?: string) { + this._isLoading = true; + this._loadingLabel = label || ""; + this._feedback = ""; + this._success = false; + } + + stopLoadingWithSuccess(message?: string) { + this._isLoading = false; + this._loadingLabel = ""; + this._feedback = message || ""; + this._success = true; + } + + stopLoadingWithError(message?: string) { + this._isLoading = false; + this._loadingLabel = ""; + this._feedback = message || ""; + this._success = false; + } + + get isLoading() { + return this._isLoading; + } + + get loadingLabel() { + return this._loadingLabel; + } + + get feedback() { + return this._feedback; + } + + async runCallbackWithLoading( + callback: () => Promise, + loadingLabel?: string, + successMessage?: string, + failureMessage?: string + ): Promise { + try { + this.startLoading(loadingLabel); + const result = await callback(); + this.stopLoadingWithSuccess(successMessage); + return result; + } catch (e) { + this.stopLoadingWithError(e.message || failureMessage); + throw e; + } + } +} diff --git a/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx b/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx deleted file mode 100644 index 90c59388f3a..00000000000 --- a/packages/app-admin/src/components/IconPicker/SkinToneSelect.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import React from "react"; -import styled from "@emotion/styled"; - -import { Menu } from "@webiny/ui/Menu"; - -import { Icon, IconRenderer } from "./IconRenderer"; -import { IconProps } from "./config/IconPackProvider"; - -const SKIN_TONES = ["", "\u{1f3fb}", "\u{1f3fc}", "\u{1f3fd}", "\u{1f3fe}", "\u{1f3ff}"]; - -const SkinToneSelectWrapper = styled.div` - padding: 4px; - width: 32px; - flex-shrink: 0; - background: #fff; - border-radius: 1px; - box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); - display: inline-block; - cursor: pointer; -`; - -const SkinTonesGrid = styled.div` - display: grid; - gap: 4px; - padding: 4px; -`; - -const SkinTone = styled.div` - cursor: pointer; -`; - -type SkinToneSelectProps = { - emojis: IconProps[]; - icon: Icon; - onChange: (value: Icon) => void; -}; - -export const SkinToneSelect = ({ emojis, icon, onChange }: SkinToneSelectProps) => { - const hasSkinToneSupport = emojis.find(emoji => emoji.value === icon.value)?.skinToneSupport; - - if (!hasSkinToneSupport) { - return ( - - {icon.type === "emoji" && } - - ); - } - - return ( - - - - } - > - {({ closeMenu }: { closeMenu: () => void }) => ( - - {SKIN_TONES.map((skinTone, index) => ( - { - onChange({ ...icon, skinTone, color: undefined }); - closeMenu(); - }} - > - - - ))} - - )} - - ); -}; diff --git a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx index c352481556d..8a4e2b78a64 100644 --- a/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx +++ b/packages/app-admin/src/components/IconPicker/config/IconPackProvider.tsx @@ -1,64 +1,19 @@ -import React, { useCallback, useState, useRef, useEffect } from "react"; +import React from "react"; import { Property, useIdGenerator } from "@webiny/react-properties"; - -export interface IconProps { - type: string; - name: string; - skinToneSupport?: boolean; - category?: string; - value: string; - width?: number; -} +import { Icon } from "~/components/IconPicker/types"; export type IconPackProviderProps = { name: string; - provider: () => Promise | IconProps[]; + provider: () => Promise | Icon[]; }; export const IconPackProvider = ({ name, provider }: IconPackProviderProps) => { const getId = useIdGenerator("iconPackProvider"); - const isMounted = useRef(true); - const [icons, setIcons] = useState([]); - const [isLoading, setIsLoading] = useState(false); - const [isInitialized, setIsInitialized] = useState(false); - - const initialize = useCallback(async () => { - setIsLoading(true); - - const iconsData = await provider(); - - if (!isMounted.current) { - return; - } - - setIcons(iconsData); - setIsInitialized(true); - setIsLoading(false); - }, [provider]); - - useEffect(() => { - return () => { - isMounted.current = false; - }; - }, []); - return ( - - {isLoading && ( - - )} - {isInitialized && ( - - )} - {Boolean(icons.length) && ( - - )} + + ); }; diff --git a/packages/app-admin/src/components/IconPicker/config/IconType.tsx b/packages/app-admin/src/components/IconPicker/config/IconType.tsx new file mode 100644 index 00000000000..a66f7a0380a --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/config/IconType.tsx @@ -0,0 +1,119 @@ +import React from "react"; + +import { Property, useIdGenerator } from "@webiny/react-properties"; +import { createComponentPlugin } from "@webiny/react-composition"; + +import { IconRenderer, useIcon } from "../IconRenderer"; +import { IconPickerTabRenderer } from "../IconPickerTab"; + +export type IconTypeProps = { + name: string; + before?: string; + after?: string; + remove?: boolean; + children?: React.ReactNode; +}; + +interface IconTypeContext { + type: string; +} + +const IconTypeContext = React.createContext(undefined); + +interface IconTypeProviderProps { + type: string; + children: React.ReactNode; +} + +export const IconTypeProvider = ({ type, children }: IconTypeProviderProps) => { + return {children}; +}; + +export function useIconType() { + const context = React.useContext(IconTypeContext); + if (!context) { + throw Error(`Missing in the component tree!`); + } + return context; +} + +export interface IconType extends React.FC { + Icon: typeof Icon; + Tab: typeof Tab; +} + +export const IconType: IconType = ({ + name, + before = undefined, + after = undefined, + remove = false, + children +}) => { + const getId = useIdGenerator("iconType"); + + const placeBefore = before !== undefined ? getId(before) : undefined; + const placeAfter = after !== undefined ? getId(after) : undefined; + + return ( + + + + {children} + + + ); +}; + +export type IconProps = { + element: React.ReactElement; +}; + +export const Icon = ({ element }: IconProps) => { + const { type: configType } = useIconType(); + + const IconDecorator = createComponentPlugin(IconRenderer, Original => { + return function IconRenderer(props) { + const { icon } = useIcon(); + + if (icon.type !== configType) { + return ; + } + + return element; + }; + }); + + return ; +}; + +export type TabProps = { + element: React.ReactElement; +}; + +export const Tab = ({ element }: TabProps) => { + const { type: configType } = useIconType(); + + const IconPickerTabDecorator = createComponentPlugin(IconPickerTabRenderer, Original => { + return function IconPickerTabRenderer(props: React.ComponentProps) { + const { type } = useIconType(); + + if (type !== configType) { + return ; + } + + return element; + }; + }); + + return ; +}; + +IconType.Icon = Icon; +IconType.Tab = Tab; diff --git a/packages/app-admin/src/components/IconPicker/config/emojis.json b/packages/app-admin/src/components/IconPicker/config/emojis.json deleted file mode 100644 index 072484d31ee..00000000000 --- a/packages/app-admin/src/components/IconPicker/config/emojis.json +++ /dev/null @@ -1,15267 +0,0 @@ -{ - "๐Ÿ˜€": { - "name": "grinning face", - "slug": "grinning_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ƒ": { - "name": "grinning face with big eyes", - "slug": "grinning_face_with_big_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜„": { - "name": "grinning face with smiling eyes", - "slug": "grinning_face_with_smiling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "beaming face with smiling eyes", - "slug": "beaming_face_with_smiling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜†": { - "name": "grinning squinting face", - "slug": "grinning_squinting_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜…": { - "name": "grinning face with sweat", - "slug": "grinning_face_with_sweat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคฃ": { - "name": "rolling on the floor laughing", - "slug": "rolling_on_the_floor_laughing", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ˜‚": { - "name": "face with tears of joy", - "slug": "face_with_tears_of_joy", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™‚": { - "name": "slightly smiling face", - "slug": "slightly_smiling_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ™ƒ": { - "name": "upside-down face", - "slug": "upside_down_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซ ": { - "name": "melting face", - "slug": "melting_face", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ˜‰": { - "name": "winking face", - "slug": "winking_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜Š": { - "name": "smiling face with smiling eyes", - "slug": "smiling_face_with_smiling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜‡": { - "name": "smiling face with halo", - "slug": "smiling_face_with_halo", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅฐ": { - "name": "smiling face with hearts", - "slug": "smiling_face_with_hearts", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "smiling face with heart-eyes", - "slug": "smiling_face_with_heart_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคฉ": { - "name": "star-struck", - "slug": "star_struck", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜˜": { - "name": "face blowing a kiss", - "slug": "face_blowing_a_kiss", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜—": { - "name": "kissing face", - "slug": "kissing_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ˜บ๏ธ": { - "name": "smiling face", - "slug": "smiling_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜š": { - "name": "kissing face with closed eyes", - "slug": "kissing_face_with_closed_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜™": { - "name": "kissing face with smiling eyes", - "slug": "kissing_face_with_smiling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅฒ": { - "name": "smiling face with tear", - "slug": "smiling_face_with_tear", - "group": "Smileys & Emotion", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ˜‹": { - "name": "face savoring food", - "slug": "face_savoring_food", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜›": { - "name": "face with tongue", - "slug": "face_with_tongue", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜œ": { - "name": "winking face with tongue", - "slug": "winking_face_with_tongue", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคช": { - "name": "zany face", - "slug": "zany_face", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "squinting face with tongue", - "slug": "squinting_face_with_tongue", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค‘": { - "name": "money-mouth face", - "slug": "money_mouth_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿค—": { - "name": "smiling face with open hands", - "slug": "smiling_face_with_open_hands", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿคญ": { - "name": "face with hand over mouth", - "slug": "face_with_hand_over_mouth", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿซข": { - "name": "face with open eyes and hand over mouth", - "slug": "face_with_open_eyes_and_hand_over_mouth", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿซฃ": { - "name": "face with peeking eye", - "slug": "face_with_peeking_eye", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿคซ": { - "name": "shushing face", - "slug": "shushing_face", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿค”": { - "name": "thinking face", - "slug": "thinking_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซก": { - "name": "saluting face", - "slug": "saluting_face", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿค": { - "name": "zipper-mouth face", - "slug": "zipper_mouth_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿคจ": { - "name": "face with raised eyebrow", - "slug": "face_with_raised_eyebrow", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "neutral face", - "slug": "neutral_face", - "group": "Smileys & Emotion", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ˜‘": { - "name": "expressionless face", - "slug": "expressionless_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ถ": { - "name": "face without mouth", - "slug": "face_without_mouth", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซฅ": { - "name": "dotted line face", - "slug": "dotted_line_face", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ˜ถโ€๐ŸŒซ๏ธ": { - "name": "face in clouds", - "slug": "face_in_clouds", - "group": "Smileys & Emotion", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "smirking face", - "slug": "smirking_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜’": { - "name": "unamused face", - "slug": "unamused_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™„": { - "name": "face with rolling eyes", - "slug": "face_with_rolling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ฌ": { - "name": "grimacing face", - "slug": "grimacing_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ฎโ€๐Ÿ’จ": { - "name": "face exhaling", - "slug": "face_exhaling", - "group": "Smileys & Emotion", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": false - }, - "๐Ÿคฅ": { - "name": "lying face", - "slug": "lying_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿซจ": { - "name": "shaking face", - "slug": "shaking_face", - "group": "Smileys & Emotion", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ˜Œ": { - "name": "relieved face", - "slug": "relieved_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜”": { - "name": "pensive face", - "slug": "pensive_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ช": { - "name": "sleepy face", - "slug": "sleepy_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคค": { - "name": "drooling face", - "slug": "drooling_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ˜ด": { - "name": "sleeping face", - "slug": "sleeping_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ท": { - "name": "face with medical mask", - "slug": "face_with_medical_mask", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค’": { - "name": "face with thermometer", - "slug": "face_with_thermometer", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿค•": { - "name": "face with head-bandage", - "slug": "face_with_head_bandage", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿคข": { - "name": "nauseated face", - "slug": "nauseated_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿคฎ": { - "name": "face vomiting", - "slug": "face_vomiting", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿคง": { - "name": "sneezing face", - "slug": "sneezing_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅต": { - "name": "hot face", - "slug": "hot_face", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅถ": { - "name": "cold face", - "slug": "cold_face", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅด": { - "name": "woozy face", - "slug": "woozy_face", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ˜ต": { - "name": "face with crossed-out eyes", - "slug": "face_with_crossed_out_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ตโ€๐Ÿ’ซ": { - "name": "face with spiral eyes", - "slug": "face_with_spiral_eyes", - "group": "Smileys & Emotion", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": false - }, - "๐Ÿคฏ": { - "name": "exploding head", - "slug": "exploding_head", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿค ": { - "name": "cowboy hat face", - "slug": "cowboy_hat_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅณ": { - "name": "partying face", - "slug": "partying_face", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅธ": { - "name": "disguised face", - "slug": "disguised_face", - "group": "Smileys & Emotion", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ˜Ž": { - "name": "smiling face with sunglasses", - "slug": "smiling_face_with_sunglasses", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿค“": { - "name": "nerd face", - "slug": "nerd_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿง": { - "name": "face with monocle", - "slug": "face_with_monocle", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜•": { - "name": "confused face", - "slug": "confused_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซค": { - "name": "face with diagonal mouth", - "slug": "face_with_diagonal_mouth", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ˜Ÿ": { - "name": "worried face", - "slug": "worried_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ™": { - "name": "slightly frowning face", - "slug": "slightly_frowning_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ˜น๏ธ": { - "name": "frowning face", - "slug": "frowning_face", - "group": "Smileys & Emotion", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ˜ฎ": { - "name": "face with open mouth", - "slug": "face_with_open_mouth", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ฏ": { - "name": "hushed face", - "slug": "hushed_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ฒ": { - "name": "astonished face", - "slug": "astonished_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ณ": { - "name": "flushed face", - "slug": "flushed_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅบ": { - "name": "pleading face", - "slug": "pleading_face", - "group": "Smileys & Emotion", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅน": { - "name": "face holding back tears", - "slug": "face_holding_back_tears", - "group": "Smileys & Emotion", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ˜ฆ": { - "name": "frowning face with open mouth", - "slug": "frowning_face_with_open_mouth", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜ง": { - "name": "anguished face", - "slug": "anguished_face", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜จ": { - "name": "fearful face", - "slug": "fearful_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฐ": { - "name": "anxious face with sweat", - "slug": "anxious_face_with_sweat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฅ": { - "name": "sad but relieved face", - "slug": "sad_but_relieved_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ข": { - "name": "crying face", - "slug": "crying_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ญ": { - "name": "loudly crying face", - "slug": "loudly_crying_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฑ": { - "name": "face screaming in fear", - "slug": "face_screaming_in_fear", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜–": { - "name": "confounded face", - "slug": "confounded_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฃ": { - "name": "persevering face", - "slug": "persevering_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ž": { - "name": "disappointed face", - "slug": "disappointed_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜“": { - "name": "downcast face with sweat", - "slug": "downcast_face_with_sweat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฉ": { - "name": "weary face", - "slug": "weary_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ซ": { - "name": "tired face", - "slug": "tired_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅฑ": { - "name": "yawning face", - "slug": "yawning_face", - "group": "Smileys & Emotion", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ˜ค": { - "name": "face with steam from nose", - "slug": "face_with_steam_from_nose", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ก": { - "name": "enraged face", - "slug": "enraged_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ ": { - "name": "angry face", - "slug": "angry_face", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคฌ": { - "name": "face with symbols on mouth", - "slug": "face_with_symbols_on_mouth", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜ˆ": { - "name": "smiling face with horns", - "slug": "smiling_face_with_horns", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฟ": { - "name": "angry face with horns", - "slug": "angry_face_with_horns", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’€": { - "name": "skull", - "slug": "skull", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜ ๏ธ": { - "name": "skull and crossbones", - "slug": "skull_and_crossbones", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’ฉ": { - "name": "pile of poo", - "slug": "pile_of_poo", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคก": { - "name": "clown face", - "slug": "clown_face", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ‘น": { - "name": "ogre", - "slug": "ogre", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘บ": { - "name": "goblin", - "slug": "goblin", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘ป": { - "name": "ghost", - "slug": "ghost", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘ฝ": { - "name": "alien", - "slug": "alien", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘พ": { - "name": "alien monster", - "slug": "alien_monster", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค–": { - "name": "robot", - "slug": "robot", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ˜บ": { - "name": "grinning cat", - "slug": "grinning_cat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ธ": { - "name": "grinning cat with smiling eyes", - "slug": "grinning_cat_with_smiling_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜น": { - "name": "cat with tears of joy", - "slug": "cat_with_tears_of_joy", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ป": { - "name": "smiling cat with heart-eyes", - "slug": "smiling_cat_with_heart_eyes", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ผ": { - "name": "cat with wry smile", - "slug": "cat_with_wry_smile", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฝ": { - "name": "kissing cat", - "slug": "kissing_cat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™€": { - "name": "weary cat", - "slug": "weary_cat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜ฟ": { - "name": "crying cat", - "slug": "crying_cat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜พ": { - "name": "pouting cat", - "slug": "pouting_cat", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™ˆ": { - "name": "see-no-evil monkey", - "slug": "see_no_evil_monkey", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™‰": { - "name": "hear-no-evil monkey", - "slug": "hear_no_evil_monkey", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™Š": { - "name": "speak-no-evil monkey", - "slug": "speak_no_evil_monkey", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’Œ": { - "name": "love letter", - "slug": "love_letter", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’˜": { - "name": "heart with arrow", - "slug": "heart_with_arrow", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "heart with ribbon", - "slug": "heart_with_ribbon", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’–": { - "name": "sparkling heart", - "slug": "sparkling_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’—": { - "name": "growing heart", - "slug": "growing_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’“": { - "name": "beating heart", - "slug": "beating_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ž": { - "name": "revolving hearts", - "slug": "revolving_hearts", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’•": { - "name": "two hearts", - "slug": "two_hearts", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’Ÿ": { - "name": "heart decoration", - "slug": "heart_decoration", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฃ๏ธ": { - "name": "heart exclamation", - "slug": "heart_exclamation", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’”": { - "name": "broken heart", - "slug": "broken_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โค๏ธโ€๐Ÿ”ฅ": { - "name": "heart on fire", - "slug": "heart_on_fire", - "group": "Smileys & Emotion", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": false - }, - "โค๏ธโ€๐Ÿฉน": { - "name": "mending heart", - "slug": "mending_heart", - "group": "Smileys & Emotion", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": false - }, - "โค๏ธ": { - "name": "red heart", - "slug": "red_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉท": { - "name": "pink heart", - "slug": "pink_heart", - "group": "Smileys & Emotion", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿงก": { - "name": "orange heart", - "slug": "orange_heart", - "group": "Smileys & Emotion", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ’›": { - "name": "yellow heart", - "slug": "yellow_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’š": { - "name": "green heart", - "slug": "green_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’™": { - "name": "blue heart", - "slug": "blue_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉต": { - "name": "light blue heart", - "slug": "light_blue_heart", - "group": "Smileys & Emotion", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ’œ": { - "name": "purple heart", - "slug": "purple_heart", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸคŽ": { - "name": "brown heart", - "slug": "brown_heart", - "group": "Smileys & Emotion", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ–ค": { - "name": "black heart", - "slug": "black_heart", - "group": "Smileys & Emotion", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฉถ": { - "name": "grey heart", - "slug": "grey_heart", - "group": "Smileys & Emotion", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿค": { - "name": "white heart", - "slug": "white_heart", - "group": "Smileys & Emotion", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ’‹": { - "name": "kiss mark", - "slug": "kiss_mark", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฏ": { - "name": "hundred points", - "slug": "hundred_points", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ข": { - "name": "anger symbol", - "slug": "anger_symbol", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฅ": { - "name": "collision", - "slug": "collision", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ซ": { - "name": "dizzy", - "slug": "dizzy", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฆ": { - "name": "sweat droplets", - "slug": "sweat_droplets", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’จ": { - "name": "dashing away", - "slug": "dashing_away", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ณ๏ธ": { - "name": "hole", - "slug": "hole", - "group": "Smileys & Emotion", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ’ฌ": { - "name": "speech balloon", - "slug": "speech_balloon", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ": { - "name": "eye in speech bubble", - "slug": "eye_in_speech_bubble", - "group": "Smileys & Emotion", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ—จ๏ธ": { - "name": "left speech bubble", - "slug": "left_speech_bubble", - "group": "Smileys & Emotion", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ—ฏ๏ธ": { - "name": "right anger bubble", - "slug": "right_anger_bubble", - "group": "Smileys & Emotion", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ’ญ": { - "name": "thought balloon", - "slug": "thought_balloon", - "group": "Smileys & Emotion", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’ค": { - "name": "ZZZ", - "slug": "zzz", - "group": "Smileys & Emotion", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘‹": { - "name": "waving hand", - "slug": "waving_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿคš": { - "name": "raised back of hand", - "slug": "raised_back_of_hand", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ–๏ธ": { - "name": "hand with fingers splayed", - "slug": "hand_with_fingers_splayed", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "โœ‹": { - "name": "raised hand", - "slug": "raised_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ––": { - "name": "vulcan salute", - "slug": "vulcan_salute", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿซฑ": { - "name": "rightwards hand", - "slug": "rightwards_hand", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿซฒ": { - "name": "leftwards hand", - "slug": "leftwards_hand", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿซณ": { - "name": "palm down hand", - "slug": "palm_down_hand", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿซด": { - "name": "palm up hand", - "slug": "palm_up_hand", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿซท": { - "name": "leftwards pushing hand", - "slug": "leftwards_pushing_hand", - "group": "People & Body", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "15.0" - }, - "๐Ÿซธ": { - "name": "rightwards pushing hand", - "slug": "rightwards_pushing_hand", - "group": "People & Body", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "15.0" - }, - "๐Ÿ‘Œ": { - "name": "OK hand", - "slug": "ok_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐ŸคŒ": { - "name": "pinched fingers", - "slug": "pinched_fingers", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿค": { - "name": "pinching hand", - "slug": "pinching_hand", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "โœŒ๏ธ": { - "name": "victory hand", - "slug": "victory_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿคž": { - "name": "crossed fingers", - "slug": "crossed_fingers", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿซฐ": { - "name": "hand with index finger and thumb crossed", - "slug": "hand_with_index_finger_and_thumb_crossed", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐ŸคŸ": { - "name": "love-you gesture", - "slug": "love_you_gesture", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿค˜": { - "name": "sign of the horns", - "slug": "sign_of_the_horns", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿค™": { - "name": "call me hand", - "slug": "call_me_hand", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ‘ˆ": { - "name": "backhand index pointing left", - "slug": "backhand_index_pointing_left", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘‰": { - "name": "backhand index pointing right", - "slug": "backhand_index_pointing_right", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘†": { - "name": "backhand index pointing up", - "slug": "backhand_index_pointing_up", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ–•": { - "name": "middle finger", - "slug": "middle_finger", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘‡": { - "name": "backhand index pointing down", - "slug": "backhand_index_pointing_down", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "โ˜๏ธ": { - "name": "index pointing up", - "slug": "index_pointing_up", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿซต": { - "name": "index pointing at the viewer", - "slug": "index_pointing_at_the_viewer", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿ‘": { - "name": "thumbs up", - "slug": "thumbs_up", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘Ž": { - "name": "thumbs down", - "slug": "thumbs_down", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "โœŠ": { - "name": "raised fist", - "slug": "raised_fist", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘Š": { - "name": "oncoming fist", - "slug": "oncoming_fist", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿค›": { - "name": "left-facing fist", - "slug": "left_facing_fist", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคœ": { - "name": "right-facing fist", - "slug": "right_facing_fist", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ‘": { - "name": "clapping hands", - "slug": "clapping_hands", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™Œ": { - "name": "raising hands", - "slug": "raising_hands", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿซถ": { - "name": "heart hands", - "slug": "heart_hands", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿ‘": { - "name": "open hands", - "slug": "open_hands", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿคฒ": { - "name": "palms up together", - "slug": "palms_up_together", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿค": { - "name": "handshake", - "slug": "handshake", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿ™": { - "name": "folded hands", - "slug": "folded_hands", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "โœ๏ธ": { - "name": "writing hand", - "slug": "writing_hand", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ’…": { - "name": "nail polish", - "slug": "nail_polish", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿคณ": { - "name": "selfie", - "slug": "selfie", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ’ช": { - "name": "flexed biceps", - "slug": "flexed_biceps", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿฆพ": { - "name": "mechanical arm", - "slug": "mechanical_arm", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆฟ": { - "name": "mechanical leg", - "slug": "mechanical_leg", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆต": { - "name": "leg", - "slug": "leg", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆถ": { - "name": "foot", - "slug": "foot", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿ‘‚": { - "name": "ear", - "slug": "ear", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿฆป": { - "name": "ear with hearing aid", - "slug": "ear_with_hearing_aid", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ƒ": { - "name": "nose", - "slug": "nose", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿง ": { - "name": "brain", - "slug": "brain", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿซ€": { - "name": "anatomical heart", - "slug": "anatomical_heart", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "lungs", - "slug": "lungs", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆท": { - "name": "tooth", - "slug": "tooth", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆด": { - "name": "bone", - "slug": "bone", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ‘€": { - "name": "eyes", - "slug": "eyes", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘๏ธ": { - "name": "eye", - "slug": "eye", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ‘…": { - "name": "tongue", - "slug": "tongue", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘„": { - "name": "mouth", - "slug": "mouth", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซฆ": { - "name": "biting lip", - "slug": "biting_lip", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ‘ถ": { - "name": "baby", - "slug": "baby", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿง’": { - "name": "child", - "slug": "child", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿ‘ฆ": { - "name": "boy", - "slug": "boy", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ง": { - "name": "girl", - "slug": "girl", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿง‘": { - "name": "person", - "slug": "person", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿ‘ฑ": { - "name": "person blond hair", - "slug": "person_blond_hair", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘จ": { - "name": "man", - "slug": "man", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿง”": { - "name": "person beard", - "slug": "person_beard", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง”โ€โ™‚๏ธ": { - "name": "man beard", - "slug": "man_beard", - "group": "People & Body", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿง”โ€โ™€๏ธ": { - "name": "woman beard", - "slug": "woman_beard", - "group": "People & Body", - "emoji_version": "13.1", - "unicode_version": "13.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘จโ€๐Ÿฆฐ": { - "name": "man red hair", - "slug": "man_red_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿ‘จโ€๐Ÿฆฑ": { - "name": "man curly hair", - "slug": "man_curly_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿ‘จโ€๐Ÿฆณ": { - "name": "man white hair", - "slug": "man_white_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿ‘จโ€๐Ÿฆฒ": { - "name": "man bald", - "slug": "man_bald", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿ‘ฉ": { - "name": "woman", - "slug": "woman", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ฉโ€๐Ÿฆฐ": { - "name": "woman red hair", - "slug": "woman_red_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿง‘โ€๐Ÿฆฐ": { - "name": "person red hair", - "slug": "person_red_hair", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘ฉโ€๐Ÿฆฑ": { - "name": "woman curly hair", - "slug": "woman_curly_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿง‘โ€๐Ÿฆฑ": { - "name": "person curly hair", - "slug": "person_curly_hair", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘ฉโ€๐Ÿฆณ": { - "name": "woman white hair", - "slug": "woman_white_hair", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿง‘โ€๐Ÿฆณ": { - "name": "person white hair", - "slug": "person_white_hair", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘ฉโ€๐Ÿฆฒ": { - "name": "woman bald", - "slug": "woman_bald", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿง‘โ€๐Ÿฆฒ": { - "name": "person bald", - "slug": "person_bald", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘ฑโ€โ™€๏ธ": { - "name": "woman blond hair", - "slug": "woman_blond_hair", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฑโ€โ™‚๏ธ": { - "name": "man blond hair", - "slug": "man_blond_hair", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง“": { - "name": "older person", - "slug": "older_person", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿ‘ด": { - "name": "old man", - "slug": "old_man", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ต": { - "name": "old woman", - "slug": "old_woman", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™": { - "name": "person frowning", - "slug": "person_frowning", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™โ€โ™‚๏ธ": { - "name": "man frowning", - "slug": "man_frowning", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™โ€โ™€๏ธ": { - "name": "woman frowning", - "slug": "woman_frowning", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™Ž": { - "name": "person pouting", - "slug": "person_pouting", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™Žโ€โ™‚๏ธ": { - "name": "man pouting", - "slug": "man_pouting", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™Žโ€โ™€๏ธ": { - "name": "woman pouting", - "slug": "woman_pouting", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™…": { - "name": "person gesturing NO", - "slug": "person_gesturing_no", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™…โ€โ™‚๏ธ": { - "name": "man gesturing NO", - "slug": "man_gesturing_no", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™…โ€โ™€๏ธ": { - "name": "woman gesturing NO", - "slug": "woman_gesturing_no", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™†": { - "name": "person gesturing OK", - "slug": "person_gesturing_ok", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™†โ€โ™‚๏ธ": { - "name": "man gesturing OK", - "slug": "man_gesturing_ok", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™†โ€โ™€๏ธ": { - "name": "woman gesturing OK", - "slug": "woman_gesturing_ok", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’": { - "name": "person tipping hand", - "slug": "person_tipping_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ’โ€โ™‚๏ธ": { - "name": "man tipping hand", - "slug": "man_tipping_hand", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’โ€โ™€๏ธ": { - "name": "woman tipping hand", - "slug": "woman_tipping_hand", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™‹": { - "name": "person raising hand", - "slug": "person_raising_hand", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™‹โ€โ™‚๏ธ": { - "name": "man raising hand", - "slug": "man_raising_hand", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™‹โ€โ™€๏ธ": { - "name": "woman raising hand", - "slug": "woman_raising_hand", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง": { - "name": "deaf person", - "slug": "deaf_person", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿงโ€โ™‚๏ธ": { - "name": "deaf man", - "slug": "deaf_man", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿงโ€โ™€๏ธ": { - "name": "deaf woman", - "slug": "deaf_woman", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ™‡": { - "name": "person bowing", - "slug": "person_bowing", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ™‡โ€โ™‚๏ธ": { - "name": "man bowing", - "slug": "man_bowing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ™‡โ€โ™€๏ธ": { - "name": "woman bowing", - "slug": "woman_bowing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคฆ": { - "name": "person facepalming", - "slug": "person_facepalming", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคฆโ€โ™‚๏ธ": { - "name": "man facepalming", - "slug": "man_facepalming", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคฆโ€โ™€๏ธ": { - "name": "woman facepalming", - "slug": "woman_facepalming", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคท": { - "name": "person shrugging", - "slug": "person_shrugging", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคทโ€โ™‚๏ธ": { - "name": "man shrugging", - "slug": "man_shrugging", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคทโ€โ™€๏ธ": { - "name": "woman shrugging", - "slug": "woman_shrugging", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€โš•๏ธ": { - "name": "health worker", - "slug": "health_worker", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€โš•๏ธ": { - "name": "man health worker", - "slug": "man_health_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€โš•๏ธ": { - "name": "woman health worker", - "slug": "woman_health_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐ŸŽ“": { - "name": "student", - "slug": "student", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐ŸŽ“": { - "name": "man student", - "slug": "man_student", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐ŸŽ“": { - "name": "woman student", - "slug": "woman_student", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿซ": { - "name": "teacher", - "slug": "teacher", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿซ": { - "name": "man teacher", - "slug": "man_teacher", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿซ": { - "name": "woman teacher", - "slug": "woman_teacher", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€โš–๏ธ": { - "name": "judge", - "slug": "judge", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€โš–๏ธ": { - "name": "man judge", - "slug": "man_judge", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€โš–๏ธ": { - "name": "woman judge", - "slug": "woman_judge", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐ŸŒพ": { - "name": "farmer", - "slug": "farmer", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐ŸŒพ": { - "name": "man farmer", - "slug": "man_farmer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐ŸŒพ": { - "name": "woman farmer", - "slug": "woman_farmer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿณ": { - "name": "cook", - "slug": "cook", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿณ": { - "name": "man cook", - "slug": "man_cook", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿณ": { - "name": "woman cook", - "slug": "woman_cook", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿ”ง": { - "name": "mechanic", - "slug": "mechanic", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿ”ง": { - "name": "man mechanic", - "slug": "man_mechanic", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿ”ง": { - "name": "woman mechanic", - "slug": "woman_mechanic", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿญ": { - "name": "factory worker", - "slug": "factory_worker", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿญ": { - "name": "man factory worker", - "slug": "man_factory_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿญ": { - "name": "woman factory worker", - "slug": "woman_factory_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿ’ผ": { - "name": "office worker", - "slug": "office_worker", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿ’ผ": { - "name": "man office worker", - "slug": "man_office_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿ’ผ": { - "name": "woman office worker", - "slug": "woman_office_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿ”ฌ": { - "name": "scientist", - "slug": "scientist", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿ”ฌ": { - "name": "man scientist", - "slug": "man_scientist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿ”ฌ": { - "name": "woman scientist", - "slug": "woman_scientist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿ’ป": { - "name": "technologist", - "slug": "technologist", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿ’ป": { - "name": "man technologist", - "slug": "man_technologist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿ’ป": { - "name": "woman technologist", - "slug": "woman_technologist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐ŸŽค": { - "name": "singer", - "slug": "singer", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐ŸŽค": { - "name": "man singer", - "slug": "man_singer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐ŸŽค": { - "name": "woman singer", - "slug": "woman_singer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐ŸŽจ": { - "name": "artist", - "slug": "artist", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐ŸŽจ": { - "name": "man artist", - "slug": "man_artist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐ŸŽจ": { - "name": "woman artist", - "slug": "woman_artist", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€โœˆ๏ธ": { - "name": "pilot", - "slug": "pilot", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€โœˆ๏ธ": { - "name": "man pilot", - "slug": "man_pilot", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€โœˆ๏ธ": { - "name": "woman pilot", - "slug": "woman_pilot", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿš€": { - "name": "astronaut", - "slug": "astronaut", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿš€": { - "name": "man astronaut", - "slug": "man_astronaut", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿš€": { - "name": "woman astronaut", - "slug": "woman_astronaut", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿš’": { - "name": "firefighter", - "slug": "firefighter", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿš’": { - "name": "man firefighter", - "slug": "man_firefighter", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฉโ€๐Ÿš’": { - "name": "woman firefighter", - "slug": "woman_firefighter", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฎ": { - "name": "police officer", - "slug": "police_officer", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ฎโ€โ™‚๏ธ": { - "name": "man police officer", - "slug": "man_police_officer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฎโ€โ™€๏ธ": { - "name": "woman police officer", - "slug": "woman_police_officer", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ•ต๏ธ": { - "name": "detective", - "slug": "detective", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "2.0" - }, - "๐Ÿ•ต๏ธโ€โ™‚๏ธ": { - "name": "man detective", - "slug": "man_detective", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ•ต๏ธโ€โ™€๏ธ": { - "name": "woman detective", - "slug": "woman_detective", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’‚": { - "name": "guard", - "slug": "guard", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ’‚โ€โ™‚๏ธ": { - "name": "man guard", - "slug": "man_guard", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’‚โ€โ™€๏ธ": { - "name": "woman guard", - "slug": "woman_guard", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿฅท": { - "name": "ninja", - "slug": "ninja", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿ‘ท": { - "name": "construction worker", - "slug": "construction_worker", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ทโ€โ™‚๏ธ": { - "name": "man construction worker", - "slug": "man_construction_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ทโ€โ™€๏ธ": { - "name": "woman construction worker", - "slug": "woman_construction_worker", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿซ…": { - "name": "person with crown", - "slug": "person_with_crown", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿคด": { - "name": "prince", - "slug": "prince", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ‘ธ": { - "name": "princess", - "slug": "princess", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ณ": { - "name": "person wearing turban", - "slug": "person_wearing_turban", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ณโ€โ™‚๏ธ": { - "name": "man wearing turban", - "slug": "man_wearing_turban", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ณโ€โ™€๏ธ": { - "name": "woman wearing turban", - "slug": "woman_wearing_turban", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฒ": { - "name": "person with skullcap", - "slug": "person_with_skullcap", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿง•": { - "name": "woman with headscarf", - "slug": "woman_with_headscarf", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿคต": { - "name": "person in tuxedo", - "slug": "person_in_tuxedo", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคตโ€โ™‚๏ธ": { - "name": "man in tuxedo", - "slug": "man_in_tuxedo", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿคตโ€โ™€๏ธ": { - "name": "woman in tuxedo", - "slug": "woman_in_tuxedo", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿ‘ฐ": { - "name": "person with veil", - "slug": "person_with_veil", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ‘ฐโ€โ™‚๏ธ": { - "name": "man with veil", - "slug": "man_with_veil", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿ‘ฐโ€โ™€๏ธ": { - "name": "woman with veil", - "slug": "woman_with_veil", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿคฐ": { - "name": "pregnant woman", - "slug": "pregnant_woman", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿซƒ": { - "name": "pregnant man", - "slug": "pregnant_man", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿซ„": { - "name": "pregnant person", - "slug": "pregnant_person", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "14.0" - }, - "๐Ÿคฑ": { - "name": "breast-feeding", - "slug": "breast_feeding", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿ‘ฉโ€๐Ÿผ": { - "name": "woman feeding baby", - "slug": "woman_feeding_baby", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿ‘จโ€๐Ÿผ": { - "name": "man feeding baby", - "slug": "man_feeding_baby", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿง‘โ€๐Ÿผ": { - "name": "person feeding baby", - "slug": "person_feeding_baby", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿ‘ผ": { - "name": "baby angel", - "slug": "baby_angel", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐ŸŽ…": { - "name": "Santa Claus", - "slug": "santa_claus", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿคถ": { - "name": "Mrs. Claus", - "slug": "mrs_claus", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿง‘โ€๐ŸŽ„": { - "name": "mx claus", - "slug": "mx_claus", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.0" - }, - "๐Ÿฆธ": { - "name": "superhero", - "slug": "superhero", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆธโ€โ™‚๏ธ": { - "name": "man superhero", - "slug": "man_superhero", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆธโ€โ™€๏ธ": { - "name": "woman superhero", - "slug": "woman_superhero", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆน": { - "name": "supervillain", - "slug": "supervillain", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆนโ€โ™‚๏ธ": { - "name": "man supervillain", - "slug": "man_supervillain", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿฆนโ€โ™€๏ธ": { - "name": "woman supervillain", - "slug": "woman_supervillain", - "group": "People & Body", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "11.0" - }, - "๐Ÿง™": { - "name": "mage", - "slug": "mage", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง™โ€โ™‚๏ธ": { - "name": "man mage", - "slug": "man_mage", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง™โ€โ™€๏ธ": { - "name": "woman mage", - "slug": "woman_mage", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงš": { - "name": "fairy", - "slug": "fairy", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงšโ€โ™‚๏ธ": { - "name": "man fairy", - "slug": "man_fairy", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงšโ€โ™€๏ธ": { - "name": "woman fairy", - "slug": "woman_fairy", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง›": { - "name": "vampire", - "slug": "vampire", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง›โ€โ™‚๏ธ": { - "name": "man vampire", - "slug": "man_vampire", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง›โ€โ™€๏ธ": { - "name": "woman vampire", - "slug": "woman_vampire", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงœ": { - "name": "merperson", - "slug": "merperson", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงœโ€โ™‚๏ธ": { - "name": "merman", - "slug": "merman", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงœโ€โ™€๏ธ": { - "name": "mermaid", - "slug": "mermaid", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง": { - "name": "elf", - "slug": "elf", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงโ€โ™‚๏ธ": { - "name": "man elf", - "slug": "man_elf", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงโ€โ™€๏ธ": { - "name": "woman elf", - "slug": "woman_elf", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿงž": { - "name": "genie", - "slug": "genie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿงžโ€โ™‚๏ธ": { - "name": "man genie", - "slug": "man_genie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿงžโ€โ™€๏ธ": { - "name": "woman genie", - "slug": "woman_genie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸงŸ": { - "name": "zombie", - "slug": "zombie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸงŸโ€โ™‚๏ธ": { - "name": "man zombie", - "slug": "man_zombie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸงŸโ€โ™€๏ธ": { - "name": "woman zombie", - "slug": "woman_zombie", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸงŒ": { - "name": "troll", - "slug": "troll", - "group": "People & Body", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ’†": { - "name": "person getting massage", - "slug": "person_getting_massage", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ’†โ€โ™‚๏ธ": { - "name": "man getting massage", - "slug": "man_getting_massage", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’†โ€โ™€๏ธ": { - "name": "woman getting massage", - "slug": "woman_getting_massage", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’‡": { - "name": "person getting haircut", - "slug": "person_getting_haircut", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ’‡โ€โ™‚๏ธ": { - "name": "man getting haircut", - "slug": "man_getting_haircut", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’‡โ€โ™€๏ธ": { - "name": "woman getting haircut", - "slug": "woman_getting_haircut", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšถ": { - "name": "person walking", - "slug": "person_walking", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿšถโ€โ™‚๏ธ": { - "name": "man walking", - "slug": "man_walking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšถโ€โ™€๏ธ": { - "name": "woman walking", - "slug": "woman_walking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง": { - "name": "person standing", - "slug": "person_standing", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿงโ€โ™‚๏ธ": { - "name": "man standing", - "slug": "man_standing", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿงโ€โ™€๏ธ": { - "name": "woman standing", - "slug": "woman_standing", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐ŸงŽ": { - "name": "person kneeling", - "slug": "person_kneeling", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐ŸงŽโ€โ™‚๏ธ": { - "name": "man kneeling", - "slug": "man_kneeling", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐ŸงŽโ€โ™€๏ธ": { - "name": "woman kneeling", - "slug": "woman_kneeling", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿง‘โ€๐Ÿฆฏ": { - "name": "person with white cane", - "slug": "person_with_white_cane", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿฆฏ": { - "name": "man with white cane", - "slug": "man_with_white_cane", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ฉโ€๐Ÿฆฏ": { - "name": "woman with white cane", - "slug": "woman_with_white_cane", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿง‘โ€๐Ÿฆผ": { - "name": "person in motorized wheelchair", - "slug": "person_in_motorized_wheelchair", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿฆผ": { - "name": "man in motorized wheelchair", - "slug": "man_in_motorized_wheelchair", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ฉโ€๐Ÿฆผ": { - "name": "woman in motorized wheelchair", - "slug": "woman_in_motorized_wheelchair", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿง‘โ€๐Ÿฆฝ": { - "name": "person in manual wheelchair", - "slug": "person_in_manual_wheelchair", - "group": "People & Body", - "emoji_version": "12.1", - "unicode_version": "12.1", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.1" - }, - "๐Ÿ‘จโ€๐Ÿฆฝ": { - "name": "man in manual wheelchair", - "slug": "man_in_manual_wheelchair", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ฉโ€๐Ÿฆฝ": { - "name": "woman in manual wheelchair", - "slug": "woman_in_manual_wheelchair", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿƒ": { - "name": "person running", - "slug": "person_running", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿƒโ€โ™‚๏ธ": { - "name": "man running", - "slug": "man_running", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿƒโ€โ™€๏ธ": { - "name": "woman running", - "slug": "woman_running", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ’ƒ": { - "name": "woman dancing", - "slug": "woman_dancing", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ•บ": { - "name": "man dancing", - "slug": "man_dancing", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿ•ด๏ธ": { - "name": "person in suit levitating", - "slug": "person_in_suit_levitating", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‘ฏ": { - "name": "people with bunny ears", - "slug": "people_with_bunny_ears", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘ฏโ€โ™‚๏ธ": { - "name": "men with bunny ears", - "slug": "men_with_bunny_ears", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฏโ€โ™€๏ธ": { - "name": "women with bunny ears", - "slug": "women_with_bunny_ears", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿง–": { - "name": "person in steamy room", - "slug": "person_in_steamy_room", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง–โ€โ™‚๏ธ": { - "name": "man in steamy room", - "slug": "man_in_steamy_room", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง–โ€โ™€๏ธ": { - "name": "woman in steamy room", - "slug": "woman_in_steamy_room", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง—": { - "name": "person climbing", - "slug": "person_climbing", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง—โ€โ™‚๏ธ": { - "name": "man climbing", - "slug": "man_climbing", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง—โ€โ™€๏ธ": { - "name": "woman climbing", - "slug": "woman_climbing", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿคบ": { - "name": "person fencing", - "slug": "person_fencing", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ‡": { - "name": "horse racing", - "slug": "horse_racing", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "โ›ท๏ธ": { - "name": "skier", - "slug": "skier", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ‚": { - "name": "snowboarder", - "slug": "snowboarder", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐ŸŒ๏ธ": { - "name": "person golfing", - "slug": "person_golfing", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐ŸŒ๏ธโ€โ™‚๏ธ": { - "name": "man golfing", - "slug": "man_golfing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐ŸŒ๏ธโ€โ™€๏ธ": { - "name": "woman golfing", - "slug": "woman_golfing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ„": { - "name": "person surfing", - "slug": "person_surfing", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ„โ€โ™‚๏ธ": { - "name": "man surfing", - "slug": "man_surfing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ„โ€โ™€๏ธ": { - "name": "woman surfing", - "slug": "woman_surfing", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšฃ": { - "name": "person rowing boat", - "slug": "person_rowing_boat", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿšฃโ€โ™‚๏ธ": { - "name": "man rowing boat", - "slug": "man_rowing_boat", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšฃโ€โ™€๏ธ": { - "name": "woman rowing boat", - "slug": "woman_rowing_boat", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐ŸŠ": { - "name": "person swimming", - "slug": "person_swimming", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐ŸŠโ€โ™‚๏ธ": { - "name": "man swimming", - "slug": "man_swimming", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐ŸŠโ€โ™€๏ธ": { - "name": "woman swimming", - "slug": "woman_swimming", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "โ›น๏ธ": { - "name": "person bouncing ball", - "slug": "person_bouncing_ball", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "2.0" - }, - "โ›น๏ธโ€โ™‚๏ธ": { - "name": "man bouncing ball", - "slug": "man_bouncing_ball", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "โ›น๏ธโ€โ™€๏ธ": { - "name": "woman bouncing ball", - "slug": "woman_bouncing_ball", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‹๏ธ": { - "name": "person lifting weights", - "slug": "person_lifting_weights", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "2.0" - }, - "๐Ÿ‹๏ธโ€โ™‚๏ธ": { - "name": "man lifting weights", - "slug": "man_lifting_weights", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿ‹๏ธโ€โ™€๏ธ": { - "name": "woman lifting weights", - "slug": "woman_lifting_weights", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšด": { - "name": "person biking", - "slug": "person_biking", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿšดโ€โ™‚๏ธ": { - "name": "man biking", - "slug": "man_biking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšดโ€โ™€๏ธ": { - "name": "woman biking", - "slug": "woman_biking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšต": { - "name": "person mountain biking", - "slug": "person_mountain_biking", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿšตโ€โ™‚๏ธ": { - "name": "man mountain biking", - "slug": "man_mountain_biking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿšตโ€โ™€๏ธ": { - "name": "woman mountain biking", - "slug": "woman_mountain_biking", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคธ": { - "name": "person cartwheeling", - "slug": "person_cartwheeling", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคธโ€โ™‚๏ธ": { - "name": "man cartwheeling", - "slug": "man_cartwheeling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคธโ€โ™€๏ธ": { - "name": "woman cartwheeling", - "slug": "woman_cartwheeling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคผ": { - "name": "people wrestling", - "slug": "people_wrestling", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿคผโ€โ™‚๏ธ": { - "name": "men wrestling", - "slug": "men_wrestling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿคผโ€โ™€๏ธ": { - "name": "women wrestling", - "slug": "women_wrestling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿคฝ": { - "name": "person playing water polo", - "slug": "person_playing_water_polo", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคฝโ€โ™‚๏ธ": { - "name": "man playing water polo", - "slug": "man_playing_water_polo", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคฝโ€โ™€๏ธ": { - "name": "woman playing water polo", - "slug": "woman_playing_water_polo", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคพ": { - "name": "person playing handball", - "slug": "person_playing_handball", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคพโ€โ™‚๏ธ": { - "name": "man playing handball", - "slug": "man_playing_handball", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคพโ€โ™€๏ธ": { - "name": "woman playing handball", - "slug": "woman_playing_handball", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคน": { - "name": "person juggling", - "slug": "person_juggling", - "group": "People & Body", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "3.0" - }, - "๐Ÿคนโ€โ™‚๏ธ": { - "name": "man juggling", - "slug": "man_juggling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿคนโ€โ™€๏ธ": { - "name": "woman juggling", - "slug": "woman_juggling", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง˜": { - "name": "person in lotus position", - "slug": "person_in_lotus_position", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง˜โ€โ™‚๏ธ": { - "name": "man in lotus position", - "slug": "man_in_lotus_position", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿง˜โ€โ™€๏ธ": { - "name": "woman in lotus position", - "slug": "woman_in_lotus_position", - "group": "People & Body", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "5.0" - }, - "๐Ÿ›€": { - "name": "person taking bath", - "slug": "person_taking_bath", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "1.0" - }, - "๐Ÿ›Œ": { - "name": "person in bed", - "slug": "person_in_bed", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "4.0" - }, - "๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘": { - "name": "people holding hands", - "slug": "people_holding_hands", - "group": "People & Body", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ญ": { - "name": "women holding hands", - "slug": "women_holding_hands", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ซ": { - "name": "woman and man holding hands", - "slug": "woman_and_man_holding_hands", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ‘ฌ": { - "name": "men holding hands", - "slug": "men_holding_hands", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "12.0" - }, - "๐Ÿ’": { - "name": "kiss", - "slug": "kiss", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": { - "name": "kiss woman, man", - "slug": "kiss_woman_man", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ": { - "name": "kiss man, man", - "slug": "kiss_man_man", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘ฉ": { - "name": "kiss woman, woman", - "slug": "kiss_woman_woman", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ’‘": { - "name": "couple with heart", - "slug": "couple_with_heart", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘จ": { - "name": "couple with heart woman, man", - "slug": "couple_with_heart_woman_man", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘จโ€โค๏ธโ€๐Ÿ‘จ": { - "name": "couple with heart man, man", - "slug": "couple_with_heart_man_man", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘ฉโ€โค๏ธโ€๐Ÿ‘ฉ": { - "name": "couple with heart woman, woman", - "slug": "couple_with_heart_woman_woman", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": true, - "skin_tone_support_unicode_version": "13.1" - }, - "๐Ÿ‘ช": { - "name": "family", - "slug": "family", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { - "name": "family man, woman, boy", - "slug": "family_man_woman_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": { - "name": "family man, woman, girl", - "slug": "family_man_woman_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { - "name": "family man, woman, girl, boy", - "slug": "family_man_woman_girl_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { - "name": "family man, woman, boy, boy", - "slug": "family_man_woman_boy_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { - "name": "family man, woman, girl, girl", - "slug": "family_man_woman_girl_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆ": { - "name": "family man, man, boy", - "slug": "family_man_man_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ง": { - "name": "family man, man, girl", - "slug": "family_man_man_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { - "name": "family man, man, girl, boy", - "slug": "family_man_man_girl_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { - "name": "family man, man, boy, boy", - "slug": "family_man_man_boy_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": { - "name": "family man, man, girl, girl", - "slug": "family_man_man_girl_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { - "name": "family woman, woman, boy", - "slug": "family_woman_woman_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ง": { - "name": "family woman, woman, girl", - "slug": "family_woman_woman_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { - "name": "family woman, woman, girl, boy", - "slug": "family_woman_woman_girl_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { - "name": "family woman, woman, boy, boy", - "slug": "family_woman_woman_boy_boy", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { - "name": "family woman, woman, girl, girl", - "slug": "family_woman_woman_girl_girl", - "group": "People & Body", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฆ": { - "name": "family man, boy", - "slug": "family_man_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { - "name": "family man, boy, boy", - "slug": "family_man_boy_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘ง": { - "name": "family man, girl", - "slug": "family_man_girl", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { - "name": "family man, girl, boy", - "slug": "family_man_girl_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง": { - "name": "family man, girl, girl", - "slug": "family_man_girl_girl", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฆ": { - "name": "family woman, boy", - "slug": "family_woman_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ": { - "name": "family woman, boy, boy", - "slug": "family_woman_boy_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘ง": { - "name": "family woman, girl", - "slug": "family_woman_girl", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ": { - "name": "family woman, girl, boy", - "slug": "family_woman_girl_boy", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง": { - "name": "family woman, girl, girl", - "slug": "family_woman_girl_girl", - "group": "People & Body", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ—ฃ๏ธ": { - "name": "speaking head", - "slug": "speaking_head", - "group": "People & Body", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ‘ค": { - "name": "bust in silhouette", - "slug": "bust_in_silhouette", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘ฅ": { - "name": "busts in silhouette", - "slug": "busts_in_silhouette", - "group": "People & Body", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซ‚": { - "name": "people hugging", - "slug": "people_hugging", - "group": "People & Body", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ‘ฃ": { - "name": "footprints", - "slug": "footprints", - "group": "People & Body", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿต": { - "name": "monkey face", - "slug": "monkey_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "monkey", - "slug": "monkey", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "gorilla", - "slug": "gorilla", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆง": { - "name": "orangutan", - "slug": "orangutan", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿถ": { - "name": "dog face", - "slug": "dog_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•": { - "name": "dog", - "slug": "dog", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿฆฎ": { - "name": "guide dog", - "slug": "guide_dog", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ•โ€๐Ÿฆบ": { - "name": "service dog", - "slug": "service_dog", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉ": { - "name": "poodle", - "slug": "poodle", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿบ": { - "name": "wolf", - "slug": "wolf", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸฆŠ": { - "name": "fox", - "slug": "fox", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "raccoon", - "slug": "raccoon", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฑ": { - "name": "cat face", - "slug": "cat_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆ": { - "name": "cat", - "slug": "cat", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿˆโ€โฌ›": { - "name": "black cat", - "slug": "black_cat", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "lion", - "slug": "lion", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฏ": { - "name": "tiger face", - "slug": "tiger_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…": { - "name": "tiger", - "slug": "tiger", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ†": { - "name": "leopard", - "slug": "leopard", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿด": { - "name": "horse face", - "slug": "horse_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸซŽ": { - "name": "moose", - "slug": "moose", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "donkey", - "slug": "donkey", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "horse", - "slug": "horse", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ„": { - "name": "unicorn", - "slug": "unicorn", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฆ“": { - "name": "zebra", - "slug": "zebra", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸฆŒ": { - "name": "deer", - "slug": "deer", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆฌ": { - "name": "bison", - "slug": "bison", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฎ": { - "name": "cow face", - "slug": "cow_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‚": { - "name": "ox", - "slug": "ox", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿƒ": { - "name": "water buffalo", - "slug": "water_buffalo", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ„": { - "name": "cow", - "slug": "cow", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿท": { - "name": "pig face", - "slug": "pig_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ–": { - "name": "pig", - "slug": "pig", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ—": { - "name": "boar", - "slug": "boar", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฝ": { - "name": "pig nose", - "slug": "pig_nose", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "ram", - "slug": "ram", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ‘": { - "name": "ewe", - "slug": "ewe", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "goat", - "slug": "goat", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "camel", - "slug": "camel", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "two-hump camel", - "slug": "two_hump_camel", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ™": { - "name": "llama", - "slug": "llama", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆ’": { - "name": "giraffe", - "slug": "giraffe", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "elephant", - "slug": "elephant", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆฃ": { - "name": "mammoth", - "slug": "mammoth", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "rhinoceros", - "slug": "rhinoceros", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆ›": { - "name": "hippopotamus", - "slug": "hippopotamus", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿญ": { - "name": "mouse face", - "slug": "mouse_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "mouse", - "slug": "mouse", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ€": { - "name": "rat", - "slug": "rat", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿน": { - "name": "hamster", - "slug": "hamster", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฐ": { - "name": "rabbit face", - "slug": "rabbit_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡": { - "name": "rabbit", - "slug": "rabbit", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฟ๏ธ": { - "name": "chipmunk", - "slug": "chipmunk", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿฆซ": { - "name": "beaver", - "slug": "beaver", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆ”": { - "name": "hedgehog", - "slug": "hedgehog", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฆ‡": { - "name": "bat", - "slug": "bat", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿป": { - "name": "bear", - "slug": "bear", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿปโ€โ„๏ธ": { - "name": "polar bear", - "slug": "polar_bear", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿจ": { - "name": "koala", - "slug": "koala", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿผ": { - "name": "panda", - "slug": "panda", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆฅ": { - "name": "sloth", - "slug": "sloth", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆฆ": { - "name": "otter", - "slug": "otter", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆจ": { - "name": "skunk", - "slug": "skunk", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆ˜": { - "name": "kangaroo", - "slug": "kangaroo", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆก": { - "name": "badger", - "slug": "badger", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿพ": { - "name": "paw prints", - "slug": "paw_prints", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆƒ": { - "name": "turkey", - "slug": "turkey", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "chicken", - "slug": "chicken", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "rooster", - "slug": "rooster", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฃ": { - "name": "hatching chick", - "slug": "hatching_chick", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค": { - "name": "baby chick", - "slug": "baby_chick", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "front-facing baby chick", - "slug": "front_facing_baby_chick", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "bird", - "slug": "bird", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿง": { - "name": "penguin", - "slug": "penguin", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•Š๏ธ": { - "name": "dove", - "slug": "dove", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿฆ…": { - "name": "eagle", - "slug": "eagle", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆ†": { - "name": "duck", - "slug": "duck", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆข": { - "name": "swan", - "slug": "swan", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆ‰": { - "name": "owl", - "slug": "owl", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆค": { - "name": "dodo", - "slug": "dodo", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชถ": { - "name": "feather", - "slug": "feather", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆฉ": { - "name": "flamingo", - "slug": "flamingo", - "group": "Animals & Nature", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆš": { - "name": "peacock", - "slug": "peacock", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆœ": { - "name": "parrot", - "slug": "parrot", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชฝ": { - "name": "wing", - "slug": "wing", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿฆโ€โฌ›": { - "name": "black bird", - "slug": "black_bird", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿชฟ": { - "name": "goose", - "slug": "goose", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿธ": { - "name": "frog", - "slug": "frog", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŠ": { - "name": "crocodile", - "slug": "crocodile", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿข": { - "name": "turtle", - "slug": "turtle", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸฆŽ": { - "name": "lizard", - "slug": "lizard", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "snake", - "slug": "snake", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฒ": { - "name": "dragon face", - "slug": "dragon_face", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‰": { - "name": "dragon", - "slug": "dragon", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฆ•": { - "name": "sauropod", - "slug": "sauropod", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฆ–": { - "name": "T-Rex", - "slug": "t_rex", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿณ": { - "name": "spouting whale", - "slug": "spouting_whale", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‹": { - "name": "whale", - "slug": "whale", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฌ": { - "name": "dolphin", - "slug": "dolphin", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆญ": { - "name": "seal", - "slug": "seal", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐ŸŸ": { - "name": "fish", - "slug": "fish", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ ": { - "name": "tropical fish", - "slug": "tropical_fish", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿก": { - "name": "blowfish", - "slug": "blowfish", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆˆ": { - "name": "shark", - "slug": "shark", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ™": { - "name": "octopus", - "slug": "octopus", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "spiral shell", - "slug": "spiral_shell", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชธ": { - "name": "coral", - "slug": "coral", - "group": "Animals & Nature", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿชผ": { - "name": "jellyfish", - "slug": "jellyfish", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "snail", - "slug": "snail", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ‹": { - "name": "butterfly", - "slug": "butterfly", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ›": { - "name": "bug", - "slug": "bug", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿœ": { - "name": "ant", - "slug": "ant", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "honeybee", - "slug": "honeybee", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชฒ": { - "name": "beetle", - "slug": "beetle", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿž": { - "name": "lady beetle", - "slug": "lady_beetle", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ—": { - "name": "cricket", - "slug": "cricket", - "group": "Animals & Nature", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿชณ": { - "name": "cockroach", - "slug": "cockroach", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ•ท๏ธ": { - "name": "spider", - "slug": "spider", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•ธ๏ธ": { - "name": "spider web", - "slug": "spider_web", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿฆ‚": { - "name": "scorpion", - "slug": "scorpion", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸฆŸ": { - "name": "mosquito", - "slug": "mosquito", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชฐ": { - "name": "fly", - "slug": "fly", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชฑ": { - "name": "worm", - "slug": "worm", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฆ ": { - "name": "microbe", - "slug": "microbe", - "group": "Animals & Nature", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "bouquet", - "slug": "bouquet", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒธ": { - "name": "cherry blossom", - "slug": "cherry_blossom", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฎ": { - "name": "white flower", - "slug": "white_flower", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชท": { - "name": "lotus", - "slug": "lotus", - "group": "Animals & Nature", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿต๏ธ": { - "name": "rosette", - "slug": "rosette", - "group": "Animals & Nature", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒน": { - "name": "rose", - "slug": "rose", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ€": { - "name": "wilted flower", - "slug": "wilted_flower", - "group": "Animals & Nature", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐ŸŒบ": { - "name": "hibiscus", - "slug": "hibiscus", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒป": { - "name": "sunflower", - "slug": "sunflower", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒผ": { - "name": "blossom", - "slug": "blossom", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒท": { - "name": "tulip", - "slug": "tulip", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชป": { - "name": "hyacinth", - "slug": "hyacinth", - "group": "Animals & Nature", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐ŸŒฑ": { - "name": "seedling", - "slug": "seedling", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชด": { - "name": "potted plant", - "slug": "potted_plant", - "group": "Animals & Nature", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐ŸŒฒ": { - "name": "evergreen tree", - "slug": "evergreen_tree", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒณ": { - "name": "deciduous tree", - "slug": "deciduous_tree", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒด": { - "name": "palm tree", - "slug": "palm_tree", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒต": { - "name": "cactus", - "slug": "cactus", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒพ": { - "name": "sheaf of rice", - "slug": "sheaf_of_rice", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒฟ": { - "name": "herb", - "slug": "herb", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜˜๏ธ": { - "name": "shamrock", - "slug": "shamrock", - "group": "Animals & Nature", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ€": { - "name": "four leaf clover", - "slug": "four_leaf_clover", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "maple leaf", - "slug": "maple_leaf", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‚": { - "name": "fallen leaf", - "slug": "fallen_leaf", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿƒ": { - "name": "leaf fluttering in wind", - "slug": "leaf_fluttering_in_wind", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชน": { - "name": "empty nest", - "slug": "empty_nest", - "group": "Animals & Nature", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿชบ": { - "name": "nest with eggs", - "slug": "nest_with_eggs", - "group": "Animals & Nature", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ„": { - "name": "mushroom", - "slug": "mushroom", - "group": "Animals & Nature", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡": { - "name": "grapes", - "slug": "grapes", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆ": { - "name": "melon", - "slug": "melon", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‰": { - "name": "watermelon", - "slug": "watermelon", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŠ": { - "name": "tangerine", - "slug": "tangerine", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‹": { - "name": "lemon", - "slug": "lemon", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "banana", - "slug": "banana", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "pineapple", - "slug": "pineapple", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅญ": { - "name": "mango", - "slug": "mango", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "red apple", - "slug": "red_apple", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "green apple", - "slug": "green_apple", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "pear", - "slug": "pear", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ‘": { - "name": "peach", - "slug": "peach", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "cherries", - "slug": "cherries", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "strawberry", - "slug": "strawberry", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "blueberries", - "slug": "blueberries", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "kiwi fruit", - "slug": "kiwi_fruit", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ…": { - "name": "tomato", - "slug": "tomato", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ’": { - "name": "olive", - "slug": "olive", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅฅ": { - "name": "coconut", - "slug": "coconut", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅ‘": { - "name": "avocado", - "slug": "avocado", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ†": { - "name": "eggplant", - "slug": "eggplant", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ”": { - "name": "potato", - "slug": "potato", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅ•": { - "name": "carrot", - "slug": "carrot", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐ŸŒฝ": { - "name": "ear of corn", - "slug": "ear_of_corn", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒถ๏ธ": { - "name": "hot pepper", - "slug": "hot_pepper", - "group": "Food & Drink", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿซ‘": { - "name": "bell pepper", - "slug": "bell_pepper", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅ’": { - "name": "cucumber", - "slug": "cucumber", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅฌ": { - "name": "leafy green", - "slug": "leafy_green", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅฆ": { - "name": "broccoli", - "slug": "broccoli", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿง„": { - "name": "garlic", - "slug": "garlic", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿง…": { - "name": "onion", - "slug": "onion", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฅœ": { - "name": "peanuts", - "slug": "peanuts", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿซ˜": { - "name": "beans", - "slug": "beans", - "group": "Food & Drink", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐ŸŒฐ": { - "name": "chestnut", - "slug": "chestnut", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซš": { - "name": "ginger root", - "slug": "ginger_root", - "group": "Food & Drink", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿซ›": { - "name": "pea pod", - "slug": "pea_pod", - "group": "Food & Drink", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿž": { - "name": "bread", - "slug": "bread", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "croissant", - "slug": "croissant", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅ–": { - "name": "baguette bread", - "slug": "baguette_bread", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿซ“": { - "name": "flatbread", - "slug": "flatbread", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅจ": { - "name": "pretzel", - "slug": "pretzel", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅฏ": { - "name": "bagel", - "slug": "bagel", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅž": { - "name": "pancakes", - "slug": "pancakes", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿง‡": { - "name": "waffle", - "slug": "waffle", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿง€": { - "name": "cheese wedge", - "slug": "cheese_wedge", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ–": { - "name": "meat on bone", - "slug": "meat_on_bone", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—": { - "name": "poultry leg", - "slug": "poultry_leg", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅฉ": { - "name": "cut of meat", - "slug": "cut_of_meat", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅ“": { - "name": "bacon", - "slug": "bacon", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "hamburger", - "slug": "hamburger", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŸ": { - "name": "french fries", - "slug": "french_fries", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•": { - "name": "pizza", - "slug": "pizza", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒญ": { - "name": "hot dog", - "slug": "hot_dog", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅช": { - "name": "sandwich", - "slug": "sandwich", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸŒฎ": { - "name": "taco", - "slug": "taco", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒฏ": { - "name": "burrito", - "slug": "burrito", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿซ”": { - "name": "tamale", - "slug": "tamale", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅ™": { - "name": "stuffed flatbread", - "slug": "stuffed_flatbread", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿง†": { - "name": "falafel", - "slug": "falafel", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฅš": { - "name": "egg", - "slug": "egg", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿณ": { - "name": "cooking", - "slug": "cooking", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ˜": { - "name": "shallow pan of food", - "slug": "shallow_pan_of_food", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฒ": { - "name": "pot of food", - "slug": "pot_of_food", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ•": { - "name": "fondue", - "slug": "fondue", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿฅฃ": { - "name": "bowl with spoon", - "slug": "bowl_with_spoon", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅ—": { - "name": "green salad", - "slug": "green_salad", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฟ": { - "name": "popcorn", - "slug": "popcorn", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿงˆ": { - "name": "butter", - "slug": "butter", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿง‚": { - "name": "salt", - "slug": "salt", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅซ": { - "name": "canned food", - "slug": "canned_food", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฑ": { - "name": "bento box", - "slug": "bento_box", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ˜": { - "name": "rice cracker", - "slug": "rice_cracker", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™": { - "name": "rice ball", - "slug": "rice_ball", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "cooked rice", - "slug": "cooked_rice", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›": { - "name": "curry rice", - "slug": "curry_rice", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿœ": { - "name": "steaming bowl", - "slug": "steaming_bowl", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "spaghetti", - "slug": "spaghetti", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ ": { - "name": "roasted sweet potato", - "slug": "roasted_sweet_potato", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿข": { - "name": "oden", - "slug": "oden", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฃ": { - "name": "sushi", - "slug": "sushi", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค": { - "name": "fried shrimp", - "slug": "fried_shrimp", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "fish cake with swirl", - "slug": "fish_cake_with_swirl", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅฎ": { - "name": "moon cake", - "slug": "moon_cake", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿก": { - "name": "dango", - "slug": "dango", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸฅŸ": { - "name": "dumpling", - "slug": "dumpling", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅ ": { - "name": "fortune cookie", - "slug": "fortune_cookie", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฅก": { - "name": "takeout box", - "slug": "takeout_box", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฆ€": { - "name": "crab", - "slug": "crab", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฆž": { - "name": "lobster", - "slug": "lobster", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "shrimp", - "slug": "shrimp", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆ‘": { - "name": "squid", - "slug": "squid", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆช": { - "name": "oyster", - "slug": "oyster", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "soft ice cream", - "slug": "soft_ice_cream", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿง": { - "name": "shaved ice", - "slug": "shaved_ice", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿจ": { - "name": "ice cream", - "slug": "ice_cream", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉ": { - "name": "doughnut", - "slug": "doughnut", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "cookie", - "slug": "cookie", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ‚": { - "name": "birthday cake", - "slug": "birthday_cake", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฐ": { - "name": "shortcake", - "slug": "shortcake", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿง": { - "name": "cupcake", - "slug": "cupcake", - "group": "Food & Drink", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅง": { - "name": "pie", - "slug": "pie", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "chocolate bar", - "slug": "chocolate_bar", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฌ": { - "name": "candy", - "slug": "candy", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿญ": { - "name": "lollipop", - "slug": "lollipop", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฎ": { - "name": "custard", - "slug": "custard", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฏ": { - "name": "honey pot", - "slug": "honey_pot", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿผ": { - "name": "baby bottle", - "slug": "baby_bottle", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅ›": { - "name": "glass of milk", - "slug": "glass_of_milk", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "โ˜•": { - "name": "hot beverage", - "slug": "hot_beverage", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ–": { - "name": "teapot", - "slug": "teapot", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿต": { - "name": "teacup without handle", - "slug": "teacup_without_handle", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿถ": { - "name": "sake", - "slug": "sake", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿพ": { - "name": "bottle with popping cork", - "slug": "bottle_with_popping_cork", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿท": { - "name": "wine glass", - "slug": "wine_glass", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿธ": { - "name": "cocktail glass", - "slug": "cocktail_glass", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿน": { - "name": "tropical drink", - "slug": "tropical_drink", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿบ": { - "name": "beer mug", - "slug": "beer_mug", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿป": { - "name": "clinking beer mugs", - "slug": "clinking_beer_mugs", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ‚": { - "name": "clinking glasses", - "slug": "clinking_glasses", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅƒ": { - "name": "tumbler glass", - "slug": "tumbler_glass", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿซ—": { - "name": "pouring liquid", - "slug": "pouring_liquid", - "group": "Food & Drink", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿฅค": { - "name": "cup with straw", - "slug": "cup_with_straw", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿง‹": { - "name": "bubble tea", - "slug": "bubble_tea", - "group": "Food & Drink", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿงƒ": { - "name": "beverage box", - "slug": "beverage_box", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿง‰": { - "name": "mate", - "slug": "mate", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸงŠ": { - "name": "ice", - "slug": "ice", - "group": "Food & Drink", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฅข": { - "name": "chopsticks", - "slug": "chopsticks", - "group": "Food & Drink", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿฝ๏ธ": { - "name": "fork and knife with plate", - "slug": "fork_and_knife_with_plate", - "group": "Food & Drink", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿด": { - "name": "fork and knife", - "slug": "fork_and_knife", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ„": { - "name": "spoon", - "slug": "spoon", - "group": "Food & Drink", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ”ช": { - "name": "kitchen knife", - "slug": "kitchen_knife", - "group": "Food & Drink", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ™": { - "name": "jar", - "slug": "jar", - "group": "Food & Drink", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿบ": { - "name": "amphora", - "slug": "amphora", - "group": "Food & Drink", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "globe showing Europe-Africa", - "slug": "globe_showing_europe_africa", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒŽ": { - "name": "globe showing Americas", - "slug": "globe_showing_americas", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "globe showing Asia-Australia", - "slug": "globe_showing_asia_australia", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "globe with meridians", - "slug": "globe_with_meridians", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ—บ๏ธ": { - "name": "world map", - "slug": "world_map", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—พ": { - "name": "map of Japan", - "slug": "map_of_japan", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงญ": { - "name": "compass", - "slug": "compass", - "group": "Travel & Places", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ”๏ธ": { - "name": "snow-capped mountain", - "slug": "snow_capped_mountain", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ›ฐ๏ธ": { - "name": "mountain", - "slug": "mountain", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒ‹": { - "name": "volcano", - "slug": "volcano", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ป": { - "name": "mount fuji", - "slug": "mount_fuji", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•๏ธ": { - "name": "camping", - "slug": "camping", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–๏ธ": { - "name": "beach with umbrella", - "slug": "beach_with_umbrella", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿœ๏ธ": { - "name": "desert", - "slug": "desert", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ๏ธ": { - "name": "desert island", - "slug": "desert_island", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿž๏ธ": { - "name": "national park", - "slug": "national_park", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŸ๏ธ": { - "name": "stadium", - "slug": "stadium", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›๏ธ": { - "name": "classical building", - "slug": "classical_building", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—๏ธ": { - "name": "building construction", - "slug": "building_construction", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿงฑ": { - "name": "brick", - "slug": "brick", - "group": "Travel & Places", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชจ": { - "name": "rock", - "slug": "rock", - "group": "Travel & Places", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชต": { - "name": "wood", - "slug": "wood", - "group": "Travel & Places", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ›–": { - "name": "hut", - "slug": "hut", - "group": "Travel & Places", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ˜๏ธ": { - "name": "houses", - "slug": "houses", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿš๏ธ": { - "name": "derelict house", - "slug": "derelict_house", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ ": { - "name": "house", - "slug": "house", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿก": { - "name": "house with garden", - "slug": "house_with_garden", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿข": { - "name": "office building", - "slug": "office_building", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฃ": { - "name": "Japanese post office", - "slug": "japanese_post_office", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿค": { - "name": "post office", - "slug": "post_office", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "hospital", - "slug": "hospital", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฆ": { - "name": "bank", - "slug": "bank", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿจ": { - "name": "hotel", - "slug": "hotel", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉ": { - "name": "love hotel", - "slug": "love_hotel", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "convenience store", - "slug": "convenience_store", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿซ": { - "name": "school", - "slug": "school", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฌ": { - "name": "department store", - "slug": "department_store", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿญ": { - "name": "factory", - "slug": "factory", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฏ": { - "name": "Japanese castle", - "slug": "japanese_castle", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฐ": { - "name": "castle", - "slug": "castle", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’’": { - "name": "wedding", - "slug": "wedding", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ผ": { - "name": "Tokyo tower", - "slug": "tokyo_tower", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ฝ": { - "name": "Statue of Liberty", - "slug": "statue_of_liberty", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›ช": { - "name": "church", - "slug": "church", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•Œ": { - "name": "mosque", - "slug": "mosque", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›•": { - "name": "hindu temple", - "slug": "hindu_temple", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ•": { - "name": "synagogue", - "slug": "synagogue", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ›ฉ๏ธ": { - "name": "shinto shrine", - "slug": "shinto_shrine", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•‹": { - "name": "kaaba", - "slug": "kaaba", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ›ฒ": { - "name": "fountain", - "slug": "fountain", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›บ": { - "name": "tent", - "slug": "tent", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "foggy", - "slug": "foggy", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒƒ": { - "name": "night with stars", - "slug": "night_with_stars", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ™๏ธ": { - "name": "cityscape", - "slug": "cityscape", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒ„": { - "name": "sunrise over mountains", - "slug": "sunrise_over_mountains", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ…": { - "name": "sunrise", - "slug": "sunrise", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ†": { - "name": "cityscape at dusk", - "slug": "cityscape_at_dusk", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ‡": { - "name": "sunset", - "slug": "sunset", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ‰": { - "name": "bridge at night", - "slug": "bridge_at_night", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™จ๏ธ": { - "name": "hot springs", - "slug": "hot_springs", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ ": { - "name": "carousel horse", - "slug": "carousel_horse", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›": { - "name": "playground slide", - "slug": "playground_slide", - "group": "Travel & Places", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐ŸŽก": { - "name": "ferris wheel", - "slug": "ferris_wheel", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽข": { - "name": "roller coaster", - "slug": "roller_coaster", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ˆ": { - "name": "barber pole", - "slug": "barber_pole", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽช": { - "name": "circus tent", - "slug": "circus_tent", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš‚": { - "name": "locomotive", - "slug": "locomotive", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšƒ": { - "name": "railway car", - "slug": "railway_car", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš„": { - "name": "high-speed train", - "slug": "high_speed_train", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš…": { - "name": "bullet train", - "slug": "bullet_train", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš†": { - "name": "train", - "slug": "train", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš‡": { - "name": "metro", - "slug": "metro", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšˆ": { - "name": "light rail", - "slug": "light_rail", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš‰": { - "name": "station", - "slug": "station", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸšŠ": { - "name": "tram", - "slug": "tram", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "monorail", - "slug": "monorail", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšž": { - "name": "mountain railway", - "slug": "mountain_railway", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš‹": { - "name": "tram car", - "slug": "tram_car", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸšŒ": { - "name": "bus", - "slug": "bus", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "oncoming bus", - "slug": "oncoming_bus", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸšŽ": { - "name": "trolleybus", - "slug": "trolleybus", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "minibus", - "slug": "minibus", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš‘": { - "name": "ambulance", - "slug": "ambulance", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš’": { - "name": "fire engine", - "slug": "fire_engine", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš“": { - "name": "police car", - "slug": "police_car", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš”": { - "name": "oncoming police car", - "slug": "oncoming_police_car", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿš•": { - "name": "taxi", - "slug": "taxi", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš–": { - "name": "oncoming taxi", - "slug": "oncoming_taxi", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš—": { - "name": "automobile", - "slug": "automobile", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš˜": { - "name": "oncoming automobile", - "slug": "oncoming_automobile", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿš™": { - "name": "sport utility vehicle", - "slug": "sport_utility_vehicle", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ป": { - "name": "pickup truck", - "slug": "pickup_truck", - "group": "Travel & Places", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿšš": { - "name": "delivery truck", - "slug": "delivery_truck", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš›": { - "name": "articulated lorry", - "slug": "articulated_lorry", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšœ": { - "name": "tractor", - "slug": "tractor", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŽ๏ธ": { - "name": "racing car", - "slug": "racing_car", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ๏ธ": { - "name": "motorcycle", - "slug": "motorcycle", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›ต": { - "name": "motor scooter", - "slug": "motor_scooter", - "group": "Travel & Places", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฆฝ": { - "name": "manual wheelchair", - "slug": "manual_wheelchair", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฆผ": { - "name": "motorized wheelchair", - "slug": "motorized_wheelchair", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ›บ": { - "name": "auto rickshaw", - "slug": "auto_rickshaw", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿšฒ": { - "name": "bicycle", - "slug": "bicycle", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ด": { - "name": "kick scooter", - "slug": "kick_scooter", - "group": "Travel & Places", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿ›น": { - "name": "skateboard", - "slug": "skateboard", - "group": "Travel & Places", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ›ผ": { - "name": "roller skate", - "slug": "roller_skate", - "group": "Travel & Places", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "bus stop", - "slug": "bus_stop", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ฃ๏ธ": { - "name": "motorway", - "slug": "motorway", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›ค๏ธ": { - "name": "railway track", - "slug": "railway_track", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›ข๏ธ": { - "name": "oil drum", - "slug": "oil_drum", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ›ฝ": { - "name": "fuel pump", - "slug": "fuel_pump", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ž": { - "name": "wheel", - "slug": "wheel", - "group": "Travel & Places", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿšจ": { - "name": "police car light", - "slug": "police_car_light", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšฅ": { - "name": "horizontal traffic light", - "slug": "horizontal_traffic_light", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšฆ": { - "name": "vertical traffic light", - "slug": "vertical_traffic_light", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›‘": { - "name": "stop sign", - "slug": "stop_sign", - "group": "Travel & Places", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿšง": { - "name": "construction", - "slug": "construction", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โš“": { - "name": "anchor", - "slug": "anchor", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›Ÿ": { - "name": "ring buoy", - "slug": "ring_buoy", - "group": "Travel & Places", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "โ›ต": { - "name": "sailboat", - "slug": "sailboat", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ถ": { - "name": "canoe", - "slug": "canoe", - "group": "Travel & Places", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿšค": { - "name": "speedboat", - "slug": "speedboat", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ณ๏ธ": { - "name": "passenger ship", - "slug": "passenger_ship", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ›ด๏ธ": { - "name": "ferry", - "slug": "ferry", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›ฅ๏ธ": { - "name": "motor boat", - "slug": "motor_boat", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿšข": { - "name": "ship", - "slug": "ship", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœˆ๏ธ": { - "name": "airplane", - "slug": "airplane", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ฉ๏ธ": { - "name": "small airplane", - "slug": "small_airplane", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›ซ": { - "name": "airplane departure", - "slug": "airplane_departure", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›ฌ": { - "name": "airplane arrival", - "slug": "airplane_arrival", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿช‚": { - "name": "parachute", - "slug": "parachute", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ’บ": { - "name": "seat", - "slug": "seat", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿš": { - "name": "helicopter", - "slug": "helicopter", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸšŸ": { - "name": "suspension railway", - "slug": "suspension_railway", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿš ": { - "name": "mountain cableway", - "slug": "mountain_cableway", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšก": { - "name": "aerial tramway", - "slug": "aerial_tramway", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›ฐ๏ธ": { - "name": "satellite", - "slug": "satellite", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿš€": { - "name": "rocket", - "slug": "rocket", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ธ": { - "name": "flying saucer", - "slug": "flying_saucer", - "group": "Travel & Places", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ›Ž๏ธ": { - "name": "bellhop bell", - "slug": "bellhop_bell", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿงณ": { - "name": "luggage", - "slug": "luggage", - "group": "Travel & Places", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "โŒ›": { - "name": "hourglass done", - "slug": "hourglass_done", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โณ": { - "name": "hourglass not done", - "slug": "hourglass_not_done", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โŒš": { - "name": "watch", - "slug": "watch", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฐ": { - "name": "alarm clock", - "slug": "alarm_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฑ๏ธ": { - "name": "stopwatch", - "slug": "stopwatch", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โฒ๏ธ": { - "name": "timer clock", - "slug": "timer_clock", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ•ฐ๏ธ": { - "name": "mantelpiece clock", - "slug": "mantelpiece_clock", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•›": { - "name": "twelve oโ€™clock", - "slug": "twelve_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ง": { - "name": "twelve-thirty", - "slug": "twelve_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•": { - "name": "one oโ€™clock", - "slug": "one_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•œ": { - "name": "one-thirty", - "slug": "one_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•‘": { - "name": "two oโ€™clock", - "slug": "two_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•": { - "name": "two-thirty", - "slug": "two_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•’": { - "name": "three oโ€™clock", - "slug": "three_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ž": { - "name": "three-thirty", - "slug": "three_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•“": { - "name": "four oโ€™clock", - "slug": "four_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•Ÿ": { - "name": "four-thirty", - "slug": "four_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•”": { - "name": "five oโ€™clock", - "slug": "five_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ• ": { - "name": "five-thirty", - "slug": "five_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ••": { - "name": "six oโ€™clock", - "slug": "six_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ก": { - "name": "six-thirty", - "slug": "six_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•–": { - "name": "seven oโ€™clock", - "slug": "seven_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ข": { - "name": "seven-thirty", - "slug": "seven_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•—": { - "name": "eight oโ€™clock", - "slug": "eight_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ฃ": { - "name": "eight-thirty", - "slug": "eight_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•˜": { - "name": "nine oโ€™clock", - "slug": "nine_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ค": { - "name": "nine-thirty", - "slug": "nine_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•™": { - "name": "ten oโ€™clock", - "slug": "ten_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ฅ": { - "name": "ten-thirty", - "slug": "ten_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ•š": { - "name": "eleven oโ€™clock", - "slug": "eleven_o_clock", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ฆ": { - "name": "eleven-thirty", - "slug": "eleven_thirty", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒ‘": { - "name": "new moon", - "slug": "new_moon", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ’": { - "name": "waxing crescent moon", - "slug": "waxing_crescent_moon", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ“": { - "name": "first quarter moon", - "slug": "first_quarter_moon", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ”": { - "name": "waxing gibbous moon", - "slug": "waxing_gibbous_moon", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ•": { - "name": "full moon", - "slug": "full_moon", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ–": { - "name": "waning gibbous moon", - "slug": "waning_gibbous_moon", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ—": { - "name": "last quarter moon", - "slug": "last_quarter_moon", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ˜": { - "name": "waning crescent moon", - "slug": "waning_crescent_moon", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ™": { - "name": "crescent moon", - "slug": "crescent_moon", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒš": { - "name": "new moon face", - "slug": "new_moon_face", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒ›": { - "name": "first quarter moon face", - "slug": "first_quarter_moon_face", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒœ": { - "name": "last quarter moon face", - "slug": "last_quarter_moon_face", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒก๏ธ": { - "name": "thermometer", - "slug": "thermometer", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜€๏ธ": { - "name": "sun", - "slug": "sun", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ": { - "name": "full moon face", - "slug": "full_moon_face", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŒž": { - "name": "sun with face", - "slug": "sun_with_face", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "ringed planet", - "slug": "ringed_planet", - "group": "Travel & Places", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "โญ": { - "name": "star", - "slug": "star", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒŸ": { - "name": "glowing star", - "slug": "glowing_star", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ ": { - "name": "shooting star", - "slug": "shooting_star", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒŒ": { - "name": "milky way", - "slug": "milky_way", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜๏ธ": { - "name": "cloud", - "slug": "cloud", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›…": { - "name": "sun behind cloud", - "slug": "sun_behind_cloud", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›ˆ๏ธ": { - "name": "cloud with lightning and rain", - "slug": "cloud_with_lightning_and_rain", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒค๏ธ": { - "name": "sun behind small cloud", - "slug": "sun_behind_small_cloud", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒฅ๏ธ": { - "name": "sun behind large cloud", - "slug": "sun_behind_large_cloud", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒฆ๏ธ": { - "name": "sun behind rain cloud", - "slug": "sun_behind_rain_cloud", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒง๏ธ": { - "name": "cloud with rain", - "slug": "cloud_with_rain", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒจ๏ธ": { - "name": "cloud with snow", - "slug": "cloud_with_snow", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒฉ๏ธ": { - "name": "cloud with lightning", - "slug": "cloud_with_lightning", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒช๏ธ": { - "name": "tornado", - "slug": "tornado", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒซ๏ธ": { - "name": "fog", - "slug": "fog", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒฌ๏ธ": { - "name": "wind face", - "slug": "wind_face", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŒ€": { - "name": "cyclone", - "slug": "cyclone", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒˆ": { - "name": "rainbow", - "slug": "rainbow", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒ‚": { - "name": "closed umbrella", - "slug": "closed_umbrella", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜‚๏ธ": { - "name": "umbrella", - "slug": "umbrella", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜”": { - "name": "umbrella with rain drops", - "slug": "umbrella_with_rain_drops", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›ฑ๏ธ": { - "name": "umbrella on ground", - "slug": "umbrella_on_ground", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โšก": { - "name": "high voltage", - "slug": "high_voltage", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ„๏ธ": { - "name": "snowflake", - "slug": "snowflake", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜ƒ๏ธ": { - "name": "snowman", - "slug": "snowman", - "group": "Travel & Places", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ›„": { - "name": "snowman without snow", - "slug": "snowman_without_snow", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜„๏ธ": { - "name": "comet", - "slug": "comet", - "group": "Travel & Places", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ฅ": { - "name": "fire", - "slug": "fire", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ง": { - "name": "droplet", - "slug": "droplet", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŒŠ": { - "name": "water wave", - "slug": "water_wave", - "group": "Travel & Places", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽƒ": { - "name": "jack-o-lantern", - "slug": "jack_o_lantern", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ„": { - "name": "Christmas tree", - "slug": "christmas_tree", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ†": { - "name": "fireworks", - "slug": "fireworks", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ‡": { - "name": "sparkler", - "slug": "sparkler", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงจ": { - "name": "firecracker", - "slug": "firecracker", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "โœจ": { - "name": "sparkles", - "slug": "sparkles", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽˆ": { - "name": "balloon", - "slug": "balloon", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ‰": { - "name": "party popper", - "slug": "party_popper", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽŠ": { - "name": "confetti ball", - "slug": "confetti_ball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ‹": { - "name": "tanabata tree", - "slug": "tanabata_tree", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "pine decoration", - "slug": "pine_decoration", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽŽ": { - "name": "Japanese dolls", - "slug": "japanese_dolls", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "carp streamer", - "slug": "carp_streamer", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "wind chime", - "slug": "wind_chime", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ‘": { - "name": "moon viewing ceremony", - "slug": "moon_viewing_ceremony", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงง": { - "name": "red envelope", - "slug": "red_envelope", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐ŸŽ€": { - "name": "ribbon", - "slug": "ribbon", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ": { - "name": "wrapped gift", - "slug": "wrapped_gift", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ—๏ธ": { - "name": "reminder ribbon", - "slug": "reminder_ribbon", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽŸ๏ธ": { - "name": "admission tickets", - "slug": "admission_tickets", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽซ": { - "name": "ticket", - "slug": "ticket", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ–๏ธ": { - "name": "military medal", - "slug": "military_medal", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ†": { - "name": "trophy", - "slug": "trophy", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…": { - "name": "sports medal", - "slug": "sports_medal", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅ‡": { - "name": "1st place medal", - "slug": "1st_place_medal", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅˆ": { - "name": "2nd place medal", - "slug": "2nd_place_medal", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅ‰": { - "name": "3rd place medal", - "slug": "3rd_place_medal", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "โšฝ": { - "name": "soccer ball", - "slug": "soccer_ball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โšพ": { - "name": "baseball", - "slug": "baseball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸฅŽ": { - "name": "softball", - "slug": "softball", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ€": { - "name": "basketball", - "slug": "basketball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "volleyball", - "slug": "volleyball", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿˆ": { - "name": "american football", - "slug": "american_football", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‰": { - "name": "rugby football", - "slug": "rugby_football", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŽพ": { - "name": "tennis", - "slug": "tennis", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "flying disc", - "slug": "flying_disc", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐ŸŽณ": { - "name": "bowling", - "slug": "bowling", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "cricket game", - "slug": "cricket_game", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ‘": { - "name": "field hockey", - "slug": "field_hockey", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "ice hockey", - "slug": "ice_hockey", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "lacrosse", - "slug": "lacrosse", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "ping pong", - "slug": "ping_pong", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿธ": { - "name": "badminton", - "slug": "badminton", - "group": "Activities", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸฅŠ": { - "name": "boxing glove", - "slug": "boxing_glove", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅ‹": { - "name": "martial arts uniform", - "slug": "martial_arts_uniform", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿฅ…": { - "name": "goal net", - "slug": "goal_net", - "group": "Activities", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "โ›ณ": { - "name": "flag in hole", - "slug": "flag_in_hole", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›ธ๏ธ": { - "name": "ice skate", - "slug": "ice_skate", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽฃ": { - "name": "fishing pole", - "slug": "fishing_pole", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿคฟ": { - "name": "diving mask", - "slug": "diving_mask", - "group": "Activities", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŽฝ": { - "name": "running shirt", - "slug": "running_shirt", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽฟ": { - "name": "skis", - "slug": "skis", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›ท": { - "name": "sled", - "slug": "sled", - "group": "Activities", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸฅŒ": { - "name": "curling stone", - "slug": "curling_stone", - "group": "Activities", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐ŸŽฏ": { - "name": "bullseye", - "slug": "bullseye", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช€": { - "name": "yo-yo", - "slug": "yo_yo", - "group": "Activities", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "kite", - "slug": "kite", - "group": "Activities", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ”ซ": { - "name": "water pistol", - "slug": "water_pistol", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽฑ": { - "name": "pool 8 ball", - "slug": "pool_8_ball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฎ": { - "name": "crystal ball", - "slug": "crystal_ball", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช„": { - "name": "magic wand", - "slug": "magic_wand", - "group": "Activities", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐ŸŽฎ": { - "name": "video game", - "slug": "video_game", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•น๏ธ": { - "name": "joystick", - "slug": "joystick", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽฐ": { - "name": "slot machine", - "slug": "slot_machine", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽฒ": { - "name": "game die", - "slug": "game_die", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงฉ": { - "name": "puzzle piece", - "slug": "puzzle_piece", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงธ": { - "name": "teddy bear", - "slug": "teddy_bear", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿช…": { - "name": "piรฑata", - "slug": "pinata", - "group": "Activities", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชฉ": { - "name": "mirror ball", - "slug": "mirror_ball", - "group": "Activities", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿช†": { - "name": "nesting dolls", - "slug": "nesting_dolls", - "group": "Activities", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "โ™ ๏ธ": { - "name": "spade suit", - "slug": "spade_suit", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™ฅ๏ธ": { - "name": "heart suit", - "slug": "heart_suit", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™ฆ๏ธ": { - "name": "diamond suit", - "slug": "diamond_suit", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™ฃ๏ธ": { - "name": "club suit", - "slug": "club_suit", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™Ÿ๏ธ": { - "name": "chess pawn", - "slug": "chess_pawn", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿƒ": { - "name": "joker", - "slug": "joker", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ€„": { - "name": "mahjong red dragon", - "slug": "mahjong_red_dragon", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽด": { - "name": "flower playing cards", - "slug": "flower_playing_cards", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽญ": { - "name": "performing arts", - "slug": "performing_arts", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ–ผ๏ธ": { - "name": "framed picture", - "slug": "framed_picture", - "group": "Activities", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽจ": { - "name": "artist palette", - "slug": "artist_palette", - "group": "Activities", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงต": { - "name": "thread", - "slug": "thread", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชก": { - "name": "sewing needle", - "slug": "sewing_needle", - "group": "Activities", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿงถ": { - "name": "yarn", - "slug": "yarn", - "group": "Activities", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชข": { - "name": "knot", - "slug": "knot", - "group": "Activities", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ‘“": { - "name": "glasses", - "slug": "glasses", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ถ๏ธ": { - "name": "sunglasses", - "slug": "sunglasses", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿฅฝ": { - "name": "goggles", - "slug": "goggles", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅผ": { - "name": "lab coat", - "slug": "lab_coat", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฆบ": { - "name": "safety vest", - "slug": "safety_vest", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ‘”": { - "name": "necktie", - "slug": "necktie", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘•": { - "name": "t-shirt", - "slug": "t_shirt", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘–": { - "name": "jeans", - "slug": "jeans", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงฃ": { - "name": "scarf", - "slug": "scarf", - "group": "Objects", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿงค": { - "name": "gloves", - "slug": "gloves", - "group": "Objects", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿงฅ": { - "name": "coat", - "slug": "coat", - "group": "Objects", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿงฆ": { - "name": "socks", - "slug": "socks", - "group": "Objects", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿ‘—": { - "name": "dress", - "slug": "dress", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘˜": { - "name": "kimono", - "slug": "kimono", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅป": { - "name": "sari", - "slug": "sari", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉฑ": { - "name": "one-piece swimsuit", - "slug": "one_piece_swimsuit", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉฒ": { - "name": "briefs", - "slug": "briefs", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉณ": { - "name": "shorts", - "slug": "shorts", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ‘™": { - "name": "bikini", - "slug": "bikini", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘š": { - "name": "womanโ€™s clothes", - "slug": "woman_s_clothes", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชญ": { - "name": "folding hand fan", - "slug": "folding_hand_fan", - "group": "Objects", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ‘›": { - "name": "purse", - "slug": "purse", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘œ": { - "name": "handbag", - "slug": "handbag", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘": { - "name": "clutch bag", - "slug": "clutch_bag", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›๏ธ": { - "name": "shopping bags", - "slug": "shopping_bags", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽ’": { - "name": "backpack", - "slug": "backpack", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉด": { - "name": "thong sandal", - "slug": "thong_sandal", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ‘ž": { - "name": "manโ€™s shoe", - "slug": "man_s_shoe", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘Ÿ": { - "name": "running shoe", - "slug": "running_shoe", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฅพ": { - "name": "hiking boot", - "slug": "hiking_boot", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿฅฟ": { - "name": "flat shoe", - "slug": "flat_shoe", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ‘ ": { - "name": "high-heeled shoe", - "slug": "high_heeled_shoe", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘ก": { - "name": "womanโ€™s sandal", - "slug": "woman_s_sandal", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉฐ": { - "name": "ballet shoes", - "slug": "ballet_shoes", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ‘ข": { - "name": "womanโ€™s boot", - "slug": "woman_s_boot", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชฎ": { - "name": "hair pick", - "slug": "hair_pick", - "group": "Objects", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ‘‘": { - "name": "crown", - "slug": "crown", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‘’": { - "name": "womanโ€™s hat", - "slug": "woman_s_hat", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽฉ": { - "name": "top hat", - "slug": "top_hat", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ“": { - "name": "graduation cap", - "slug": "graduation_cap", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงข": { - "name": "billed cap", - "slug": "billed_cap", - "group": "Objects", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿช–": { - "name": "military helmet", - "slug": "military_helmet", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "โ›‘๏ธ": { - "name": "rescue workerโ€™s helmet", - "slug": "rescue_worker_s_helmet", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“ฟ": { - "name": "prayer beads", - "slug": "prayer_beads", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’„": { - "name": "lipstick", - "slug": "lipstick", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’": { - "name": "ring", - "slug": "ring", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’Ž": { - "name": "gem stone", - "slug": "gem_stone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”‡": { - "name": "muted speaker", - "slug": "muted_speaker", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ˆ": { - "name": "speaker low volume", - "slug": "speaker_low_volume", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ”‰": { - "name": "speaker medium volume", - "slug": "speaker_medium_volume", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”Š": { - "name": "speaker high volume", - "slug": "speaker_high_volume", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ข": { - "name": "loudspeaker", - "slug": "loudspeaker", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฃ": { - "name": "megaphone", - "slug": "megaphone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฏ": { - "name": "postal horn", - "slug": "postal_horn", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ””": { - "name": "bell", - "slug": "bell", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”•": { - "name": "bell with slash", - "slug": "bell_with_slash", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŽผ": { - "name": "musical score", - "slug": "musical_score", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽต": { - "name": "musical note", - "slug": "musical_note", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽถ": { - "name": "musical notes", - "slug": "musical_notes", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽ™๏ธ": { - "name": "studio microphone", - "slug": "studio_microphone", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽš๏ธ": { - "name": "level slider", - "slug": "level_slider", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽ›๏ธ": { - "name": "control knobs", - "slug": "control_knobs", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽค": { - "name": "microphone", - "slug": "microphone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽง": { - "name": "headphone", - "slug": "headphone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ป": { - "name": "radio", - "slug": "radio", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽท": { - "name": "saxophone", - "slug": "saxophone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช—": { - "name": "accordion", - "slug": "accordion", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐ŸŽธ": { - "name": "guitar", - "slug": "guitar", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽน": { - "name": "musical keyboard", - "slug": "musical_keyboard", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽบ": { - "name": "trumpet", - "slug": "trumpet", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽป": { - "name": "violin", - "slug": "violin", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช•": { - "name": "banjo", - "slug": "banjo", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฅ": { - "name": "drum", - "slug": "drum", - "group": "Objects", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿช˜": { - "name": "long drum", - "slug": "long_drum", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿช‡": { - "name": "maracas", - "slug": "maracas", - "group": "Objects", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿชˆ": { - "name": "flute", - "slug": "flute", - "group": "Objects", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ“ฑ": { - "name": "mobile phone", - "slug": "mobile_phone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฒ": { - "name": "mobile phone with arrow", - "slug": "mobile_phone_with_arrow", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜Ž๏ธ": { - "name": "telephone", - "slug": "telephone", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ž": { - "name": "telephone receiver", - "slug": "telephone_receiver", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“Ÿ": { - "name": "pager", - "slug": "pager", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ ": { - "name": "fax machine", - "slug": "fax_machine", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”‹": { - "name": "battery", - "slug": "battery", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชซ": { - "name": "low battery", - "slug": "low_battery", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ”Œ": { - "name": "electric plug", - "slug": "electric_plug", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ป": { - "name": "laptop", - "slug": "laptop", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ–ฅ๏ธ": { - "name": "desktop computer", - "slug": "desktop_computer", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–จ๏ธ": { - "name": "printer", - "slug": "printer", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โŒจ๏ธ": { - "name": "keyboard", - "slug": "keyboard", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ–ฑ๏ธ": { - "name": "computer mouse", - "slug": "computer_mouse", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–ฒ๏ธ": { - "name": "trackball", - "slug": "trackball", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ’ฝ": { - "name": "computer disk", - "slug": "computer_disk", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’พ": { - "name": "floppy disk", - "slug": "floppy_disk", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฟ": { - "name": "optical disk", - "slug": "optical_disk", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“€": { - "name": "dvd", - "slug": "dvd", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงฎ": { - "name": "abacus", - "slug": "abacus", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐ŸŽฅ": { - "name": "movie camera", - "slug": "movie_camera", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽž๏ธ": { - "name": "film frames", - "slug": "film_frames", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“ฝ๏ธ": { - "name": "film projector", - "slug": "film_projector", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐ŸŽฌ": { - "name": "clapper board", - "slug": "clapper_board", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“บ": { - "name": "television", - "slug": "television", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ท": { - "name": "camera", - "slug": "camera", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ธ": { - "name": "camera with flash", - "slug": "camera_with_flash", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ“น": { - "name": "video camera", - "slug": "video_camera", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ผ": { - "name": "videocassette", - "slug": "videocassette", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "magnifying glass tilted left", - "slug": "magnifying_glass_tilted_left", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”Ž": { - "name": "magnifying glass tilted right", - "slug": "magnifying_glass_tilted_right", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ•ฏ๏ธ": { - "name": "candle", - "slug": "candle", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ’ก": { - "name": "light bulb", - "slug": "light_bulb", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฆ": { - "name": "flashlight", - "slug": "flashlight", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฎ": { - "name": "red paper lantern", - "slug": "red_paper_lantern", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช”": { - "name": "diya lamp", - "slug": "diya_lamp", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ“”": { - "name": "notebook with decorative cover", - "slug": "notebook_with_decorative_cover", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“•": { - "name": "closed book", - "slug": "closed_book", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“–": { - "name": "open book", - "slug": "open_book", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“—": { - "name": "green book", - "slug": "green_book", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“˜": { - "name": "blue book", - "slug": "blue_book", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“™": { - "name": "orange book", - "slug": "orange_book", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“š": { - "name": "books", - "slug": "books", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ““": { - "name": "notebook", - "slug": "notebook", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“’": { - "name": "ledger", - "slug": "ledger", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ƒ": { - "name": "page with curl", - "slug": "page_with_curl", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“œ": { - "name": "scroll", - "slug": "scroll", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“„": { - "name": "page facing up", - "slug": "page_facing_up", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฐ": { - "name": "newspaper", - "slug": "newspaper", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ž๏ธ": { - "name": "rolled-up newspaper", - "slug": "rolled_up_newspaper", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“‘": { - "name": "bookmark tabs", - "slug": "bookmark_tabs", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”–": { - "name": "bookmark", - "slug": "bookmark", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿท๏ธ": { - "name": "label", - "slug": "label", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ’ฐ": { - "name": "money bag", - "slug": "money_bag", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช™": { - "name": "coin", - "slug": "coin", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ’ด": { - "name": "yen banknote", - "slug": "yen_banknote", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ต": { - "name": "dollar banknote", - "slug": "dollar_banknote", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ถ": { - "name": "euro banknote", - "slug": "euro_banknote", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’ท": { - "name": "pound banknote", - "slug": "pound_banknote", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’ธ": { - "name": "money with wings", - "slug": "money_with_wings", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ณ": { - "name": "credit card", - "slug": "credit_card", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿงพ": { - "name": "receipt", - "slug": "receipt", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ’น": { - "name": "chart increasing with yen", - "slug": "chart_increasing_with_yen", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœ‰๏ธ": { - "name": "envelope", - "slug": "envelope", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ง": { - "name": "e-mail", - "slug": "e_mail", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“จ": { - "name": "incoming envelope", - "slug": "incoming_envelope", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฉ": { - "name": "envelope with arrow", - "slug": "envelope_with_arrow", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ค": { - "name": "outbox tray", - "slug": "outbox_tray", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฅ": { - "name": "inbox tray", - "slug": "inbox_tray", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฆ": { - "name": "package", - "slug": "package", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ซ": { - "name": "closed mailbox with raised flag", - "slug": "closed_mailbox_with_raised_flag", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ช": { - "name": "closed mailbox with lowered flag", - "slug": "closed_mailbox_with_lowered_flag", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ฌ": { - "name": "open mailbox with raised flag", - "slug": "open_mailbox_with_raised_flag", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“ญ": { - "name": "open mailbox with lowered flag", - "slug": "open_mailbox_with_lowered_flag", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“ฎ": { - "name": "postbox", - "slug": "postbox", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ณ๏ธ": { - "name": "ballot box with ballot", - "slug": "ballot_box_with_ballot", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โœ๏ธ": { - "name": "pencil", - "slug": "pencil", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœ’๏ธ": { - "name": "black nib", - "slug": "black_nib", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ–‹๏ธ": { - "name": "fountain pen", - "slug": "fountain_pen", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–Š๏ธ": { - "name": "pen", - "slug": "pen", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–Œ๏ธ": { - "name": "paintbrush", - "slug": "paintbrush", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ–๏ธ": { - "name": "crayon", - "slug": "crayon", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "memo", - "slug": "memo", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ผ": { - "name": "briefcase", - "slug": "briefcase", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "file folder", - "slug": "file_folder", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“‚": { - "name": "open file folder", - "slug": "open_file_folder", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—‚๏ธ": { - "name": "card index dividers", - "slug": "card_index_dividers", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“…": { - "name": "calendar", - "slug": "calendar", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“†": { - "name": "tear-off calendar", - "slug": "tear_off_calendar", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—’๏ธ": { - "name": "spiral notepad", - "slug": "spiral_notepad", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—“๏ธ": { - "name": "spiral calendar", - "slug": "spiral_calendar", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“‡": { - "name": "card index", - "slug": "card_index", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ˆ": { - "name": "chart increasing", - "slug": "chart_increasing", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“‰": { - "name": "chart decreasing", - "slug": "chart_decreasing", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“Š": { - "name": "bar chart", - "slug": "bar_chart", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“‹": { - "name": "clipboard", - "slug": "clipboard", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“Œ": { - "name": "pushpin", - "slug": "pushpin", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "round pushpin", - "slug": "round_pushpin", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“Ž": { - "name": "paperclip", - "slug": "paperclip", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ–‡๏ธ": { - "name": "linked paperclips", - "slug": "linked_paperclips", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "straight ruler", - "slug": "straight_ruler", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“": { - "name": "triangular ruler", - "slug": "triangular_ruler", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœ‚๏ธ": { - "name": "scissors", - "slug": "scissors", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—ƒ๏ธ": { - "name": "card file box", - "slug": "card_file_box", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—„๏ธ": { - "name": "file cabinet", - "slug": "file_cabinet", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—‘๏ธ": { - "name": "wastebasket", - "slug": "wastebasket", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ”’": { - "name": "locked", - "slug": "locked", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”“": { - "name": "unlocked", - "slug": "unlocked", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "locked with pen", - "slug": "locked_with_pen", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "locked with key", - "slug": "locked_with_key", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”‘": { - "name": "key", - "slug": "key", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ—๏ธ": { - "name": "old key", - "slug": "old_key", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ”จ": { - "name": "hammer", - "slug": "hammer", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช“": { - "name": "axe", - "slug": "axe", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "โ›๏ธ": { - "name": "pick", - "slug": "pick", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โš’๏ธ": { - "name": "hammer and pick", - "slug": "hammer_and_pick", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ› ๏ธ": { - "name": "hammer and wrench", - "slug": "hammer_and_wrench", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ—ก๏ธ": { - "name": "dagger", - "slug": "dagger", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โš”๏ธ": { - "name": "crossed swords", - "slug": "crossed_swords", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ’ฃ": { - "name": "bomb", - "slug": "bomb", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชƒ": { - "name": "boomerang", - "slug": "boomerang", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿน": { - "name": "bow and arrow", - "slug": "bow_and_arrow", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›ก๏ธ": { - "name": "shield", - "slug": "shield", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿชš": { - "name": "carpentry saw", - "slug": "carpentry_saw", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ”ง": { - "name": "wrench", - "slug": "wrench", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช›": { - "name": "screwdriver", - "slug": "screwdriver", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ”ฉ": { - "name": "nut and bolt", - "slug": "nut_and_bolt", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โš™๏ธ": { - "name": "gear", - "slug": "gear", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ—œ๏ธ": { - "name": "clamp", - "slug": "clamp", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โš–๏ธ": { - "name": "balance scale", - "slug": "balance_scale", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿฆฏ": { - "name": "white cane", - "slug": "white_cane", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ”—": { - "name": "link", - "slug": "link", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›“๏ธ": { - "name": "chains", - "slug": "chains", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿช": { - "name": "hook", - "slug": "hook", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿงฐ": { - "name": "toolbox", - "slug": "toolbox", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงฒ": { - "name": "magnet", - "slug": "magnet", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชœ": { - "name": "ladder", - "slug": "ladder", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "โš—๏ธ": { - "name": "alembic", - "slug": "alembic", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿงช": { - "name": "test tube", - "slug": "test_tube", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงซ": { - "name": "petri dish", - "slug": "petri_dish", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงฌ": { - "name": "dna", - "slug": "dna", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ”ฌ": { - "name": "microscope", - "slug": "microscope", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ญ": { - "name": "telescope", - "slug": "telescope", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ“ก": { - "name": "satellite antenna", - "slug": "satellite_antenna", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’‰": { - "name": "syringe", - "slug": "syringe", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉธ": { - "name": "drop of blood", - "slug": "drop_of_blood", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ’Š": { - "name": "pill", - "slug": "pill", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿฉน": { - "name": "adhesive bandage", - "slug": "adhesive_bandage", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉผ": { - "name": "crutch", - "slug": "crutch", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿฉบ": { - "name": "stethoscope", - "slug": "stethoscope", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿฉป": { - "name": "x-ray", - "slug": "x_ray", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿšช": { - "name": "door", - "slug": "door", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›—": { - "name": "elevator", - "slug": "elevator", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชž": { - "name": "mirror", - "slug": "mirror", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐ŸชŸ": { - "name": "window", - "slug": "window", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿ›๏ธ": { - "name": "bed", - "slug": "bed", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ›‹๏ธ": { - "name": "couch and lamp", - "slug": "couch_and_lamp", - "group": "Objects", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿช‘": { - "name": "chair", - "slug": "chair", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿšฝ": { - "name": "toilet", - "slug": "toilet", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿช ": { - "name": "plunger", - "slug": "plunger", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿšฟ": { - "name": "shower", - "slug": "shower", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›": { - "name": "bathtub", - "slug": "bathtub", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿชค": { - "name": "mouse trap", - "slug": "mouse_trap", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿช’": { - "name": "razor", - "slug": "razor", - "group": "Objects", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿงด": { - "name": "lotion bottle", - "slug": "lotion_bottle", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงท": { - "name": "safety pin", - "slug": "safety_pin", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงน": { - "name": "broom", - "slug": "broom", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงบ": { - "name": "basket", - "slug": "basket", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงป": { - "name": "roll of paper", - "slug": "roll_of_paper", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชฃ": { - "name": "bucket", - "slug": "bucket", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿงผ": { - "name": "soap", - "slug": "soap", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿซง": { - "name": "bubbles", - "slug": "bubbles", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿชฅ": { - "name": "toothbrush", - "slug": "toothbrush", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿงฝ": { - "name": "sponge", - "slug": "sponge", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿงฏ": { - "name": "fire extinguisher", - "slug": "fire_extinguisher", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ›’": { - "name": "shopping cart", - "slug": "shopping_cart", - "group": "Objects", - "emoji_version": "3.0", - "unicode_version": "3.0", - "skin_tone_support": false - }, - "๐Ÿšฌ": { - "name": "cigarette", - "slug": "cigarette", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โšฐ๏ธ": { - "name": "coffin", - "slug": "coffin", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿชฆ": { - "name": "headstone", - "slug": "headstone", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "โšฑ๏ธ": { - "name": "funeral urn", - "slug": "funeral_urn", - "group": "Objects", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿงฟ": { - "name": "nazar amulet", - "slug": "nazar_amulet", - "group": "Objects", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿชฌ": { - "name": "hamsa", - "slug": "hamsa", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿ—ฟ": { - "name": "moai", - "slug": "moai", - "group": "Objects", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชง": { - "name": "placard", - "slug": "placard", - "group": "Objects", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿชช": { - "name": "identification card", - "slug": "identification_card", - "group": "Objects", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "๐Ÿง": { - "name": "ATM sign", - "slug": "atm_sign", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšฎ": { - "name": "litter in bin sign", - "slug": "litter_in_bin_sign", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšฐ": { - "name": "potable water", - "slug": "potable_water", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ™ฟ": { - "name": "wheelchair symbol", - "slug": "wheelchair_symbol", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšน": { - "name": "menโ€™s room", - "slug": "men_s_room", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšบ": { - "name": "womenโ€™s room", - "slug": "women_s_room", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšป": { - "name": "restroom", - "slug": "restroom", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšผ": { - "name": "baby symbol", - "slug": "baby_symbol", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšพ": { - "name": "water closet", - "slug": "water_closet", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›‚": { - "name": "passport control", - "slug": "passport_control", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›ƒ": { - "name": "customs", - "slug": "customs", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›„": { - "name": "baggage claim", - "slug": "baggage_claim", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ›…": { - "name": "left luggage", - "slug": "left_luggage", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โš ๏ธ": { - "name": "warning", - "slug": "warning", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšธ": { - "name": "children crossing", - "slug": "children_crossing", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ›”": { - "name": "no entry", - "slug": "no_entry", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšซ": { - "name": "prohibited", - "slug": "prohibited", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšณ": { - "name": "no bicycles", - "slug": "no_bicycles", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšญ": { - "name": "no smoking", - "slug": "no_smoking", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšฏ": { - "name": "no littering", - "slug": "no_littering", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšฑ": { - "name": "non-potable water", - "slug": "non_potable_water", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿšท": { - "name": "no pedestrians", - "slug": "no_pedestrians", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ“ต": { - "name": "no mobile phones", - "slug": "no_mobile_phones", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ž": { - "name": "no one under eighteen", - "slug": "no_one_under_eighteen", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜ข๏ธ": { - "name": "radioactive", - "slug": "radioactive", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ˜ฃ๏ธ": { - "name": "biohazard", - "slug": "biohazard", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โฌ†๏ธ": { - "name": "up arrow", - "slug": "up_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†—๏ธ": { - "name": "up-right arrow", - "slug": "up_right_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โžก๏ธ": { - "name": "right arrow", - "slug": "right_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†˜๏ธ": { - "name": "down-right arrow", - "slug": "down_right_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฌ‡๏ธ": { - "name": "down arrow", - "slug": "down_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†™๏ธ": { - "name": "down-left arrow", - "slug": "down_left_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฌ…๏ธ": { - "name": "left arrow", - "slug": "left_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†–๏ธ": { - "name": "up-left arrow", - "slug": "up_left_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†•๏ธ": { - "name": "up-down arrow", - "slug": "up_down_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†”๏ธ": { - "name": "left-right arrow", - "slug": "left_right_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†ฉ๏ธ": { - "name": "right arrow curving left", - "slug": "right_arrow_curving_left", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ†ช๏ธ": { - "name": "left arrow curving right", - "slug": "left_arrow_curving_right", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โคด๏ธ": { - "name": "right arrow curving up", - "slug": "right_arrow_curving_up", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โคต๏ธ": { - "name": "right arrow curving down", - "slug": "right_arrow_curving_down", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ƒ": { - "name": "clockwise vertical arrows", - "slug": "clockwise_vertical_arrows", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”„": { - "name": "counterclockwise arrows button", - "slug": "counterclockwise_arrows_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”™": { - "name": "BACK arrow", - "slug": "back_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”š": { - "name": "END arrow", - "slug": "end_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”›": { - "name": "ON! arrow", - "slug": "on_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”œ": { - "name": "SOON arrow", - "slug": "soon_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "TOP arrow", - "slug": "top_arrow", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›": { - "name": "place of worship", - "slug": "place_of_worship", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โš›๏ธ": { - "name": "atom symbol", - "slug": "atom_symbol", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ•‰๏ธ": { - "name": "om", - "slug": "om", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โœก๏ธ": { - "name": "star of David", - "slug": "star_of_david", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜ธ๏ธ": { - "name": "wheel of dharma", - "slug": "wheel_of_dharma", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜ฏ๏ธ": { - "name": "yin yang", - "slug": "yin_yang", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โœ๏ธ": { - "name": "latin cross", - "slug": "latin_cross", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜ฆ๏ธ": { - "name": "orthodox cross", - "slug": "orthodox_cross", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ˜ช๏ธ": { - "name": "star and crescent", - "slug": "star_and_crescent", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ˜ฎ๏ธ": { - "name": "peace symbol", - "slug": "peace_symbol", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ•Ž": { - "name": "menorah", - "slug": "menorah", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ฏ": { - "name": "dotted six-pointed star", - "slug": "dotted_six_pointed_star", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿชฏ": { - "name": "khanda", - "slug": "khanda", - "group": "Symbols", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "โ™ˆ": { - "name": "Aries", - "slug": "aries", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™‰": { - "name": "Taurus", - "slug": "taurus", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™Š": { - "name": "Gemini", - "slug": "gemini", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™‹": { - "name": "Cancer", - "slug": "cancer", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™Œ": { - "name": "Leo", - "slug": "leo", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™": { - "name": "Virgo", - "slug": "virgo", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™Ž": { - "name": "Libra", - "slug": "libra", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™": { - "name": "Scorpio", - "slug": "scorpio", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™": { - "name": "Sagittarius", - "slug": "sagittarius", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™‘": { - "name": "Capricorn", - "slug": "capricorn", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™’": { - "name": "Aquarius", - "slug": "aquarius", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™“": { - "name": "Pisces", - "slug": "pisces", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ›Ž": { - "name": "Ophiuchus", - "slug": "ophiuchus", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”€": { - "name": "shuffle tracks button", - "slug": "shuffle_tracks_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”": { - "name": "repeat button", - "slug": "repeat_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”‚": { - "name": "repeat single button", - "slug": "repeat_single_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ–ถ๏ธ": { - "name": "play button", - "slug": "play_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฉ": { - "name": "fast-forward button", - "slug": "fast_forward_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โญ๏ธ": { - "name": "next track button", - "slug": "next_track_button", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โฏ๏ธ": { - "name": "play or pause button", - "slug": "play_or_pause_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "โ—€๏ธ": { - "name": "reverse button", - "slug": "reverse_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โช": { - "name": "fast reverse button", - "slug": "fast_reverse_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฎ๏ธ": { - "name": "last track button", - "slug": "last_track_button", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿ”ผ": { - "name": "upwards button", - "slug": "upwards_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โซ": { - "name": "fast up button", - "slug": "fast_up_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฝ": { - "name": "downwards button", - "slug": "downwards_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฌ": { - "name": "fast down button", - "slug": "fast_down_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โธ๏ธ": { - "name": "pause button", - "slug": "pause_button", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โน๏ธ": { - "name": "stop button", - "slug": "stop_button", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โบ๏ธ": { - "name": "record button", - "slug": "record_button", - "group": "Symbols", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "โ๏ธ": { - "name": "eject button", - "slug": "eject_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐ŸŽฆ": { - "name": "cinema", - "slug": "cinema", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”…": { - "name": "dim button", - "slug": "dim_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”†": { - "name": "bright button", - "slug": "bright_button", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ“ถ": { - "name": "antenna bars", - "slug": "antenna_bars", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ›œ": { - "name": "wireless", - "slug": "wireless", - "group": "Symbols", - "emoji_version": "15.0", - "unicode_version": "15.0", - "skin_tone_support": false - }, - "๐Ÿ“ณ": { - "name": "vibration mode", - "slug": "vibration_mode", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“ด": { - "name": "mobile phone off", - "slug": "mobile_phone_off", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ™€๏ธ": { - "name": "female sign", - "slug": "female_sign", - "group": "Symbols", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "โ™‚๏ธ": { - "name": "male sign", - "slug": "male_sign", - "group": "Symbols", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "โšง๏ธ": { - "name": "transgender symbol", - "slug": "transgender_symbol", - "group": "Symbols", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "โœ–๏ธ": { - "name": "multiply", - "slug": "multiply", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โž•": { - "name": "plus", - "slug": "plus", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โž–": { - "name": "minus", - "slug": "minus", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โž—": { - "name": "divide", - "slug": "divide", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŸฐ": { - "name": "heavy equals sign", - "slug": "heavy_equals_sign", - "group": "Symbols", - "emoji_version": "14.0", - "unicode_version": "14.0", - "skin_tone_support": false - }, - "โ™พ๏ธ": { - "name": "infinity", - "slug": "infinity", - "group": "Symbols", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "โ€ผ๏ธ": { - "name": "double exclamation mark", - "slug": "double_exclamation_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ‰๏ธ": { - "name": "exclamation question mark", - "slug": "exclamation_question_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ“": { - "name": "red question mark", - "slug": "red_question_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ”": { - "name": "white question mark", - "slug": "white_question_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ•": { - "name": "white exclamation mark", - "slug": "white_exclamation_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ—": { - "name": "red exclamation mark", - "slug": "red_exclamation_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "ใ€ฐ๏ธ": { - "name": "wavy dash", - "slug": "wavy_dash", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฑ": { - "name": "currency exchange", - "slug": "currency_exchange", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ฒ": { - "name": "heavy dollar sign", - "slug": "heavy_dollar_sign", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โš•๏ธ": { - "name": "medical symbol", - "slug": "medical_symbol", - "group": "Symbols", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "โ™ป๏ธ": { - "name": "recycling symbol", - "slug": "recycling_symbol", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โšœ๏ธ": { - "name": "fleur-de-lis", - "slug": "fleur_de_lis", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿ”ฑ": { - "name": "trident emblem", - "slug": "trident_emblem", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ“›": { - "name": "name badge", - "slug": "name_badge", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฐ": { - "name": "Japanese symbol for beginner", - "slug": "japanese_symbol_for_beginner", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โญ•": { - "name": "hollow red circle", - "slug": "hollow_red_circle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœ…": { - "name": "check mark button", - "slug": "check_mark_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ˜‘๏ธ": { - "name": "check box with check", - "slug": "check_box_with_check", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœ”๏ธ": { - "name": "check mark", - "slug": "check_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โŒ": { - "name": "cross mark", - "slug": "cross_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โŽ": { - "name": "cross mark button", - "slug": "cross_mark_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โžฐ": { - "name": "curly loop", - "slug": "curly_loop", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โžฟ": { - "name": "double curly loop", - "slug": "double_curly_loop", - "group": "Symbols", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "ใ€ฝ๏ธ": { - "name": "part alternation mark", - "slug": "part_alternation_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœณ๏ธ": { - "name": "eight-spoked asterisk", - "slug": "eight_spoked_asterisk", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โœด๏ธ": { - "name": "eight-pointed star", - "slug": "eight_pointed_star", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ‡๏ธ": { - "name": "sparkle", - "slug": "sparkle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "ยฉ๏ธ": { - "name": "copyright", - "slug": "copyright", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "ยฎ๏ธ": { - "name": "registered", - "slug": "registered", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ„ข๏ธ": { - "name": "trade mark", - "slug": "trade_mark", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "#๏ธโƒฃ": { - "name": "keycap #", - "slug": "keycap_number_sign", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "*๏ธโƒฃ": { - "name": "keycap *", - "slug": "keycap_asterisk", - "group": "Symbols", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "0๏ธโƒฃ": { - "name": "keycap 0", - "slug": "keycap_0", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "1๏ธโƒฃ": { - "name": "keycap 1", - "slug": "keycap_1", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "2๏ธโƒฃ": { - "name": "keycap 2", - "slug": "keycap_2", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "3๏ธโƒฃ": { - "name": "keycap 3", - "slug": "keycap_3", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "4๏ธโƒฃ": { - "name": "keycap 4", - "slug": "keycap_4", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "5๏ธโƒฃ": { - "name": "keycap 5", - "slug": "keycap_5", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "6๏ธโƒฃ": { - "name": "keycap 6", - "slug": "keycap_6", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "7๏ธโƒฃ": { - "name": "keycap 7", - "slug": "keycap_7", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "8๏ธโƒฃ": { - "name": "keycap 8", - "slug": "keycap_8", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "9๏ธโƒฃ": { - "name": "keycap 9", - "slug": "keycap_9", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”Ÿ": { - "name": "keycap 10", - "slug": "keycap_10", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ” ": { - "name": "input latin uppercase", - "slug": "input_latin_uppercase", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ก": { - "name": "input latin lowercase", - "slug": "input_latin_lowercase", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ข": { - "name": "input numbers", - "slug": "input_numbers", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฃ": { - "name": "input symbols", - "slug": "input_symbols", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ค": { - "name": "input latin letters", - "slug": "input_latin_letters", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…ฐ๏ธ": { - "name": "A button (blood type)", - "slug": "a_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†Ž": { - "name": "AB button (blood type)", - "slug": "ab_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…ฑ๏ธ": { - "name": "B button (blood type)", - "slug": "b_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†‘": { - "name": "CL button", - "slug": "cl_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†’": { - "name": "COOL button", - "slug": "cool_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†“": { - "name": "FREE button", - "slug": "free_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ„น๏ธ": { - "name": "information", - "slug": "information", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†”": { - "name": "ID button", - "slug": "id_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ“‚๏ธ": { - "name": "circled M", - "slug": "circled_m", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†•": { - "name": "NEW button", - "slug": "new_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†–": { - "name": "NG button", - "slug": "ng_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…พ๏ธ": { - "name": "O button (blood type)", - "slug": "o_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†—": { - "name": "OK button", - "slug": "ok_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ…ฟ๏ธ": { - "name": "P button", - "slug": "p_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†˜": { - "name": "SOS button", - "slug": "sos_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†™": { - "name": "UP! button", - "slug": "up_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ†š": { - "name": "VS button", - "slug": "vs_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆ": { - "name": "Japanese โ€œhereโ€ button", - "slug": "japanese_here_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆ‚๏ธ": { - "name": "Japanese โ€œservice chargeโ€ button", - "slug": "japanese_service_charge_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆท๏ธ": { - "name": "Japanese โ€œmonthly amountโ€ button", - "slug": "japanese_monthly_amount_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆถ": { - "name": "Japanese โ€œnot free of chargeโ€ button", - "slug": "japanese_not_free_of_charge_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆฏ": { - "name": "Japanese โ€œreservedโ€ button", - "slug": "japanese_reserved_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‰": { - "name": "Japanese โ€œbargainโ€ button", - "slug": "japanese_bargain_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆน": { - "name": "Japanese โ€œdiscountโ€ button", - "slug": "japanese_discount_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆš": { - "name": "Japanese โ€œfree of chargeโ€ button", - "slug": "japanese_free_of_charge_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆฒ": { - "name": "Japanese โ€œprohibitedโ€ button", - "slug": "japanese_prohibited_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‰‘": { - "name": "Japanese โ€œacceptableโ€ button", - "slug": "japanese_acceptable_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆธ": { - "name": "Japanese โ€œapplicationโ€ button", - "slug": "japanese_application_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆด": { - "name": "Japanese โ€œpassing gradeโ€ button", - "slug": "japanese_passing_grade_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆณ": { - "name": "Japanese โ€œvacancyโ€ button", - "slug": "japanese_vacancy_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "ใŠ—๏ธ": { - "name": "Japanese โ€œcongratulationsโ€ button", - "slug": "japanese_congratulations_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "ใŠ™๏ธ": { - "name": "Japanese โ€œsecretโ€ button", - "slug": "japanese_secret_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆบ": { - "name": "Japanese โ€œopen for businessโ€ button", - "slug": "japanese_open_for_business_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿˆต": { - "name": "Japanese โ€œno vacancyโ€ button", - "slug": "japanese_no_vacancy_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ด": { - "name": "red circle", - "slug": "red_circle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŸ ": { - "name": "orange circle", - "slug": "orange_circle", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸก": { - "name": "yellow circle", - "slug": "yellow_circle", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸข": { - "name": "green circle", - "slug": "green_circle", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐Ÿ”ต": { - "name": "blue circle", - "slug": "blue_circle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŸฃ": { - "name": "purple circle", - "slug": "purple_circle", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸค": { - "name": "brown circle", - "slug": "brown_circle", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "โšซ": { - "name": "black circle", - "slug": "black_circle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โšช": { - "name": "white circle", - "slug": "white_circle", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŸฅ": { - "name": "red square", - "slug": "red_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸง": { - "name": "orange square", - "slug": "orange_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸจ": { - "name": "yellow square", - "slug": "yellow_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸฉ": { - "name": "green square", - "slug": "green_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸฆ": { - "name": "blue square", - "slug": "blue_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸช": { - "name": "purple square", - "slug": "purple_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "๐ŸŸซ": { - "name": "brown square", - "slug": "brown_square", - "group": "Symbols", - "emoji_version": "12.0", - "unicode_version": "12.0", - "skin_tone_support": false - }, - "โฌ›": { - "name": "black large square", - "slug": "black_large_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โฌœ": { - "name": "white large square", - "slug": "white_large_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ—ผ๏ธ": { - "name": "black medium square", - "slug": "black_medium_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ—ป๏ธ": { - "name": "white medium square", - "slug": "white_medium_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ—พ": { - "name": "black medium-small square", - "slug": "black_medium_small_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ—ฝ": { - "name": "white medium-small square", - "slug": "white_medium_small_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ–ช๏ธ": { - "name": "black small square", - "slug": "black_small_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "โ–ซ๏ธ": { - "name": "white small square", - "slug": "white_small_square", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ถ": { - "name": "large orange diamond", - "slug": "large_orange_diamond", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ท": { - "name": "large blue diamond", - "slug": "large_blue_diamond", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ธ": { - "name": "small orange diamond", - "slug": "small_orange_diamond", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”น": { - "name": "small blue diamond", - "slug": "small_blue_diamond", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”บ": { - "name": "red triangle pointed up", - "slug": "red_triangle_pointed_up", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ป": { - "name": "red triangle pointed down", - "slug": "red_triangle_pointed_down", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ’ ": { - "name": "diamond with a dot", - "slug": "diamond_with_a_dot", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”˜": { - "name": "radio button", - "slug": "radio_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ณ": { - "name": "white square button", - "slug": "white_square_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ”ฒ": { - "name": "black square button", - "slug": "black_square_button", - "group": "Symbols", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ": { - "name": "chequered flag", - "slug": "chequered_flag", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿšฉ": { - "name": "triangular flag", - "slug": "triangular_flag", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐ŸŽŒ": { - "name": "crossed flags", - "slug": "crossed_flags", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿด": { - "name": "black flag", - "slug": "black_flag", - "group": "Flags", - "emoji_version": "1.0", - "unicode_version": "1.0", - "skin_tone_support": false - }, - "๐Ÿณ๏ธ": { - "name": "white flag", - "slug": "white_flag", - "group": "Flags", - "emoji_version": "0.7", - "unicode_version": "0.7", - "skin_tone_support": false - }, - "๐Ÿณ๏ธโ€๐ŸŒˆ": { - "name": "rainbow flag", - "slug": "rainbow_flag", - "group": "Flags", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿณ๏ธโ€โšง๏ธ": { - "name": "transgender flag", - "slug": "transgender_flag", - "group": "Flags", - "emoji_version": "13.0", - "unicode_version": "13.0", - "skin_tone_support": false - }, - "๐Ÿดโ€โ˜ ๏ธ": { - "name": "pirate flag", - "slug": "pirate_flag", - "group": "Flags", - "emoji_version": "11.0", - "unicode_version": "11.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡จ": { - "name": "flag Ascension Island", - "slug": "flag_ascension_island", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฉ": { - "name": "flag Andorra", - "slug": "flag_andorra", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ช": { - "name": "flag United Arab Emirates", - "slug": "flag_united_arab_emirates", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ซ": { - "name": "flag Afghanistan", - "slug": "flag_afghanistan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฌ": { - "name": "flag Antigua & Barbuda", - "slug": "flag_antigua_barbuda", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฎ": { - "name": "flag Anguilla", - "slug": "flag_anguilla", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฑ": { - "name": "flag Albania", - "slug": "flag_albania", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฒ": { - "name": "flag Armenia", - "slug": "flag_armenia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ด": { - "name": "flag Angola", - "slug": "flag_angola", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ถ": { - "name": "flag Antarctica", - "slug": "flag_antarctica", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ท": { - "name": "flag Argentina", - "slug": "flag_argentina", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ธ": { - "name": "flag American Samoa", - "slug": "flag_american_samoa", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡น": { - "name": "flag Austria", - "slug": "flag_austria", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡บ": { - "name": "flag Australia", - "slug": "flag_australia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ผ": { - "name": "flag Aruba", - "slug": "flag_aruba", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฝ": { - "name": "flag ร…land Islands", - "slug": "flag_aland_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฆ๐Ÿ‡ฟ": { - "name": "flag Azerbaijan", - "slug": "flag_azerbaijan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฆ": { - "name": "flag Bosnia & Herzegovina", - "slug": "flag_bosnia_herzegovina", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ง": { - "name": "flag Barbados", - "slug": "flag_barbados", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฉ": { - "name": "flag Bangladesh", - "slug": "flag_bangladesh", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ช": { - "name": "flag Belgium", - "slug": "flag_belgium", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ซ": { - "name": "flag Burkina Faso", - "slug": "flag_burkina_faso", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฌ": { - "name": "flag Bulgaria", - "slug": "flag_bulgaria", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ญ": { - "name": "flag Bahrain", - "slug": "flag_bahrain", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฎ": { - "name": "flag Burundi", - "slug": "flag_burundi", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฏ": { - "name": "flag Benin", - "slug": "flag_benin", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฑ": { - "name": "flag St. Barthรฉlemy", - "slug": "flag_st_barthelemy", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฒ": { - "name": "flag Bermuda", - "slug": "flag_bermuda", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ณ": { - "name": "flag Brunei", - "slug": "flag_brunei", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ด": { - "name": "flag Bolivia", - "slug": "flag_bolivia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ถ": { - "name": "flag Caribbean Netherlands", - "slug": "flag_caribbean_netherlands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ท": { - "name": "flag Brazil", - "slug": "flag_brazil", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ธ": { - "name": "flag Bahamas", - "slug": "flag_bahamas", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡น": { - "name": "flag Bhutan", - "slug": "flag_bhutan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ป": { - "name": "flag Bouvet Island", - "slug": "flag_bouvet_island", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ผ": { - "name": "flag Botswana", - "slug": "flag_botswana", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡พ": { - "name": "flag Belarus", - "slug": "flag_belarus", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ง๐Ÿ‡ฟ": { - "name": "flag Belize", - "slug": "flag_belize", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฆ": { - "name": "flag Canada", - "slug": "flag_canada", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡จ": { - "name": "flag Cocos (Keeling) Islands", - "slug": "flag_cocos_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฉ": { - "name": "flag Congo - Kinshasa", - "slug": "flag_congo_kinshasa", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ซ": { - "name": "flag Central African Republic", - "slug": "flag_central_african_republic", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฌ": { - "name": "flag Congo - Brazzaville", - "slug": "flag_congo_brazzaville", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ญ": { - "name": "flag Switzerland", - "slug": "flag_switzerland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฎ": { - "name": "flag Cรดte dโ€™Ivoire", - "slug": "flag_cote_d_ivoire", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฐ": { - "name": "flag Cook Islands", - "slug": "flag_cook_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฑ": { - "name": "flag Chile", - "slug": "flag_chile", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฒ": { - "name": "flag Cameroon", - "slug": "flag_cameroon", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ณ": { - "name": "flag China", - "slug": "flag_china", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ด": { - "name": "flag Colombia", - "slug": "flag_colombia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ต": { - "name": "flag Clipperton Island", - "slug": "flag_clipperton_island", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ท": { - "name": "flag Costa Rica", - "slug": "flag_costa_rica", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡บ": { - "name": "flag Cuba", - "slug": "flag_cuba", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ป": { - "name": "flag Cape Verde", - "slug": "flag_cape_verde", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ผ": { - "name": "flag Curaรงao", - "slug": "flag_curacao", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฝ": { - "name": "flag Christmas Island", - "slug": "flag_christmas_island", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡พ": { - "name": "flag Cyprus", - "slug": "flag_cyprus", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡จ๐Ÿ‡ฟ": { - "name": "flag Czechia", - "slug": "flag_czechia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ช": { - "name": "flag Germany", - "slug": "flag_germany", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ฌ": { - "name": "flag Diego Garcia", - "slug": "flag_diego_garcia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ฏ": { - "name": "flag Djibouti", - "slug": "flag_djibouti", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ฐ": { - "name": "flag Denmark", - "slug": "flag_denmark", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ฒ": { - "name": "flag Dominica", - "slug": "flag_dominica", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ด": { - "name": "flag Dominican Republic", - "slug": "flag_dominican_republic", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฉ๐Ÿ‡ฟ": { - "name": "flag Algeria", - "slug": "flag_algeria", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ฆ": { - "name": "flag Ceuta & Melilla", - "slug": "flag_ceuta_melilla", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡จ": { - "name": "flag Ecuador", - "slug": "flag_ecuador", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ช": { - "name": "flag Estonia", - "slug": "flag_estonia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ฌ": { - "name": "flag Egypt", - "slug": "flag_egypt", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ญ": { - "name": "flag Western Sahara", - "slug": "flag_western_sahara", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ท": { - "name": "flag Eritrea", - "slug": "flag_eritrea", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡ธ": { - "name": "flag Spain", - "slug": "flag_spain", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡น": { - "name": "flag Ethiopia", - "slug": "flag_ethiopia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ช๐Ÿ‡บ": { - "name": "flag European Union", - "slug": "flag_european_union", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ฎ": { - "name": "flag Finland", - "slug": "flag_finland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ฏ": { - "name": "flag Fiji", - "slug": "flag_fiji", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ฐ": { - "name": "flag Falkland Islands", - "slug": "flag_falkland_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ฒ": { - "name": "flag Micronesia", - "slug": "flag_micronesia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ด": { - "name": "flag Faroe Islands", - "slug": "flag_faroe_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ซ๐Ÿ‡ท": { - "name": "flag France", - "slug": "flag_france", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฆ": { - "name": "flag Gabon", - "slug": "flag_gabon", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ง": { - "name": "flag United Kingdom", - "slug": "flag_united_kingdom", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฉ": { - "name": "flag Grenada", - "slug": "flag_grenada", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ช": { - "name": "flag Georgia", - "slug": "flag_georgia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ซ": { - "name": "flag French Guiana", - "slug": "flag_french_guiana", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฌ": { - "name": "flag Guernsey", - "slug": "flag_guernsey", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ญ": { - "name": "flag Ghana", - "slug": "flag_ghana", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฎ": { - "name": "flag Gibraltar", - "slug": "flag_gibraltar", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฑ": { - "name": "flag Greenland", - "slug": "flag_greenland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ฒ": { - "name": "flag Gambia", - "slug": "flag_gambia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ณ": { - "name": "flag Guinea", - "slug": "flag_guinea", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ต": { - "name": "flag Guadeloupe", - "slug": "flag_guadeloupe", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ถ": { - "name": "flag Equatorial Guinea", - "slug": "flag_equatorial_guinea", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ท": { - "name": "flag Greece", - "slug": "flag_greece", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ธ": { - "name": "flag South Georgia & South Sandwich Islands", - "slug": "flag_south_georgia_south_sandwich_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡น": { - "name": "flag Guatemala", - "slug": "flag_guatemala", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡บ": { - "name": "flag Guam", - "slug": "flag_guam", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡ผ": { - "name": "flag Guinea-Bissau", - "slug": "flag_guinea_bissau", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฌ๐Ÿ‡พ": { - "name": "flag Guyana", - "slug": "flag_guyana", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡ฐ": { - "name": "flag Hong Kong SAR China", - "slug": "flag_hong_kong_sar_china", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡ฒ": { - "name": "flag Heard & McDonald Islands", - "slug": "flag_heard_mcdonald_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡ณ": { - "name": "flag Honduras", - "slug": "flag_honduras", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡ท": { - "name": "flag Croatia", - "slug": "flag_croatia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡น": { - "name": "flag Haiti", - "slug": "flag_haiti", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ญ๐Ÿ‡บ": { - "name": "flag Hungary", - "slug": "flag_hungary", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡จ": { - "name": "flag Canary Islands", - "slug": "flag_canary_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ฉ": { - "name": "flag Indonesia", - "slug": "flag_indonesia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ช": { - "name": "flag Ireland", - "slug": "flag_ireland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ฑ": { - "name": "flag Israel", - "slug": "flag_israel", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ฒ": { - "name": "flag Isle of Man", - "slug": "flag_isle_of_man", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ณ": { - "name": "flag India", - "slug": "flag_india", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ด": { - "name": "flag British Indian Ocean Territory", - "slug": "flag_british_indian_ocean_territory", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ถ": { - "name": "flag Iraq", - "slug": "flag_iraq", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ท": { - "name": "flag Iran", - "slug": "flag_iran", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡ธ": { - "name": "flag Iceland", - "slug": "flag_iceland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฎ๐Ÿ‡น": { - "name": "flag Italy", - "slug": "flag_italy", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฏ๐Ÿ‡ช": { - "name": "flag Jersey", - "slug": "flag_jersey", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฏ๐Ÿ‡ฒ": { - "name": "flag Jamaica", - "slug": "flag_jamaica", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฏ๐Ÿ‡ด": { - "name": "flag Jordan", - "slug": "flag_jordan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฏ๐Ÿ‡ต": { - "name": "flag Japan", - "slug": "flag_japan", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ช": { - "name": "flag Kenya", - "slug": "flag_kenya", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ฌ": { - "name": "flag Kyrgyzstan", - "slug": "flag_kyrgyzstan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ญ": { - "name": "flag Cambodia", - "slug": "flag_cambodia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ฎ": { - "name": "flag Kiribati", - "slug": "flag_kiribati", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ฒ": { - "name": "flag Comoros", - "slug": "flag_comoros", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ณ": { - "name": "flag St. Kitts & Nevis", - "slug": "flag_st_kitts_nevis", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ต": { - "name": "flag North Korea", - "slug": "flag_north_korea", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ท": { - "name": "flag South Korea", - "slug": "flag_south_korea", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ผ": { - "name": "flag Kuwait", - "slug": "flag_kuwait", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡พ": { - "name": "flag Cayman Islands", - "slug": "flag_cayman_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฐ๐Ÿ‡ฟ": { - "name": "flag Kazakhstan", - "slug": "flag_kazakhstan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ฆ": { - "name": "flag Laos", - "slug": "flag_laos", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ง": { - "name": "flag Lebanon", - "slug": "flag_lebanon", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡จ": { - "name": "flag St. Lucia", - "slug": "flag_st_lucia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ฎ": { - "name": "flag Liechtenstein", - "slug": "flag_liechtenstein", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ฐ": { - "name": "flag Sri Lanka", - "slug": "flag_sri_lanka", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ท": { - "name": "flag Liberia", - "slug": "flag_liberia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ธ": { - "name": "flag Lesotho", - "slug": "flag_lesotho", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡น": { - "name": "flag Lithuania", - "slug": "flag_lithuania", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡บ": { - "name": "flag Luxembourg", - "slug": "flag_luxembourg", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡ป": { - "name": "flag Latvia", - "slug": "flag_latvia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฑ๐Ÿ‡พ": { - "name": "flag Libya", - "slug": "flag_libya", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฆ": { - "name": "flag Morocco", - "slug": "flag_morocco", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡จ": { - "name": "flag Monaco", - "slug": "flag_monaco", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฉ": { - "name": "flag Moldova", - "slug": "flag_moldova", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ช": { - "name": "flag Montenegro", - "slug": "flag_montenegro", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ซ": { - "name": "flag St. Martin", - "slug": "flag_st_martin", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฌ": { - "name": "flag Madagascar", - "slug": "flag_madagascar", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ญ": { - "name": "flag Marshall Islands", - "slug": "flag_marshall_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฐ": { - "name": "flag North Macedonia", - "slug": "flag_north_macedonia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฑ": { - "name": "flag Mali", - "slug": "flag_mali", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฒ": { - "name": "flag Myanmar (Burma)", - "slug": "flag_myanmar", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ณ": { - "name": "flag Mongolia", - "slug": "flag_mongolia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ด": { - "name": "flag Macao SAR China", - "slug": "flag_macao_sar_china", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ต": { - "name": "flag Northern Mariana Islands", - "slug": "flag_northern_mariana_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ถ": { - "name": "flag Martinique", - "slug": "flag_martinique", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ท": { - "name": "flag Mauritania", - "slug": "flag_mauritania", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ธ": { - "name": "flag Montserrat", - "slug": "flag_montserrat", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡น": { - "name": "flag Malta", - "slug": "flag_malta", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡บ": { - "name": "flag Mauritius", - "slug": "flag_mauritius", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ป": { - "name": "flag Maldives", - "slug": "flag_maldives", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ผ": { - "name": "flag Malawi", - "slug": "flag_malawi", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฝ": { - "name": "flag Mexico", - "slug": "flag_mexico", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡พ": { - "name": "flag Malaysia", - "slug": "flag_malaysia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฒ๐Ÿ‡ฟ": { - "name": "flag Mozambique", - "slug": "flag_mozambique", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ฆ": { - "name": "flag Namibia", - "slug": "flag_namibia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡จ": { - "name": "flag New Caledonia", - "slug": "flag_new_caledonia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ช": { - "name": "flag Niger", - "slug": "flag_niger", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ซ": { - "name": "flag Norfolk Island", - "slug": "flag_norfolk_island", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ฌ": { - "name": "flag Nigeria", - "slug": "flag_nigeria", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ฎ": { - "name": "flag Nicaragua", - "slug": "flag_nicaragua", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ฑ": { - "name": "flag Netherlands", - "slug": "flag_netherlands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ด": { - "name": "flag Norway", - "slug": "flag_norway", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ต": { - "name": "flag Nepal", - "slug": "flag_nepal", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ท": { - "name": "flag Nauru", - "slug": "flag_nauru", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡บ": { - "name": "flag Niue", - "slug": "flag_niue", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ณ๐Ÿ‡ฟ": { - "name": "flag New Zealand", - "slug": "flag_new_zealand", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ด๐Ÿ‡ฒ": { - "name": "flag Oman", - "slug": "flag_oman", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ฆ": { - "name": "flag Panama", - "slug": "flag_panama", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ช": { - "name": "flag Peru", - "slug": "flag_peru", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ซ": { - "name": "flag French Polynesia", - "slug": "flag_french_polynesia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ฌ": { - "name": "flag Papua New Guinea", - "slug": "flag_papua_new_guinea", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ญ": { - "name": "flag Philippines", - "slug": "flag_philippines", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ฐ": { - "name": "flag Pakistan", - "slug": "flag_pakistan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ฑ": { - "name": "flag Poland", - "slug": "flag_poland", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ฒ": { - "name": "flag St. Pierre & Miquelon", - "slug": "flag_st_pierre_miquelon", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ณ": { - "name": "flag Pitcairn Islands", - "slug": "flag_pitcairn_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ท": { - "name": "flag Puerto Rico", - "slug": "flag_puerto_rico", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ธ": { - "name": "flag Palestinian Territories", - "slug": "flag_palestinian_territories", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡น": { - "name": "flag Portugal", - "slug": "flag_portugal", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡ผ": { - "name": "flag Palau", - "slug": "flag_palau", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ต๐Ÿ‡พ": { - "name": "flag Paraguay", - "slug": "flag_paraguay", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ถ๐Ÿ‡ฆ": { - "name": "flag Qatar", - "slug": "flag_qatar", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ท๐Ÿ‡ช": { - "name": "flag Rรฉunion", - "slug": "flag_reunion", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ท๐Ÿ‡ด": { - "name": "flag Romania", - "slug": "flag_romania", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ท๐Ÿ‡ธ": { - "name": "flag Serbia", - "slug": "flag_serbia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ท๐Ÿ‡บ": { - "name": "flag Russia", - "slug": "flag_russia", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡ท๐Ÿ‡ผ": { - "name": "flag Rwanda", - "slug": "flag_rwanda", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฆ": { - "name": "flag Saudi Arabia", - "slug": "flag_saudi_arabia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ง": { - "name": "flag Solomon Islands", - "slug": "flag_solomon_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡จ": { - "name": "flag Seychelles", - "slug": "flag_seychelles", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฉ": { - "name": "flag Sudan", - "slug": "flag_sudan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ช": { - "name": "flag Sweden", - "slug": "flag_sweden", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฌ": { - "name": "flag Singapore", - "slug": "flag_singapore", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ญ": { - "name": "flag St. Helena", - "slug": "flag_st_helena", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฎ": { - "name": "flag Slovenia", - "slug": "flag_slovenia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฏ": { - "name": "flag Svalbard & Jan Mayen", - "slug": "flag_svalbard_jan_mayen", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฐ": { - "name": "flag Slovakia", - "slug": "flag_slovakia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฑ": { - "name": "flag Sierra Leone", - "slug": "flag_sierra_leone", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฒ": { - "name": "flag San Marino", - "slug": "flag_san_marino", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ณ": { - "name": "flag Senegal", - "slug": "flag_senegal", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ด": { - "name": "flag Somalia", - "slug": "flag_somalia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ท": { - "name": "flag Suriname", - "slug": "flag_suriname", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ธ": { - "name": "flag South Sudan", - "slug": "flag_south_sudan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡น": { - "name": "flag Sรฃo Tomรฉ & Prรญncipe", - "slug": "flag_sao_tome_principe", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ป": { - "name": "flag El Salvador", - "slug": "flag_el_salvador", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฝ": { - "name": "flag Sint Maarten", - "slug": "flag_sint_maarten", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡พ": { - "name": "flag Syria", - "slug": "flag_syria", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ธ๐Ÿ‡ฟ": { - "name": "flag Eswatini", - "slug": "flag_eswatini", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฆ": { - "name": "flag Tristan da Cunha", - "slug": "flag_tristan_da_cunha", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡จ": { - "name": "flag Turks & Caicos Islands", - "slug": "flag_turks_caicos_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฉ": { - "name": "flag Chad", - "slug": "flag_chad", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ซ": { - "name": "flag French Southern Territories", - "slug": "flag_french_southern_territories", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฌ": { - "name": "flag Togo", - "slug": "flag_togo", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ญ": { - "name": "flag Thailand", - "slug": "flag_thailand", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฏ": { - "name": "flag Tajikistan", - "slug": "flag_tajikistan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฐ": { - "name": "flag Tokelau", - "slug": "flag_tokelau", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฑ": { - "name": "flag Timor-Leste", - "slug": "flag_timor_leste", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฒ": { - "name": "flag Turkmenistan", - "slug": "flag_turkmenistan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ณ": { - "name": "flag Tunisia", - "slug": "flag_tunisia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ด": { - "name": "flag Tonga", - "slug": "flag_tonga", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ท": { - "name": "flag Turkey", - "slug": "flag_turkey", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡น": { - "name": "flag Trinidad & Tobago", - "slug": "flag_trinidad_tobago", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ป": { - "name": "flag Tuvalu", - "slug": "flag_tuvalu", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ผ": { - "name": "flag Taiwan", - "slug": "flag_taiwan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡น๐Ÿ‡ฟ": { - "name": "flag Tanzania", - "slug": "flag_tanzania", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ฆ": { - "name": "flag Ukraine", - "slug": "flag_ukraine", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ฌ": { - "name": "flag Uganda", - "slug": "flag_uganda", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ฒ": { - "name": "flag U.S. Outlying Islands", - "slug": "flag_u_s_outlying_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ณ": { - "name": "flag United Nations", - "slug": "flag_united_nations", - "group": "Flags", - "emoji_version": "4.0", - "unicode_version": "4.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ธ": { - "name": "flag United States", - "slug": "flag_united_states", - "group": "Flags", - "emoji_version": "0.6", - "unicode_version": "0.6", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡พ": { - "name": "flag Uruguay", - "slug": "flag_uruguay", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡บ๐Ÿ‡ฟ": { - "name": "flag Uzbekistan", - "slug": "flag_uzbekistan", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡ฆ": { - "name": "flag Vatican City", - "slug": "flag_vatican_city", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡จ": { - "name": "flag St. Vincent & Grenadines", - "slug": "flag_st_vincent_grenadines", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡ช": { - "name": "flag Venezuela", - "slug": "flag_venezuela", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡ฌ": { - "name": "flag British Virgin Islands", - "slug": "flag_british_virgin_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡ฎ": { - "name": "flag U.S. Virgin Islands", - "slug": "flag_u_s_virgin_islands", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡ณ": { - "name": "flag Vietnam", - "slug": "flag_vietnam", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ป๐Ÿ‡บ": { - "name": "flag Vanuatu", - "slug": "flag_vanuatu", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ผ๐Ÿ‡ซ": { - "name": "flag Wallis & Futuna", - "slug": "flag_wallis_futuna", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ผ๐Ÿ‡ธ": { - "name": "flag Samoa", - "slug": "flag_samoa", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฝ๐Ÿ‡ฐ": { - "name": "flag Kosovo", - "slug": "flag_kosovo", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡พ๐Ÿ‡ช": { - "name": "flag Yemen", - "slug": "flag_yemen", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡พ๐Ÿ‡น": { - "name": "flag Mayotte", - "slug": "flag_mayotte", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฟ๐Ÿ‡ฆ": { - "name": "flag South Africa", - "slug": "flag_south_africa", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฟ๐Ÿ‡ฒ": { - "name": "flag Zambia", - "slug": "flag_zambia", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿ‡ฟ๐Ÿ‡ผ": { - "name": "flag Zimbabwe", - "slug": "flag_zimbabwe", - "group": "Flags", - "emoji_version": "2.0", - "unicode_version": "2.0", - "skin_tone_support": false - }, - "๐Ÿด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ": { - "name": "flag England", - "slug": "flag_england", - "group": "Flags", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ": { - "name": "flag Scotland", - "slug": "flag_scotland", - "group": "Flags", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - }, - "๐Ÿด๓ ง๓ ข๓ ท๓ ฌ๓ ณ๓ ฟ": { - "name": "flag Wales", - "slug": "flag_wales", - "group": "Flags", - "emoji_version": "5.0", - "unicode_version": "5.0", - "skin_tone_support": false - } -} diff --git a/packages/app-admin/src/components/IconPicker/config/fa6-regular.json b/packages/app-admin/src/components/IconPicker/config/fa6-regular.json deleted file mode 100644 index a157d247c40..00000000000 --- a/packages/app-admin/src/components/IconPicker/config/fa6-regular.json +++ /dev/null @@ -1,879 +0,0 @@ -{ - "prefix": "fa6-regular", - "info": { - "name": "Font Awesome Regular", - "total": 163, - "version": "6.4.2", - "author": { - "name": "Dave Gandy", - "url": "https://github.com/FortAwesome/Font-Awesome" - }, - "license": { - "title": "CC BY 4.0", - "spdx": "CC-BY-4.0", - "url": "https://creativecommons.org/licenses/by/4.0/" - }, - "samples": ["message", "clock", "folder"], - "height": 32, - "displayHeight": 16, - "category": "General", - "palette": false - }, - "lastModified": 1691127010, - "icons": { - "address-book": { - "body": "" - }, - "address-card": { - "body": "", - "width": 576 - }, - "bell": { - "body": "", - "width": 448 - }, - "bell-slash": { - "body": "", - "width": 640 - }, - "bookmark": { - "body": "", - "width": 384 - }, - "building": { - "body": "", - "width": 384 - }, - "calendar": { - "body": "", - "width": 448 - }, - "calendar-check": { - "body": "", - "width": 448 - }, - "calendar-days": { - "body": "", - "width": 448 - }, - "calendar-minus": { - "body": "" - }, - "calendar-plus": { - "body": "" - }, - "calendar-xmark": { - "body": "" - }, - "chart-bar": { - "body": "" - }, - "chess-bishop": { - "body": "", - "width": 320 - }, - "chess-king": { - "body": "", - "width": 448 - }, - "chess-knight": { - "body": "", - "width": 448 - }, - "chess-pawn": { - "body": "", - "width": 320 - }, - "chess-queen": { - "body": "" - }, - "chess-rook": { - "body": "", - "width": 448 - }, - "circle": { - "body": "" - }, - "circle-check": { - "body": "" - }, - "circle-dot": { - "body": "" - }, - "circle-down": { - "body": "" - }, - "circle-left": { - "body": "" - }, - "circle-pause": { - "body": "" - }, - "circle-play": { - "body": "" - }, - "circle-question": { - "body": "" - }, - "circle-right": { - "body": "" - }, - "circle-stop": { - "body": "" - }, - "circle-up": { - "body": "" - }, - "circle-user": { - "body": "" - }, - "circle-xmark": { - "body": "" - }, - "clipboard": { - "body": "", - "width": 384 - }, - "clock": { - "body": "" - }, - "clone": { - "body": "" - }, - "closed-captioning": { - "body": "", - "width": 576 - }, - "comment": { - "body": "" - }, - "comment-dots": { - "body": "" - }, - "comments": { - "body": "", - "width": 640 - }, - "compass": { - "body": "" - }, - "copy": { - "body": "", - "width": 448 - }, - "copyright": { - "body": "" - }, - "credit-card": { - "body": "", - "width": 576 - }, - "envelope": { - "body": "" - }, - "envelope-open": { - "body": "" - }, - "eye": { - "body": "", - "width": 576 - }, - "eye-slash": { - "body": "", - "width": 640 - }, - "face-angry": { - "body": "" - }, - "face-dizzy": { - "body": "" - }, - "face-flushed": { - "body": "" - }, - "face-frown": { - "body": "" - }, - "face-frown-open": { - "body": "" - }, - "face-grimace": { - "body": "" - }, - "face-grin": { - "body": "" - }, - "face-grin-beam": { - "body": "" - }, - "face-grin-beam-sweat": { - "body": "" - }, - "face-grin-hearts": { - "body": "" - }, - "face-grin-squint": { - "body": "" - }, - "face-grin-squint-tears": { - "body": "" - }, - "face-grin-stars": { - "body": "" - }, - "face-grin-tears": { - "body": "", - "width": 640 - }, - "face-grin-tongue": { - "body": "" - }, - "face-grin-tongue-squint": { - "body": "" - }, - "face-grin-tongue-wink": { - "body": "" - }, - "face-grin-wide": { - "body": "" - }, - "face-grin-wink": { - "body": "" - }, - "face-kiss": { - "body": "" - }, - "face-kiss-beam": { - "body": "" - }, - "face-kiss-wink-heart": { - "body": "" - }, - "face-laugh": { - "body": "" - }, - "face-laugh-beam": { - "body": "" - }, - "face-laugh-squint": { - "body": "" - }, - "face-laugh-wink": { - "body": "" - }, - "face-meh": { - "body": "" - }, - "face-meh-blank": { - "body": "" - }, - "face-rolling-eyes": { - "body": "" - }, - "face-sad-cry": { - "body": "" - }, - "face-sad-tear": { - "body": "" - }, - "face-smile": { - "body": "" - }, - "face-smile-beam": { - "body": "" - }, - "face-smile-wink": { - "body": "" - }, - "face-surprise": { - "body": "" - }, - "face-tired": { - "body": "" - }, - "file": { - "body": "", - "width": 384 - }, - "file-audio": { - "body": "", - "width": 384 - }, - "file-code": { - "body": "", - "width": 384 - }, - "file-excel": { - "body": "", - "width": 384 - }, - "file-image": { - "body": "", - "width": 384 - }, - "file-lines": { - "body": "", - "width": 384 - }, - "file-pdf": { - "body": "" - }, - "file-powerpoint": { - "body": "", - "width": 384 - }, - "file-video": { - "body": "", - "width": 384 - }, - "file-word": { - "body": "", - "width": 384 - }, - "file-zipper": { - "body": "", - "width": 384 - }, - "flag": { - "body": "", - "width": 448 - }, - "floppy-disk": { - "body": "", - "width": 448 - }, - "folder": { - "body": "" - }, - "folder-closed": { - "body": "" - }, - "folder-open": { - "body": "", - "width": 576 - }, - "font-awesome": { - "body": "", - "width": 448 - }, - "futbol": { - "body": "" - }, - "gem": { - "body": "" - }, - "hand": { - "body": "" - }, - "hand-back-fist": { - "body": "", - "width": 448 - }, - "hand-lizard": { - "body": "" - }, - "hand-peace": { - "body": "" - }, - "hand-point-down": { - "body": "", - "width": 384 - }, - "hand-point-left": { - "body": "" - }, - "hand-point-right": { - "body": "" - }, - "hand-point-up": { - "body": "", - "width": 384 - }, - "hand-pointer": { - "body": "", - "width": 448 - }, - "hand-scissors": { - "body": "" - }, - "hand-spock": { - "body": "", - "width": 576 - }, - "handshake": { - "body": "", - "width": 640 - }, - "hard-drive": { - "body": "" - }, - "heart": { - "body": "" - }, - "hospital": { - "body": "", - "width": 640 - }, - "hourglass": { - "body": "", - "width": 384 - }, - "hourglass-half": { - "body": "", - "width": 384 - }, - "id-badge": { - "body": "", - "width": 384 - }, - "id-card": { - "body": "", - "width": 576 - }, - "image": { - "body": "" - }, - "images": { - "body": "", - "width": 576 - }, - "keyboard": { - "body": "", - "width": 576 - }, - "lemon": { - "body": "", - "width": 448 - }, - "life-ring": { - "body": "" - }, - "lightbulb": { - "body": "", - "width": 384 - }, - "map": { - "body": "", - "width": 576 - }, - "message": { - "body": "" - }, - "money-bill-1": { - "body": "", - "width": 576 - }, - "moon": { - "body": "", - "width": 384 - }, - "newspaper": { - "body": "" - }, - "notdef": { - "body": "", - "width": 384, - "hidden": true - }, - "note-sticky": { - "body": "", - "width": 448 - }, - "object-group": { - "body": "", - "width": 576 - }, - "object-ungroup": { - "body": "", - "width": 640 - }, - "paper-plane": { - "body": "" - }, - "paste": { - "body": "" - }, - "pen-to-square": { - "body": "" - }, - "rectangle-list": { - "body": "", - "width": 576 - }, - "rectangle-xmark": { - "body": "" - }, - "registered": { - "body": "" - }, - "share-from-square": { - "body": "", - "width": 576 - }, - "snowflake": { - "body": "", - "width": 448 - }, - "square": { - "body": "", - "width": 448 - }, - "square-caret-down": { - "body": "", - "width": 448 - }, - "square-caret-left": { - "body": "", - "width": 448 - }, - "square-caret-right": { - "body": "", - "width": 448 - }, - "square-caret-up": { - "body": "", - "width": 448 - }, - "square-check": { - "body": "", - "width": 448 - }, - "square-full": { - "body": "" - }, - "square-minus": { - "body": "", - "width": 448 - }, - "square-plus": { - "body": "", - "width": 448 - }, - "star": { - "body": "", - "width": 576 - }, - "star-half": { - "body": "", - "width": 576 - }, - "star-half-stroke": { - "body": "", - "width": 640 - }, - "sun": { - "body": "" - }, - "thumbs-down": { - "body": "" - }, - "thumbs-up": { - "body": "" - }, - "trash-can": { - "body": "", - "width": 448 - }, - "user": { - "body": "", - "width": 448 - }, - "window-maximize": { - "body": "" - }, - "window-minimize": { - "body": "" - }, - "window-restore": { - "body": "" - } - }, - "categories": { - "Accessibility": ["closed-captioning"], - "Alert": ["bell", "bell-slash"], - "Arrows": [ - "hand-point-down", - "hand-point-left", - "hand-point-right", - "hand-point-up", - "hand-pointer" - ], - "Audio & Video": ["circle", "closed-captioning", "file-audio", "file-video"], - "Buildings": ["building", "hospital"], - "Business": [ - "address-book", - "address-card", - "building", - "calendar", - "chart-bar", - "clipboard", - "compass", - "copy", - "copyright", - "envelope", - "envelope-open", - "file", - "folder", - "folder-open", - "paste", - "registered" - ], - "Camping": ["compass", "map"], - "Charity": ["handshake", "heart"], - "Chat": ["comment", "comment-dots", "comments"], - "Chess": [ - "chess-bishop", - "chess-king", - "chess-knight", - "chess-pawn", - "chess-queen", - "chess-rook", - "square-full" - ], - "Code": [ - "file", - "file-code", - "folder", - "folder-open", - "keyboard", - "window-maximize", - "window-minimize", - "window-restore" - ], - "Communication": [ - "address-book", - "address-card", - "bell", - "bell-slash", - "comment", - "comments", - "envelope", - "envelope-open", - "paper-plane" - ], - "Computers": ["keyboard"], - "Date & Time": [ - "bell", - "bell-slash", - "calendar", - "calendar-check", - "calendar-minus", - "calendar-plus", - "clock", - "hourglass", - "hourglass-half" - ], - "Design": ["clone", "copy", "eye", "eye-slash", "object-group", "object-ungroup", "paste"], - "Editors": ["clipboard", "clone", "copy", "file", "paper-plane", "paste"], - "Education": ["bell", "bell-slash"], - "Energy": ["lightbulb", "sun"], - "Files": [ - "clone", - "copy", - "file", - "file-audio", - "file-code", - "file-excel", - "file-image", - "file-pdf", - "file-powerpoint", - "file-video", - "file-word", - "folder", - "folder-open", - "paste" - ], - "Finance": ["credit-card"], - "Fitness": ["heart"], - "Food": ["lemon"], - "Fruits & Vegetables": ["lemon"], - "Games": [ - "chess-bishop", - "chess-king", - "chess-knight", - "chess-pawn", - "chess-queen", - "chess-rook", - "heart" - ], - "Hands": [ - "hand-lizard", - "hand-peace", - "hand-point-down", - "hand-point-left", - "hand-point-right", - "hand-point-up", - "hand-pointer", - "hand-scissors", - "hand-spock", - "handshake", - "thumbs-down", - "thumbs-up" - ], - "Health": ["heart", "hospital"], - "Hotel": ["snowflake"], - "Household": ["bell", "lightbulb", "snowflake"], - "Images": ["clone", "eye", "eye-slash", "file-image", "id-badge", "id-card", "image", "images"], - "Interfaces": [ - "bell", - "bell-slash", - "calendar", - "calendar-check", - "calendar-minus", - "calendar-plus", - "circle", - "clipboard", - "clone", - "copy", - "envelope", - "envelope-open", - "eye", - "eye-slash", - "file", - "flag", - "folder", - "folder-open", - "heart", - "paste", - "star", - "star-half", - "thumbs-down", - "thumbs-up", - "user" - ], - "Maps": [ - "bell", - "bell-slash", - "bookmark", - "building", - "eye", - "eye-slash", - "flag", - "heart", - "hospital", - "image", - "images", - "lemon", - "life-ring", - "lightbulb", - "map", - "newspaper" - ], - "Maritime": ["compass"], - "Marketing": ["lightbulb"], - "Medical": ["heart", "hospital"], - "Music": ["file-audio"], - "Objects": [ - "bell", - "bookmark", - "building", - "calendar", - "clipboard", - "compass", - "copy", - "envelope", - "envelope-open", - "eye", - "file", - "flag", - "futbol", - "gem", - "heart", - "hospital", - "hourglass", - "image", - "images", - "keyboard", - "lemon", - "life-ring", - "lightbulb", - "map", - "moon", - "newspaper", - "paper-plane", - "paste", - "snowflake", - "star", - "sun" - ], - "Payments & Shopping": [ - "bell", - "bookmark", - "credit-card", - "gem", - "handshake", - "heart", - "star", - "thumbs-down", - "thumbs-up" - ], - "Political": ["handshake"], - "Science Fiction": ["hand-spock", "moon"], - "Security": ["eye", "eye-slash", "id-badge", "id-card"], - "Shapes": [ - "bookmark", - "calendar", - "circle", - "comment", - "file", - "folder", - "heart", - "square", - "star" - ], - "Social": [ - "bell", - "comment", - "envelope", - "heart", - "image", - "images", - "star", - "thumbs-down", - "thumbs-up", - "user" - ], - "Spinners": ["compass", "life-ring", "snowflake", "sun"], - "Sports": ["futbol"], - "Status": [ - "bell", - "bell-slash", - "calendar", - "calendar-check", - "calendar-minus", - "calendar-plus", - "comment", - "compass", - "eye", - "eye-slash", - "file", - "folder", - "folder-open", - "lightbulb", - "star", - "star-half", - "thumbs-down", - "thumbs-up", - "user" - ], - "Summer": ["lemon", "sun"], - "Toggle": ["circle", "star", "star-half"], - "Travel": ["map"], - "Users & People": ["address-book", "address-card", "id-badge", "id-card", "user"], - "Vehicles": ["paper-plane"], - "Weather": ["moon", "snowflake", "sun"], - "Writing": [ - "bookmark", - "envelope", - "envelope-open", - "file", - "folder", - "folder-open", - "keyboard", - "newspaper", - "paper-plane" - ] - }, - "width": 512, - "height": 512 -} diff --git a/packages/app-admin/src/components/IconPicker/config/fa6-solid.json b/packages/app-admin/src/components/IconPicker/config/fa6-solid.json deleted file mode 100644 index e3bc2c1c361..00000000000 --- a/packages/app-admin/src/components/IconPicker/config/fa6-solid.json +++ /dev/null @@ -1,6779 +0,0 @@ -{ - "prefix": "fa6-solid", - "info": { - "name": "Font Awesome Solid", - "total": 1390, - "version": "6.4.2", - "author": { - "name": "Dave Gandy", - "url": "https://github.com/FortAwesome/Font-Awesome" - }, - "license": { - "title": "CC BY 4.0", - "spdx": "CC-BY-4.0", - "url": "https://creativecommons.org/licenses/by/4.0/" - }, - "samples": ["location-pin", "gem", "folder"], - "height": 32, - "displayHeight": 16, - "category": "General", - "palette": false - }, - "lastModified": 1691127033, - "icons": { - "0": { - "body": "", - "width": 320 - }, - "1": { - "body": "", - "width": 256 - }, - "2": { - "body": "", - "width": 320 - }, - "3": { - "body": "", - "width": 320 - }, - "4": { - "body": "", - "width": 384 - }, - "5": { - "body": "", - "width": 320 - }, - "6": { - "body": "", - "width": 320 - }, - "7": { - "body": "", - "width": 320 - }, - "8": { - "body": "", - "width": 320 - }, - "9": { - "body": "", - "width": 320 - }, - "a": { - "body": "", - "width": 384 - }, - "address-book": { - "body": "" - }, - "address-card": { - "body": "", - "width": 576 - }, - "align-center": { - "body": "", - "width": 448 - }, - "align-justify": { - "body": "", - "width": 448 - }, - "align-left": { - "body": "", - "width": 448 - }, - "align-right": { - "body": "", - "width": 448 - }, - "anchor": { - "body": "", - "width": 576 - }, - "anchor-circle-check": { - "body": "", - "width": 640 - }, - "anchor-circle-exclamation": { - "body": "", - "width": 640 - }, - "anchor-circle-xmark": { - "body": "", - "width": 640 - }, - "anchor-lock": { - "body": "", - "width": 640 - }, - "angle-down": { - "body": "", - "width": 448 - }, - "angle-left": { - "body": "", - "width": 320 - }, - "angle-right": { - "body": "", - "width": 320 - }, - "angle-up": { - "body": "", - "width": 448 - }, - "angles-down": { - "body": "", - "width": 448 - }, - "angles-left": { - "body": "" - }, - "angles-right": { - "body": "" - }, - "angles-up": { - "body": "", - "width": 448 - }, - "ankh": { - "body": "", - "width": 320 - }, - "apple-whole": { - "body": "", - "width": 448 - }, - "archway": { - "body": "" - }, - "arrow-down": { - "body": "", - "width": 384 - }, - "arrow-down-1-9": { - "body": "", - "width": 576 - }, - "arrow-down-9-1": { - "body": "", - "width": 576 - }, - "arrow-down-a-z": { - "body": "", - "width": 576 - }, - "arrow-down-long": { - "body": "", - "width": 384 - }, - "arrow-down-short-wide": { - "body": "", - "width": 576 - }, - "arrow-down-up-across-line": { - "body": "", - "width": 576 - }, - "arrow-down-up-lock": { - "body": "", - "width": 640 - }, - "arrow-down-wide-short": { - "body": "", - "width": 576 - }, - "arrow-down-z-a": { - "body": "", - "width": 576 - }, - "arrow-left": { - "body": "", - "width": 448 - }, - "arrow-left-long": { - "body": "" - }, - "arrow-pointer": { - "body": "", - "width": 320 - }, - "arrow-right": { - "body": "", - "width": 448 - }, - "arrow-right-arrow-left": { - "body": "", - "width": 448 - }, - "arrow-right-from-bracket": { - "body": "" - }, - "arrow-right-long": { - "body": "" - }, - "arrow-right-to-bracket": { - "body": "" - }, - "arrow-right-to-city": { - "body": "", - "width": 640 - }, - "arrow-rotate-left": { - "body": "" - }, - "arrow-rotate-right": { - "body": "" - }, - "arrow-trend-down": { - "body": "", - "width": 576 - }, - "arrow-trend-up": { - "body": "", - "width": 576 - }, - "arrow-turn-down": { - "body": "", - "width": 384 - }, - "arrow-turn-up": { - "body": "", - "width": 384 - }, - "arrow-up": { - "body": "", - "width": 384 - }, - "arrow-up-1-9": { - "body": "", - "width": 576 - }, - "arrow-up-9-1": { - "body": "", - "width": 576 - }, - "arrow-up-a-z": { - "body": "", - "width": 576 - }, - "arrow-up-from-bracket": { - "body": "", - "width": 448 - }, - "arrow-up-from-ground-water": { - "body": "", - "width": 576 - }, - "arrow-up-from-water-pump": { - "body": "", - "width": 576 - }, - "arrow-up-long": { - "body": "", - "width": 384 - }, - "arrow-up-right-dots": { - "body": "", - "width": 576 - }, - "arrow-up-right-from-square": { - "body": "" - }, - "arrow-up-short-wide": { - "body": "", - "width": 576 - }, - "arrow-up-wide-short": { - "body": "", - "width": 576 - }, - "arrow-up-z-a": { - "body": "", - "width": 576 - }, - "arrows-down-to-line": { - "body": "", - "width": 576 - }, - "arrows-down-to-people": { - "body": "", - "width": 640 - }, - "arrows-left-right": { - "body": "" - }, - "arrows-left-right-to-line": { - "body": "", - "width": 640 - }, - "arrows-rotate": { - "body": "" - }, - "arrows-spin": { - "body": "" - }, - "arrows-split-up-and-left": { - "body": "" - }, - "arrows-to-circle": { - "body": "", - "width": 640 - }, - "arrows-to-dot": { - "body": "" - }, - "arrows-to-eye": { - "body": "", - "width": 640 - }, - "arrows-turn-right": { - "body": "", - "width": 448 - }, - "arrows-turn-to-dots": { - "body": "" - }, - "arrows-up-down": { - "body": "", - "width": 320 - }, - "arrows-up-down-left-right": { - "body": "" - }, - "arrows-up-to-line": { - "body": "", - "width": 576 - }, - "asterisk": { - "body": "", - "width": 384 - }, - "at": { - "body": "" - }, - "atom": { - "body": "" - }, - "audio-description": { - "body": "", - "width": 576 - }, - "austral-sign": { - "body": "", - "width": 448 - }, - "award": { - "body": "", - "width": 384 - }, - "b": { - "body": "", - "width": 320 - }, - "baby": { - "body": "", - "width": 448 - }, - "baby-carriage": { - "body": "" - }, - "backward": { - "body": "" - }, - "backward-fast": { - "body": "" - }, - "backward-step": { - "body": "", - "width": 320 - }, - "bacon": { - "body": "", - "width": 576 - }, - "bacteria": { - "body": "", - "width": 640 - }, - "bacterium": { - "body": "" - }, - "bag-shopping": { - "body": "", - "width": 448 - }, - "bahai": { - "body": "", - "width": 576 - }, - "baht-sign": { - "body": "", - "width": 320 - }, - "ban": { - "body": "" - }, - "ban-smoking": { - "body": "" - }, - "bandage": { - "body": "", - "width": 640 - }, - "bangladeshi-taka-sign": { - "body": "", - "width": 384 - }, - "barcode": { - "body": "" - }, - "bars": { - "body": "", - "width": 448 - }, - "bars-progress": { - "body": "" - }, - "bars-staggered": { - "body": "" - }, - "baseball": { - "body": "" - }, - "baseball-bat-ball": { - "body": "" - }, - "basket-shopping": { - "body": "", - "width": 576 - }, - "basketball": { - "body": "" - }, - "bath": { - "body": "" - }, - "battery-empty": { - "body": "", - "width": 576 - }, - "battery-full": { - "body": "", - "width": 576 - }, - "battery-half": { - "body": "", - "width": 576 - }, - "battery-quarter": { - "body": "", - "width": 576 - }, - "battery-three-quarters": { - "body": "", - "width": 576 - }, - "bed": { - "body": "", - "width": 640 - }, - "bed-pulse": { - "body": "", - "width": 640 - }, - "beer-mug-empty": { - "body": "" - }, - "bell": { - "body": "", - "width": 448 - }, - "bell-concierge": { - "body": "" - }, - "bell-slash": { - "body": "", - "width": 640 - }, - "bezier-curve": { - "body": "", - "width": 640 - }, - "bicycle": { - "body": "", - "width": 640 - }, - "binoculars": { - "body": "" - }, - "biohazard": { - "body": "", - "width": 576 - }, - "bitcoin-sign": { - "body": "", - "width": 320 - }, - "blender": { - "body": "" - }, - "blender-phone": { - "body": "", - "width": 576 - }, - "blog": { - "body": "" - }, - "bold": { - "body": "", - "width": 384 - }, - "bolt": { - "body": "", - "width": 448 - }, - "bolt-lightning": { - "body": "", - "width": 384 - }, - "bomb": { - "body": "" - }, - "bone": { - "body": "", - "width": 576 - }, - "bong": { - "body": "", - "width": 448 - }, - "book": { - "body": "", - "width": 448 - }, - "book-atlas": { - "body": "", - "width": 448 - }, - "book-bible": { - "body": "", - "width": 448 - }, - "book-bookmark": { - "body": "", - "width": 448 - }, - "book-journal-whills": { - "body": "", - "width": 448 - }, - "book-medical": { - "body": "", - "width": 448 - }, - "book-open": { - "body": "", - "width": 576 - }, - "book-open-reader": { - "body": "" - }, - "book-quran": { - "body": "", - "width": 448 - }, - "book-skull": { - "body": "", - "width": 448 - }, - "book-tanakh": { - "body": "", - "width": 448 - }, - "bookmark": { - "body": "", - "width": 384 - }, - "border-all": { - "body": "", - "width": 448 - }, - "border-none": { - "body": "", - "width": 448 - }, - "border-top-left": { - "body": "", - "width": 448 - }, - "bore-hole": { - "body": "" - }, - "bottle-droplet": { - "body": "", - "width": 320 - }, - "bottle-water": { - "body": "", - "width": 320 - }, - "bowl-food": { - "body": "" - }, - "bowl-rice": { - "body": "" - }, - "bowling-ball": { - "body": "" - }, - "box": { - "body": "", - "width": 448 - }, - "box-archive": { - "body": "" - }, - "box-open": { - "body": "", - "width": 640 - }, - "box-tissue": { - "body": "" - }, - "boxes-packing": { - "body": "", - "width": 640 - }, - "boxes-stacked": { - "body": "", - "width": 576 - }, - "braille": { - "body": "", - "width": 640 - }, - "brain": { - "body": "" - }, - "brazilian-real-sign": { - "body": "" - }, - "bread-slice": { - "body": "" - }, - "bridge": { - "body": "", - "width": 576 - }, - "bridge-circle-check": { - "body": "", - "width": 640 - }, - "bridge-circle-exclamation": { - "body": "", - "width": 640 - }, - "bridge-circle-xmark": { - "body": "", - "width": 640 - }, - "bridge-lock": { - "body": "", - "width": 640 - }, - "bridge-water": { - "body": "", - "width": 576 - }, - "briefcase": { - "body": "" - }, - "briefcase-medical": { - "body": "" - }, - "broom": { - "body": "", - "width": 576 - }, - "broom-ball": { - "body": "", - "width": 576 - }, - "brush": { - "body": "", - "width": 384 - }, - "bucket": { - "body": "", - "width": 448 - }, - "bug": { - "body": "" - }, - "bug-slash": { - "body": "", - "width": 640 - }, - "bugs": { - "body": "", - "width": 576 - }, - "building": { - "body": "", - "width": 384 - }, - "building-circle-arrow-right": { - "body": "", - "width": 640 - }, - "building-circle-check": { - "body": "", - "width": 640 - }, - "building-circle-exclamation": { - "body": "", - "width": 640 - }, - "building-circle-xmark": { - "body": "", - "width": 640 - }, - "building-columns": { - "body": "" - }, - "building-flag": { - "body": "", - "width": 640 - }, - "building-lock": { - "body": "", - "width": 576 - }, - "building-ngo": { - "body": "", - "width": 384 - }, - "building-shield": { - "body": "", - "width": 576 - }, - "building-un": { - "body": "", - "width": 384 - }, - "building-user": { - "body": "", - "width": 640 - }, - "building-wheat": { - "body": "", - "width": 640 - }, - "bullhorn": { - "body": "" - }, - "bullseye": { - "body": "" - }, - "burger": { - "body": "" - }, - "burst": { - "body": "" - }, - "bus": { - "body": "", - "width": 576 - }, - "bus-simple": { - "body": "", - "width": 448 - }, - "business-time": { - "body": "", - "width": 640 - }, - "c": { - "body": "", - "width": 384 - }, - "cable-car": { - "body": "" - }, - "cake-candles": { - "body": "", - "width": 448 - }, - "calculator": { - "body": "", - "width": 384 - }, - "calendar": { - "body": "", - "width": 448 - }, - "calendar-check": { - "body": "", - "width": 448 - }, - "calendar-day": { - "body": "", - "width": 448 - }, - "calendar-days": { - "body": "", - "width": 448 - }, - "calendar-minus": { - "body": "" - }, - "calendar-plus": { - "body": "" - }, - "calendar-week": { - "body": "", - "width": 448 - }, - "calendar-xmark": { - "body": "" - }, - "camera": { - "body": "" - }, - "camera-retro": { - "body": "" - }, - "camera-rotate": { - "body": "", - "width": 640 - }, - "campground": { - "body": "", - "width": 576 - }, - "candy-cane": { - "body": "" - }, - "cannabis": { - "body": "" - }, - "capsules": { - "body": "", - "width": 576 - }, - "car": { - "body": "" - }, - "car-battery": { - "body": "" - }, - "car-burst": { - "body": "", - "width": 640 - }, - "car-crash": { - "body": "", - "width": 640, - "hidden": true - }, - "car-on": { - "body": "" - }, - "car-rear": { - "body": "" - }, - "car-side": { - "body": "", - "width": 640 - }, - "car-tunnel": { - "body": "" - }, - "caravan": { - "body": "", - "width": 640 - }, - "caret-down": { - "body": "", - "width": 320 - }, - "caret-left": { - "body": "", - "width": 256 - }, - "caret-right": { - "body": "", - "width": 256 - }, - "caret-up": { - "body": "", - "width": 320 - }, - "carrot": { - "body": "" - }, - "cart-arrow-down": { - "body": "", - "width": 576 - }, - "cart-flatbed": { - "body": "", - "width": 640 - }, - "cart-flatbed-suitcase": { - "body": "", - "width": 640 - }, - "cart-plus": { - "body": "", - "width": 576 - }, - "cart-shopping": { - "body": "", - "width": 576 - }, - "cash-register": { - "body": "" - }, - "cat": { - "body": "", - "width": 576 - }, - "cedi-sign": { - "body": "", - "width": 384 - }, - "cent-sign": { - "body": "", - "width": 384 - }, - "certificate": { - "body": "" - }, - "chair": { - "body": "", - "width": 448 - }, - "chalkboard": { - "body": "", - "width": 576 - }, - "chalkboard-user": { - "body": "", - "width": 640 - }, - "champagne-glasses": { - "body": "", - "width": 640 - }, - "charging-station": { - "body": "", - "width": 576 - }, - "chart-area": { - "body": "" - }, - "chart-bar": { - "body": "" - }, - "chart-column": { - "body": "" - }, - "chart-gantt": { - "body": "" - }, - "chart-line": { - "body": "" - }, - "chart-pie": { - "body": "", - "width": 576 - }, - "chart-simple": { - "body": "", - "width": 448 - }, - "check": { - "body": "", - "width": 448 - }, - "check-double": { - "body": "", - "width": 448 - }, - "check-to-slot": { - "body": "", - "width": 576 - }, - "cheese": { - "body": "" - }, - "chess": { - "body": "" - }, - "chess-bishop": { - "body": "", - "width": 320 - }, - "chess-board": { - "body": "", - "width": 448 - }, - "chess-king": { - "body": "", - "width": 448 - }, - "chess-knight": { - "body": "", - "width": 448 - }, - "chess-pawn": { - "body": "", - "width": 320 - }, - "chess-queen": { - "body": "" - }, - "chess-rook": { - "body": "", - "width": 448 - }, - "chevron-down": { - "body": "" - }, - "chevron-left": { - "body": "", - "width": 320 - }, - "chevron-right": { - "body": "", - "width": 320 - }, - "chevron-up": { - "body": "" - }, - "child": { - "body": "", - "width": 320 - }, - "child-combatant": { - "body": "", - "width": 576 - }, - "child-dress": { - "body": "", - "width": 320 - }, - "child-reaching": { - "body": "", - "width": 384 - }, - "children": { - "body": "", - "width": 640 - }, - "church": { - "body": "", - "width": 640 - }, - "circle": { - "body": "" - }, - "circle-arrow-down": { - "body": "" - }, - "circle-arrow-left": { - "body": "" - }, - "circle-arrow-right": { - "body": "" - }, - "circle-arrow-up": { - "body": "" - }, - "circle-check": { - "body": "" - }, - "circle-chevron-down": { - "body": "" - }, - "circle-chevron-left": { - "body": "" - }, - "circle-chevron-right": { - "body": "" - }, - "circle-chevron-up": { - "body": "" - }, - "circle-dollar-to-slot": { - "body": "" - }, - "circle-dot": { - "body": "" - }, - "circle-down": { - "body": "" - }, - "circle-exclamation": { - "body": "" - }, - "circle-h": { - "body": "" - }, - "circle-half-stroke": { - "body": "" - }, - "circle-info": { - "body": "" - }, - "circle-left": { - "body": "" - }, - "circle-minus": { - "body": "" - }, - "circle-nodes": { - "body": "" - }, - "circle-notch": { - "body": "" - }, - "circle-pause": { - "body": "" - }, - "circle-play": { - "body": "" - }, - "circle-plus": { - "body": "" - }, - "circle-question": { - "body": "" - }, - "circle-radiation": { - "body": "" - }, - "circle-right": { - "body": "" - }, - "circle-stop": { - "body": "" - }, - "circle-up": { - "body": "" - }, - "circle-user": { - "body": "" - }, - "circle-xmark": { - "body": "" - }, - "city": { - "body": "", - "width": 640 - }, - "clapperboard": { - "body": "" - }, - "clipboard": { - "body": "", - "width": 384 - }, - "clipboard-check": { - "body": "", - "width": 384 - }, - "clipboard-list": { - "body": "", - "width": 384 - }, - "clipboard-question": { - "body": "", - "width": 384 - }, - "clipboard-user": { - "body": "", - "width": 384 - }, - "clock": { - "body": "" - }, - "clock-rotate-left": { - "body": "" - }, - "clone": { - "body": "" - }, - "closed-captioning": { - "body": "", - "width": 576 - }, - "cloud": { - "body": "", - "width": 640 - }, - "cloud-arrow-down": { - "body": "", - "width": 640 - }, - "cloud-arrow-up": { - "body": "", - "width": 640 - }, - "cloud-bolt": { - "body": "" - }, - "cloud-meatball": { - "body": "" - }, - "cloud-moon": { - "body": "", - "width": 640 - }, - "cloud-moon-rain": { - "body": "", - "width": 576 - }, - "cloud-rain": { - "body": "" - }, - "cloud-showers-heavy": { - "body": "" - }, - "cloud-showers-water": { - "body": "", - "width": 576 - }, - "cloud-sun": { - "body": "", - "width": 640 - }, - "cloud-sun-rain": { - "body": "", - "width": 640 - }, - "clover": { - "body": "", - "width": 448 - }, - "code": { - "body": "", - "width": 640 - }, - "code-branch": { - "body": "", - "width": 448 - }, - "code-commit": { - "body": "", - "width": 640 - }, - "code-compare": { - "body": "" - }, - "code-fork": { - "body": "", - "width": 448 - }, - "code-merge": { - "body": "", - "width": 448 - }, - "code-pull-request": { - "body": "" - }, - "coins": { - "body": "" - }, - "colon-sign": { - "body": "", - "width": 384 - }, - "comment": { - "body": "" - }, - "comment-dollar": { - "body": "" - }, - "comment-dots": { - "body": "" - }, - "comment-medical": { - "body": "" - }, - "comment-slash": { - "body": "", - "width": 640 - }, - "comment-sms": { - "body": "" - }, - "comments": { - "body": "", - "width": 640 - }, - "comments-dollar": { - "body": "", - "width": 640 - }, - "compact-disc": { - "body": "" - }, - "compass": { - "body": "" - }, - "compass-drafting": { - "body": "" - }, - "compress": { - "body": "", - "width": 448 - }, - "computer": { - "body": "", - "width": 640 - }, - "computer-mouse": { - "body": "", - "width": 384 - }, - "cookie": { - "body": "" - }, - "cookie-bite": { - "body": "" - }, - "copy": { - "body": "", - "width": 448 - }, - "copyright": { - "body": "" - }, - "couch": { - "body": "", - "width": 640 - }, - "cow": { - "body": "", - "width": 640 - }, - "credit-card": { - "body": "", - "width": 576 - }, - "crop": { - "body": "" - }, - "crop-simple": { - "body": "" - }, - "cross": { - "body": "", - "width": 384 - }, - "crosshairs": { - "body": "" - }, - "crow": { - "body": "", - "width": 640 - }, - "crown": { - "body": "", - "width": 576 - }, - "crutch": { - "body": "" - }, - "cruzeiro-sign": { - "body": "", - "width": 448 - }, - "cube": { - "body": "" - }, - "cubes": { - "body": "", - "width": 576 - }, - "cubes-stacked": { - "body": "", - "width": 448 - }, - "d": { - "body": "", - "width": 384 - }, - "database": { - "body": "", - "width": 448 - }, - "delete-left": { - "body": "", - "width": 576 - }, - "democrat": { - "body": "", - "width": 640 - }, - "desktop": { - "body": "", - "width": 576 - }, - "dharmachakra": { - "body": "" - }, - "diagram-next": { - "body": "" - }, - "diagram-predecessor": { - "body": "" - }, - "diagram-project": { - "body": "", - "width": 576 - }, - "diagram-successor": { - "body": "" - }, - "diamond": { - "body": "" - }, - "diamond-turn-right": { - "body": "" - }, - "dice": { - "body": "", - "width": 640 - }, - "dice-d20": { - "body": "" - }, - "dice-d6": { - "body": "", - "width": 448 - }, - "dice-five": { - "body": "", - "width": 448 - }, - "dice-four": { - "body": "", - "width": 448 - }, - "dice-one": { - "body": "", - "width": 448 - }, - "dice-six": { - "body": "", - "width": 448 - }, - "dice-three": { - "body": "", - "width": 448 - }, - "dice-two": { - "body": "", - "width": 448 - }, - "disease": { - "body": "" - }, - "display": { - "body": "", - "width": 576 - }, - "divide": { - "body": "", - "width": 448 - }, - "dna": { - "body": "", - "width": 448 - }, - "dog": { - "body": "", - "width": 576 - }, - "dollar-sign": { - "body": "", - "width": 320 - }, - "dolly": { - "body": "", - "width": 576 - }, - "dong-sign": { - "body": "", - "width": 384 - }, - "door-closed": { - "body": "", - "width": 576 - }, - "door-open": { - "body": "", - "width": 576 - }, - "dove": { - "body": "" - }, - "down-left-and-up-right-to-center": { - "body": "" - }, - "down-long": { - "body": "", - "width": 320 - }, - "download": { - "body": "" - }, - "dragon": { - "body": "", - "width": 640 - }, - "draw-polygon": { - "body": "", - "width": 448 - }, - "droplet": { - "body": "", - "width": 384 - }, - "droplet-slash": { - "body": "", - "width": 640 - }, - "drum": { - "body": "" - }, - "drum-steelpan": { - "body": "", - "width": 576 - }, - "drumstick-bite": { - "body": "" - }, - "dumbbell": { - "body": "", - "width": 640 - }, - "dumpster": { - "body": "", - "width": 576 - }, - "dumpster-fire": { - "body": "", - "width": 640 - }, - "dungeon": { - "body": "" - }, - "e": { - "body": "", - "width": 320 - }, - "ear-deaf": { - "body": "" - }, - "ear-listen": { - "body": "" - }, - "earth-africa": { - "body": "" - }, - "earth-americas": { - "body": "" - }, - "earth-asia": { - "body": "" - }, - "earth-europe": { - "body": "" - }, - "earth-oceania": { - "body": "" - }, - "egg": { - "body": "", - "width": 384 - }, - "eject": { - "body": "", - "width": 448 - }, - "elevator": { - "body": "" - }, - "ellipsis": { - "body": "", - "width": 448 - }, - "ellipsis-vertical": { - "body": "", - "width": 128 - }, - "envelope": { - "body": "" - }, - "envelope-circle-check": { - "body": "", - "width": 640 - }, - "envelope-open": { - "body": "" - }, - "envelope-open-text": { - "body": "" - }, - "envelopes-bulk": { - "body": "", - "width": 640 - }, - "equals": { - "body": "", - "width": 448 - }, - "eraser": { - "body": "", - "width": 576 - }, - "ethernet": { - "body": "" - }, - "euro-sign": { - "body": "", - "width": 320 - }, - "exclamation": { - "body": "", - "width": 64 - }, - "expand": { - "body": "", - "width": 448 - }, - "explosion": { - "body": "", - "width": 576 - }, - "eye": { - "body": "", - "width": 576 - }, - "eye-dropper": { - "body": "" - }, - "eye-low-vision": { - "body": "", - "width": 640 - }, - "eye-slash": { - "body": "", - "width": 640 - }, - "f": { - "body": "", - "width": 320 - }, - "face-angry": { - "body": "" - }, - "face-dizzy": { - "body": "" - }, - "face-flushed": { - "body": "" - }, - "face-frown": { - "body": "" - }, - "face-frown-open": { - "body": "" - }, - "face-grimace": { - "body": "" - }, - "face-grin": { - "body": "" - }, - "face-grin-beam": { - "body": "" - }, - "face-grin-beam-sweat": { - "body": "" - }, - "face-grin-hearts": { - "body": "" - }, - "face-grin-squint": { - "body": "" - }, - "face-grin-squint-tears": { - "body": "" - }, - "face-grin-stars": { - "body": "" - }, - "face-grin-tears": { - "body": "", - "width": 640 - }, - "face-grin-tongue": { - "body": "" - }, - "face-grin-tongue-squint": { - "body": "" - }, - "face-grin-tongue-wink": { - "body": "" - }, - "face-grin-wide": { - "body": "" - }, - "face-grin-wink": { - "body": "" - }, - "face-kiss": { - "body": "" - }, - "face-kiss-beam": { - "body": "" - }, - "face-kiss-wink-heart": { - "body": "" - }, - "face-laugh": { - "body": "" - }, - "face-laugh-beam": { - "body": "" - }, - "face-laugh-squint": { - "body": "" - }, - "face-laugh-wink": { - "body": "" - }, - "face-meh": { - "body": "" - }, - "face-meh-blank": { - "body": "" - }, - "face-rolling-eyes": { - "body": "" - }, - "face-sad-cry": { - "body": "" - }, - "face-sad-tear": { - "body": "" - }, - "face-smile": { - "body": "" - }, - "face-smile-beam": { - "body": "" - }, - "face-smile-wink": { - "body": "" - }, - "face-surprise": { - "body": "" - }, - "face-tired": { - "body": "" - }, - "fan": { - "body": "" - }, - "faucet": { - "body": "" - }, - "faucet-drip": { - "body": "" - }, - "fax": { - "body": "" - }, - "feather": { - "body": "" - }, - "feather-pointed": { - "body": "" - }, - "ferry": { - "body": "", - "width": 576 - }, - "file": { - "body": "", - "width": 384 - }, - "file-arrow-down": { - "body": "", - "width": 384 - }, - "file-arrow-up": { - "body": "", - "width": 384 - }, - "file-audio": { - "body": "", - "width": 384 - }, - "file-circle-check": { - "body": "", - "width": 576 - }, - "file-circle-exclamation": { - "body": "", - "width": 576 - }, - "file-circle-minus": { - "body": "", - "width": 576 - }, - "file-circle-plus": { - "body": "", - "width": 576 - }, - "file-circle-question": { - "body": "", - "width": 576 - }, - "file-circle-xmark": { - "body": "", - "width": 576 - }, - "file-code": { - "body": "", - "width": 384 - }, - "file-contract": { - "body": "", - "width": 384 - }, - "file-csv": { - "body": "" - }, - "file-excel": { - "body": "", - "width": 384 - }, - "file-export": { - "body": "", - "width": 576 - }, - "file-image": { - "body": "", - "width": 384 - }, - "file-import": { - "body": "" - }, - "file-invoice": { - "body": "", - "width": 384 - }, - "file-invoice-dollar": { - "body": "", - "width": 384 - }, - "file-lines": { - "body": "", - "width": 384 - }, - "file-medical": { - "body": "", - "width": 384 - }, - "file-pdf": { - "body": "" - }, - "file-pen": { - "body": "", - "width": 576 - }, - "file-powerpoint": { - "body": "", - "width": 384 - }, - "file-prescription": { - "body": "", - "width": 384 - }, - "file-shield": { - "body": "", - "width": 576 - }, - "file-signature": { - "body": "", - "width": 576 - }, - "file-video": { - "body": "", - "width": 384 - }, - "file-waveform": { - "body": "", - "width": 448 - }, - "file-word": { - "body": "", - "width": 384 - }, - "file-zipper": { - "body": "", - "width": 384 - }, - "fill": { - "body": "" - }, - "fill-drip": { - "body": "", - "width": 576 - }, - "film": { - "body": "" - }, - "filter": { - "body": "" - }, - "filter-circle-dollar": { - "body": "", - "width": 576 - }, - "filter-circle-xmark": { - "body": "", - "width": 576 - }, - "fingerprint": { - "body": "" - }, - "fire": { - "body": "", - "width": 448 - }, - "fire-burner": { - "body": "", - "width": 640 - }, - "fire-extinguisher": { - "body": "" - }, - "fire-flame-curved": { - "body": "", - "width": 384 - }, - "fire-flame-simple": { - "body": "", - "width": 384 - }, - "fish": { - "body": "", - "width": 576 - }, - "fish-fins": { - "body": "", - "width": 576 - }, - "flag": { - "body": "", - "width": 448 - }, - "flag-checkered": { - "body": "", - "width": 448 - }, - "flag-usa": { - "body": "", - "width": 448 - }, - "flask": { - "body": "", - "width": 448 - }, - "flask-vial": { - "body": "", - "width": 640 - }, - "floppy-disk": { - "body": "", - "width": 448 - }, - "florin-sign": { - "body": "", - "width": 384 - }, - "folder": { - "body": "" - }, - "folder-closed": { - "body": "" - }, - "folder-minus": { - "body": "" - }, - "folder-open": { - "body": "", - "width": 576 - }, - "folder-plus": { - "body": "" - }, - "folder-tree": { - "body": "", - "width": 576 - }, - "font": { - "body": "", - "width": 448 - }, - "font-awesome": { - "body": "", - "width": 448 - }, - "football": { - "body": "" - }, - "forward": { - "body": "" - }, - "forward-fast": { - "body": "" - }, - "forward-step": { - "body": "", - "width": 320 - }, - "franc-sign": { - "body": "", - "width": 320 - }, - "frog": { - "body": "", - "width": 576 - }, - "futbol": { - "body": "" - }, - "g": { - "body": "", - "width": 448 - }, - "gamepad": { - "body": "", - "width": 640 - }, - "gas-pump": { - "body": "" - }, - "gauge": { - "body": "" - }, - "gauge-high": { - "body": "" - }, - "gauge-simple": { - "body": "" - }, - "gauge-simple-high": { - "body": "" - }, - "gavel": { - "body": "" - }, - "gear": { - "body": "" - }, - "gears": { - "body": "", - "width": 640 - }, - "gem": { - "body": "" - }, - "genderless": { - "body": "", - "width": 384 - }, - "ghost": { - "body": "", - "width": 384 - }, - "gift": { - "body": "" - }, - "gifts": { - "body": "", - "width": 640 - }, - "glass-water": { - "body": "", - "width": 384 - }, - "glass-water-droplet": { - "body": "", - "width": 384 - }, - "glasses": { - "body": "", - "width": 576 - }, - "globe": { - "body": "" - }, - "golf-ball-tee": { - "body": "", - "width": 384 - }, - "gopuram": { - "body": "" - }, - "graduation-cap": { - "body": "", - "width": 640 - }, - "greater-than": { - "body": "", - "width": 384 - }, - "greater-than-equal": { - "body": "", - "width": 448 - }, - "grip": { - "body": "", - "width": 448 - }, - "grip-lines": { - "body": "", - "width": 448 - }, - "grip-lines-vertical": { - "body": "", - "width": 192 - }, - "grip-vertical": { - "body": "", - "width": 320 - }, - "group-arrows-rotate": { - "body": "" - }, - "guarani-sign": { - "body": "", - "width": 384 - }, - "guitar": { - "body": "" - }, - "gun": { - "body": "", - "width": 576 - }, - "h": { - "body": "", - "width": 384 - }, - "hammer": { - "body": "", - "width": 576 - }, - "hamsa": { - "body": "" - }, - "hand": { - "body": "" - }, - "hand-back-fist": { - "body": "", - "width": 448 - }, - "hand-dots": { - "body": "" - }, - "hand-fist": { - "body": "", - "width": 448 - }, - "hand-holding": { - "body": "", - "width": 576 - }, - "hand-holding-dollar": { - "body": "", - "width": 576 - }, - "hand-holding-droplet": { - "body": "", - "width": 576 - }, - "hand-holding-hand": { - "body": "", - "width": 576 - }, - "hand-holding-heart": { - "body": "", - "width": 576 - }, - "hand-holding-medical": { - "body": "", - "width": 576 - }, - "hand-lizard": { - "body": "" - }, - "hand-middle-finger": { - "body": "", - "width": 448 - }, - "hand-peace": { - "body": "" - }, - "hand-point-down": { - "body": "", - "width": 384 - }, - "hand-point-left": { - "body": "" - }, - "hand-point-right": { - "body": "" - }, - "hand-point-up": { - "body": "", - "width": 384 - }, - "hand-pointer": { - "body": "", - "width": 448 - }, - "hand-scissors": { - "body": "" - }, - "hand-sparkles": { - "body": "", - "width": 640 - }, - "hand-spock": { - "body": "", - "width": 576 - }, - "handcuffs": { - "body": "", - "width": 640 - }, - "hands": { - "body": "", - "width": 576 - }, - "hands-asl-interpreting": { - "body": "", - "width": 640 - }, - "hands-bound": { - "body": "", - "width": 640 - }, - "hands-bubbles": { - "body": "", - "width": 576 - }, - "hands-clapping": { - "body": "" - }, - "hands-holding": { - "body": "", - "width": 640 - }, - "hands-holding-child": { - "body": "", - "width": 640 - }, - "hands-holding-circle": { - "body": "", - "width": 640 - }, - "hands-praying": { - "body": "", - "width": 640 - }, - "handshake": { - "body": "", - "width": 640 - }, - "handshake-angle": { - "body": "", - "width": 640 - }, - "handshake-simple": { - "body": "", - "width": 640 - }, - "handshake-simple-slash": { - "body": "", - "width": 640 - }, - "handshake-slash": { - "body": "", - "width": 640 - }, - "hanukiah": { - "body": "", - "width": 640 - }, - "hard-drive": { - "body": "" - }, - "hashtag": { - "body": "", - "width": 448 - }, - "hat-cowboy": { - "body": "", - "width": 640 - }, - "hat-cowboy-side": { - "body": "", - "width": 640 - }, - "hat-wizard": { - "body": "" - }, - "head-side-cough": { - "body": "", - "width": 640 - }, - "head-side-cough-slash": { - "body": "", - "width": 640 - }, - "head-side-mask": { - "body": "", - "width": 576 - }, - "head-side-virus": { - "body": "" - }, - "heading": { - "body": "", - "width": 448 - }, - "headphones": { - "body": "" - }, - "headphones-simple": { - "body": "" - }, - "headset": { - "body": "" - }, - "heart": { - "body": "" - }, - "heart-circle-bolt": { - "body": "", - "width": 576 - }, - "heart-circle-check": { - "body": "", - "width": 576 - }, - "heart-circle-exclamation": { - "body": "", - "width": 576 - }, - "heart-circle-minus": { - "body": "", - "width": 576 - }, - "heart-circle-plus": { - "body": "", - "width": 576 - }, - "heart-circle-xmark": { - "body": "", - "width": 576 - }, - "heart-crack": { - "body": "" - }, - "heart-pulse": { - "body": "" - }, - "helicopter": { - "body": "", - "width": 640 - }, - "helicopter-symbol": { - "body": "" - }, - "helmet-safety": { - "body": "", - "width": 576 - }, - "helmet-un": { - "body": "" - }, - "highlighter": { - "body": "", - "width": 576 - }, - "hill-avalanche": { - "body": "", - "width": 576 - }, - "hill-rockslide": { - "body": "", - "width": 576 - }, - "hippo": { - "body": "", - "width": 640 - }, - "hockey-puck": { - "body": "" - }, - "holly-berry": { - "body": "" - }, - "horse": { - "body": "", - "width": 576 - }, - "horse-head": { - "body": "", - "width": 640 - }, - "hospital": { - "body": "", - "width": 640 - }, - "hospital-user": { - "body": "", - "width": 576 - }, - "hot-tub-person": { - "body": "" - }, - "hotdog": { - "body": "" - }, - "hotel": { - "body": "" - }, - "hourglass": { - "body": "", - "width": 384 - }, - "hourglass-empty": { - "body": "", - "width": 384, - "hidden": true - }, - "hourglass-end": { - "body": "", - "width": 384 - }, - "hourglass-half": { - "body": "", - "width": 384 - }, - "hourglass-start": { - "body": "", - "width": 384 - }, - "house": { - "body": "", - "width": 576 - }, - "house-chimney": { - "body": "", - "width": 576 - }, - "house-chimney-crack": { - "body": "", - "width": 576 - }, - "house-chimney-medical": { - "body": "", - "width": 576 - }, - "house-chimney-user": { - "body": "", - "width": 576 - }, - "house-chimney-window": { - "body": "", - "width": 576 - }, - "house-circle-check": { - "body": "", - "width": 640 - }, - "house-circle-exclamation": { - "body": "", - "width": 640 - }, - "house-circle-xmark": { - "body": "", - "width": 640 - }, - "house-crack": { - "body": "", - "width": 576 - }, - "house-fire": { - "body": "", - "width": 640 - }, - "house-flag": { - "body": "", - "width": 640 - }, - "house-flood-water": { - "body": "", - "width": 576 - }, - "house-flood-water-circle-arrow-right": { - "body": "", - "width": 640 - }, - "house-laptop": { - "body": "", - "width": 640 - }, - "house-lock": { - "body": "", - "width": 640 - }, - "house-medical": { - "body": "", - "width": 576 - }, - "house-medical-circle-check": { - "body": "", - "width": 640 - }, - "house-medical-circle-exclamation": { - "body": "", - "width": 640 - }, - "house-medical-circle-xmark": { - "body": "", - "width": 640 - }, - "house-medical-flag": { - "body": "", - "width": 640 - }, - "house-signal": { - "body": "", - "width": 576 - }, - "house-tsunami": { - "body": "", - "width": 576 - }, - "house-user": { - "body": "", - "width": 576 - }, - "hryvnia-sign": { - "body": "", - "width": 384 - }, - "hurricane": { - "body": "", - "width": 384 - }, - "i": { - "body": "", - "width": 320 - }, - "i-cursor": { - "body": "", - "width": 256 - }, - "ice-cream": { - "body": "", - "width": 448 - }, - "icicles": { - "body": "" - }, - "icons": { - "body": "" - }, - "id-badge": { - "body": "", - "width": 384 - }, - "id-card": { - "body": "", - "width": 576 - }, - "id-card-clip": { - "body": "", - "width": 576 - }, - "igloo": { - "body": "", - "width": 576 - }, - "image": { - "body": "" - }, - "image-portrait": { - "body": "", - "width": 384 - }, - "images": { - "body": "", - "width": 576 - }, - "inbox": { - "body": "" - }, - "indent": { - "body": "", - "width": 448 - }, - "indian-rupee-sign": { - "body": "", - "width": 320 - }, - "industry": { - "body": "", - "width": 576 - }, - "infinity": { - "body": "", - "width": 640 - }, - "info": { - "body": "", - "width": 192 - }, - "italic": { - "body": "", - "width": 384 - }, - "j": { - "body": "", - "width": 320 - }, - "jar": { - "body": "", - "width": 320 - }, - "jar-wheat": { - "body": "", - "width": 320 - }, - "jedi": { - "body": "", - "width": 576 - }, - "jet-fighter": { - "body": "", - "width": 640 - }, - "jet-fighter-up": { - "body": "" - }, - "joint": { - "body": "", - "width": 640 - }, - "jug-detergent": { - "body": "", - "width": 384 - }, - "k": { - "body": "", - "width": 320 - }, - "kaaba": { - "body": "", - "width": 576 - }, - "key": { - "body": "" - }, - "keyboard": { - "body": "", - "width": 576 - }, - "khanda": { - "body": "" - }, - "kip-sign": { - "body": "", - "width": 384 - }, - "kit-medical": { - "body": "", - "width": 576 - }, - "kitchen-set": { - "body": "", - "width": 576 - }, - "kiwi-bird": { - "body": "", - "width": 576 - }, - "l": { - "body": "", - "width": 320 - }, - "land-mine-on": { - "body": "", - "width": 640 - }, - "landmark": { - "body": "" - }, - "landmark-dome": { - "body": "" - }, - "landmark-flag": { - "body": "" - }, - "language": { - "body": "", - "width": 640 - }, - "laptop": { - "body": "", - "width": 640 - }, - "laptop-code": { - "body": "", - "width": 640 - }, - "laptop-file": { - "body": "", - "width": 640 - }, - "laptop-medical": { - "body": "", - "width": 640 - }, - "lari-sign": { - "body": "", - "width": 384 - }, - "layer-group": { - "body": "", - "width": 576 - }, - "leaf": { - "body": "" - }, - "left-long": { - "body": "" - }, - "left-right": { - "body": "" - }, - "lemon": { - "body": "", - "width": 448 - }, - "less-than": { - "body": "", - "width": 384 - }, - "less-than-equal": { - "body": "", - "width": 448 - }, - "life-ring": { - "body": "" - }, - "lightbulb": { - "body": "", - "width": 384 - }, - "lines-leaning": { - "body": "", - "width": 384 - }, - "link": { - "body": "", - "width": 640 - }, - "link-slash": { - "body": "", - "width": 640 - }, - "lira-sign": { - "body": "", - "width": 320 - }, - "list": { - "body": "" - }, - "list-check": { - "body": "" - }, - "list-ol": { - "body": "" - }, - "list-ul": { - "body": "" - }, - "litecoin-sign": { - "body": "", - "width": 384 - }, - "location-arrow": { - "body": "", - "width": 448 - }, - "location-crosshairs": { - "body": "" - }, - "location-dot": { - "body": "", - "width": 384 - }, - "location-pin": { - "body": "", - "width": 384 - }, - "location-pin-lock": { - "body": "" - }, - "lock": { - "body": "", - "width": 448 - }, - "lock-open": { - "body": "", - "width": 576 - }, - "locust": { - "body": "", - "width": 576 - }, - "lungs": { - "body": "", - "width": 640 - }, - "lungs-virus": { - "body": "", - "width": 640 - }, - "m": { - "body": "", - "width": 448 - }, - "magnet": { - "body": "", - "width": 448 - }, - "magnifying-glass": { - "body": "" - }, - "magnifying-glass-arrow-right": { - "body": "" - }, - "magnifying-glass-chart": { - "body": "" - }, - "magnifying-glass-dollar": { - "body": "" - }, - "magnifying-glass-location": { - "body": "" - }, - "magnifying-glass-minus": { - "body": "" - }, - "magnifying-glass-plus": { - "body": "" - }, - "manat-sign": { - "body": "", - "width": 384 - }, - "map": { - "body": "", - "width": 576 - }, - "map-location": { - "body": "", - "width": 576 - }, - "map-location-dot": { - "body": "", - "width": 576 - }, - "map-pin": { - "body": "", - "width": 320 - }, - "marker": { - "body": "" - }, - "mars": { - "body": "", - "width": 448 - }, - "mars-and-venus": { - "body": "" - }, - "mars-and-venus-burst": { - "body": "", - "width": 640 - }, - "mars-double": { - "body": "", - "width": 640 - }, - "mars-stroke": { - "body": "" - }, - "mars-stroke-right": { - "body": "", - "width": 640 - }, - "mars-stroke-up": { - "body": "", - "width": 320 - }, - "martini-glass": { - "body": "" - }, - "martini-glass-citrus": { - "body": "", - "width": 576 - }, - "martini-glass-empty": { - "body": "" - }, - "mask": { - "body": "", - "width": 576 - }, - "mask-face": { - "body": "", - "width": 640 - }, - "mask-ventilator": { - "body": "", - "width": 640 - }, - "masks-theater": { - "body": "", - "width": 640 - }, - "mattress-pillow": { - "body": "", - "width": 640 - }, - "maximize": { - "body": "" - }, - "medal": { - "body": "" - }, - "memory": { - "body": "", - "width": 576 - }, - "menorah": { - "body": "", - "width": 640 - }, - "mercury": { - "body": "", - "width": 384 - }, - "message": { - "body": "" - }, - "meteor": { - "body": "" - }, - "microchip": { - "body": "" - }, - "microphone": { - "body": "", - "width": 384 - }, - "microphone-lines": { - "body": "", - "width": 384 - }, - "microphone-lines-slash": { - "body": "", - "width": 640 - }, - "microphone-slash": { - "body": "", - "width": 640 - }, - "microscope": { - "body": "" - }, - "mill-sign": { - "body": "", - "width": 384 - }, - "minimize": { - "body": "" - }, - "minus": { - "body": "", - "width": 448 - }, - "mitten": { - "body": "", - "width": 448 - }, - "mobile": { - "body": "", - "width": 384 - }, - "mobile-button": { - "body": "", - "width": 384 - }, - "mobile-retro": { - "body": "", - "width": 320 - }, - "mobile-screen": { - "body": "", - "width": 384 - }, - "mobile-screen-button": { - "body": "", - "width": 384 - }, - "money-bill": { - "body": "", - "width": 576 - }, - "money-bill-1": { - "body": "", - "width": 576 - }, - "money-bill-1-wave": { - "body": "", - "width": 576 - }, - "money-bill-transfer": { - "body": "", - "width": 640 - }, - "money-bill-trend-up": { - "body": "" - }, - "money-bill-wave": { - "body": "", - "width": 576 - }, - "money-bill-wheat": { - "body": "" - }, - "money-bills": { - "body": "", - "width": 640 - }, - "money-check": { - "body": "", - "width": 576 - }, - "money-check-dollar": { - "body": "", - "width": 576 - }, - "monument": { - "body": "", - "width": 384 - }, - "moon": { - "body": "", - "width": 384 - }, - "mortar-pestle": { - "body": "" - }, - "mosque": { - "body": "", - "width": 640 - }, - "mosquito": { - "body": "", - "width": 640 - }, - "mosquito-net": { - "body": "", - "width": 640 - }, - "motorcycle": { - "body": "", - "width": 640 - }, - "mound": { - "body": "", - "width": 576 - }, - "mountain": { - "body": "" - }, - "mountain-city": { - "body": "", - "width": 640 - }, - "mountain-sun": { - "body": "", - "width": 640 - }, - "mug-hot": { - "body": "" - }, - "mug-saucer": { - "body": "", - "width": 640 - }, - "music": { - "body": "" - }, - "n": { - "body": "", - "width": 384 - }, - "naira-sign": { - "body": "", - "width": 448 - }, - "network-wired": { - "body": "", - "width": 640 - }, - "neuter": { - "body": "", - "width": 384 - }, - "newspaper": { - "body": "" - }, - "not-equal": { - "body": "", - "width": 448 - }, - "notdef": { - "body": "", - "width": 384 - }, - "note-sticky": { - "body": "", - "width": 448 - }, - "notes-medical": { - "body": "" - }, - "o": { - "body": "", - "width": 448 - }, - "object-group": { - "body": "", - "width": 576 - }, - "object-ungroup": { - "body": "", - "width": 640 - }, - "oil-can": { - "body": "", - "width": 640 - }, - "oil-well": { - "body": "", - "width": 576 - }, - "om": { - "body": "" - }, - "otter": { - "body": "", - "width": 640 - }, - "outdent": { - "body": "", - "width": 448 - }, - "p": { - "body": "", - "width": 320 - }, - "pager": { - "body": "" - }, - "paint-roller": { - "body": "" - }, - "paintbrush": { - "body": "", - "width": 576 - }, - "palette": { - "body": "" - }, - "pallet": { - "body": "", - "width": 640 - }, - "panorama": { - "body": "", - "width": 640 - }, - "paper-plane": { - "body": "" - }, - "paperclip": { - "body": "", - "width": 448 - }, - "parachute-box": { - "body": "" - }, - "paragraph": { - "body": "", - "width": 448 - }, - "passport": { - "body": "", - "width": 448 - }, - "paste": { - "body": "" - }, - "pause": { - "body": "", - "width": 320 - }, - "paw": { - "body": "" - }, - "peace": { - "body": "" - }, - "pen": { - "body": "" - }, - "pen-clip": { - "body": "" - }, - "pen-fancy": { - "body": "" - }, - "pen-nib": { - "body": "" - }, - "pen-ruler": { - "body": "" - }, - "pen-to-square": { - "body": "" - }, - "pencil": { - "body": "" - }, - "people-arrows": { - "body": "", - "width": 640 - }, - "people-arrows-left-right": { - "body": "", - "width": 576, - "hidden": true - }, - "people-carry-box": { - "body": "", - "width": 640 - }, - "people-group": { - "body": "", - "width": 640 - }, - "people-line": { - "body": "", - "width": 640 - }, - "people-pulling": { - "body": "", - "width": 576 - }, - "people-robbery": { - "body": "", - "width": 576 - }, - "people-roof": { - "body": "", - "width": 640 - }, - "pepper-hot": { - "body": "" - }, - "percent": { - "body": "", - "width": 384 - }, - "person": { - "body": "", - "width": 320 - }, - "person-arrow-down-to-line": { - "body": "", - "width": 640 - }, - "person-arrow-up-from-line": { - "body": "", - "width": 640 - }, - "person-biking": { - "body": "", - "width": 640 - }, - "person-booth": { - "body": "", - "width": 576 - }, - "person-breastfeeding": { - "body": "", - "width": 448 - }, - "person-burst": { - "body": "", - "width": 640 - }, - "person-cane": { - "body": "", - "width": 448 - }, - "person-chalkboard": { - "body": "", - "width": 640 - }, - "person-circle-check": { - "body": "", - "width": 576 - }, - "person-circle-exclamation": { - "body": "", - "width": 576 - }, - "person-circle-minus": { - "body": "", - "width": 576 - }, - "person-circle-plus": { - "body": "", - "width": 576 - }, - "person-circle-question": { - "body": "", - "width": 576 - }, - "person-circle-xmark": { - "body": "", - "width": 576 - }, - "person-digging": { - "body": "", - "width": 576 - }, - "person-dots-from-line": { - "body": "", - "width": 576 - }, - "person-dress": { - "body": "", - "width": 320 - }, - "person-dress-burst": { - "body": "", - "width": 640 - }, - "person-drowning": { - "body": "", - "width": 576 - }, - "person-falling": { - "body": "" - }, - "person-falling-burst": { - "body": "", - "width": 640 - }, - "person-half-dress": { - "body": "", - "width": 320 - }, - "person-harassing": { - "body": "", - "width": 576 - }, - "person-hiking": { - "body": "", - "width": 384 - }, - "person-military-pointing": { - "body": "", - "width": 576 - }, - "person-military-rifle": { - "body": "" - }, - "person-military-to-person": { - "body": "" - }, - "person-praying": { - "body": "", - "width": 448 - }, - "person-pregnant": { - "body": "", - "width": 384 - }, - "person-rays": { - "body": "" - }, - "person-rifle": { - "body": "", - "width": 576 - }, - "person-running": { - "body": "", - "width": 448 - }, - "person-shelter": { - "body": "" - }, - "person-skating": { - "body": "", - "width": 448 - }, - "person-skiing": { - "body": "" - }, - "person-skiing-nordic": { - "body": "", - "width": 576 - }, - "person-snowboarding": { - "body": "" - }, - "person-swimming": { - "body": "", - "width": 576 - }, - "person-through-window": { - "body": "", - "width": 640 - }, - "person-walking": { - "body": "", - "width": 320 - }, - "person-walking-arrow-loop-left": { - "body": "", - "width": 640 - }, - "person-walking-arrow-right": { - "body": "", - "width": 640 - }, - "person-walking-dashed-line-arrow-right": { - "body": "", - "width": 640 - }, - "person-walking-luggage": { - "body": "", - "width": 576 - }, - "person-walking-with-cane": { - "body": "" - }, - "peseta-sign": { - "body": "", - "width": 384 - }, - "peso-sign": { - "body": "", - "width": 384 - }, - "phone": { - "body": "" - }, - "phone-flip": { - "body": "" - }, - "phone-slash": { - "body": "", - "width": 640 - }, - "phone-volume": { - "body": "" - }, - "photo-film": { - "body": "", - "width": 640 - }, - "piggy-bank": { - "body": "", - "width": 576 - }, - "pills": { - "body": "", - "width": 576 - }, - "pizza-slice": { - "body": "" - }, - "place-of-worship": { - "body": "", - "width": 640 - }, - "plane": { - "body": "", - "width": 576 - }, - "plane-arrival": { - "body": "", - "width": 640 - }, - "plane-circle-check": { - "body": "", - "width": 640 - }, - "plane-circle-exclamation": { - "body": "", - "width": 640 - }, - "plane-circle-xmark": { - "body": "", - "width": 640 - }, - "plane-departure": { - "body": "", - "width": 640 - }, - "plane-lock": { - "body": "", - "width": 640 - }, - "plane-slash": { - "body": "", - "width": 640 - }, - "plane-up": { - "body": "" - }, - "plant-wilt": { - "body": "" - }, - "plate-wheat": { - "body": "" - }, - "play": { - "body": "", - "width": 384 - }, - "plug": { - "body": "", - "width": 384 - }, - "plug-circle-bolt": { - "body": "", - "width": 576 - }, - "plug-circle-check": { - "body": "", - "width": 576 - }, - "plug-circle-exclamation": { - "body": "", - "width": 576 - }, - "plug-circle-minus": { - "body": "", - "width": 576 - }, - "plug-circle-plus": { - "body": "", - "width": 576 - }, - "plug-circle-xmark": { - "body": "", - "width": 576 - }, - "plus": { - "body": "", - "width": 448 - }, - "plus-minus": { - "body": "", - "width": 384 - }, - "podcast": { - "body": "", - "width": 448 - }, - "poo": { - "body": "" - }, - "poo-storm": { - "body": "", - "width": 448 - }, - "poop": { - "body": "" - }, - "power-off": { - "body": "" - }, - "prescription": { - "body": "", - "width": 448 - }, - "prescription-bottle": { - "body": "", - "width": 384 - }, - "prescription-bottle-medical": { - "body": "", - "width": 384 - }, - "print": { - "body": "" - }, - "pump-medical": { - "body": "", - "width": 448 - }, - "pump-soap": { - "body": "", - "width": 448 - }, - "puzzle-piece": { - "body": "" - }, - "q": { - "body": "", - "width": 448 - }, - "qrcode": { - "body": "", - "width": 448 - }, - "question": { - "body": "", - "width": 320 - }, - "quote-left": { - "body": "", - "width": 448 - }, - "quote-right": { - "body": "", - "width": 448 - }, - "r": { - "body": "", - "width": 320 - }, - "radiation": { - "body": "" - }, - "radio": { - "body": "" - }, - "rainbow": { - "body": "", - "width": 640 - }, - "ranking-star": { - "body": "", - "width": 640 - }, - "receipt": { - "body": "", - "width": 384 - }, - "record-vinyl": { - "body": "" - }, - "rectangle-ad": { - "body": "", - "width": 576 - }, - "rectangle-list": { - "body": "", - "width": 576 - }, - "rectangle-xmark": { - "body": "" - }, - "recycle": { - "body": "" - }, - "registered": { - "body": "" - }, - "repeat": { - "body": "" - }, - "reply": { - "body": "" - }, - "reply-all": { - "body": "", - "width": 576 - }, - "republican": { - "body": "", - "width": 640 - }, - "restroom": { - "body": "", - "width": 640 - }, - "retweet": { - "body": "", - "width": 576 - }, - "ribbon": { - "body": "", - "width": 448 - }, - "right-from-bracket": { - "body": "" - }, - "right-left": { - "body": "" - }, - "right-long": { - "body": "" - }, - "right-to-bracket": { - "body": "" - }, - "ring": { - "body": "" - }, - "road": { - "body": "", - "width": 576 - }, - "road-barrier": { - "body": "", - "width": 640 - }, - "road-bridge": { - "body": "", - "width": 640 - }, - "road-circle-check": { - "body": "", - "width": 640 - }, - "road-circle-exclamation": { - "body": "", - "width": 640 - }, - "road-circle-xmark": { - "body": "", - "width": 640 - }, - "road-lock": { - "body": "", - "width": 640 - }, - "road-spikes": { - "body": "", - "width": 640 - }, - "robot": { - "body": "", - "width": 640 - }, - "rocket": { - "body": "" - }, - "rotate": { - "body": "" - }, - "rotate-left": { - "body": "" - }, - "rotate-right": { - "body": "" - }, - "route": { - "body": "" - }, - "rss": { - "body": "", - "width": 448 - }, - "ruble-sign": { - "body": "", - "width": 384 - }, - "rug": { - "body": "", - "width": 640 - }, - "ruler": { - "body": "" - }, - "ruler-combined": { - "body": "" - }, - "ruler-horizontal": { - "body": "", - "width": 640 - }, - "ruler-vertical": { - "body": "", - "width": 256 - }, - "rupee-sign": { - "body": "", - "width": 448 - }, - "rupiah-sign": { - "body": "" - }, - "s": { - "body": "", - "width": 320 - }, - "sack-dollar": { - "body": "" - }, - "sack-xmark": { - "body": "" - }, - "sailboat": { - "body": "", - "width": 576 - }, - "satellite": { - "body": "" - }, - "satellite-dish": { - "body": "" - }, - "scale-balanced": { - "body": "", - "width": 640 - }, - "scale-unbalanced": { - "body": "", - "width": 640 - }, - "scale-unbalanced-flip": { - "body": "", - "width": 640 - }, - "school": { - "body": "", - "width": 640 - }, - "school-circle-check": { - "body": "", - "width": 640 - }, - "school-circle-exclamation": { - "body": "", - "width": 640 - }, - "school-circle-xmark": { - "body": "", - "width": 640 - }, - "school-flag": { - "body": "", - "width": 576 - }, - "school-lock": { - "body": "", - "width": 640 - }, - "scissors": { - "body": "" - }, - "screwdriver": { - "body": "" - }, - "screwdriver-wrench": { - "body": "" - }, - "scroll": { - "body": "", - "width": 576 - }, - "scroll-torah": { - "body": "", - "width": 640 - }, - "sd-card": { - "body": "", - "width": 384 - }, - "section": { - "body": "", - "width": 256 - }, - "seedling": { - "body": "" - }, - "server": { - "body": "" - }, - "shapes": { - "body": "" - }, - "share": { - "body": "" - }, - "share-from-square": { - "body": "", - "width": 576 - }, - "share-nodes": { - "body": "", - "width": 448 - }, - "sheet-plastic": { - "body": "", - "width": 384 - }, - "shekel-sign": { - "body": "", - "width": 448 - }, - "shield": { - "body": "" - }, - "shield-blank": { - "body": "", - "hidden": true - }, - "shield-cat": { - "body": "" - }, - "shield-dog": { - "body": "" - }, - "shield-halved": { - "body": "" - }, - "shield-heart": { - "body": "" - }, - "shield-virus": { - "body": "" - }, - "ship": { - "body": "", - "width": 576 - }, - "shirt": { - "body": "", - "width": 640 - }, - "shoe-prints": { - "body": "", - "width": 640 - }, - "shop": { - "body": "", - "width": 640 - }, - "shop-lock": { - "body": "", - "width": 640 - }, - "shop-slash": { - "body": "", - "width": 640 - }, - "shower": { - "body": "" - }, - "shrimp": { - "body": "" - }, - "shuffle": { - "body": "" - }, - "shuttle-space": { - "body": "", - "width": 640 - }, - "sign-hanging": { - "body": "" - }, - "signal": { - "body": "", - "width": 640 - }, - "signature": { - "body": "", - "width": 640 - }, - "signs-post": { - "body": "" - }, - "sim-card": { - "body": "", - "width": 384 - }, - "sink": { - "body": "" - }, - "sitemap": { - "body": "", - "width": 576 - }, - "skull": { - "body": "" - }, - "skull-crossbones": { - "body": "", - "width": 448 - }, - "slash": { - "body": "", - "width": 640 - }, - "sleigh": { - "body": "", - "width": 640 - }, - "sliders": { - "body": "" - }, - "smog": { - "body": "", - "width": 640 - }, - "smoking": { - "body": "", - "width": 640 - }, - "snowflake": { - "body": "", - "width": 448 - }, - "snowman": { - "body": "" - }, - "snowplow": { - "body": "", - "width": 640 - }, - "soap": { - "body": "" - }, - "socks": { - "body": "" - }, - "solar-panel": { - "body": "", - "width": 640 - }, - "sort": { - "body": "", - "width": 320 - }, - "sort-down": { - "body": "", - "width": 320 - }, - "sort-up": { - "body": "", - "width": 320 - }, - "spa": { - "body": "", - "width": 576 - }, - "spaghetti-monster-flying": { - "body": "", - "width": 640 - }, - "spell-check": { - "body": "", - "width": 576 - }, - "spider": { - "body": "" - }, - "spinner": { - "body": "" - }, - "splotch": { - "body": "" - }, - "spoon": { - "body": "" - }, - "spray-can": { - "body": "" - }, - "spray-can-sparkles": { - "body": "" - }, - "square": { - "body": "", - "width": 448 - }, - "square-arrow-up-right": { - "body": "", - "width": 448 - }, - "square-caret-down": { - "body": "", - "width": 448 - }, - "square-caret-left": { - "body": "", - "width": 448 - }, - "square-caret-right": { - "body": "", - "width": 448 - }, - "square-caret-up": { - "body": "", - "width": 448 - }, - "square-check": { - "body": "", - "width": 448 - }, - "square-envelope": { - "body": "", - "width": 448 - }, - "square-full": { - "body": "" - }, - "square-h": { - "body": "", - "width": 448 - }, - "square-minus": { - "body": "", - "width": 448 - }, - "square-nfi": { - "body": "", - "width": 448 - }, - "square-parking": { - "body": "", - "width": 448 - }, - "square-pen": { - "body": "", - "width": 448 - }, - "square-person-confined": { - "body": "", - "width": 448 - }, - "square-phone": { - "body": "", - "width": 448 - }, - "square-phone-flip": { - "body": "", - "width": 448 - }, - "square-plus": { - "body": "", - "width": 448 - }, - "square-poll-horizontal": { - "body": "", - "width": 448 - }, - "square-poll-vertical": { - "body": "", - "width": 448 - }, - "square-root-variable": { - "body": "", - "width": 576 - }, - "square-rss": { - "body": "", - "width": 448 - }, - "square-share-nodes": { - "body": "", - "width": 448 - }, - "square-up-right": { - "body": "", - "width": 448 - }, - "square-virus": { - "body": "", - "width": 448 - }, - "square-xmark": { - "body": "", - "width": 448 - }, - "staff-aesculapius": { - "body": "", - "width": 384, - "hidden": true - }, - "staff-snake": { - "body": "", - "width": 384 - }, - "stairs": { - "body": "", - "width": 576 - }, - "stamp": { - "body": "" - }, - "stapler": { - "body": "", - "width": 640 - }, - "star": { - "body": "", - "width": 576 - }, - "star-and-crescent": { - "body": "" - }, - "star-half": { - "body": "", - "width": 576 - }, - "star-half-stroke": { - "body": "", - "width": 640 - }, - "star-of-david": { - "body": "" - }, - "star-of-life": { - "body": "" - }, - "sterling-sign": { - "body": "", - "width": 320 - }, - "stethoscope": { - "body": "", - "width": 576 - }, - "stop": { - "body": "", - "width": 384 - }, - "stopwatch": { - "body": "", - "width": 448 - }, - "stopwatch-20": { - "body": "", - "width": 448 - }, - "store": { - "body": "", - "width": 576 - }, - "store-slash": { - "body": "", - "width": 640 - }, - "street-view": { - "body": "" - }, - "strikethrough": { - "body": "" - }, - "stroopwafel": { - "body": "" - }, - "subscript": { - "body": "" - }, - "suitcase": { - "body": "" - }, - "suitcase-medical": { - "body": "" - }, - "suitcase-rolling": { - "body": "", - "width": 384 - }, - "sun": { - "body": "" - }, - "sun-plant-wilt": { - "body": "", - "width": 640 - }, - "superscript": { - "body": "" - }, - "swatchbook": { - "body": "" - }, - "synagogue": { - "body": "", - "width": 640 - }, - "syringe": { - "body": "" - }, - "t": { - "body": "", - "width": 384 - }, - "table": { - "body": "" - }, - "table-cells": { - "body": "" - }, - "table-cells-large": { - "body": "" - }, - "table-columns": { - "body": "" - }, - "table-list": { - "body": "" - }, - "table-tennis-paddle-ball": { - "body": "", - "width": 640 - }, - "tablet": { - "body": "", - "width": 448 - }, - "tablet-button": { - "body": "", - "width": 448 - }, - "tablet-screen-button": { - "body": "", - "width": 448 - }, - "tablets": { - "body": "", - "width": 640 - }, - "tachograph-digital": { - "body": "", - "width": 640 - }, - "tag": { - "body": "", - "width": 448 - }, - "tags": { - "body": "" - }, - "tape": { - "body": "", - "width": 576 - }, - "tarp": { - "body": "", - "width": 576 - }, - "tarp-droplet": { - "body": "", - "width": 576 - }, - "taxi": { - "body": "" - }, - "teeth": { - "body": "", - "width": 576 - }, - "teeth-open": { - "body": "", - "width": 576 - }, - "temperature-arrow-down": { - "body": "", - "width": 576 - }, - "temperature-arrow-up": { - "body": "", - "width": 576 - }, - "temperature-empty": { - "body": "", - "width": 320 - }, - "temperature-full": { - "body": "", - "width": 320 - }, - "temperature-half": { - "body": "", - "width": 320 - }, - "temperature-high": { - "body": "" - }, - "temperature-low": { - "body": "" - }, - "temperature-quarter": { - "body": "", - "width": 320 - }, - "temperature-three-quarters": { - "body": "", - "width": 320 - }, - "tenge-sign": { - "body": "", - "width": 384 - }, - "tent": { - "body": "", - "width": 576 - }, - "tent-arrow-down-to-line": { - "body": "", - "width": 640 - }, - "tent-arrow-left-right": { - "body": "", - "width": 576 - }, - "tent-arrow-turn-left": { - "body": "", - "width": 576 - }, - "tent-arrows-down": { - "body": "", - "width": 576 - }, - "tents": { - "body": "", - "width": 640 - }, - "terminal": { - "body": "", - "width": 576 - }, - "text-height": { - "body": "", - "width": 576 - }, - "text-slash": { - "body": "", - "width": 640 - }, - "text-width": { - "body": "", - "width": 448 - }, - "thermometer": { - "body": "" - }, - "thumbs-down": { - "body": "" - }, - "thumbs-up": { - "body": "" - }, - "thumbtack": { - "body": "", - "width": 384 - }, - "ticket": { - "body": "", - "width": 576 - }, - "ticket-simple": { - "body": "", - "width": 576 - }, - "timeline": { - "body": "", - "width": 640 - }, - "toggle-off": { - "body": "", - "width": 576 - }, - "toggle-on": { - "body": "", - "width": 576 - }, - "toilet": { - "body": "", - "width": 448 - }, - "toilet-paper": { - "body": "", - "width": 640 - }, - "toilet-paper-slash": { - "body": "", - "width": 640 - }, - "toilet-portable": { - "body": "", - "width": 320 - }, - "toilets-portable": { - "body": "", - "width": 576 - }, - "toolbox": { - "body": "" - }, - "tooth": { - "body": "", - "width": 448 - }, - "torii-gate": { - "body": "" - }, - "tornado": { - "body": "", - "width": 448 - }, - "tower-broadcast": { - "body": "", - "width": 576 - }, - "tower-cell": { - "body": "", - "width": 576 - }, - "tower-observation": { - "body": "" - }, - "tractor": { - "body": "", - "width": 640 - }, - "trademark": { - "body": "", - "width": 640 - }, - "traffic-light": { - "body": "", - "width": 320 - }, - "trailer": { - "body": "", - "width": 640 - }, - "train": { - "body": "", - "width": 448 - }, - "train-subway": { - "body": "", - "width": 448 - }, - "train-tram": { - "body": "", - "width": 448 - }, - "transgender": { - "body": "" - }, - "trash": { - "body": "", - "width": 448 - }, - "trash-arrow-up": { - "body": "", - "width": 448 - }, - "trash-can": { - "body": "", - "width": 448 - }, - "trash-can-arrow-up": { - "body": "", - "width": 448 - }, - "tree": { - "body": "", - "width": 448 - }, - "tree-city": { - "body": "", - "width": 640 - }, - "triangle-exclamation": { - "body": "" - }, - "trophy": { - "body": "", - "width": 576 - }, - "trowel": { - "body": "" - }, - "trowel-bricks": { - "body": "" - }, - "truck": { - "body": "", - "width": 640 - }, - "truck-arrow-right": { - "body": "", - "width": 640 - }, - "truck-droplet": { - "body": "", - "width": 640 - }, - "truck-fast": { - "body": "", - "width": 640 - }, - "truck-field": { - "body": "", - "width": 640 - }, - "truck-field-un": { - "body": "", - "width": 640 - }, - "truck-front": { - "body": "" - }, - "truck-medical": { - "body": "", - "width": 640 - }, - "truck-monster": { - "body": "", - "width": 640 - }, - "truck-moving": { - "body": "", - "width": 640 - }, - "truck-pickup": { - "body": "", - "width": 640 - }, - "truck-plane": { - "body": "", - "width": 640 - }, - "truck-ramp-box": { - "body": "", - "width": 640 - }, - "tty": { - "body": "" - }, - "turkish-lira-sign": { - "body": "", - "width": 384 - }, - "turn-down": { - "body": "", - "width": 384 - }, - "turn-up": { - "body": "", - "width": 384 - }, - "tv": { - "body": "", - "width": 640 - }, - "u": { - "body": "", - "width": 384 - }, - "umbrella": { - "body": "", - "width": 576 - }, - "umbrella-beach": { - "body": "", - "width": 576 - }, - "underline": { - "body": "", - "width": 448 - }, - "universal-access": { - "body": "" - }, - "unlock": { - "body": "", - "width": 448 - }, - "unlock-keyhole": { - "body": "", - "width": 448 - }, - "up-down": { - "body": "", - "width": 256 - }, - "up-down-left-right": { - "body": "" - }, - "up-long": { - "body": "", - "width": 320 - }, - "up-right-and-down-left-from-center": { - "body": "" - }, - "up-right-from-square": { - "body": "" - }, - "upload": { - "body": "" - }, - "user": { - "body": "", - "width": 448 - }, - "user-astronaut": { - "body": "", - "width": 448 - }, - "user-check": { - "body": "", - "width": 640 - }, - "user-clock": { - "body": "", - "width": 640 - }, - "user-doctor": { - "body": "", - "width": 448 - }, - "user-gear": { - "body": "", - "width": 640 - }, - "user-graduate": { - "body": "", - "width": 448 - }, - "user-group": { - "body": "", - "width": 640 - }, - "user-injured": { - "body": "", - "width": 448 - }, - "user-large": { - "body": "" - }, - "user-large-slash": { - "body": "", - "width": 640 - }, - "user-lock": { - "body": "", - "width": 640 - }, - "user-minus": { - "body": "", - "width": 640 - }, - "user-ninja": { - "body": "", - "width": 448 - }, - "user-nurse": { - "body": "", - "width": 448 - }, - "user-pen": { - "body": "", - "width": 640 - }, - "user-plus": { - "body": "", - "width": 640 - }, - "user-secret": { - "body": "", - "width": 448 - }, - "user-shield": { - "body": "", - "width": 640 - }, - "user-slash": { - "body": "", - "width": 640 - }, - "user-tag": { - "body": "", - "width": 640 - }, - "user-tie": { - "body": "", - "width": 448 - }, - "user-xmark": { - "body": "", - "width": 640 - }, - "users": { - "body": "", - "width": 640 - }, - "users-between-lines": { - "body": "", - "width": 640 - }, - "users-gear": { - "body": "", - "width": 640 - }, - "users-line": { - "body": "", - "width": 640 - }, - "users-rays": { - "body": "", - "width": 640 - }, - "users-rectangle": { - "body": "", - "width": 640 - }, - "users-slash": { - "body": "", - "width": 640 - }, - "users-viewfinder": { - "body": "", - "width": 640 - }, - "utensils": { - "body": "", - "width": 448 - }, - "v": { - "body": "", - "width": 384 - }, - "van-shuttle": { - "body": "", - "width": 640 - }, - "vault": { - "body": "", - "width": 576 - }, - "vector-square": { - "body": "", - "width": 448 - }, - "venus": { - "body": "", - "width": 384 - }, - "venus-double": { - "body": "", - "width": 640 - }, - "venus-mars": { - "body": "", - "width": 640 - }, - "vest": { - "body": "", - "width": 448 - }, - "vest-patches": { - "body": "", - "width": 448 - }, - "vial": { - "body": "" - }, - "vial-circle-check": { - "body": "" - }, - "vial-virus": { - "body": "" - }, - "vials": { - "body": "" - }, - "video": { - "body": "", - "width": 576 - }, - "video-slash": { - "body": "", - "width": 640 - }, - "vihara": { - "body": "", - "width": 640 - }, - "virus": { - "body": "" - }, - "virus-covid": { - "body": "" - }, - "virus-covid-slash": { - "body": "", - "width": 640 - }, - "virus-slash": { - "body": "", - "width": 640 - }, - "viruses": { - "body": "", - "width": 640 - }, - "voicemail": { - "body": "", - "width": 640 - }, - "volcano": { - "body": "" - }, - "volleyball": { - "body": "" - }, - "volume-high": { - "body": "", - "width": 640 - }, - "volume-low": { - "body": "", - "width": 448 - }, - "volume-off": { - "body": "", - "width": 320 - }, - "volume-xmark": { - "body": "", - "width": 576 - }, - "vr-cardboard": { - "body": "", - "width": 640 - }, - "w": { - "body": "", - "width": 576 - }, - "walkie-talkie": { - "body": "", - "width": 384 - }, - "wallet": { - "body": "" - }, - "wand-magic": { - "body": "" - }, - "wand-magic-sparkles": { - "body": "", - "width": 576 - }, - "wand-sparkles": { - "body": "" - }, - "warehouse": { - "body": "", - "width": 640 - }, - "water": { - "body": "", - "width": 576 - }, - "water-ladder": { - "body": "", - "width": 576 - }, - "wave-square": { - "body": "", - "width": 640 - }, - "weight-hanging": { - "body": "" - }, - "weight-scale": { - "body": "" - }, - "wheat-awn": { - "body": "" - }, - "wheat-awn-circle-exclamation": { - "body": "", - "width": 640 - }, - "wheelchair": { - "body": "" - }, - "wheelchair-move": { - "body": "", - "width": 448 - }, - "whiskey-glass": { - "body": "" - }, - "wifi": { - "body": "", - "width": 640 - }, - "wind": { - "body": "" - }, - "window-maximize": { - "body": "" - }, - "window-minimize": { - "body": "" - }, - "window-restore": { - "body": "" - }, - "wine-bottle": { - "body": "" - }, - "wine-glass": { - "body": "", - "width": 320 - }, - "wine-glass-empty": { - "body": "", - "width": 320 - }, - "won-sign": { - "body": "" - }, - "worm": { - "body": "" - }, - "wrench": { - "body": "" - }, - "x": { - "body": "", - "width": 384 - }, - "x-ray": { - "body": "" - }, - "xmark": { - "body": "", - "width": 384 - }, - "xmarks-lines": { - "body": "", - "width": 640 - }, - "y": { - "body": "", - "width": 384 - }, - "yen-sign": { - "body": "", - "width": 320 - }, - "yin-yang": { - "body": "" - }, - "z": { - "body": "", - "width": 384 - } - }, - "aliases": { - "child-rifle": { - "parent": "child-combatant" - } - }, - "categories": { - "Accessibility": [ - "audio-description", - "braille", - "closed-captioning", - "phone-volume", - "tty", - "universal-access", - "wheelchair" - ], - "Alert": ["bell", "bell-slash", "exclamation", "radiation", "skull-crossbones"], - "Animals": [ - "cat", - "crow", - "dog", - "dove", - "dragon", - "feather", - "fish", - "frog", - "hippo", - "horse", - "horse-head", - "kiwi-bird", - "otter", - "paw", - "spider" - ], - "Arrows": [ - "angle-down", - "angle-left", - "angle-right", - "angle-up", - "arrow-down", - "arrow-left", - "arrow-right", - "arrow-up", - "caret-down", - "caret-left", - "caret-right", - "caret-up", - "cart-arrow-down", - "chart-line", - "chevron-down", - "chevron-left", - "chevron-right", - "chevron-up", - "download", - "hand-point-down", - "hand-point-left", - "hand-point-right", - "hand-point-up", - "hand-pointer", - "location-arrow", - "play", - "recycle", - "reply", - "reply-all", - "retweet", - "share", - "sort", - "sort-down", - "sort-up", - "text-height", - "text-slash", - "text-width", - "upload" - ], - "Audio & Video": [ - "audio-description", - "backward", - "circle", - "closed-captioning", - "compress", - "eject", - "expand", - "file-audio", - "file-video", - "film", - "forward", - "headphones", - "microphone", - "microphone-slash", - "music", - "pause", - "phone-volume", - "play", - "podcast", - "rss", - "stop", - "tv", - "video", - "volume-off" - ], - "Automotive": [ - "bus", - "car", - "car-battery", - "car-side", - "caravan", - "charging-station", - "gas-pump", - "motorcycle", - "oil-can", - "taxi", - "trailer", - "truck", - "truck-monster", - "truck-pickup" - ], - "Autumn": [ - "campground", - "cloud-sun", - "drumstick-bite", - "mountain", - "tractor", - "tree", - "wind", - "wine-bottle" - ], - "Beverage": ["blender", "flask", "mug-hot", "wine-bottle", "wine-glass"], - "Buildings": [ - "archway", - "building", - "campground", - "church", - "city", - "dungeon", - "gopuram", - "hospital", - "hospital-user", - "hotel", - "igloo", - "industry", - "kaaba", - "landmark", - "monument", - "mosque", - "place-of-worship", - "school", - "store", - "synagogue", - "torii-gate", - "vihara", - "warehouse" - ], - "Business": [ - "address-book", - "address-card", - "book", - "briefcase", - "building", - "bullhorn", - "bullseye", - "business-time", - "calculator", - "calendar", - "certificate", - "chart-area", - "chart-bar", - "chart-line", - "chart-pie", - "city", - "clipboard", - "compass", - "copy", - "copyright", - "envelope", - "envelope-open", - "eraser", - "fax", - "file", - "folder", - "folder-minus", - "folder-open", - "folder-plus", - "glasses", - "globe", - "highlighter", - "industry", - "landmark", - "marker", - "paperclip", - "paste", - "pen", - "pen-fancy", - "pen-nib", - "percent", - "phone", - "phone-slash", - "phone-volume", - "print", - "registered", - "sitemap", - "socks", - "table", - "tag", - "tags", - "thumbtack", - "trademark", - "wallet" - ], - "Camping": [ - "binoculars", - "campground", - "caravan", - "compass", - "faucet", - "fire", - "frog", - "map", - "mountain", - "route", - "toilet-paper", - "trailer", - "tree" - ], - "Charity": [ - "dollar-sign", - "dove", - "gift", - "globe", - "hand-holding-heart", - "handshake", - "heart", - "leaf", - "parachute-box", - "piggy-bank", - "ribbon", - "seedling" - ], - "Chat": [ - "comment", - "comment-dots", - "comment-medical", - "comment-slash", - "comments", - "icons", - "phone", - "phone-slash", - "poo", - "quote-left", - "quote-right", - "video", - "video-slash" - ], - "Chess": [ - "chess", - "chess-bishop", - "chess-board", - "chess-king", - "chess-knight", - "chess-pawn", - "chess-queen", - "chess-rook", - "square-full" - ], - "Childhood": [ - "baby", - "baby-carriage", - "bath", - "cookie", - "cookie-bite", - "gamepad", - "ice-cream", - "mitten", - "robot", - "school", - "shapes", - "snowman" - ], - "Clothing": [ - "graduation-cap", - "hat-cowboy", - "hat-cowboy-side", - "hat-wizard", - "mitten", - "shoe-prints", - "socks", - "user-tie" - ], - "Code": [ - "barcode", - "bath", - "bug", - "code", - "code-branch", - "file", - "file-code", - "file-csv", - "filter", - "fire-extinguisher", - "folder", - "folder-open", - "keyboard", - "laptop-code", - "microchip", - "qrcode", - "sitemap", - "terminal", - "user-secret", - "window-maximize", - "window-minimize", - "window-restore" - ], - "Communication": [ - "address-book", - "address-card", - "at", - "bell", - "bell-slash", - "bullhorn", - "chalkboard", - "comment", - "comments", - "envelope", - "envelope-open", - "fax", - "inbox", - "language", - "microphone", - "microphone-slash", - "mobile", - "paper-plane", - "phone", - "phone-slash", - "phone-volume", - "rss", - "tty", - "voicemail", - "wifi" - ], - "Computers": [ - "compact-disc", - "database", - "desktop", - "download", - "ethernet", - "headphones", - "keyboard", - "laptop", - "memory", - "microchip", - "mobile", - "plug", - "power-off", - "print", - "satellite", - "satellite-dish", - "sd-card", - "server", - "sim-card", - "tablet", - "tv", - "upload" - ], - "Construction": [ - "brush", - "dumpster", - "hammer", - "paint-roller", - "ruler", - "ruler-combined", - "ruler-horizontal", - "ruler-vertical", - "screwdriver", - "toolbox", - "truck-pickup", - "wrench" - ], - "Currency": [ - "dollar-sign", - "euro-sign", - "lira-sign", - "money-bill", - "money-bill-wave", - "money-check", - "ruble-sign", - "rupee-sign", - "shekel-sign", - "won-sign", - "yen-sign" - ], - "Date & Time": [ - "bell", - "bell-slash", - "calendar", - "calendar-check", - "calendar-minus", - "calendar-plus", - "clock", - "hourglass", - "hourglass-end", - "hourglass-half", - "hourglass-start", - "stopwatch", - "stopwatch-20" - ], - "Design": [ - "bezier-curve", - "brush", - "clone", - "copy", - "crop", - "crosshairs", - "draw-polygon", - "eraser", - "eye", - "eye-dropper", - "eye-slash", - "fill", - "fill-drip", - "highlighter", - "icons", - "layer-group", - "marker", - "object-group", - "object-ungroup", - "paint-roller", - "palette", - "paste", - "pen", - "pen-fancy", - "pen-nib", - "ruler-combined", - "ruler-horizontal", - "ruler-vertical", - "splotch", - "spray-can", - "stamp", - "swatchbook", - "vector-square" - ], - "Editors": [ - "align-center", - "align-justify", - "align-left", - "align-right", - "bold", - "border-all", - "border-none", - "clipboard", - "clone", - "copy", - "eraser", - "file", - "font", - "glasses", - "heading", - "highlighter", - "i-cursor", - "icons", - "indent", - "italic", - "link", - "list", - "list-ol", - "list-ul", - "marker", - "outdent", - "paper-plane", - "paperclip", - "paragraph", - "paste", - "pen", - "pen-fancy", - "pen-nib", - "print", - "quote-left", - "quote-right", - "reply", - "reply-all", - "screwdriver", - "share", - "spell-check", - "strikethrough", - "subscript", - "superscript", - "table", - "text-height", - "text-slash", - "text-width", - "trash", - "underline", - "wrench" - ], - "Education": [ - "atom", - "award", - "bell", - "bell-slash", - "book-open", - "chalkboard", - "graduation-cap", - "laptop-code", - "microscope", - "music", - "school", - "shapes", - "user-graduate" - ], - "Energy": [ - "atom", - "battery-empty", - "battery-full", - "battery-half", - "battery-quarter", - "battery-three-quarters", - "charging-station", - "fan", - "fire", - "gas-pump", - "industry", - "leaf", - "lightbulb", - "plug", - "poop", - "power-off", - "radiation", - "seedling", - "solar-panel", - "sun", - "water", - "wind" - ], - "Files": [ - "clone", - "copy", - "file", - "file-audio", - "file-code", - "file-csv", - "file-excel", - "file-image", - "file-pdf", - "file-powerpoint", - "file-video", - "file-word", - "folder", - "folder-open", - "paste" - ], - "Finance": [ - "book", - "cash-register", - "chart-line", - "chart-pie", - "coins", - "comment-dollar", - "comments-dollar", - "credit-card", - "file-invoice", - "file-invoice-dollar", - "landmark", - "money-bill", - "money-bill-wave", - "money-check", - "piggy-bank", - "receipt", - "stamp", - "wallet" - ], - "Fitness": ["bicycle", "heart", "shoe-prints", "spa"], - "Food": [ - "bacon", - "bone", - "bread-slice", - "candy-cane", - "carrot", - "cheese", - "cloud-meatball", - "cookie", - "drumstick-bite", - "egg", - "fish", - "hotdog", - "ice-cream", - "lemon", - "pepper-hot", - "pizza-slice", - "seedling", - "stroopwafel" - ], - "Fruits & Vegetables": ["carrot", "leaf", "lemon", "pepper-hot", "seedling"], - "Games": [ - "chess", - "chess-bishop", - "chess-board", - "chess-king", - "chess-knight", - "chess-pawn", - "chess-queen", - "chess-rook", - "dice", - "dice-d20", - "dice-d6", - "dice-five", - "dice-four", - "dice-one", - "dice-six", - "dice-three", - "dice-two", - "gamepad", - "ghost", - "headset", - "heart", - "puzzle-piece" - ], - "Genders": [ - "genderless", - "mars", - "mars-double", - "mars-stroke", - "mercury", - "neuter", - "transgender", - "venus", - "venus-double", - "venus-mars" - ], - "Halloween": [ - "broom", - "cat", - "cloud-moon", - "crow", - "ghost", - "hat-wizard", - "mask", - "skull-crossbones", - "spider", - "toilet-paper" - ], - "Hands": [ - "hand-holding", - "hand-holding-heart", - "hand-holding-medical", - "hand-lizard", - "hand-middle-finger", - "hand-peace", - "hand-point-down", - "hand-point-left", - "hand-point-right", - "hand-point-up", - "hand-pointer", - "hand-scissors", - "hand-sparkles", - "hand-spock", - "hands", - "handshake", - "handshake-slash", - "thumbs-down", - "thumbs-up" - ], - "Health": ["heart", "hospital", "prescription", "stethoscope", "wheelchair"], - "Holiday": [ - "candy-cane", - "carrot", - "cookie-bite", - "gift", - "gifts", - "holly-berry", - "mug-hot", - "sleigh", - "snowman" - ], - "Hotel": [ - "baby-carriage", - "bath", - "bed", - "briefcase", - "car", - "dice", - "dice-five", - "door-closed", - "door-open", - "dumbbell", - "hotel", - "infinity", - "key", - "shower", - "smoking", - "snowflake", - "spa", - "suitcase", - "suitcase-rolling", - "tv", - "umbrella-beach", - "utensils", - "wheelchair", - "wifi" - ], - "Household": [ - "bath", - "bed", - "bell", - "blender", - "box-tissue", - "chair", - "couch", - "door-closed", - "door-open", - "dungeon", - "fan", - "faucet", - "house-user", - "lightbulb", - "plug", - "pump-soap", - "shower", - "sink", - "snowflake", - "soap", - "toilet-paper", - "toilet-paper-slash", - "tv" - ], - "Images": [ - "bolt", - "camera", - "camera-retro", - "chalkboard", - "clone", - "compress", - "expand", - "eye", - "eye-dropper", - "eye-slash", - "file-image", - "film", - "id-badge", - "id-card", - "image", - "images" - ], - "Interfaces": [ - "award", - "ban", - "barcode", - "bars", - "bell", - "bell-slash", - "blog", - "bug", - "bullhorn", - "bullseye", - "calculator", - "calendar", - "calendar-check", - "calendar-minus", - "calendar-plus", - "certificate", - "check", - "check-double", - "circle", - "clipboard", - "clone", - "cloud", - "copy", - "database", - "download", - "envelope", - "envelope-open", - "eraser", - "exclamation", - "eye", - "eye-slash", - "file", - "file-export", - "file-import", - "filter", - "fingerprint", - "flag", - "flag-checkered", - "folder", - "folder-open", - "glasses", - "grip-lines", - "grip-lines-vertical", - "grip-vertical", - "hashtag", - "heart", - "i-cursor", - "info", - "language", - "marker", - "medal", - "microphone", - "microphone-slash", - "minus", - "paste", - "pen", - "pen-fancy", - "plus", - "poo", - "qrcode", - "question", - "quote-left", - "quote-right", - "reply", - "reply-all", - "rss", - "screwdriver", - "share", - "signal", - "sitemap", - "sort", - "sort-down", - "sort-up", - "star", - "star-half", - "thumbs-down", - "thumbs-up", - "toggle-off", - "toggle-on", - "trash", - "trophy", - "upload", - "user", - "volume-off", - "wifi", - "wrench" - ], - "Logistics": [ - "box", - "clipboard-check", - "clipboard-list", - "dolly", - "pallet", - "truck", - "warehouse" - ], - "Maps": [ - "anchor", - "bath", - "bed", - "bell", - "bell-slash", - "bicycle", - "binoculars", - "bomb", - "book", - "bookmark", - "briefcase", - "building", - "car", - "crosshairs", - "dollar-sign", - "draw-polygon", - "eye", - "eye-slash", - "fire", - "fire-extinguisher", - "flag", - "flag-checkered", - "flask", - "gamepad", - "gavel", - "gift", - "globe", - "graduation-cap", - "heart", - "helicopter", - "hospital", - "image", - "images", - "industry", - "info", - "key", - "landmark", - "layer-group", - "leaf", - "lemon", - "life-ring", - "lightbulb", - "location-arrow", - "magnet", - "map", - "map-pin", - "money-bill", - "motorcycle", - "music", - "newspaper", - "paw", - "phone", - "phone-volume", - "plane", - "plane-slash", - "plug", - "plus", - "print", - "recycle", - "restroom", - "road", - "rocket", - "route", - "ship", - "shoe-prints", - "shower", - "snowplow", - "street-view", - "suitcase", - "tag", - "tags", - "taxi", - "thumbtack", - "traffic-light", - "train", - "tree", - "trophy", - "truck", - "tty", - "umbrella", - "utensils", - "vest", - "vest-patches", - "wheelchair", - "wifi", - "wine-glass", - "wrench" - ], - "Maritime": [ - "anchor", - "binoculars", - "compass", - "dharmachakra", - "frog", - "ship", - "skull-crossbones", - "water", - "wind" - ], - "Marketing": [ - "bullhorn", - "bullseye", - "comment-dollar", - "comments-dollar", - "envelope-open-text", - "lightbulb" - ], - "Mathematics": [ - "calculator", - "divide", - "equals", - "greater-than", - "greater-than-equal", - "infinity", - "less-than", - "less-than-equal", - "minus", - "not-equal", - "plus", - "subscript", - "superscript", - "wave-square" - ], - "Medical": [ - "bacteria", - "bacterium", - "biohazard", - "bone", - "bong", - "book-medical", - "brain", - "briefcase-medical", - "cannabis", - "capsules", - "comment-medical", - "crutch", - "disease", - "dna", - "file-medical", - "file-prescription", - "hand-holding-medical", - "head-side-cough", - "head-side-cough-slash", - "head-side-mask", - "head-side-virus", - "heart", - "hospital", - "hospital-user", - "joint", - "laptop-medical", - "lungs", - "lungs-virus", - "microscope", - "mortar-pestle", - "notes-medical", - "pager", - "pills", - "plus", - "poop", - "prescription", - "prescription-bottle", - "pump-medical", - "radiation", - "shield-virus", - "smoking", - "star-of-life", - "stethoscope", - "syringe", - "tablets", - "teeth", - "teeth-open", - "thermometer", - "tooth", - "user-nurse", - "vial", - "vials", - "virus", - "virus-slash", - "viruses", - "x-ray" - ], - "Moving": [ - "box-open", - "caravan", - "couch", - "dolly", - "route", - "suitcase", - "tape", - "trailer", - "truck-moving", - "wine-glass" - ], - "Music": [ - "compact-disc", - "drum", - "drum-steelpan", - "file-audio", - "guitar", - "headphones", - "microphone", - "microphone-slash", - "music", - "play", - "record-vinyl", - "volume-off" - ], - "Objects": [ - "anchor", - "award", - "baby-carriage", - "bath", - "bed", - "bell", - "bicycle", - "binoculars", - "blender", - "bomb", - "book", - "bookmark", - "briefcase", - "bug", - "building", - "bullhorn", - "bullseye", - "bus", - "calculator", - "calendar", - "camera", - "camera-retro", - "candy-cane", - "car", - "carrot", - "church", - "clipboard", - "cloud", - "compass", - "cookie", - "cookie-bite", - "copy", - "cube", - "cubes", - "dice", - "dice-d20", - "dice-d6", - "dice-five", - "dice-four", - "dice-one", - "dice-six", - "dice-three", - "dice-two", - "door-closed", - "door-open", - "drum", - "drum-steelpan", - "envelope", - "envelope-open", - "eraser", - "eye", - "eye-dropper", - "fax", - "feather", - "file", - "file-prescription", - "film", - "fire", - "fire-extinguisher", - "flag", - "flag-checkered", - "flask", - "futbol", - "gamepad", - "gavel", - "gem", - "gift", - "gifts", - "glasses", - "globe", - "graduation-cap", - "guitar", - "hat-wizard", - "headphones", - "headset", - "heart", - "helicopter", - "highlighter", - "holly-berry", - "hospital", - "hourglass", - "igloo", - "image", - "images", - "industry", - "key", - "keyboard", - "laptop", - "leaf", - "lemon", - "life-ring", - "lightbulb", - "lock", - "lock-open", - "magnet", - "map", - "map-pin", - "marker", - "medal", - "memory", - "microchip", - "microphone", - "mitten", - "mobile", - "money-bill", - "money-check", - "moon", - "motorcycle", - "mug-hot", - "newspaper", - "paper-plane", - "paperclip", - "paste", - "paw", - "pen", - "pen-fancy", - "pen-nib", - "phone", - "plane", - "plane-slash", - "plug", - "print", - "puzzle-piece", - "ring", - "road", - "rocket", - "ruler-combined", - "ruler-horizontal", - "ruler-vertical", - "satellite", - "satellite-dish", - "school", - "screwdriver", - "scroll", - "sd-card", - "shower", - "sim-card", - "skull-crossbones", - "sleigh", - "snowflake", - "snowplow", - "star", - "stopwatch", - "stopwatch-20", - "stroopwafel", - "suitcase", - "sun", - "tablet", - "tag", - "tags", - "taxi", - "thumbtack", - "toilet", - "toolbox", - "train", - "trash", - "tree", - "trophy", - "truck", - "tv", - "umbrella", - "unlock", - "utensils", - "wallet", - "wheelchair", - "wine-glass", - "wrench" - ], - "Payments & Shopping": [ - "bell", - "bookmark", - "bullhorn", - "camera", - "camera-retro", - "cart-arrow-down", - "cart-plus", - "certificate", - "credit-card", - "gem", - "gift", - "handshake", - "heart", - "key", - "money-check", - "receipt", - "star", - "tag", - "tags", - "thumbs-down", - "thumbs-up", - "trophy" - ], - "Pharmacy": [ - "book-medical", - "cannabis", - "capsules", - "disease", - "eye-dropper", - "file-medical", - "file-prescription", - "flask", - "joint", - "laptop-medical", - "mortar-pestle", - "notes-medical", - "pills", - "prescription", - "prescription-bottle", - "receipt", - "skull-crossbones", - "syringe", - "tablets", - "thermometer", - "vial", - "vials" - ], - "Political": [ - "award", - "bullhorn", - "check-double", - "democrat", - "dove", - "flag-usa", - "handshake", - "person-booth", - "piggy-bank", - "republican" - ], - "Religion": [ - "ankh", - "atom", - "bahai", - "church", - "cross", - "dharmachakra", - "dove", - "gopuram", - "hamsa", - "hanukiah", - "jedi", - "kaaba", - "khanda", - "menorah", - "mosque", - "om", - "peace", - "place-of-worship", - "star-and-crescent", - "star-of-david", - "synagogue", - "torii-gate", - "vihara", - "yin-yang" - ], - "Science": [ - "atom", - "biohazard", - "brain", - "capsules", - "clipboard-check", - "disease", - "dna", - "eye-dropper", - "filter", - "fire", - "flask", - "frog", - "magnet", - "microscope", - "mortar-pestle", - "pills", - "prescription-bottle", - "radiation", - "seedling", - "skull-crossbones", - "syringe", - "tablets", - "temperature-high", - "temperature-low", - "vial", - "vials" - ], - "Science Fiction": [ - "atom", - "globe", - "hand-spock", - "jedi", - "meteor", - "moon", - "robot", - "rocket", - "satellite", - "satellite-dish", - "user-astronaut" - ], - "Security": [ - "ban", - "bug", - "door-closed", - "door-open", - "dungeon", - "eye", - "eye-slash", - "file-contract", - "file-signature", - "fingerprint", - "id-badge", - "id-card", - "key", - "lock", - "lock-open", - "mask", - "passport", - "unlock", - "user-lock", - "user-secret", - "user-shield" - ], - "Shapes": [ - "bookmark", - "calendar", - "certificate", - "circle", - "cloud", - "comment", - "file", - "folder", - "heart", - "play", - "shapes", - "square", - "star" - ], - "Shopping": [ - "barcode", - "cart-arrow-down", - "cart-plus", - "cash-register", - "gift", - "gifts", - "person-booth", - "receipt", - "store", - "store-slash", - "truck" - ], - "Social": [ - "bell", - "camera", - "comment", - "envelope", - "hashtag", - "heart", - "icons", - "image", - "images", - "retweet", - "share", - "star", - "thumbs-down", - "thumbs-up", - "thumbtack", - "user", - "user-plus", - "users", - "video" - ], - "Spinners": [ - "asterisk", - "atom", - "bahai", - "certificate", - "circle-notch", - "compact-disc", - "compass", - "crosshairs", - "dharmachakra", - "fan", - "life-ring", - "palette", - "ring", - "slash", - "snowflake", - "spinner", - "stroopwafel", - "sun", - "yin-yang" - ], - "Sports": ["bowling-ball", "dumbbell", "futbol", "hockey-puck"], - "Spring": ["broom", "cloud-sun", "cloud-sun-rain", "frog", "rainbow", "seedling", "umbrella"], - "Status": [ - "ban", - "battery-empty", - "battery-full", - "battery-half", - "battery-quarter", - "battery-three-quarters", - "bell", - "bell-slash", - "calendar", - "calendar-check", - "calendar-day", - "calendar-minus", - "calendar-plus", - "calendar-week", - "cart-arrow-down", - "cart-plus", - "comment", - "comment-slash", - "compass", - "door-closed", - "door-open", - "exclamation", - "eye", - "eye-slash", - "file", - "folder", - "folder-open", - "gas-pump", - "info", - "lightbulb", - "lock", - "lock-open", - "microphone", - "microphone-slash", - "minus", - "phone", - "phone-slash", - "plus", - "print", - "question", - "signal", - "star", - "star-half", - "thumbs-down", - "thumbs-up", - "toggle-off", - "toggle-on", - "unlock", - "user", - "user-slash", - "video", - "video-slash", - "volume-off", - "wifi" - ], - "Summer": ["anchor", "fish", "hotdog", "ice-cream", "lemon", "sun", "umbrella-beach", "water"], - "Tabletop Gaming": [ - "dice-d20", - "dice-d6", - "dragon", - "dungeon", - "hat-wizard", - "ring", - "scroll", - "skull-crossbones" - ], - "Toggle": [ - "bullseye", - "circle", - "microphone", - "microphone-slash", - "star", - "star-half", - "toggle-off", - "toggle-on", - "wifi" - ], - "Travel": [ - "archway", - "bed", - "bus", - "caravan", - "dumbbell", - "hotel", - "map", - "monument", - "passport", - "plane", - "plane-arrival", - "plane-departure", - "plane-slash", - "spa", - "suitcase", - "suitcase-rolling", - "taxi", - "tv", - "umbrella-beach", - "wine-glass" - ], - "Users & People": [ - "address-book", - "address-card", - "baby", - "bed", - "child", - "id-badge", - "id-card", - "people-arrows", - "person-booth", - "poo", - "power-off", - "restroom", - "street-view", - "user", - "user-astronaut", - "user-check", - "user-clock", - "user-graduate", - "user-injured", - "user-lock", - "user-minus", - "user-ninja", - "user-nurse", - "user-plus", - "user-secret", - "user-shield", - "user-slash", - "user-tag", - "user-tie", - "users", - "users-slash", - "wheelchair" - ], - "Vehicles": [ - "baby-carriage", - "bicycle", - "bus", - "car", - "car-side", - "helicopter", - "horse", - "motorcycle", - "paper-plane", - "plane", - "plane-slash", - "rocket", - "ship", - "sleigh", - "snowplow", - "taxi", - "tractor", - "train", - "truck", - "truck-monster", - "truck-pickup", - "wheelchair" - ], - "Weather": [ - "bolt", - "cloud", - "cloud-meatball", - "cloud-moon", - "cloud-moon-rain", - "cloud-rain", - "cloud-showers-heavy", - "cloud-sun", - "cloud-sun-rain", - "meteor", - "moon", - "poo-storm", - "rainbow", - "smog", - "snowflake", - "sun", - "temperature-high", - "temperature-low", - "umbrella", - "water", - "wind" - ], - "Winter": ["icicles", "igloo", "mitten", "snowplow"], - "Writing": [ - "blog", - "book", - "bookmark", - "envelope", - "envelope-open", - "eraser", - "file", - "folder", - "folder-open", - "keyboard", - "newspaper", - "paper-plane", - "paperclip", - "paragraph", - "pen", - "quote-left", - "quote-right", - "thumbtack" - ] - }, - "width": 512, - "height": 512 -} diff --git a/packages/app-admin/src/components/IconPicker/config/index.tsx b/packages/app-admin/src/components/IconPicker/config/index.tsx index 2b280c7075a..5573c8990f9 100644 --- a/packages/app-admin/src/components/IconPicker/config/index.tsx +++ b/packages/app-admin/src/components/IconPicker/config/index.tsx @@ -1,48 +1,113 @@ -import React, { useCallback, useMemo } from "react"; - +import React, { useMemo } from "react"; +import { + icons as fa6RegularIconsJson, + categories as fa6RegularCategoriesJson +} from "@iconify/json/json/fa6-regular.json"; +import { + icons as fa6SolidIconsJson, + categories as fa6SolidCategoriesJson +} from "@iconify/json/json/fa6-solid.json"; +import emojisJson from "unicode-emoji-json/data-by-emoji.json"; +import { Decorator } from "@webiny/react-composition"; import { createConfigurableComponent } from "@webiny/react-properties"; +import { IconPackProvider as IconPack } from "./IconPackProvider"; +import { IconType } from "./IconType"; +import { SimpleIconPlugin } from "../plugins/iconsPlugin"; +import { EmojiPlugin } from "../plugins/emojisPlugin"; +import { CustomIconPlugin } from "../plugins/customPlugin"; +import { Icon } from "../types"; + +type FaIconSet = { + [key: string]: { + body: string; + width?: number; + }; +}; -import { IconPackProvider, IconProps } from "./IconPackProvider"; +type FaCategorySet = { + [key: string]: string[]; +}; + +type EmojiSet = { + [key: string]: { + name: string; + slug: string; + group: string; + emoji_version: string; + unicode_version: string; + skin_tone_support: boolean; + }; +}; -const { icons: fa6RegularIcons, categories: fa6RegularCategories } = require("./fa6-regular.json"); -const { icons: fa6SolidIcons, categories: fa6SolidCategories } = require("./fa6-solid.json"); -const emojis = require("./emojis.json"); +const fa6RegularIcons: FaIconSet = fa6RegularIconsJson; +const fa6RegularCategories: FaCategorySet = fa6RegularCategoriesJson; +const fa6SolidIcons: FaIconSet = fa6SolidIconsJson; +const fa6SolidCategories: FaCategorySet = fa6SolidCategoriesJson; +const emojis: EmojiSet = emojisJson; const base = createConfigurableComponent("IconPicker"); -export const IconPickerConfig = Object.assign(base.Config, { IconPackProvider }); +export const IconPickerConfig = Object.assign(base.Config, { IconPack, IconType }); export const IconPickerWithConfig = base.WithConfig; +export const IconPickerConfigProvider: Decorator = Original => { + return function IconPickerConfigProvider({ children }) { + return ( + + {children} + + ); + }; +}; + +export interface IconPackLoader { + (): Promise; +} + +interface IconTypeInterface { + name: string; +} + +export { IconTypeInterface as IconType }; + interface IconPickerConfig { + iconTypes: IconTypeInterface[]; iconPackProviders: { - icons: IconProps[]; - initialize: () => Promise | void; - isLoading: boolean; - isInitialized: boolean; + name: string; + load: IconPackLoader; }[]; } +export interface IconPackProviderInterface { + name: string; + getIcons(): Promise; +} + +class IconPackProvider implements IconPackProviderInterface { + public readonly name: string; + private readonly loader: IconPackLoader; + + constructor(name: string, loader: IconPackLoader) { + this.name = name; + this.loader = loader; + } + + getIcons(): Promise { + return this.loader(); + } +} + export function useIconPickerConfig() { const config = base.useConfig(); const iconPackProviders = config.iconPackProviders || []; - const isLoading = iconPackProviders.some(iconProvider => iconProvider.isLoading); - - const initialize = useCallback(async () => { - await Promise.all( - iconPackProviders.map(async provider => { - if (!provider.isInitialized && !provider.isLoading) { - await provider.initialize(); - } - }) - ); - }, [iconPackProviders]); return useMemo( () => ({ - icons: iconPackProviders.map(provider => provider.icons || []).flat(), - initialize, - isLoading + iconTypes: config.iconTypes || [], + iconPackProviders: iconPackProviders.map( + provider => new IconPackProvider(provider.name, provider.load) + ) }), [config] ); @@ -50,103 +115,63 @@ export function useIconPickerConfig() { export const DefaultIcons = () => { return ( - - {/* Default Emojis Provider */} - - Object.keys(emojis).map(key => { - const emoji = emojis[key]; - return { - type: "emoji", - name: emoji.slug, - value: key, - category: emoji.group, - skinToneSupport: emoji.skin_tone_support - }; - }) - } - /> - {/* Default Icons Providers */} - - Object.keys(fa6RegularIcons).map(key => { - const icon = fa6RegularIcons[key]; - return { - type: "icon", - name: `regular_${key}`, - value: icon.body, - category: Object.keys(fa6RegularCategories).find(categoryKey => - fa6RegularCategories[categoryKey].includes(key) - ), - width: icon.width - }; - }) - } - /> - - Object.keys(fa6SolidIcons).map(key => { - const icon = fa6SolidIcons[key]; - return { - type: "icon", - name: `solid_${key}`, - value: icon.body, - category: Object.keys(fa6SolidCategories).find(categoryKey => - fa6SolidCategories[categoryKey].includes(key) - ), - width: icon.width - }; - }) - } - /> - - {/* Examples of custom icons/emojis providers and async provider */} - [{ type: "emoji", name: "testing_face", value: "๐Ÿ˜€" }]} - /> - [ - { - type: "icon", - name: "testing_book", - value: '' + <> + + {/* Default Emojis Provider */} + + Object.keys(emojis).map(key => { + const emoji = emojis[key]; + return { + type: "emoji", + name: emoji.slug, + value: key, + category: emoji.group, + skinToneSupport: emoji.skin_tone_support + }; + }) } - ]} - /> - { - const iconsData = await fetch( - "https://raw.githubusercontent.com/iconify/icon-sets/master/json/fa6-brands.json" - ) - .then(res => res.json()) - .catch(() => null); - - if (!iconsData) { - return []; + /> + {/* Default Icons Providers */} + + Object.keys(fa6RegularIcons).map(key => { + const icon = fa6RegularIcons[key]; + return { + type: "icon", + name: `regular_${key}`, + value: icon.body, + category: Object.keys(fa6RegularCategories).find(categoryKey => + fa6RegularCategories[categoryKey].includes(key) + ), + width: icon.width + }; + }) } - - const { icons, categories } = iconsData; - - return Object.keys(icons).map(key => { - const icon = icons[key]; - return { - type: "icon", - name: `brands_${key}`, - value: icon.body, - category: Object.keys(categories).find(categoryKey => - categories[categoryKey].includes(key) - ), - width: icon.width - }; - }); - }} - /> - + /> + + Object.keys(fa6SolidIcons).map(key => { + const icon = fa6SolidIcons[key]; + return { + type: "icon", + name: `solid_${key}`, + value: icon.body, + category: Object.keys(fa6SolidCategories).find(categoryKey => + fa6SolidCategories[categoryKey].includes(key) + ), + width: icon.width + }; + }) + } + /> + + + + + ); }; diff --git a/packages/app-admin/src/components/IconPicker/index.tsx b/packages/app-admin/src/components/IconPicker/index.tsx index 29dd8f337ff..4ec90fc9fd1 100644 --- a/packages/app-admin/src/components/IconPicker/index.tsx +++ b/packages/app-admin/src/components/IconPicker/index.tsx @@ -1 +1,5 @@ export { IconPicker } from "./IconPicker"; +export { IconPickerConfig } from "./config"; +export { useIcon } from "./IconRenderer"; +export { useIconPicker } from "./IconPickerPresenterProvider"; +export { useIconType } from "./config/IconType"; diff --git a/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx new file mode 100644 index 00000000000..a9d42f94f39 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx @@ -0,0 +1,133 @@ +import React from "react"; +import { useApolloClient } from "@apollo/react-hooks"; +import { observer } from "mobx-react-lite"; +import { css } from "emotion"; + +import { ButtonSecondary } from "@webiny/ui/Button"; + +import { FileManager, FileManagerFileItem } from "~/base/ui/FileManager"; +import { IconPickerTab } from "../IconPickerTab"; +import { useIcon } from ".."; +import { useIconPicker } from "../IconPickerPresenterProvider"; +import { IconPickerConfig } from "../config"; +import { ListCustomIconsQueryResponse, LIST_CUSTOM_ICONS } from "./graphql"; +import { Icon } from "../types"; + +const addButtonStyle = css` + &.mdc-button { + height: 40px; + } +`; + +const CustomIcon = () => { + const { icon } = useIcon(); + + return {icon.name}; +}; + +interface IconFilePickerProps { + onUpload: (file: FileManagerFileItem) => void; + onChange: (file: FileManagerFileItem) => void; +} + +const IconFilePicker = ({ onUpload, onChange }: IconFilePickerProps) => { + return ( + { + onUpload(file); + }} + onChange={onChange} + scope="scope:iconPicker" + accept={["image/svg+xml"]} + > + {({ showFileManager }) => ( + { + showFileManager(); + }} + > + Browse + + )} + + ); +}; + +const CustomIconTab = observer(() => { + const presenter = useIconPicker(); + + const onIconSelect = (icon: Icon) => { + presenter.setIcon(icon); + presenter.closeMenu(); + }; + + const onIconFileSelect = (file: FileManagerFileItem) => { + presenter.setIcon({ + type: "custom", + name: file.name || file.id, + value: file.src + }); + presenter.closeMenu(); + }; + + const onIconFileUpload = (file: FileManagerFileItem) => { + const icon = { + type: "custom", + name: file.name || file.id, + value: file.src + }; + + presenter.addIcon(icon); + presenter.setIcon(icon); + presenter.closeMenu(); + }; + + return ( + } + /> + ); +}); + +export const CustomIconPlugin = () => { + const client = useApolloClient(); + + return ( + + { + const { data: response } = await client.query({ + query: LIST_CUSTOM_ICONS, + variables: { + limit: 10000 + } + }); + + if (!response) { + throw new Error("Network error while listing custom icons."); + } + + const { data, error } = response.fileManager.listFiles; + + if (!data) { + throw new Error(error?.message || "Could not fetch custom icons."); + } + + return data.map(customIcon => ({ + type: "custom", + name: customIcon.name, + value: customIcon.src + })); + }} + /> + + } /> + } /> + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx new file mode 100644 index 00000000000..a557b30b9c4 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx @@ -0,0 +1,162 @@ +import React from "react"; +import { observer } from "mobx-react-lite"; +import styled from "@emotion/styled"; + +import { Menu } from "@webiny/ui/Menu"; + +import { useIcon } from ".."; +import { IconPickerTab } from "../IconPickerTab"; +import { IconProvider } from "../IconRenderer"; +import { useIconPicker } from "../IconPickerPresenterProvider"; +import { IconPickerConfig } from "../config"; +import { Icon } from "../types"; + +const SKIN_TONES = ["", "\u{1f3fb}", "\u{1f3fc}", "\u{1f3fd}", "\u{1f3fe}", "\u{1f3ff}"]; + +const EmojiStyled = styled.div` + color: black; + width: 32px; + height: 32px; + font-size: 26px; + line-height: 32px; +`; + +const SkinToneSelectWrapper = styled.div` + padding: 4px; + width: 32px; + flex-shrink: 0; + background: #fff; + border-radius: 1px; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); + display: inline-block; + cursor: pointer; +`; + +const SkinTonesGrid = styled.div` + display: grid; + gap: 4px; + padding: 4px; +`; + +const SkinTone = styled.div` + cursor: pointer; +`; + +interface Emoji extends Icon { + skinTone: string; + skinToneSupport: boolean; +} + +const Emoji = () => { + const { icon } = useIcon(); + + return {icon.skinTone ? icon.value + icon.skinTone : icon.value}; +}; + +interface SkinToneSelectProps { + icon: Icon | null; + hasSkinToneSupport: boolean; + onChange: (skinTone: string) => void; +} + +const SkinToneSelect = ({ icon, hasSkinToneSupport, onChange }: SkinToneSelectProps) => { + if (!icon || !isEmoji(icon)) { + return ; + } + + if (!hasSkinToneSupport) { + return ( + + + + + + ); + } + + return ( + + + + + + } + > + {({ closeMenu }) => ( + + {SKIN_TONES.map((skinTone, index) => ( + { + onChange(skinTone); + closeMenu(); + }} + > + + + + + ))} + + )} + + ); +}; + +/** + * @see https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates + */ +const isEmoji = (icon: Icon | null): icon is Emoji => { + if (!icon) { + return false; + } + return icon.type === "emoji"; +}; + +const EmojiTab = observer(() => { + const presenter = useIconPicker(); + const { selectedIcon } = presenter.vm; + + const onSkinToneChange = (skinTone: string) => { + if (isEmoji(selectedIcon)) { + presenter.setIcon({ ...selectedIcon, skinTone }); + presenter.closeMenu(); + } else { + presenter.closeMenu(); + } + }; + + const onIconSelect = (icon: Icon) => { + presenter.setIcon(icon); + presenter.closeMenu(); + }; + + const hasSkinToneSupport = isEmoji(selectedIcon) ? selectedIcon.skinToneSupport : false; + + return ( + + } + /> + ); +}); + +export const EmojiPlugin = () => { + return ( + + + } /> + } /> + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/config/graphql.ts b/packages/app-admin/src/components/IconPicker/plugins/graphql.ts similarity index 54% rename from packages/app-admin/src/components/IconPicker/config/graphql.ts rename to packages/app-admin/src/components/IconPicker/plugins/graphql.ts index 1236781dd80..b4be94766f0 100644 --- a/packages/app-admin/src/components/IconPicker/config/graphql.ts +++ b/packages/app-admin/src/components/IconPicker/plugins/graphql.ts @@ -2,9 +2,9 @@ import gql from "graphql-tag"; /** * ########################### - * List Icon Files Query Response + * List Custom Icons Query Response */ -export interface ListIconFilesQueryResponse { +export interface ListCustomIconsQueryResponse { fileManager: { listFiles: { data: [{ name: string; src: string }] | null; @@ -13,15 +13,20 @@ export interface ListIconFilesQueryResponse { }; } -export const LIST_ICON_FILES = gql` - query ListIconFiles { +export const LIST_CUSTOM_ICONS = gql` + query ListCustomIcons($limit: Int!) { fileManager { - listFiles(where: { tags_contains: "scope:iconPicker" }) { + listFiles(where: { tags_startsWith: "scope:iconPicker" }, limit: $limit) { data { name src tags } + error { + code + data + message + } } } } diff --git a/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx new file mode 100644 index 00000000000..49ad0c27428 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx @@ -0,0 +1,105 @@ +import React, { useState, useEffect } from "react"; +import { observer } from "mobx-react-lite"; +import styled from "@emotion/styled"; + +import { ColorPicker } from "@webiny/ui/ColorPicker"; +import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; + +import { useIcon } from ".."; +import { IconPickerTab } from "../IconPickerTab"; +import { useIconPicker } from "../IconPickerPresenterProvider"; +import { IconPickerConfig } from "../config"; +import { Icon } from "../types"; + +interface SimpleIcon extends Icon { + color: string; +} + +const IconSvg = () => { + const { icon } = useIcon(); + + return ( + + ); +}; + +interface IconColorPickerProps { + color: string; + onChange: (value: string) => void; +} + +const IconColorPicker = ({ color, onChange }: IconColorPickerProps) => { + return ( + + {({ value, onChange }) => } + + ); +}; + +const Color = styled.span<{ color: string }>` + color: ${({ color }) => color}; +`; + +/** + * @see https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates + */ +const isSimpleIcon = (icon: Icon | null): icon is SimpleIcon => { + if (!icon) { + return false; + } + return icon.type === "icon"; +}; + +const IconTab = observer(() => { + const presenter = useIconPicker(); + const { selectedIcon } = presenter.vm; + + const [color, setColor] = useState("inherit"); + + useEffect(() => { + if (color === "inherit" && isSimpleIcon(selectedIcon)) { + setColor(selectedIcon.color); + } + }, [selectedIcon]); + + const onColorChange = (color: string) => { + setColor(color); + if (isSimpleIcon(selectedIcon)) { + presenter.setIcon({ ...selectedIcon, color }); + } else { + presenter.closeMenu(); + } + }; + + const onIconSelect = (icon: Icon) => { + // Set icon and assign current color. + presenter.setIcon({ ...icon, color }); + presenter.closeMenu(); + }; + + return ( + {cell}} + actions={} + /> + ); +}); + +export const SimpleIconPlugin = () => { + return ( + + + } /> + } /> + + + ); +}; diff --git a/packages/app-admin/src/components/IconPicker/types.ts b/packages/app-admin/src/components/IconPicker/types.ts new file mode 100644 index 00000000000..f0dc34f774b --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/types.ts @@ -0,0 +1,46 @@ +import { ReactNode } from "react"; + +import { Plugin } from "@webiny/plugins/types"; + +/** + * We want to have an abstract type, which does not define specifics of each possible icon (like color or skin tone). + */ +export type Icon = { + type: "icon" | "emoji" | "custom" | string; + name: string; + value: string; + [key: string]: any; +}; + +export type IconPickerTabProps = { + label: string; + rows: IconPickerGridRow[]; + value: Icon | null; + onChange: (icon: Icon, close?: boolean) => void; + filter: string; + onFilterChange: (value: string) => void; + color: string; + onColorChange: (value: string) => void; + checkSkinToneSupport: (icon: Icon) => boolean; + children?: ReactNode; +}; + +export type IconPickerPlugin = Plugin & { + type: "admin-icon-picker"; + name: string; + iconType: string; + renderIcon: (icon: Icon, size: number) => JSX.Element; + renderTab: (props: IconPickerTabProps) => ReactNode; +}; + +type IconsRow = { + type: "icons"; + icons: Icon[]; +}; + +type CategoryNameRow = { + type: "category-name"; + name: string; +}; + +export type IconPickerGridRow = IconsRow | CategoryNameRow; diff --git a/packages/app-admin/src/index.ts b/packages/app-admin/src/index.ts index 314046086c8..5a110423d9b 100644 --- a/packages/app-admin/src/index.ts +++ b/packages/app-admin/src/index.ts @@ -41,6 +41,7 @@ export { SingleImageUploadProps } from "./components/SingleImageUpload"; export { LexicalEditor } from "./components/LexicalEditor/LexicalEditor"; +export * from "./components/IconPicker"; export { FileManager, FileManagerRenderer } from "./base/ui/FileManager"; export type { diff --git a/packages/app-admin/src/types.ts b/packages/app-admin/src/types.ts index dec109fba2c..f0d251d668f 100644 --- a/packages/app-admin/src/types.ts +++ b/packages/app-admin/src/types.ts @@ -3,6 +3,8 @@ import { Plugin } from "@webiny/plugins/types"; import { ApolloClient } from "apollo-client"; import { ItemProps, MenuProps, SectionProps } from "~/plugins/MenuPlugin"; +export { Icon } from "~/components/IconPicker/types"; + export type AdminGlobalSearchPlugin = Plugin & { type: "admin-global-search"; label: string; diff --git a/packages/ui/src/ColorPicker/ColorPicker.tsx b/packages/ui/src/ColorPicker/ColorPicker.tsx index b1c88e779ec..894b4400674 100644 --- a/packages/ui/src/ColorPicker/ColorPicker.tsx +++ b/packages/ui/src/ColorPicker/ColorPicker.tsx @@ -59,10 +59,29 @@ interface ColorPickerProps extends FormComponentProps { * Use ColorPicker component to display a list of choices, once the handler is triggered. */ class ColorPicker extends React.Component { + colorPickerRef = React.createRef(); + public override state = { showColorPicker: false }; + public override componentDidMount() { + document.addEventListener("click", this.handleClickOutside); + } + + public override componentWillUnmount() { + document.removeEventListener("click", this.handleClickOutside); + } + + handleClickOutside = (event: MouseEvent) => { + if ( + this.colorPickerRef.current && + !this.colorPickerRef.current.contains(event.target as Node) + ) { + this.setState({ showColorPicker: false }); + } + }; + handleClick = () => { this.setState({ showColorPicker: !this.state.showColorPicker }); }; @@ -89,7 +108,7 @@ class ColorPicker extends React.Component { const { isValid: validationIsValid, message: validationMessage } = validation || {}; return ( -
+
{label && (
void; +}; + type MenuProps = RmwcMenuProps & { // One or more MenuItem components. - children: React.ReactNode; + children: React.ReactNode | ((props: MenuChildrenFunctionProps) => React.ReactNode); // A handler which triggers the menu, eg. button or link. handle?: React.ReactElement; @@ -49,79 +53,78 @@ type MenuProps = RmwcMenuProps & { "data-testid"?: string; }; -interface MenuState { - menuIsOpen: boolean; -} - /** * Use Menu component to display a list of choices, once the handler is triggered. */ -class Menu extends React.Component { - static defaultProps: Partial = { - anchor: "topStart" - }; - - public override state: MenuState = { - menuIsOpen: false - }; - - private readonly openMenu = () => { - if (this.props.disabled !== true) { - this.setState({ menuIsOpen: true }, () => this.props.onOpen && this.props.onOpen()); +const Menu = (props: MenuProps) => { + const { + children, + handle, + anchor = "topStart", + className, + disabled, + onOpen, + onClose, + onSelect, + open, + renderToPortal + } = props; + + const [menuIsOpen, setMenuIsOpen] = useState(false); + + useEffect(() => { + if (typeof open === "boolean") { + setMenuIsOpen(open); } - }; - - private readonly closeMenu = () => { - this.setState({ menuIsOpen: false }, () => this.props.onClose && this.props.onClose()); - }; - - private readonly renderMenuWithPortal = () => { - return ( - - {this.props.children} - - ); - }; - - private readonly renderCustomContent = () => { - const { children } = this.props; - return ( - - {typeof children === "function" - ? children({ closeMenu: this.closeMenu }) - : children} - - ); - }; - - private readonly renderMenuContent = () => { - return Array.isArray(this.props.children) - ? this.renderMenuWithPortal() - : this.renderCustomContent(); - }; - - public override render(): React.ReactNode { - return ( - - {this.renderMenuContent()} - {this.props.handle && - React.cloneElement(this.props.handle, { onClick: this.openMenu })} - - ); - } -} + }, [open]); + + const openMenu = useCallback(() => { + if (disabled) { + return; + } + + setMenuIsOpen(true); + + if (onOpen) { + onOpen(); + } + }, [disabled, onOpen]); + + const closeMenu = useCallback(() => { + setMenuIsOpen(false); + + if (onClose) { + onClose(); + } + }, [onClose]); + + const renderMenuWithPortal = () => ( + + {children} + + ); + + const renderCustomContent = () => ( + + {typeof children === "function" ? children({ closeMenu }) : children} + + ); + + return ( + + {Array.isArray(children) ? renderMenuWithPortal() : renderCustomContent()} + {handle && React.cloneElement(handle, { onClick: openMenu })} + + ); +}; const MenuDivider: React.FC = () => { return
  • ; diff --git a/tsconfig.build.json b/tsconfig.build.json index 28a625c95a6..d5241206204 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -7,6 +7,7 @@ "moduleResolution": "node", "module": "esnext", "lib": ["esnext", "dom", "dom.iterable"], + "resolveJsonModule": true, "esModuleInterop": true, "declaration": true, "composite": true, diff --git a/yarn.lock b/yarn.lock index 876c12fed67..4c09de04f56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6435,6 +6435,23 @@ __metadata: languageName: node linkType: hard +"@iconify/json@npm:^2.2.142": + version: 2.2.142 + resolution: "@iconify/json@npm:2.2.142" + dependencies: + "@iconify/types": "*" + pathe: ^1.1.0 + checksum: b6bb18dd28d0038e1f88b1f4e1b5b3e1e4013fc9f9ed8a9711439bfbe4abfda929a28e24fa68bef43b5666bdc2947ffd1fb5b88ef7b86d6fd49cb0c0ee2a20d8 + languageName: node + linkType: hard + +"@iconify/types@npm:*": + version: 2.0.0 + resolution: "@iconify/types@npm:2.0.0" + checksum: 029f58542c160e9d4a746869cf2e475b603424d3adf3994c5cc8d0406c47e6e04a3b898b2707840c1c5b9bd5563a1660a34b110d89fce43923baca5222f4e597 + languageName: node + linkType: hard + "@icons/material@npm:^0.2.4": version: 0.2.4 resolution: "@icons/material@npm:0.2.4" @@ -15314,6 +15331,7 @@ __metadata: "@editorjs/editorjs": ^2.19.0 "@emotion/react": ^11.10.6 "@emotion/styled": ^11.10.6 + "@iconify/json": ^2.2.142 "@material-design-icons/svg": ^0.14.3 "@svgr/webpack": ^6.1.1 "@types/bytes": ^3.1.1 @@ -15354,6 +15372,7 @@ __metadata: is-hotkey: ^0.1.3 lodash: ^4.17.11 mobx: ^6.9.0 + mobx-react-lite: ^3.4.3 prop-types: ^15.7.2 react: 17.0.2 react-dom: 17.0.2 @@ -15364,6 +15383,7 @@ __metadata: store: ^2.0.12 ttypescript: ^1.5.12 typescript: 4.7.4 + unicode-emoji-json: ^0.4.0 languageName: unknown linkType: soft @@ -36317,6 +36337,13 @@ __metadata: languageName: node linkType: hard +"pathe@npm:^1.1.0": + version: 1.1.1 + resolution: "pathe@npm:1.1.1" + checksum: 34ab3da2e5aa832ebc6a330ffe3f73d7ba8aec6e899b53b8ec4f4018de08e40742802deb12cf5add9c73b7bf719b62c0778246bd376ca62b0fb23e0dde44b759 + languageName: node + linkType: hard + "pbkdf2@npm:^3.0.3": version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" @@ -44056,6 +44083,13 @@ __metadata: languageName: node linkType: hard +"unicode-emoji-json@npm:^0.4.0": + version: 0.4.0 + resolution: "unicode-emoji-json@npm:0.4.0" + checksum: 3c70df3d004d06f7f6efbda0b4935646027e4599389ccc508ccf20e6dd1e69897822a52769e33cf5b6f7c55b467587f2a8f10394b70cdc3f83deec92065c2ebe + languageName: node + linkType: hard + "unicode-match-property-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-match-property-ecmascript@npm:2.0.0" From cd5d2867e0ddec2e2e9c7625ce18ac1708bc7ee4 Mon Sep 17 00:00:00 2001 From: Vitalii Nobis <77202393+neatbyte-vnobis@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:45:28 +0300 Subject: [PATCH 7/7] refactor: replace Icon Picker (#3814) --- apps/api/graphql/src/test.ts | 30 +- .../contentEntry/contentEntries.disabled.js | 9 +- .../searchSortAndFilterEntries.disabled.js | 9 +- .../contentModel/searchSortModels.cy.js | 9 +- .../admin/pageBuilder/blocks/pageBlocks.cy.ts | 24 +- .../blocks/pageBlocksExportImport.cy.ts | 18 +- .../blocks/pageBlocksExportImport.cy.ts | 18 +- .../__tests__/utils/useGraphQlHandler.ts | 6 +- packages/api-aco/src/createAcoModels.ts | 6 +- .../__tests__/graphql/mocks/access/plugins.ts | 6 +- .../api-apw/__tests__/utils/cms.helpers.ts | 6 +- .../src/storageOperations/models/index.ts | 6 +- .../createFileManagerPlugins.ts | 6 +- .../__tests__/converters/mocks/group.ts | 6 +- .../__tests__/graphql/index/create.test.ts | 6 +- .../src/definitions/group.ts | 2 +- .../src/definitions/model.ts | 2 +- .../src/definitions/group.ts | 2 +- .../src/definitions/model.ts | 2 +- .../__tests__/contentAPI/aco/setup/model.ts | 6 +- .../__tests__/contentAPI/benchmark.test.ts | 6 +- .../contentAPI/cmsEndpointAccess.test.ts | 6 +- .../contentAPI/cmsEntryStatus.test.ts | 6 +- .../mocks/field.dynamicZone.ts | 6 +- .../cmsEntryValidation/mocks/structure.ts | 6 +- .../contentAPI/contentEntryHooks.test.ts | 6 +- .../contentAPI/contentEntryMetaField.test.ts | 6 +- .../contentAPI/contentModel.clone.test.ts | 18 +- .../contentModel.crud.defaultFields.test.ts | 6 +- .../contentModel.crud.modelId.test.ts | 6 +- .../contentModel.crud.noFieldPlugin.test.ts | 6 +- .../contentModel.crud.private.test.ts | 18 +- ...contentModel.crud.reservedModelIds.test.ts | 6 +- .../contentAPI/contentModel.crud.test.ts | 36 +- .../contentModel.crud.uniqueModelId.test.ts | 6 +- .../contentAPI/contentModelGroup.crud.test.ts | 71 ++-- .../contentAPI/deepNestedObject/model.ts | 6 +- .../contentAPI/export.structure.test.ts | 18 +- .../contentAPI/fieldValidations.test.ts | 6 +- .../contentAPI/import.structure.test.ts | 72 +++- .../contentAPI/latestEntries.test.ts | 6 +- .../contentAPI/mocks/contentModelGroup.ts | 6 +- .../mocks/exportedGroupsAndModels.ts | 48 ++- .../mocks/pageWithDynamicZonesModel.ts | 66 +++- .../__tests__/contentAPI/model.delete.test.ts | 6 +- .../contentAPI/multipleValues.test.ts | 6 +- .../contentAPI/pluginsContentModels.test.ts | 18 +- .../contentAPI/predefinedValues.test.ts | 6 +- .../contentAPI/republish.entries.test.ts | 6 +- .../resolvers.apiKey.manage.test.ts | 6 +- .../contentAPI/resolvers.apiKey.read.test.ts | 6 +- .../contentAPI/resolvers.manage.test.ts | 6 +- .../contentAPI/resolvers.read.test.ts | 6 +- .../contentAPI/richTextField.test.ts | 6 +- .../mocks/fieldIdStorageConverter.ts | 12 +- .../__tests__/filtering/product/init.ts | 6 +- .../__tests__/graphql/helpers.ts | 6 +- .../__tests__/mainAPI/settings.crud.test.ts | 4 +- .../__tests__/storageOperations/helpers.ts | 6 +- .../testHelpers/graphql/contentModel.ts | 6 +- .../__tests__/testHelpers/setup.ts | 10 +- .../testHelpers/useTestModelHandler.ts | 6 +- .../src/crud/contentModel/validation.ts | 17 +- .../src/crud/contentModelGroup/validation.ts | 8 +- .../api-headless-cms/src/crud/system.crud.ts | 7 +- .../src/export/graphql/index.ts | 4 +- .../src/graphql/schema/contentModelGroups.ts | 4 +- .../src/graphql/schema/contentModels.ts | 8 +- packages/api-headless-cms/src/types.ts | 19 +- packages/api-mailer/src/crud/group.ts | 6 +- .../src/import/process/blocks/importBlock.ts | 6 +- .../src/definitions/blockCategoryEntity.ts | 2 +- .../src/definitions/blockCategoryEntity.ts | 2 +- .../__tests__/graphql/blockCategories.test.ts | 58 ++- .../graphql/blockCategoriesSecurity.test.ts | 59 ++- .../lifecycleEvents.blockCategories.test.ts | 18 +- .../lifecycleEvents.pageBlocks.test.ts | 6 +- .../__tests__/graphql/pageBlocks.test.ts | 24 +- .../graphql/pageBlocksSecurity.test.ts | 48 ++- .../__tests__/graphql/pageTemplates.test.ts | 6 +- .../__tests__/graphql/pages.test.ts | 6 +- .../crud/blockCategories/validation.ts | 16 +- .../src/graphql/elementProcessors/icon.ts | 3 +- .../graphql/graphql/blockCategories.gql.ts | 4 +- .../api-page-builder/src/graphql/types.ts | 3 +- packages/api-page-builder/src/types.ts | 9 +- .../IconPicker/IconPicker.styles.ts | 30 +- .../src/components/IconPicker/IconPicker.tsx | 15 +- .../IconPicker/IconPickerComponent.tsx | 39 +- .../IconPicker/IconPickerPresenter.ts | 10 +- .../components/IconPicker/IconPickerTab.tsx | 23 +- .../components/IconPicker/IconRenderer.tsx | 8 +- .../src/components/IconPicker/defaultIcon.ts | 6 + .../src/components/IconPicker/index.tsx | 1 + .../IconPicker/plugins/customPlugin.tsx | 30 +- .../IconPicker/plugins/emojisPlugin.tsx | 32 +- .../IconPicker/plugins/iconsPlugin.tsx | 20 +- .../src/components/IconPicker/types.ts | 4 + packages/app-headless-cms-common/package.json | 2 +- .../src/types/index.ts | 24 +- .../src/types/model.ts | 5 +- .../tsconfig.build.json | 1 + .../app-headless-cms-common/tsconfig.json | 9 +- packages/app-headless-cms/package.json | 7 - .../src/admin/components/IconPicker.tsx | 252 ------------- .../admin/menus/ContentGroupsMenuItems.tsx | 17 +- .../components/GeneralSettings.tsx | 2 +- .../dynamicZone/MultiValueDynamicZone.tsx | 4 +- .../dynamicZone/SingleValueDynamicZone.tsx | 4 +- .../dynamicZone/TemplateCard.tsx | 7 +- .../dynamicZone/TemplateIcon.tsx | 12 - .../ref/advanced/components/entry/Image.tsx | 29 +- .../options/OptionsModelListItem.tsx | 25 +- .../plugins/fieldValidators/dynamicZone.tsx | 38 +- .../dynamicZone/DynamicZoneTemplate.tsx | 7 +- .../fields/dynamicZone/TemplateDialog.tsx | 5 +- .../src/admin/plugins/icons.tsx | 51 --- .../src/admin/plugins/index.ts | 2 - .../ContentModelGroupsForm.tsx | 10 +- .../contentModels/CloneContentModelDialog.tsx | 2 +- .../contentModels/ContentModelsDataList.tsx | 25 +- .../contentModels/NewContentModelDialog.tsx | 2 +- .../src/renderers/button.tsx | 31 +- .../src/renderers/icon.tsx | 15 +- packages/app-page-builder/package.json | 7 - .../src/admin/plugins/icons/index.tsx | 55 --- .../src/admin/plugins/index.ts | 4 +- .../admin/utils/createBlockCategoryPlugin.tsx | 18 +- .../BlockCategoriesDataList.tsx | 4 +- .../BlockCategories/BlockCategoriesForm.tsx | 13 +- .../views/BlockCategories/IconPicker.tsx | 238 ------------ .../PageBlocks/BlocksByCategoriesDataList.tsx | 6 +- .../elementVariables/basic/icon/index.ts | 12 +- .../src/editor/components/IconPicker.tsx | 345 ------------------ .../variable/IconVariableInput.tsx | 39 +- .../elementVariables/basic/icon/index.tsx | 5 +- .../elements/button/ButtonSettings.tsx | 83 +++-- .../elements/button/ButtonSettingsV2.tsx | 87 +++-- .../plugins/elements/button/IconPicker.tsx | 27 -- .../plugins/elements/icon/IconSettings.tsx | 78 ++-- .../editor/plugins/elements/icon/PeIcon.tsx | 5 +- .../editor/plugins/elements/icon/index.tsx | 9 +- .../plugins/elements/utils/iconUtils.ts | 84 +---- packages/app-page-builder/src/types.ts | 28 +- packages/ui/src/ColorPicker/ColorPicker.tsx | 21 +- yarn.lock | 80 +--- 146 files changed, 1338 insertions(+), 1809 deletions(-) create mode 100644 packages/app-admin/src/components/IconPicker/defaultIcon.ts delete mode 100644 packages/app-headless-cms/src/admin/components/IconPicker.tsx delete mode 100644 packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.tsx delete mode 100644 packages/app-headless-cms/src/admin/plugins/icons.tsx delete mode 100644 packages/app-page-builder/src/admin/plugins/icons/index.tsx delete mode 100644 packages/app-page-builder/src/admin/views/BlockCategories/IconPicker.tsx delete mode 100644 packages/app-page-builder/src/editor/components/IconPicker.tsx delete mode 100644 packages/app-page-builder/src/editor/plugins/elements/button/IconPicker.tsx diff --git a/apps/api/graphql/src/test.ts b/apps/api/graphql/src/test.ts index 62d81f9ad99..5a417c0f55a 100644 --- a/apps/api/graphql/src/test.ts +++ b/apps/api/graphql/src/test.ts @@ -9,7 +9,11 @@ const createTestGroup = () => { name: "Homepage", description: "Homepage content model group", slug: "homepage", - icon: "fas/house" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); }; const createTestModel = () => { @@ -49,7 +53,11 @@ const createTestModel = () => { templates: [ { description: "List of customer reviews", - icon: "far/face-smile", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, id: "homepage_customer_reviews", name: "CustomerReviews", fields: [ @@ -148,7 +156,11 @@ const createTestModel = () => { }, { description: "Hero component", - icon: "fas/bolt-lightning", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, id: "homepage_hero", name: "Hero", fields: [ @@ -200,7 +212,11 @@ const createTestModel = () => { }, { description: "Compare the good and bad", - icon: "fas/table", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, id: "homepage_compare_table", name: "CompareTable", fields: [ @@ -309,7 +325,11 @@ const createTestModel = () => { }, { description: "List of teachers on the homepage", - icon: "fas/chalkboard-teacher", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, id: "homepage_teachers", name: "Teachers", fields: [ diff --git a/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/contentEntries.disabled.js b/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/contentEntries.disabled.js index 13ea988ad00..ab236e4a2f4 100644 --- a/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/contentEntries.disabled.js +++ b/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/contentEntries.disabled.js @@ -16,7 +16,14 @@ describe("Headless CMS - Content Entries", () => { before(() => { return cy .cmsCreateContentModelGroup({ - data: { name: uniqid("Group-"), icon: "fas/star" } + data: { + name: uniqid("Group-"), + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } + } }) .then(data => { group = data; diff --git a/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/searchSortAndFilterEntries.disabled.js b/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/searchSortAndFilterEntries.disabled.js index eb142a5abbd..9b9572b1ef3 100644 --- a/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/searchSortAndFilterEntries.disabled.js +++ b/cypress-tests/cypress/e2e/admin/headlessCms/contentEntry/searchSortAndFilterEntries.disabled.js @@ -66,7 +66,14 @@ context("Search, Sort and Filter Content Entries", () => { // Runs once before all tests in the block before(() => { cy.cmsCreateContentModelGroup({ - data: { name: uniqid("Group-"), icon: "fas/star" } + data: { + name: uniqid("Group-"), + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } + } }).then(group => { createdGroup = group; cy.cmsCreateContentModel({ diff --git a/cypress-tests/cypress/e2e/admin/headlessCms/contentModel/searchSortModels.cy.js b/cypress-tests/cypress/e2e/admin/headlessCms/contentModel/searchSortModels.cy.js index f931485a8ae..84d5a505ad7 100644 --- a/cypress-tests/cypress/e2e/admin/headlessCms/contentModel/searchSortModels.cy.js +++ b/cypress-tests/cypress/e2e/admin/headlessCms/contentModel/searchSortModels.cy.js @@ -12,7 +12,14 @@ context("Headless CMS - Search and Sort Content Models", () => { before(() => { // Create content model group cy.cmsCreateContentModelGroup({ - data: { name: uniqid("Testing-"), icon: "fas/star" } + data: { + name: uniqid("Testing-"), + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } + } }).then(data => { contentModelGroup = data; // Create first content model diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts index c5430410ef8..bb3efd3010f 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts @@ -17,28 +17,44 @@ context("Page Builder - Blocks", () => { const blockCategoryData1 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData2 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData3 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData4 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts index ead2e937481..a23efc0aa0e 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts @@ -19,21 +19,33 @@ context("Page Builder - Blocks Export/Import", () => { const blockCategoryData1 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData2 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData3 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; diff --git a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts b/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts index cb3fed5cd1b..ddf28804ede 100644 --- a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts +++ b/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts @@ -19,21 +19,33 @@ context("Page Builder - Blocks Export/Import", () => { const blockCategoryData1 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData2 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; const blockCategoryData3 = { name: nanoid(10).toLowerCase(), slug: nanoid(10).toLowerCase(), - icon: "icon-name", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: nanoid(10).toLowerCase() }; diff --git a/packages/api-aco/__tests__/utils/useGraphQlHandler.ts b/packages/api-aco/__tests__/utils/useGraphQlHandler.ts index b28b3f4f865..781ffc1b70d 100644 --- a/packages/api-aco/__tests__/utils/useGraphQlHandler.ts +++ b/packages/api-aco/__tests__/utils/useGraphQlHandler.ts @@ -286,7 +286,11 @@ export const useGraphQlHandler = (params: UseGQLHandlerParams = {}) => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }) diff --git a/packages/api-aco/src/createAcoModels.ts b/packages/api-aco/src/createAcoModels.ts index f9e53cd5966..e017a811cca 100644 --- a/packages/api-aco/src/createAcoModels.ts +++ b/packages/api-aco/src/createAcoModels.ts @@ -16,7 +16,11 @@ export const createAcoModels = (context: CmsContext) => { slug: "aco", name: "ACO", description: "Group for Advanced Content Organisation and Search", - icon: "fas/folder", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, isPrivate: true }); diff --git a/packages/api-apw/__tests__/graphql/mocks/access/plugins.ts b/packages/api-apw/__tests__/graphql/mocks/access/plugins.ts index f78840b069f..c3f42a71370 100644 --- a/packages/api-apw/__tests__/graphql/mocks/access/plugins.ts +++ b/packages/api-apw/__tests__/graphql/mocks/access/plugins.ts @@ -5,7 +5,11 @@ export const accessTestGroup = createCmsGroup({ slug: "accessTestGroup", name: "Access Test Group", description: "", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); export const accessTestModel = createCmsModel({ diff --git a/packages/api-apw/__tests__/utils/cms.helpers.ts b/packages/api-apw/__tests__/utils/cms.helpers.ts index cee097ec49c..aa874e4c7a6 100644 --- a/packages/api-apw/__tests__/utils/cms.helpers.ts +++ b/packages/api-apw/__tests__/utils/cms.helpers.ts @@ -7,7 +7,11 @@ const createGroupData = () => { return { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" }; }; diff --git a/packages/api-apw/src/storageOperations/models/index.ts b/packages/api-apw/src/storageOperations/models/index.ts index 2ac358cdba5..1750d13d2aa 100644 --- a/packages/api-apw/src/storageOperations/models/index.ts +++ b/packages/api-apw/src/storageOperations/models/index.ts @@ -43,7 +43,11 @@ export const createApwModels = (context: CmsContext) => { slug: "apw", name: "APW", description: "Group for Advanced Publishing Workflow", - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, isPrivate: true }); diff --git a/packages/api-file-manager/src/cmsFileStorage/createFileManagerPlugins.ts b/packages/api-file-manager/src/cmsFileStorage/createFileManagerPlugins.ts index 3abf20932d2..472f4371c16 100644 --- a/packages/api-file-manager/src/cmsFileStorage/createFileManagerPlugins.ts +++ b/packages/api-file-manager/src/cmsFileStorage/createFileManagerPlugins.ts @@ -10,7 +10,11 @@ export const createFileManagerPlugins = () => { slug: "fileManager", name: "File Manager", description: "Group for File Manager models", - icon: "fas/folder", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, isPrivate: true }); diff --git a/packages/api-headless-cms-ddb-es/__tests__/converters/mocks/group.ts b/packages/api-headless-cms-ddb-es/__tests__/converters/mocks/group.ts index a8e92f883c1..f2d07c6a313 100644 --- a/packages/api-headless-cms-ddb-es/__tests__/converters/mocks/group.ts +++ b/packages/api-headless-cms-ddb-es/__tests__/converters/mocks/group.ts @@ -4,7 +4,11 @@ export const createGroup = () => { return new CmsGroupPlugin({ id: "testing", name: "Testing", - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, slug: "testing", description: "" }); diff --git a/packages/api-headless-cms-ddb-es/__tests__/graphql/index/create.test.ts b/packages/api-headless-cms-ddb-es/__tests__/graphql/index/create.test.ts index c05425f09c1..91cefd78872 100644 --- a/packages/api-headless-cms-ddb-es/__tests__/graphql/index/create.test.ts +++ b/packages/api-headless-cms-ddb-es/__tests__/graphql/index/create.test.ts @@ -9,7 +9,11 @@ const setupGroup = async (context: CmsContext) => { return context.cms.createGroup({ name: "Test Group", description: "Test Group Description", - icon: "fa/fas", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, slug: "test-group" }); }; diff --git a/packages/api-headless-cms-ddb-es/src/definitions/group.ts b/packages/api-headless-cms-ddb-es/src/definitions/group.ts index af84c8c5c68..9c8a034136c 100644 --- a/packages/api-headless-cms-ddb-es/src/definitions/group.ts +++ b/packages/api-headless-cms-ddb-es/src/definitions/group.ts @@ -40,7 +40,7 @@ export const createGroupEntity = (params: CreateGroupEntityParams): Entity type: "string" }, icon: { - type: "string" + type: "map" }, createdBy: { diff --git a/packages/api-headless-cms-ddb-es/src/definitions/model.ts b/packages/api-headless-cms-ddb-es/src/definitions/model.ts index d6d3d8bc6ca..bf452337095 100644 --- a/packages/api-headless-cms-ddb-es/src/definitions/model.ts +++ b/packages/api-headless-cms-ddb-es/src/definitions/model.ts @@ -52,7 +52,7 @@ export const createModelEntity = (params: CreateModelEntityParams): Entity required: true }, icon: { - type: "string" + type: "map" }, description: { type: "string" diff --git a/packages/api-headless-cms-ddb/src/definitions/group.ts b/packages/api-headless-cms-ddb/src/definitions/group.ts index 5cb490ed924..d8ac2f488cc 100644 --- a/packages/api-headless-cms-ddb/src/definitions/group.ts +++ b/packages/api-headless-cms-ddb/src/definitions/group.ts @@ -40,7 +40,7 @@ export const createGroupEntity = (params: Params): Entity => { type: "string" }, icon: { - type: "string" + type: "map" }, createdBy: { diff --git a/packages/api-headless-cms-ddb/src/definitions/model.ts b/packages/api-headless-cms-ddb/src/definitions/model.ts index 19e2a80a9b1..d83713f2935 100644 --- a/packages/api-headless-cms-ddb/src/definitions/model.ts +++ b/packages/api-headless-cms-ddb/src/definitions/model.ts @@ -52,7 +52,7 @@ export const createModelEntity = (params: Params): Entity => { required: true }, icon: { - type: "string" + type: "map" }, description: { type: "string" diff --git a/packages/api-headless-cms/__tests__/contentAPI/aco/setup/model.ts b/packages/api-headless-cms/__tests__/contentAPI/aco/setup/model.ts index a7283311020..5bec6dd0e8a 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/aco/setup/model.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/aco/setup/model.ts @@ -5,7 +5,11 @@ export const createGroupPlugin = () => { name: "Group", slug: "group", description: "Group description", - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, id: "group" }); }; diff --git a/packages/api-headless-cms/__tests__/contentAPI/benchmark.test.ts b/packages/api-headless-cms/__tests__/contentAPI/benchmark.test.ts index 43279c83481..b295518af37 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/benchmark.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/benchmark.test.ts @@ -29,7 +29,11 @@ describe("benchmark points", () => { const data = { name: "My group", slug: "my-group", - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "My group description" }; const [result] = await createContentModelGroupMutation({ diff --git a/packages/api-headless-cms/__tests__/contentAPI/cmsEndpointAccess.test.ts b/packages/api-headless-cms/__tests__/contentAPI/cmsEndpointAccess.test.ts index ec6214f37f4..8a71fe98376 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/cmsEndpointAccess.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/cmsEndpointAccess.test.ts @@ -50,7 +50,11 @@ describe("Endpoint access", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryStatus.test.ts b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryStatus.test.ts index 6d9739aa421..b56f4fd2b50 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryStatus.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryStatus.test.ts @@ -36,7 +36,11 @@ describe("cms entry status filtering", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/field.dynamicZone.ts b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/field.dynamicZone.ts index 0fdfa1dd7e3..77888a48ded 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/field.dynamicZone.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/field.dynamicZone.ts @@ -53,7 +53,11 @@ export const createDynamicZoneField = (params: Partial = {}) = layout: createLayout(fields), name: "Hero #1", gqlTypeName: "Hero", - icon: "fas/flag", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "", id: "abcdefgh", fields, diff --git a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/structure.ts b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/structure.ts index 0bb3f6633ce..1820fe1bb42 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/structure.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/cmsEntryValidation/mocks/structure.ts @@ -23,7 +23,11 @@ export const createValidationStructure = (input: Partial name: "Validation structure", slug: "validationstructuregroup", description: "Validation structure group description", - icon: "fas/star" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); const group = cmsGroupPlugin.contentModelGroup; const model = createModel({ diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentEntryHooks.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentEntryHooks.test.ts index a47759eb212..a25dc96b4ef 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentEntryHooks.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentEntryHooks.test.ts @@ -25,7 +25,11 @@ describe("contentEntryHooks", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentEntryMetaField.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentEntryMetaField.test.ts index 44e1fd0a3d6..9b8dae308f4 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentEntryMetaField.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentEntryMetaField.test.ts @@ -48,7 +48,11 @@ describe("Content Entry Meta Field", () => { data: { name: "Default group", slug: "default-group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.clone.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.clone.test.ts index 89784c56634..dbd01b8dc5a 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.clone.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.clone.test.ts @@ -59,7 +59,11 @@ describe("content model - cloning", () => { data: { name: "Default group", slug: "default-group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); @@ -69,7 +73,11 @@ describe("content model - cloning", () => { data: { name: "Clone group", slug: "clone-group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); @@ -366,7 +374,11 @@ describe("content model - cloning", () => { data: { name: "Default group DE", slug: "default-group-de", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description DE" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.defaultFields.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.defaultFields.test.ts index 7e7b00f2eb4..19b292cda0f 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.defaultFields.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.defaultFields.test.ts @@ -19,7 +19,11 @@ describe("content model default fields", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.modelId.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.modelId.test.ts index faec8adf21d..f7c6c5416ef 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.modelId.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.modelId.test.ts @@ -17,7 +17,11 @@ describe("ContentModel modelId variations", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.noFieldPlugin.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.noFieldPlugin.test.ts index bdb6363e6a7..e1bd3e1431d 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.noFieldPlugin.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.noFieldPlugin.test.ts @@ -43,7 +43,11 @@ describe("content model test no field plugin", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.private.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.private.test.ts index d02e5fba352..fc3c19b4f1f 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.private.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.private.test.ts @@ -8,7 +8,11 @@ const privateGroup = new CmsGroupPlugin({ isPrivate: true, name: "Private Group", slug: "private-group", - icon: "pri/pri", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Private group description", id: "privateGroupId123456789" }); @@ -59,7 +63,11 @@ describe("Private Groups and Models", function () { name: "Blog", slug: "blog", description: "Blog group description", - icon: "def/def" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); }; const createShopGroup = () => { @@ -67,7 +75,11 @@ describe("Private Groups and Models", function () { name: "Shop", slug: "shop", description: "Shop group description", - icon: "def/def" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); }; diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.reservedModelIds.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.reservedModelIds.test.ts index 2ffd8ab3212..a3a8f30fcb7 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.reservedModelIds.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.reservedModelIds.test.ts @@ -15,7 +15,11 @@ describe("content model test reserved model ids", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.test.ts index dcc8ea1046a..3740babb118 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.test.ts @@ -59,7 +59,11 @@ describe("content model test", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); @@ -130,7 +134,11 @@ describe("content model test", () => { singularApiName: "TestContentModel", pluralApiName: "TestContentModels", group: contentModelGroup.id, - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); @@ -157,7 +165,11 @@ describe("content model test", () => { name: contentModelGroup.name, slug: contentModelGroup.slug }, - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }, error: null } @@ -211,7 +223,11 @@ describe("content model test", () => { description: "changed description", fields: [], layout: [], - icon: "fa/updated" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); @@ -220,7 +236,11 @@ describe("content model test", () => { name: "changed name", description: "changed description", savedOn: expect.stringMatching(/^20/), - icon: "fa/updated" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; expect(changedUpdateResponse).toEqual({ @@ -1386,7 +1406,11 @@ describe("content model test", () => { id: "a-custom-group-id", name: "My Group With ID", description: "A group with ID", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.uniqueModelId.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.uniqueModelId.test.ts index efbc1826a93..ecb2f56746e 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.uniqueModelId.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModel.crud.uniqueModelId.test.ts @@ -13,7 +13,11 @@ describe("content model test", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/contentModelGroup.crud.test.ts b/packages/api-headless-cms/__tests__/contentAPI/contentModelGroup.crud.test.ts index 3ff479266e4..c3079e41210 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/contentModelGroup.crud.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/contentModelGroup.crud.test.ts @@ -25,7 +25,11 @@ const createContentModelGroupData = ({ name: `${prefix}name${append}`, slug: toSlug(`${prefix}slug`), description: `${prefix}description${append}`, - icon: `${prefix}icon${append}` + icon: { + type: `emoji`, + name: `${prefix}icon${append}`, + value: `๐Ÿ‘` + } }; }; @@ -200,7 +204,11 @@ describe("Cms Group crud test", () => { id: "nonExistingIdUpdate", data: { name: "test", - icon: "test" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); expect(response).toEqual({ @@ -241,7 +249,11 @@ describe("Cms Group crud test", () => { name: "", slug: "slug", description: `description`, - icon: `icon` + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); expect(nameResponse).toEqual({ @@ -260,32 +272,6 @@ describe("Cms Group crud test", () => { } } }); - - const [iconResponse] = await createContentModelGroupMutation({ - data: { - name: "name", - slug: "slug", - description: `description`, - icon: "" - } - }); - - expect(iconResponse).toEqual({ - data: { - createContentModelGroup: { - data: null, - error: { - message: `Validation failed.`, - code: "VALIDATION_FAILED_INVALID_FIELDS", - data: { - invalidFields: { - icon: expect.any(Object) - } - } - } - } - } - }); }); test("error when trying to create a new content model group with no name or slug", async () => { @@ -293,7 +279,11 @@ describe("Cms Group crud test", () => { data: { name: "", description: "description", - icon: "" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); expect(response).toEqual({ @@ -305,8 +295,7 @@ describe("Cms Group crud test", () => { code: "VALIDATION_FAILED_INVALID_FIELDS", data: { invalidFields: { - name: expect.any(Object), - icon: expect.any(Object) + name: expect.any(Object) } } } @@ -320,7 +309,11 @@ describe("Cms Group crud test", () => { data: { name: "content model group", description: "description", - icon: "icon" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); @@ -329,7 +322,11 @@ describe("Cms Group crud test", () => { name: "content model group", slug: "content-model-group", description: "description", - icon: "icon" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); @@ -395,7 +392,11 @@ describe("Cms Group crud test", () => { id: "a-custom-group-id", name: "My Group With ID", description: "A group with ID", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const [response] = await createContentModelGroupMutation({ data diff --git a/packages/api-headless-cms/__tests__/contentAPI/deepNestedObject/model.ts b/packages/api-headless-cms/__tests__/contentAPI/deepNestedObject/model.ts index 9e3c3eb6cfe..e8a86233f97 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/deepNestedObject/model.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/deepNestedObject/model.ts @@ -6,7 +6,11 @@ export const createCarsModel = () => { id: "buyersguide", name: "BuyersGuide", slug: "buyers-guide", - icon: "fas/car", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Cars BuyersGuide Model" }), diff --git a/packages/api-headless-cms/__tests__/contentAPI/export.structure.test.ts b/packages/api-headless-cms/__tests__/contentAPI/export.structure.test.ts index 2d15d2a9f92..3272fc314e4 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/export.structure.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/export.structure.test.ts @@ -10,13 +10,21 @@ interface JsonResult { const groups: Omit[] = [ { - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, slug: "group-1", name: "Group 1", description: "Group 1 description" }, { - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, slug: "group-2", name: "Group 2", description: "Group 2 description" @@ -86,7 +94,11 @@ describe("export cms structure", () => { titleFieldId: model.titleFieldId, pluralApiName: model.pluralApiName, singularApiName: model.singularApiName, - icon: model.icon || "fa/fas", + icon: model.icon || { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: model.description || "" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/fieldValidations.test.ts b/packages/api-headless-cms/__tests__/contentAPI/fieldValidations.test.ts index 3c4719aa1c3..d4aeaadabb4 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/fieldValidations.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/fieldValidations.test.ts @@ -33,7 +33,11 @@ describe("fieldValidations", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/import.structure.test.ts b/packages/api-headless-cms/__tests__/contentAPI/import.structure.test.ts index 23827e2dbf1..09164d0feb7 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/import.structure.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/import.structure.test.ts @@ -40,7 +40,11 @@ describe("import cms structure", () => { id: "group-1", name: "Group 1", slug: "group-1", - icon: "fas/star", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Group 1 description" }; @@ -78,13 +82,21 @@ describe("import cms structure", () => { id: "group-1", slug: "", name: "Group 1", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const group2 = { id: "", slug: "group-2", name: "Group 2", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const [result] = await validateCmsStructureMutation({ @@ -140,14 +152,22 @@ describe("import cms structure", () => { id: "group-1-original", slug: "group-1", name: "Group 1 Original", - icon: "fa/fas", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "" }), createCmsGroup({ id: "group-2", slug: "group-2-original", name: "Group 2 Original", - icon: "fa/fas", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "" }) ] @@ -157,19 +177,31 @@ describe("import cms structure", () => { id: "group-1", slug: "group-1", name: "Group 1", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const group2 = { id: "group-2", slug: "group-2", name: "Group 2", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const group3 = { id: "group-3", slug: "group-3", name: "Group 3", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const [result] = await validateCmsStructureMutation({ @@ -230,13 +262,21 @@ describe("import cms structure", () => { id: "group-1", slug: "group-1", name: "Group 1", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const group2 = { id: "group-2", slug: "group-2", name: "Group 2", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const [result] = await validateCmsStructureMutation({ @@ -281,7 +321,11 @@ describe("import cms structure", () => { id: "group-1", slug: "group-1", name: "Group 1", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const model = { @@ -375,7 +419,11 @@ describe("import cms structure", () => { id: "group-1", slug: "group-1", name: "Group 1", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; const model = { diff --git a/packages/api-headless-cms/__tests__/contentAPI/latestEntries.test.ts b/packages/api-headless-cms/__tests__/contentAPI/latestEntries.test.ts index 8c2525a3b3c..10caa138b94 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/latestEntries.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/latestEntries.test.ts @@ -28,7 +28,11 @@ describe("latest entries", function () { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/mocks/contentModelGroup.ts b/packages/api-headless-cms/__tests__/contentAPI/mocks/contentModelGroup.ts index 45b0d0dafc4..52681996336 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/mocks/contentModelGroup.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/mocks/contentModelGroup.ts @@ -6,6 +6,10 @@ export const createContentModelGroup = (): CmsGroup => { name: "A sample content model group", slug: "a-sample-content-model-group", description: "This is a simple content model group example.", - icon: "fas/star" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }; }; diff --git a/packages/api-headless-cms/__tests__/contentAPI/mocks/exportedGroupsAndModels.ts b/packages/api-headless-cms/__tests__/contentAPI/mocks/exportedGroupsAndModels.ts index 108efba1f00..2ccb4b57492 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/mocks/exportedGroupsAndModels.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/mocks/exportedGroupsAndModels.ts @@ -7,14 +7,22 @@ export const exportedGroupsAndModels = { name: "Blog", slug: "blog", description: null, - icon: "fab/blogger-b" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }, { id: "64d4c105110b570008736516", name: "Machines", slug: "machines", description: null, - icon: "fas/location-dot" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } ], models: [ @@ -22,7 +30,11 @@ export const exportedGroupsAndModels = { modelId: "article", name: "Article", group: "64d4c105110b570008736515", - icon: "far/newspaper", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, singularApiName: "Article", pluralApiName: "Articles", fields: [ @@ -115,7 +127,11 @@ export const exportedGroupsAndModels = { modelId: "author", name: "Author", group: "64d4c105110b570008736515", - icon: "fas/person", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, singularApiName: "Author", pluralApiName: "Authors", fields: [ @@ -208,7 +224,11 @@ export const exportedGroupsAndModels = { modelId: "category", name: "Category", group: "64d4c105110b570008736515", - icon: "fas/location-dot", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, singularApiName: "Category", pluralApiName: "Categories", fields: [ @@ -238,7 +258,11 @@ export const exportedGroupsAndModels = { modelId: "machines", name: "Machines", group: "64d4c105110b570008736516", - icon: "fas/location-dot", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, singularApiName: "Machine", pluralApiName: "Machine", fields: [ @@ -274,7 +298,11 @@ export const createModels = () => { name: "Machines", slug: "machines", description: null, - icon: "fas/location-dot" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }), createCmsModel({ modelId: "machines", @@ -283,7 +311,11 @@ export const createModels = () => { id: "64d4c105110b570008736516", name: "Machines" }, - icon: "fas/location-dot", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, singularApiName: "Machine", pluralApiName: "Machines", description: "", diff --git a/packages/api-headless-cms/__tests__/contentAPI/mocks/pageWithDynamicZonesModel.ts b/packages/api-headless-cms/__tests__/contentAPI/mocks/pageWithDynamicZonesModel.ts index 3d61f2f87a1..8fbb0fc8f48 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/mocks/pageWithDynamicZonesModel.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/mocks/pageWithDynamicZonesModel.ts @@ -74,7 +74,11 @@ export const pageModel: CmsModel = { layout: [["dwodev6q"]], name: "Hero #1", gqlTypeName: "Hero", - icon: "fas/flag", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "The top piece of content on every page.", id: "cv2zf965v324ivdc7e1vt", fields: [ @@ -115,7 +119,11 @@ export const pageModel: CmsModel = { layout: [["zsmj94iu"]], name: "Simple Text #1", gqlTypeName: "SimpleText", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Simple paragraph of text.", id: "81qiz2v453wx9uque0gox", fields: [ @@ -144,7 +152,11 @@ export const pageModel: CmsModel = { layout: [["ttyh493ugfd"], ["nli9u1rm"], ["lsd78slxc8"]], name: "Objecting", gqlTypeName: "Objecting", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Objecting test.", id: "9ht43gurhegkbdfsaafyads", fields: [ @@ -203,7 +215,11 @@ export const pageModel: CmsModel = { { name: "SuperNestedObject", gqlTypeName: "SuperNestedObject", - icon: "fab/buysellads", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "SuperNestedObject", id: "0emukbsvmzpozx2lzk883", fields: [ @@ -261,7 +277,11 @@ export const pageModel: CmsModel = { layout: [["jms49ui"], ["xcv50da"]], name: "Author", gqlTypeName: "Author", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Reference to an Author.", id: "qi81z2v453wx9uque0gox", validation: [ @@ -360,7 +380,11 @@ export const pageModel: CmsModel = { { name: "Text Header #1", gqlTypeName: "TextHeader", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, layout: [["6te8u0pe"]], description: "Simple text based header.", id: "g59qfds146gi4xq3tsu4n", @@ -380,7 +404,11 @@ export const pageModel: CmsModel = { { name: "Image Header #1", gqlTypeName: "ImageHeader", - icon: "far/image", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, layout: [["lqp0175z"], ["1qc22e85"]], description: "Text with background image.", id: "k7yembax2xpbt7f2sobi2", @@ -424,7 +452,11 @@ export const pageModel: CmsModel = { layout: [["ngutrblkf"]], name: "Objecting", gqlTypeName: "Objecting", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Objecting test.", id: "t804h3gufashguasffds", fields: [ @@ -493,7 +525,11 @@ export const pageModel: CmsModel = { layout: [["gt409u8qhgoudsahfds"]], name: "AuthorReference Field", gqlTypeName: "Author", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Reference field test.", id: "tg9u4h3qgfsauighafs", fields: [ @@ -528,7 +564,11 @@ export const pageModel: CmsModel = { layout: [["gt409u8qhgoudsahfds"]], name: "AuthorReference Field", gqlTypeName: "Authors", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Reference field test.", id: "tg9u4h3qgfsauighafs", fields: [ @@ -564,7 +604,11 @@ export const pageModel: CmsModel = { layout: [["gt409u8qhgoudsahfds"]], name: "AuthorReference Field", gqlTypeName: "Author", - icon: "fas/file-text", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "Reference field test.", id: "tg9u4h3qgfsauighafs", fields: [ diff --git a/packages/api-headless-cms/__tests__/contentAPI/model.delete.test.ts b/packages/api-headless-cms/__tests__/contentAPI/model.delete.test.ts index 16585f8cf78..f6bcf433800 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/model.delete.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/model.delete.test.ts @@ -18,7 +18,11 @@ describe("model delete", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/multipleValues.test.ts b/packages/api-headless-cms/__tests__/contentAPI/multipleValues.test.ts index 939690de3d0..00a5b2991a7 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/multipleValues.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/multipleValues.test.ts @@ -18,7 +18,11 @@ describe("multiple values in field", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/pluginsContentModels.test.ts b/packages/api-headless-cms/__tests__/contentAPI/pluginsContentModels.test.ts index 8bbde02786b..d826a5a6aab 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/pluginsContentModels.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/pluginsContentModels.test.ts @@ -175,7 +175,11 @@ describe("content model plugins", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); @@ -185,7 +189,11 @@ describe("content model plugins", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" }, error: null @@ -638,7 +646,11 @@ describe("content model plugins", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }).then(([response]) => response.data.createContentModelGroup.data); diff --git a/packages/api-headless-cms/__tests__/contentAPI/predefinedValues.test.ts b/packages/api-headless-cms/__tests__/contentAPI/predefinedValues.test.ts index 544fd785b9b..3a84dcffeee 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/predefinedValues.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/predefinedValues.test.ts @@ -17,7 +17,11 @@ describe("predefined values", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/republish.entries.test.ts b/packages/api-headless-cms/__tests__/contentAPI/republish.entries.test.ts index dab338fc80b..408f662ce7e 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/republish.entries.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/republish.entries.test.ts @@ -34,7 +34,11 @@ describe("Republish entries", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.manage.test.ts b/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.manage.test.ts index a7996f2ff25..7f25629c8c0 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.manage.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.manage.test.ts @@ -62,7 +62,11 @@ describe("MANAGE - resolvers - api key", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.read.test.ts b/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.read.test.ts index a8c41b7d7ee..6875a9465de 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.read.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/resolvers.apiKey.read.test.ts @@ -51,7 +51,11 @@ describe("READ - resolvers - api key", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/resolvers.manage.test.ts b/packages/api-headless-cms/__tests__/contentAPI/resolvers.manage.test.ts index 5d754077e5d..60621f9aafa 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/resolvers.manage.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/resolvers.manage.test.ts @@ -65,7 +65,11 @@ describe("MANAGE - Resolvers", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/resolvers.read.test.ts b/packages/api-headless-cms/__tests__/contentAPI/resolvers.read.test.ts index 38489807cd4..8903055183f 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/resolvers.read.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/resolvers.read.test.ts @@ -137,7 +137,11 @@ describe("READ - Resolvers", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/contentAPI/richTextField.test.ts b/packages/api-headless-cms/__tests__/contentAPI/richTextField.test.ts index 471e447ac8a..95fa677229d 100644 --- a/packages/api-headless-cms/__tests__/contentAPI/richTextField.test.ts +++ b/packages/api-headless-cms/__tests__/contentAPI/richTextField.test.ts @@ -47,7 +47,11 @@ describe("richTextField", () => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/converters/mocks/fieldIdStorageConverter.ts b/packages/api-headless-cms/__tests__/converters/mocks/fieldIdStorageConverter.ts index 7402e3883f5..36741246228 100644 --- a/packages/api-headless-cms/__tests__/converters/mocks/fieldIdStorageConverter.ts +++ b/packages/api-headless-cms/__tests__/converters/mocks/fieldIdStorageConverter.ts @@ -484,7 +484,11 @@ const createModelFields = (): CmsModelField[] => { layout: [["dzText", "dzObject", "dzObjectArray"]], name: "DZ Text", gqlTypeName: "DzTextObjectArray", - icon: "fas/flag", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "", id: "dzTemplateArray1", fields: [ @@ -535,7 +539,11 @@ const createModelFields = (): CmsModelField[] => { layout: [["dzText", "dzObject", "dzObjectArray"]], name: "DZ Text", gqlTypeName: "DzTextObject", - icon: "fas/flag", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "", id: "dzTemplateObject1", fields: [ diff --git a/packages/api-headless-cms/__tests__/filtering/product/init.ts b/packages/api-headless-cms/__tests__/filtering/product/init.ts index 88791aa9da6..04f4f944c57 100644 --- a/packages/api-headless-cms/__tests__/filtering/product/init.ts +++ b/packages/api-headless-cms/__tests__/filtering/product/init.ts @@ -52,7 +52,11 @@ export const createInitFactory = (manager: ProductManager) => { data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }); diff --git a/packages/api-headless-cms/__tests__/graphql/helpers.ts b/packages/api-headless-cms/__tests__/graphql/helpers.ts index b23c085c820..522ba904297 100644 --- a/packages/api-headless-cms/__tests__/graphql/helpers.ts +++ b/packages/api-headless-cms/__tests__/graphql/helpers.ts @@ -8,7 +8,11 @@ const createGroup = async (handler: any): Promise => { name: "Test Group", slug: "testGroup", description: "", - icon: "fa/fas" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } } }); const error = response.data?.createContentModelGroup?.error; diff --git a/packages/api-headless-cms/__tests__/mainAPI/settings.crud.test.ts b/packages/api-headless-cms/__tests__/mainAPI/settings.crud.test.ts index 619f14d12dd..5b89cddfaaf 100644 --- a/packages/api-headless-cms/__tests__/mainAPI/settings.crud.test.ts +++ b/packages/api-headless-cms/__tests__/mainAPI/settings.crud.test.ts @@ -70,7 +70,7 @@ describe("Settings crud test", () => { createdOn: expect.stringMatching(/^20/), savedOn: expect.stringMatching(/^20/), description: "A generic content model group", - icon: "fas/star", + icon: expect.any(Object), name: "Ungrouped", slug: "ungrouped" } @@ -138,7 +138,7 @@ describe("Settings crud test", () => { data: { group: { description: "A generic content model group", - icon: "fas/star", + icon: expect.any(Object), name: "Ungrouped", slug: "ungrouped" } diff --git a/packages/api-headless-cms/__tests__/storageOperations/helpers.ts b/packages/api-headless-cms/__tests__/storageOperations/helpers.ts index 34750baef19..e078cef552d 100644 --- a/packages/api-headless-cms/__tests__/storageOperations/helpers.ts +++ b/packages/api-headless-cms/__tests__/storageOperations/helpers.ts @@ -20,7 +20,11 @@ const baseGroup = new CmsGroupPlugin({ id: "group", slug: "group", description: "", - icon: "" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); const biography = crypto.randomBytes(65536).toString("hex"); diff --git a/packages/api-headless-cms/__tests__/testHelpers/graphql/contentModel.ts b/packages/api-headless-cms/__tests__/testHelpers/graphql/contentModel.ts index ec59d508e64..67b47c589e6 100644 --- a/packages/api-headless-cms/__tests__/testHelpers/graphql/contentModel.ts +++ b/packages/api-headless-cms/__tests__/testHelpers/graphql/contentModel.ts @@ -1,4 +1,4 @@ -import { CmsModel, CmsModelField } from "~/types"; +import { CmsModel, CmsModelField, Icon } from "~/types"; const DATA_FIELD = /* GraphQL*/ ` { @@ -96,7 +96,7 @@ export interface CreateContentModelMutationVariables { layout?: string[][]; titleFieldId?: string; defaultFields?: boolean; - icon?: string; + icon?: Icon; }; } export interface CreateContentModelFromMutationVariables { @@ -112,7 +112,7 @@ export interface CreateContentModelFromMutationVariables { layout?: string[][]; titleFieldId?: string; locale?: `${Lowercase}-${Uppercase}`; - icon?: string; + icon?: Icon; }; } diff --git a/packages/api-headless-cms/__tests__/testHelpers/setup.ts b/packages/api-headless-cms/__tests__/testHelpers/setup.ts index 0d42feb63dd..212fcf26ec2 100644 --- a/packages/api-headless-cms/__tests__/testHelpers/setup.ts +++ b/packages/api-headless-cms/__tests__/testHelpers/setup.ts @@ -1,4 +1,4 @@ -import { CmsGroup } from "~/types"; +import { CmsGroup, Icon } from "~/types"; import models from "../contentAPI/mocks/contentModels"; import { useGraphQLHandler } from "./useGraphQLHandler"; import { CmsModel } from "../types"; @@ -89,7 +89,7 @@ export interface SetupContentModelGroupGqlVars { data: { name: string; slug: string; - icon: string; + icon: Icon; description: string; }; } @@ -103,7 +103,11 @@ export const setupContentModelGroup = async ( data: { name: "Group", slug: "group", - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: "description" } }; diff --git a/packages/api-headless-cms/__tests__/testHelpers/useTestModelHandler.ts b/packages/api-headless-cms/__tests__/testHelpers/useTestModelHandler.ts index 0b800b2ba7b..d423202298a 100644 --- a/packages/api-headless-cms/__tests__/testHelpers/useTestModelHandler.ts +++ b/packages/api-headless-cms/__tests__/testHelpers/useTestModelHandler.ts @@ -71,7 +71,11 @@ export const useTestModelHandler = (params: UseTestModelHandlerParams) => { data: { name: groupId, slug: groupId, - icon: "ico/ico", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, description: groupId } }); diff --git a/packages/api-headless-cms/src/crud/contentModel/validation.ts b/packages/api-headless-cms/src/crud/contentModel/validation.ts index a590cdf0dd7..93ed5dfabc9 100644 --- a/packages/api-headless-cms/src/crud/contentModel/validation.ts +++ b/packages/api-headless-cms/src/crud/contentModel/validation.ts @@ -22,6 +22,15 @@ const str = zod.string().trim(); const shortString = str.max(255); const optionalShortString = shortString.optional(); const optionalNullishShortString = optionalShortString.nullish(); +const icon = zod + .object({ + type: zod.string().max(255), + name: zod.string().max(255), + value: zod.string() + }) + .passthrough() + .optional() + .nullish(); const fieldSchema = zod.object({ id: shortString, @@ -201,7 +210,7 @@ export const createModelCreateValidation = () => { .refine(apiNameRefinementValidation, refinementPluralValidationMessage), description: optionalNullishShortString, group: shortString, - icon: optionalNullishShortString, + icon, fields: zod.array(fieldSchema).default([]), layout: zod.array(zod.array(shortString)).default([]), tags: zod.array(shortString).optional(), @@ -236,7 +245,7 @@ export const createModelImportValidation = () => { .refine(apiNameRefinementValidation, refinementPluralValidationMessage), description: optionalNullishShortString, group: shortString, - icon: optionalNullishShortString, + icon, fields: zod.array(fieldSchema).min(1), layout: zod.array(zod.array(shortString)).min(1), tags: zod.array(shortString).optional(), @@ -260,7 +269,7 @@ export const createModelCreateFromValidation = () => { ), description: optionalNullishShortString, group: shortString, - icon: optionalNullishShortString, + icon, locale: optionalShortString }); }; @@ -282,7 +291,7 @@ export const createModelUpdateValidation = () => { }, refinementPluralValidationMessage), description: optionalNullishShortString, group: optionalShortString, - icon: optionalNullishShortString, + icon, fields: zod.array(fieldSchema), layout: zod.array(zod.array(shortString)), titleFieldId: optionalShortString.nullish(), diff --git a/packages/api-headless-cms/src/crud/contentModelGroup/validation.ts b/packages/api-headless-cms/src/crud/contentModelGroup/validation.ts index 2048315dfaf..b040be8628c 100644 --- a/packages/api-headless-cms/src/crud/contentModelGroup/validation.ts +++ b/packages/api-headless-cms/src/crud/contentModelGroup/validation.ts @@ -5,7 +5,13 @@ const str = zod.string().trim(); const name = str.max(100); const description = str.max(255).optional().nullish(); -const icon = str.min(1).max(255); +const icon = zod + .object({ + type: zod.string().max(255), + name: zod.string().max(255), + value: zod.string() + }) + .passthrough(); export const createGroupCreateValidation = () => { return zod.object({ diff --git a/packages/api-headless-cms/src/crud/system.crud.ts b/packages/api-headless-cms/src/crud/system.crud.ts index e2ee2b34c0d..5a8ce3a8a56 100644 --- a/packages/api-headless-cms/src/crud/system.crud.ts +++ b/packages/api-headless-cms/src/crud/system.crud.ts @@ -18,7 +18,12 @@ const initialContentModelGroup = { name: "Ungrouped", slug: "ungrouped", description: "A generic content model group", - icon: "fas/star" + icon: { + type: "icon", + name: "regular_star", + value: '', + width: 576 + } }; interface CreateSystemCrudParams { diff --git a/packages/api-headless-cms/src/export/graphql/index.ts b/packages/api-headless-cms/src/export/graphql/index.ts index 1f3a8d1e1a8..3c848679038 100644 --- a/packages/api-headless-cms/src/export/graphql/index.ts +++ b/packages/api-headless-cms/src/export/graphql/index.ts @@ -15,7 +15,7 @@ const plugin = new CmsGraphQLSchemaPlugin({ name: String! slug: String description: String - icon: String! + icon: JSON! } input CmsImportStructureModelInput { @@ -24,7 +24,7 @@ const plugin = new CmsGraphQLSchemaPlugin({ pluralApiName: String! modelId: String! group: String! - icon: String + icon: JSON description: String layout: [[ID!]!]! fields: [CmsContentModelFieldInput!]! diff --git a/packages/api-headless-cms/src/graphql/schema/contentModelGroups.ts b/packages/api-headless-cms/src/graphql/schema/contentModelGroups.ts index 5c000251ca0..90c8722affd 100644 --- a/packages/api-headless-cms/src/graphql/schema/contentModelGroups.ts +++ b/packages/api-headless-cms/src/graphql/schema/contentModelGroups.ts @@ -16,7 +16,7 @@ export const createGroupsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin name: String! slug: String description: String - icon: String! + icon: JSON! } type CmsContentModelGroupResponse { @@ -145,7 +145,7 @@ export const createGroupsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin totalContentModels: Int! slug: String! description: String - icon: String + icon: JSON createdBy: CmsIdentity # Returns true if the content model group is registered via a plugin. diff --git a/packages/api-headless-cms/src/graphql/schema/contentModels.ts b/packages/api-headless-cms/src/graphql/schema/contentModels.ts index 7098208be42..02719719651 100644 --- a/packages/api-headless-cms/src/graphql/schema/contentModels.ts +++ b/packages/api-headless-cms/src/graphql/schema/contentModels.ts @@ -162,7 +162,7 @@ export const createModelsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin pluralApiName: String! modelId: String group: RefInput! - icon: String + icon: JSON description: String layout: [[ID!]!] fields: [CmsContentModelFieldInput!] @@ -179,7 +179,7 @@ export const createModelsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin pluralApiName: String! modelId: String group: RefInput! - icon: String + icon: JSON description: String locale: String } @@ -189,7 +189,7 @@ export const createModelsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin singularApiName: String pluralApiName: String group: RefInput - icon: String + icon: JSON description: String layout: [[ID!]!]! fields: [CmsContentModelFieldInput!]! @@ -274,7 +274,7 @@ export const createModelsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin modelId: String! description: String group: CmsContentModelGroup! - icon: String + icon: JSON createdOn: DateTime savedOn: DateTime createdBy: CmsIdentity diff --git a/packages/api-headless-cms/src/types.ts b/packages/api-headless-cms/src/types.ts index ab471da53d5..5511d541cf1 100644 --- a/packages/api-headless-cms/src/types.ts +++ b/packages/api-headless-cms/src/types.ts @@ -267,7 +267,7 @@ export interface CmsDynamicZoneTemplate { name: string; gqlTypeName: string; description: string; - icon: string; + icon: Icon; fields: CmsModelField[]; layout: string[][]; validation: CmsModelFieldValidation[]; @@ -495,7 +495,7 @@ export interface CmsModel { /** * Icon for the content model. */ - icon?: string | null; + icon?: Icon | null; /** * Description for the content model. */ @@ -982,7 +982,7 @@ export interface CmsGroupCreateInput { name: string; slug?: string; description?: string | null; - icon: string; + icon: Icon; } /** @@ -995,7 +995,7 @@ export interface CmsGroupUpdateInput { name?: string; slug?: string; description?: string; - icon?: string; + icon?: Icon; } /** @@ -1030,9 +1030,9 @@ export interface CmsGroup { */ description: string | null; /** - * Icon for the group. In a form of "ico/ico". + * Icon for the group. */ - icon: string; + icon: Icon; /** * CreatedBy reference object. */ @@ -3272,3 +3272,10 @@ export interface HeadlessCmsStorageOperations { beforeInit: (context: C) => Promise; init?: (context: C) => Promise; } + +export type Icon = { + type: "icon" | "emoji" | "custom" | string; + name: string; + value: string; + [key: string]: any; +}; diff --git a/packages/api-mailer/src/crud/group.ts b/packages/api-mailer/src/crud/group.ts index 4da69a68fee..84fbdcea712 100644 --- a/packages/api-mailer/src/crud/group.ts +++ b/packages/api-mailer/src/crud/group.ts @@ -6,7 +6,11 @@ export const createGroup = (): CmsGroupPlugin => { description: "Mailer Group for CMS", id: "mailerGroup", slug: "mailerGroup", - icon: "none", + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + }, isPrivate: true }); }; diff --git a/packages/api-page-builder-import-export/src/import/process/blocks/importBlock.ts b/packages/api-page-builder-import-export/src/import/process/blocks/importBlock.ts index bc7452bb9e0..61c9ae50a36 100644 --- a/packages/api-page-builder-import-export/src/import/process/blocks/importBlock.ts +++ b/packages/api-page-builder-import-export/src/import/process/blocks/importBlock.ts @@ -90,7 +90,11 @@ export async function importBlock({ name: "Imported Blocks", slug: "imported-blocks", description: "Imported blocks", - icon: "fas/star" + icon: { + type: "emoji", + name: "thumbs_up", + value: "๐Ÿ‘" + } }); } diff --git a/packages/api-page-builder-so-ddb-es/src/definitions/blockCategoryEntity.ts b/packages/api-page-builder-so-ddb-es/src/definitions/blockCategoryEntity.ts index 017e1d16948..e1531e59136 100644 --- a/packages/api-page-builder-so-ddb-es/src/definitions/blockCategoryEntity.ts +++ b/packages/api-page-builder-so-ddb-es/src/definitions/blockCategoryEntity.ts @@ -29,7 +29,7 @@ export const createBlockCategoryEntity = (params: Params): Entity => { type: "string" }, icon: { - type: "string" + type: "map" }, description: { type: "string" diff --git a/packages/api-page-builder-so-ddb/src/definitions/blockCategoryEntity.ts b/packages/api-page-builder-so-ddb/src/definitions/blockCategoryEntity.ts index 017e1d16948..e1531e59136 100644 --- a/packages/api-page-builder-so-ddb/src/definitions/blockCategoryEntity.ts +++ b/packages/api-page-builder-so-ddb/src/definitions/blockCategoryEntity.ts @@ -29,7 +29,7 @@ export const createBlockCategoryEntity = (params: Params): Entity => { type: "string" }, icon: { - type: "string" + type: "map" }, description: { type: "string" diff --git a/packages/api-page-builder/__tests__/graphql/blockCategories.test.ts b/packages/api-page-builder/__tests__/graphql/blockCategories.test.ts index 803bb193dec..9b8a967f4c6 100644 --- a/packages/api-page-builder/__tests__/graphql/blockCategories.test.ts +++ b/packages/api-page-builder/__tests__/graphql/blockCategories.test.ts @@ -36,7 +36,7 @@ describe("Block Categories CRUD Test", () => { let data = { slug: `${prefix}slug`, name: `${prefix}name`, - icon: `${prefix}icon`, + icon: { type: `emoji`, name: `${prefix}icon`, value: `๐Ÿ‘` }, description: `${prefix}description` }; @@ -75,7 +75,7 @@ describe("Block Categories CRUD Test", () => { data = { slug: data.slug, // Slug cannot be changed. name: data.name + "-UPDATED", - icon: data.icon + "-UPDATED", + icon: { ...data.icon, name: data.icon.name + "-UPDATED" }, description: data.description + "-UPDATED" }; @@ -106,7 +106,11 @@ describe("Block Categories CRUD Test", () => { { slug: "block-category-one-slug", name: "block-category-one-name-UPDATED", - icon: "block-category-one-icon-UPDATED", + icon: { + type: "emoji", + name: "block-category-one-icon-UPDATED", + value: "๐Ÿ‘" + }, description: "block-category-one-description-UPDATED", createdOn: /^20/, createdBy: defaultIdentity @@ -114,7 +118,11 @@ describe("Block Categories CRUD Test", () => { { slug: "block-category-two-slug", name: "block-category-two-name-UPDATED", - icon: "block-category-two-icon-UPDATED", + icon: { + type: "emoji", + name: "block-category-two-icon-UPDATED", + value: "๐Ÿ‘" + }, description: "block-category-two-description-UPDATED", createdOn: /^20/, createdBy: defaultIdentity @@ -122,7 +130,11 @@ describe("Block Categories CRUD Test", () => { { slug: "block-category-three-slug", name: "block-category-three-name-UPDATED", - icon: "block-category-three-icon-UPDATED", + icon: { + type: "emoji", + name: "block-category-three-icon-UPDATED", + value: "๐Ÿ‘" + }, description: "block-category-three-description-UPDATED", createdOn: /^20/, createdBy: defaultIdentity @@ -140,7 +152,11 @@ describe("Block Categories CRUD Test", () => { const data = { slug: `${prefix}slug`, name: `${prefix}name-UPDATED`, - icon: `${prefix}icon-UPDATED`, + icon: { + type: `emoji`, + name: `${prefix}icon-UPDATED`, + value: `๐Ÿ‘` + }, description: `${prefix}description-UPDATED` }; @@ -180,7 +196,11 @@ describe("Block Categories CRUD Test", () => { data: { slug: ``, name: `empty-slug-category-name`, - icon: `empty-slug-category-icon`, + icon: { + type: `emoji`, + name: `empty-slug-category-icon`, + value: `๐Ÿ‘` + }, description: `empty-slug-category-description` } }); @@ -214,7 +234,11 @@ describe("Block Categories CRUD Test", () => { data: { slug: `invalid--slug--category`, name: `invalid--slug--category--name`, - icon: `invalid--slug--category--icon`, + icon: { + type: `emoji`, + name: `invalid--slug--category--icon`, + value: `๐Ÿ‘` + }, description: `invalid--slug--category--description` } }); @@ -267,7 +291,11 @@ describe("Block Categories CRUD Test", () => { data: { slug: ``, name: `empty-slug-category-name`, - icon: `empty-slug-category-icon`, + icon: { + type: `emoji`, + name: `empty-slug-category-icon`, + value: `๐Ÿ‘` + }, description: `empty-slug-category-description` } }); @@ -289,7 +317,11 @@ describe("Block Categories CRUD Test", () => { data: { slug: `delete-block-cat`, name: `name`, - icon: `icon`, + icon: { + type: `emoji`, + name: `icon`, + value: `๐Ÿ‘` + }, description: `description` } }); @@ -402,7 +434,11 @@ describe("Block Categories CRUD Test", () => { createdBy: defaultIdentity, slug: `delete-block-cat`, name: `name`, - icon: `icon`, + icon: { + type: `emoji`, + name: `icon`, + value: `๐Ÿ‘` + }, description: `description` }, error: null diff --git a/packages/api-page-builder/__tests__/graphql/blockCategoriesSecurity.test.ts b/packages/api-page-builder/__tests__/graphql/blockCategoriesSecurity.test.ts index ee91fb884c6..22707db0806 100644 --- a/packages/api-page-builder/__tests__/graphql/blockCategoriesSecurity.test.ts +++ b/packages/api-page-builder/__tests__/graphql/blockCategoriesSecurity.test.ts @@ -1,18 +1,23 @@ import useGqlHandler from "./useGqlHandler"; import { identityA, identityB } from "./mocks"; import { SecurityIdentity, SecurityPermission } from "@webiny/api-security/types"; +import { Icon } from "~/types"; class Mock { public slug: string; public name: string; - public icon: string; + public icon: Icon; public description: string; constructor(prefix = "") { this.slug = `${prefix}slug`; this.name = `${prefix}name`; - this.icon = `${prefix}icon`; - this.description = `${prefix}description`; + (this.icon = { + type: `emoji`, + name: `${prefix}icon`, + value: `๐Ÿ‘` + }), + (this.description = `${prefix}description`); } } @@ -122,7 +127,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-one-slug", name: "list-block-categories-one-name", - icon: "list-block-categories-one-icon", + icon: { + type: "emoji", + name: "list-block-categories-one-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-one-description" }, { @@ -130,7 +139,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-two-slug", name: "list-block-categories-two-name", - icon: "list-block-categories-two-icon", + icon: { + type: "emoji", + name: "list-block-categories-two-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-two-description" }, { @@ -138,7 +151,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-three-slug", name: "list-block-categories-three-name", - icon: "list-block-categories-three-icon", + icon: { + type: "emoji", + name: "list-block-categories-three-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-three-description" }, { @@ -146,7 +163,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-four-slug", name: "list-block-categories-four-name", - icon: "list-block-categories-four-icon", + icon: { + type: "emoji", + name: "list-block-categories-four-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-four-description" } ], @@ -173,7 +194,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-one-slug", name: "list-block-categories-one-name", - icon: "list-block-categories-one-icon", + icon: { + type: "emoji", + name: "list-block-categories-one-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-one-description" }, { @@ -181,7 +206,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-two-slug", name: "list-block-categories-two-name", - icon: "list-block-categories-two-icon", + icon: { + type: "emoji", + name: "list-block-categories-two-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-two-description" } ], @@ -207,7 +236,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-three-slug", name: "list-block-categories-three-name", - icon: "list-block-categories-three-icon", + icon: { + type: "emoji", + name: "list-block-categories-three-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-three-description" }, { @@ -215,7 +248,11 @@ describe("Block Categories Security Test", () => { createdOn: /^20/, slug: "list-block-categories-four-slug", name: "list-block-categories-four-name", - icon: "list-block-categories-four-icon", + icon: { + type: "emoji", + name: "list-block-categories-four-icon", + value: "๐Ÿ‘" + }, description: "list-block-categories-four-description" } ], diff --git a/packages/api-page-builder/__tests__/graphql/lifecycleEvents.blockCategories.test.ts b/packages/api-page-builder/__tests__/graphql/lifecycleEvents.blockCategories.test.ts index 739db476559..1b50a128dcf 100644 --- a/packages/api-page-builder/__tests__/graphql/lifecycleEvents.blockCategories.test.ts +++ b/packages/api-page-builder/__tests__/graphql/lifecycleEvents.blockCategories.test.ts @@ -4,7 +4,11 @@ import { assignBlockCategoryLifecycleEvents, tracker } from "./mocks/lifecycleEv const name = "Block Category Lifecycle Events"; const slug = "block-category-lifecycle-events"; -const icon = "/block-category-icon"; +const icon = { + type: "emoji", + name: "block-category-icon", + value: "๐Ÿ‘" +}; const description = "Block Category Description"; describe("Block Category Lifecycle Events", () => { @@ -68,7 +72,11 @@ describe("Block Category Lifecycle Events", () => { data: { slug, name: `${name} updated`, - icon: `${icon}-updated`, + icon: { + type: `emoji`, + name: `${icon}-updated`, + value: `๐Ÿ‘` + }, description: `${name} Updated` } }); @@ -80,7 +88,11 @@ describe("Block Category Lifecycle Events", () => { data: { name: `${name} updated`, slug, - icon: `${icon}-updated`, + icon: { + type: `emoji`, + name: `${icon}-updated`, + value: `๐Ÿ‘` + }, description: `${name} Updated` }, error: null diff --git a/packages/api-page-builder/__tests__/graphql/lifecycleEvents.pageBlocks.test.ts b/packages/api-page-builder/__tests__/graphql/lifecycleEvents.pageBlocks.test.ts index a216f618562..602f29899dc 100644 --- a/packages/api-page-builder/__tests__/graphql/lifecycleEvents.pageBlocks.test.ts +++ b/packages/api-page-builder/__tests__/graphql/lifecycleEvents.pageBlocks.test.ts @@ -40,7 +40,11 @@ describe("Page Block Lifecycle Events", () => { data: { slug: blockCategory, name: `name`, - icon: `icon`, + icon: { + type: `emoji`, + name: `icon`, + value: `๐Ÿ‘` + }, description: `description` } }); diff --git a/packages/api-page-builder/__tests__/graphql/pageBlocks.test.ts b/packages/api-page-builder/__tests__/graphql/pageBlocks.test.ts index cbe6cc49929..b615c24aec4 100644 --- a/packages/api-page-builder/__tests__/graphql/pageBlocks.test.ts +++ b/packages/api-page-builder/__tests__/graphql/pageBlocks.test.ts @@ -24,7 +24,11 @@ describe("Page Blocks Test", () => { data: { slug: "block-category", name: "block-category-name", - icon: "block-category-icon", + icon: { + type: "emoji", + name: "block-category-icon", + value: "๐Ÿ‘" + }, description: "block-category-description" } }); @@ -237,7 +241,11 @@ describe("Page Blocks Test", () => { data: { slug: "block-category", name: "block-category-name", - icon: "block-category-icon", + icon: { + type: "emoji", + name: "block-category-icon", + value: "๐Ÿ‘" + }, description: "block-category-description" } }); @@ -325,7 +333,11 @@ describe("Page Blocks Test", () => { data: { slug: "block-category-one", name: "block-category-one-name", - icon: "block-category-one-icon", + icon: { + type: "emoji", + name: "block-category-one-icon", + value: "๐Ÿ‘" + }, description: "block-category-one-description" } }); @@ -334,7 +346,11 @@ describe("Page Blocks Test", () => { data: { slug: "block-category-two", name: "block-category-two-name", - icon: "block-category-two-icon", + icon: { + type: "emoji", + name: "block-category-two-icon", + value: "๐Ÿ‘" + }, description: "block-category-two-description" } }); diff --git a/packages/api-page-builder/__tests__/graphql/pageBlocksSecurity.test.ts b/packages/api-page-builder/__tests__/graphql/pageBlocksSecurity.test.ts index 4408ced2d4a..30cbaaa8536 100644 --- a/packages/api-page-builder/__tests__/graphql/pageBlocksSecurity.test.ts +++ b/packages/api-page-builder/__tests__/graphql/pageBlocksSecurity.test.ts @@ -62,7 +62,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -277,7 +281,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -363,7 +371,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -392,7 +404,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -509,7 +525,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -568,7 +588,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -613,7 +637,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); @@ -651,7 +679,11 @@ describe("Page blocks Security Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); diff --git a/packages/api-page-builder/__tests__/graphql/pageTemplates.test.ts b/packages/api-page-builder/__tests__/graphql/pageTemplates.test.ts index 99060fa077a..f1e7f16df75 100644 --- a/packages/api-page-builder/__tests__/graphql/pageTemplates.test.ts +++ b/packages/api-page-builder/__tests__/graphql/pageTemplates.test.ts @@ -156,7 +156,11 @@ describe("Page Templates Test", () => { data: { slug: `block-category`, name: `block-category-name`, - icon: `block-category-icon`, + icon: { + type: `emoji`, + name: `block-category-icon`, + value: `๐Ÿ‘` + }, description: `block-category-description` } }); diff --git a/packages/api-page-builder/__tests__/graphql/pages.test.ts b/packages/api-page-builder/__tests__/graphql/pages.test.ts index 88419a588aa..f57915ffa16 100644 --- a/packages/api-page-builder/__tests__/graphql/pages.test.ts +++ b/packages/api-page-builder/__tests__/graphql/pages.test.ts @@ -390,7 +390,11 @@ describe("CRUD Test", () => { data: { slug: "block-category", name: "block-category-name", - icon: "block-category-icon", + icon: { + type: "emoji", + name: "block-category-icon", + value: "๐Ÿ‘" + }, description: "block-category-description" } }); diff --git a/packages/api-page-builder/src/graphql/crud/blockCategories/validation.ts b/packages/api-page-builder/src/graphql/crud/blockCategories/validation.ts index c1ee2482f0d..d9f39e92ac2 100644 --- a/packages/api-page-builder/src/graphql/crud/blockCategories/validation.ts +++ b/packages/api-page-builder/src/graphql/crud/blockCategories/validation.ts @@ -27,7 +27,13 @@ export const createBlockCategoryCreateValidation = () => { } ), name: zod.string().min(1).max(100), - icon: zod.string().max(255), + icon: zod + .object({ + type: zod.string().max(255), + name: zod.string().max(255), + value: zod.string() + }) + .passthrough(), description: zod.string().min(1).max(100) }); }; @@ -36,7 +42,13 @@ export const createBlockCategoryUpdateValidation = () => { return zod .object({ name: zod.string().min(1).max(100), - icon: zod.string().max(255), + icon: zod + .object({ + type: zod.string().max(255), + name: zod.string().max(255), + value: zod.string() + }) + .passthrough(), description: zod.string().min(1).max(100) }) .partial(); diff --git a/packages/api-page-builder/src/graphql/elementProcessors/icon.ts b/packages/api-page-builder/src/graphql/elementProcessors/icon.ts index b2b2c21b8ce..cfe928b1a2e 100644 --- a/packages/api-page-builder/src/graphql/elementProcessors/icon.ts +++ b/packages/api-page-builder/src/graphql/elementProcessors/icon.ts @@ -13,8 +13,7 @@ export default new ContextPlugin(context => { const value = variables?.length > 0 ? variables[0].value : null; if (value !== null) { - set(element, "data.icon.id", value.id); - set(element, "data.icon.svg", value.svg); + set(element, "data.icon.value", value); } }); }); diff --git a/packages/api-page-builder/src/graphql/graphql/blockCategories.gql.ts b/packages/api-page-builder/src/graphql/graphql/blockCategories.gql.ts index 086a78d50e0..48db462f82a 100644 --- a/packages/api-page-builder/src/graphql/graphql/blockCategories.gql.ts +++ b/packages/api-page-builder/src/graphql/graphql/blockCategories.gql.ts @@ -20,14 +20,14 @@ export const createBlockCategoryGraphQL = (): GraphQLSchemaPlugin => createdBy: PbCreatedBy name: String slug: String - icon: String + icon: JSON description: String } input PbBlockCategoryInput { name: String! slug: String! - icon: String! + icon: JSON! description: String! } diff --git a/packages/api-page-builder/src/graphql/types.ts b/packages/api-page-builder/src/graphql/types.ts index 8a88285d8c1..04142fea892 100644 --- a/packages/api-page-builder/src/graphql/types.ts +++ b/packages/api-page-builder/src/graphql/types.ts @@ -7,6 +7,7 @@ import { FlushEvent, QueueAddJob, RenderEvent } from "@webiny/api-prerendering-s import { Context as BaseContext } from "@webiny/handler/types"; import { + Icon, BlockCategory, Category, DefaultSettings, @@ -648,7 +649,7 @@ export interface SystemCrud { export interface PbBlockCategoryInput { name: string; slug: string; - icon: string; + icon: Icon; description: string; } diff --git a/packages/api-page-builder/src/types.ts b/packages/api-page-builder/src/types.ts index 026d0af6eb7..61076e8f74b 100644 --- a/packages/api-page-builder/src/types.ts +++ b/packages/api-page-builder/src/types.ts @@ -2,6 +2,13 @@ import { DefaultSettingsCrudOptions, PbContext } from "~/graphql/types"; export * from "./graphql/types"; +export type Icon = { + type: "icon" | "emoji" | "custom" | string; + name: string; + value: string; + [key: string]: any; +}; + /** * @category RecordModel */ @@ -698,7 +705,7 @@ export interface PageBuilderStorageOperations { export interface BlockCategory { name: string; slug: string; - icon: string; + icon: Icon; description: string; createdOn: string; createdBy: CreatedBy; diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts index 17d0b3c68b7..bcc597c447f 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts +++ b/packages/app-admin/src/components/IconPicker/IconPicker.styles.ts @@ -1,5 +1,9 @@ -import { css } from "emotion"; import styled from "@emotion/styled"; +import { ReactComponent as SearchIcon } from "@material-design-icons/svg/outlined/search.svg"; + +import { ButtonSecondary } from "@webiny/ui/Button"; + +import { ICON_PICKER_SIZE } from "./types"; export const IconPickerWrapper = styled.div` .mdc-menu-surface { @@ -7,17 +11,19 @@ export const IconPickerWrapper = styled.div` } `; -export const iconPickerLabel = css` +export const IconPickerLabel = styled.div` margin-bottom: 5px; margin-left: 2px; + color: ${props => props.theme.styles.colors.color3}; `; export const IconPickerInput = styled.div` background-color: ${props => props.theme.styles.colors.color5}; border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; + color: ${props => props.theme.styles.colors.color3}; padding: 8px; height: 32px; - width: fit-content; + width: 32px; cursor: pointer; :hover { border-bottom: 1px solid ${props => props.theme.styles.colors.color3}; @@ -30,6 +36,7 @@ export const MenuHeader = styled.div` justify-content: space-between; text-transform: uppercase; padding: 12px; + height: 28px; border-bottom: 1px solid ${props => props.theme.styles.colors.color5}; color: ${props => props.theme.styles.colors.color4}; @@ -39,10 +46,9 @@ export const MenuHeader = styled.div` } `; -export const MenuContent = styled.div` +export const MenuContent = styled.div<{ size?: string }>` position: relative; - width: 364px; - height: 524px; + width: ${({ size }) => (size === ICON_PICKER_SIZE.SMALL ? "279px" : "364px")}; `; export const Row = styled.div` @@ -72,8 +78,8 @@ export const CategoryLabel = styled.div` color: ${props => props.theme.styles.colors.color4}; `; -export const TabContentWrapper = styled.div` - width: 340px; +export const TabContentWrapper = styled.div<{ size?: string }>` + width: ${({ size }) => (size === ICON_PICKER_SIZE.SMALL ? "255px" : "340px")}; padding: 12px; `; @@ -110,6 +116,12 @@ export const InputsWrapper = styled.div` } `; -export const placeholderIcon = css` +export const PlaceholderIcon = styled(SearchIcon)` fill: #00000040; `; + +export const RemoveButton = styled(ButtonSecondary)` + &.mdc-button { + height: 28px; + } +`; diff --git a/packages/app-admin/src/components/IconPicker/IconPicker.tsx b/packages/app-admin/src/components/IconPicker/IconPicker.tsx index 8c84af23b47..67327d3469d 100644 --- a/packages/app-admin/src/components/IconPicker/IconPicker.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPicker.tsx @@ -12,8 +12,8 @@ const IconPicker = (props: IconPickerProps) => { const repository = iconRepositoryFactory.getRepository(iconTypes, iconPackProviders); const presenter = useMemo(() => { - return new IconPickerPresenter(repository); - }, [repository]); + return new IconPickerPresenter(repository, props.size); + }, [repository, props.size]); useEffect(() => { presenter.load(props.value); @@ -23,12 +23,17 @@ const IconPicker = (props: IconPickerProps) => { }; interface IconRendererWithProviderProps { - icon: Icon; + icon?: Icon; + size?: number; } -const IconRendererWithProvider = ({ icon }: IconRendererWithProviderProps) => { +const IconRendererWithProvider = ({ icon, ...props }: IconRendererWithProviderProps) => { + if (!icon) { + return null; + } + return ( - + ); diff --git a/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx b/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx index 0c8b0291061..25cd6bf59f9 100644 --- a/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx +++ b/packages/app-admin/src/components/IconPicker/IconPickerComponent.tsx @@ -1,8 +1,7 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useCallback } from "react"; import { observer } from "mobx-react-lite"; import isEqual from "lodash/isEqual"; import { ReactComponent as CloseIcon } from "@material-design-icons/svg/outlined/close.svg"; -import { ReactComponent as SearchIcon } from "@material-design-icons/svg/outlined/search.svg"; import { Menu } from "@webiny/ui/Menu"; import { Tabs } from "@webiny/ui/Tabs"; @@ -15,19 +14,23 @@ import { IconPickerPresenter } from "./IconPickerPresenter"; import { IconProvider, IconRenderer } from "./IconRenderer"; import { IconPickerWrapper, - iconPickerLabel, + IconPickerLabel, IconPickerInput, MenuContent, MenuHeader, - placeholderIcon + PlaceholderIcon, + RemoveButton } from "./IconPicker.styles"; import { IconPickerTabRenderer } from "./IconPickerTab"; import { IconPickerPresenterProvider } from "./IconPickerPresenterProvider"; import { IconTypeProvider } from "./config/IconType"; +import { ICON_PICKER_SIZE } from "./types"; export interface IconPickerProps extends FormComponentProps { label?: string; description?: string; + size?: ICON_PICKER_SIZE; + removable?: boolean; } export interface IconPickerComponentProps extends IconPickerProps { @@ -35,29 +38,36 @@ export interface IconPickerComponentProps extends IconPickerProps { } export const IconPickerComponent = observer( - ({ presenter, label, description, ...props }: IconPickerComponentProps) => { + ({ presenter, label, description, removable, ...props }: IconPickerComponentProps) => { const { value, onChange } = props; const { isValid: validationIsValid, message: validationMessage } = props.validation || {}; - const { activeTab, isMenuOpened, isLoading, iconTypes, selectedIcon } = presenter.vm; + const { activeTab, isMenuOpened, isLoading, iconTypes, selectedIcon, size } = presenter.vm; useEffect(() => { if (onChange && selectedIcon && !isEqual(selectedIcon, value)) { onChange(selectedIcon); } - }, [selectedIcon]); + }, [JSON.stringify(selectedIcon)]); const setActiveTab = (index: number) => presenter.setActiveTab(index); const openMenu = () => presenter.openMenu(); const closeMenu = () => presenter.closeMenu(); + const removeIcon = useCallback(() => { + if (onChange) { + presenter.setIcon(null); + onChange(null); + } + }, [onChange]); + return ( {label && ( -
    + {label} -
    + )} ) : ( - + )} } @@ -84,9 +90,12 @@ export const IconPickerComponent = observer( <> Select an icon + {value && removable && ( + Remove + )} - + {isLoading && } { +const getRows = (icons: Icon[], size?: string) => { // Group the icons by their category. const groupedObjects = groupBy(icons, "category"); const rows: IconPickerGridRow[] = []; @@ -42,7 +42,10 @@ const getRows = (icons: Icon[]) => { // Split the icons in this category into groups of COLUMN_COUNT and add them as rows. while (rowIcons.length) { - rows.push({ type: "icons", icons: rowIcons.splice(0, COLUMN_COUNT) }); + rows.push({ + type: "icons", + icons: rowIcons.splice(0, size === ICON_PICKER_SIZE.SMALL ? 6 : COLUMN_COUNT) + }); } } } @@ -56,7 +59,10 @@ const getRows = (icons: Icon[]) => { // Split these icons into groups of COLUMN_COUNT and add them as rows. while (rowIcons.length) { - rows.push({ type: "icons", icons: rowIcons.splice(0, COLUMN_COUNT) }); + rows.push({ + type: "icons", + icons: rowIcons.splice(0, size === ICON_PICKER_SIZE.SMALL ? 6 : COLUMN_COUNT) + }); } } @@ -66,7 +72,7 @@ const getRows = (icons: Icon[]) => { const useIconTypeRows = (type: string) => { const presenter = useIconPicker(); const icons = presenter.vm.icons.filter(icon => icon.type === type); - const rows = getRows(icons); + const rows = getRows(icons, presenter.vm.size); return { isEmpty: rows.length === 0, @@ -137,10 +143,11 @@ export const IconPickerTab = ({ const { type } = useIconType(); const { isEmpty, rowCount, rows } = useIconTypeRows(type); const presenter = useIconPicker(); + const size = presenter.vm.size; return ( - + )} - height={400} + height={size === ICON_PICKER_SIZE.SMALL ? 250 : 320} rowCount={rowCount} rowHeight={40} - width={340} + width={size === ICON_PICKER_SIZE.SMALL ? 255 : 340} /> )} diff --git a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx index 3f5e9c3dc1a..90f9fe27924 100644 --- a/packages/app-admin/src/components/IconPicker/IconRenderer.tsx +++ b/packages/app-admin/src/components/IconPicker/IconRenderer.tsx @@ -9,18 +9,22 @@ export const IconRenderer = makeComposable("IconPickerIcon"); interface IconContext { icon: T; + size: number; } const IconContext = React.createContext(undefined); interface IconProviderProps { icon: Icon; + size?: number; children: React.ReactNode; } -export const IconProvider = ({ icon, children }: IconProviderProps) => { +export const IconProvider = ({ icon, size = 32, children }: IconProviderProps) => { // I want to use the POJO via the context, to reduce the need of using `observer` HOC everywhere. - return {children}; + return ( + {children} + ); }; export function useIcon(): IconContext { diff --git a/packages/app-admin/src/components/IconPicker/defaultIcon.ts b/packages/app-admin/src/components/IconPicker/defaultIcon.ts new file mode 100644 index 00000000000..8bf8a9a99f0 --- /dev/null +++ b/packages/app-admin/src/components/IconPicker/defaultIcon.ts @@ -0,0 +1,6 @@ +export const defaultIcon = { + type: "icon", + name: "regular_star", + value: '', + width: 576 +}; diff --git a/packages/app-admin/src/components/IconPicker/index.tsx b/packages/app-admin/src/components/IconPicker/index.tsx index 4ec90fc9fd1..ad6f16b2547 100644 --- a/packages/app-admin/src/components/IconPicker/index.tsx +++ b/packages/app-admin/src/components/IconPicker/index.tsx @@ -3,3 +3,4 @@ export { IconPickerConfig } from "./config"; export { useIcon } from "./IconRenderer"; export { useIconPicker } from "./IconPickerPresenterProvider"; export { useIconType } from "./config/IconType"; +export { defaultIcon } from "./defaultIcon"; diff --git a/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx index a9d42f94f39..67674a859d3 100644 --- a/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx +++ b/packages/app-admin/src/components/IconPicker/plugins/customPlugin.tsx @@ -1,7 +1,7 @@ import React from "react"; import { useApolloClient } from "@apollo/react-hooks"; import { observer } from "mobx-react-lite"; -import { css } from "emotion"; +import styled from "@emotion/styled"; import { ButtonSecondary } from "@webiny/ui/Button"; @@ -13,16 +13,33 @@ import { IconPickerConfig } from "../config"; import { ListCustomIconsQueryResponse, LIST_CUSTOM_ICONS } from "./graphql"; import { Icon } from "../types"; -const addButtonStyle = css` +const AddButton = styled(ButtonSecondary)` &.mdc-button { height: 40px; } `; +/** + * NOTE: Avoid using `@emotion/styled` in icon renderer components across all plugins. + * This is crucial for serializing component rendering into a string value as plain HTML, + * which is necessary for usage in the website application. Please use inline styles here + * to ensure proper serialization. + */ + const CustomIcon = () => { - const { icon } = useIcon(); + const { icon, size } = useIcon(); - return {icon.name}; + return ( + {icon.name} + ); }; interface IconFilePickerProps { @@ -41,14 +58,13 @@ const IconFilePicker = ({ onUpload, onChange }: IconFilePickerProps) => { accept={["image/svg+xml"]} > {({ showFileManager }) => ( - { showFileManager(); }} > Browse - + )} ); diff --git a/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx index a557b30b9c4..0ac0df8f16a 100644 --- a/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx +++ b/packages/app-admin/src/components/IconPicker/plugins/emojisPlugin.tsx @@ -13,14 +13,6 @@ import { Icon } from "../types"; const SKIN_TONES = ["", "\u{1f3fb}", "\u{1f3fc}", "\u{1f3fd}", "\u{1f3fe}", "\u{1f3ff}"]; -const EmojiStyled = styled.div` - color: black; - width: 32px; - height: 32px; - font-size: 26px; - line-height: 32px; -`; - const SkinToneSelectWrapper = styled.div` padding: 4px; width: 32px; @@ -42,15 +34,35 @@ const SkinTone = styled.div` cursor: pointer; `; +/** + * NOTE: Avoid using `@emotion/styled` in icon renderer components across all plugins. + * This is crucial for serializing component rendering into a string value as plain HTML, + * which is necessary for usage in the website application. Please use inline styles here + * to ensure proper serialization. + */ + interface Emoji extends Icon { skinTone: string; skinToneSupport: boolean; } const Emoji = () => { - const { icon } = useIcon(); + const { icon, size } = useIcon(); - return {icon.skinTone ? icon.value + icon.skinTone : icon.value}; + return ( +
    + {icon.skinTone ? icon.value + icon.skinTone : icon.value} +
    + ); }; interface SkinToneSelectProps { diff --git a/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx b/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx index 49ad0c27428..a8acdb73433 100644 --- a/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx +++ b/packages/app-admin/src/components/IconPicker/plugins/iconsPlugin.tsx @@ -11,20 +11,30 @@ import { useIconPicker } from "../IconPickerPresenterProvider"; import { IconPickerConfig } from "../config"; import { Icon } from "../types"; +/** + * NOTE: Avoid using `@emotion/styled` in icon renderer components across all plugins. + * This is crucial for serializing component rendering into a string value as plain HTML, + * which is necessary for usage in the website application. Please use inline styles here + * to ensure proper serialization. + */ + interface SimpleIcon extends Icon { color: string; } const IconSvg = () => { - const { icon } = useIcon(); + const { icon, size } = useIcon(); return ( ); }; @@ -37,7 +47,9 @@ interface IconColorPickerProps { const IconColorPicker = ({ color, onChange }: IconColorPickerProps) => { return ( - {({ value, onChange }) => } + {({ value, onChange }) => ( + + )} ); }; diff --git a/packages/app-admin/src/components/IconPicker/types.ts b/packages/app-admin/src/components/IconPicker/types.ts index f0dc34f774b..4c3874c4089 100644 --- a/packages/app-admin/src/components/IconPicker/types.ts +++ b/packages/app-admin/src/components/IconPicker/types.ts @@ -44,3 +44,7 @@ type CategoryNameRow = { }; export type IconPickerGridRow = IconsRow | CategoryNameRow; + +export enum ICON_PICKER_SIZE { + SMALL = "small" +} diff --git a/packages/app-headless-cms-common/package.json b/packages/app-headless-cms-common/package.json index 4a2860b7234..82dbe40095c 100644 --- a/packages/app-headless-cms-common/package.json +++ b/packages/app-headless-cms-common/package.json @@ -14,8 +14,8 @@ "license": "MIT", "dependencies": { "@babel/runtime": "^7.22.6", - "@fortawesome/fontawesome-svg-core": "^1.3.0", "@types/react": "17.0.39", + "@webiny/app-admin": "0.0.0", "@webiny/app-security": "0.0.0", "@webiny/form": "0.0.0", "@webiny/plugins": "0.0.0", diff --git a/packages/app-headless-cms-common/src/types/index.ts b/packages/app-headless-cms-common/src/types/index.ts index 8c7df409cf6..7cf244d542c 100644 --- a/packages/app-headless-cms-common/src/types/index.ts +++ b/packages/app-headless-cms-common/src/types/index.ts @@ -7,7 +7,6 @@ import { BindComponentRenderProp as BaseBindComponentRenderProp, FormAPI } from "@webiny/form"; -import { IconName, IconPrefix } from "@fortawesome/fontawesome-svg-core"; import { SecurityPermission } from "@webiny/app-security/types"; import { CmsModelFieldValidator, @@ -17,6 +16,7 @@ import { import { CmsModel, CmsModelField } from "./model"; import { CmsIdentity } from "~/types/shared"; import { DragObjectWithType } from "react-dnd"; +import { Icon } from "@webiny/app-admin/components/IconPicker/types"; export * from "./validation"; export * from "./model"; @@ -328,7 +328,7 @@ export interface CmsDynamicZoneTemplate { name: string; gqlTypeName: string; description: string; - icon: string; + icon: Icon; fields: CmsModelField[]; layout: string[][]; validation: CmsModelFieldValidator[]; @@ -404,26 +404,6 @@ export interface CmsEditorFormSettingsPlugin extends Plugin { }): React.ReactNode; } -export interface CmsIcon { - /** - * [ pack, icon ], ex: ["fab", "cog"] - */ - id: [IconPrefix, IconName]; - /** - * Icon name - */ - name: string; - /** - * SVG element - */ - svg: ReactElement; -} - -export interface CmsIconsPlugin extends Plugin { - type: "cms-icons"; - getIcons(): CmsIcon[]; -} - /** * Transform field value when sending data to the API. */ diff --git a/packages/app-headless-cms-common/src/types/model.ts b/packages/app-headless-cms-common/src/types/model.ts index 9803638f0e4..fc97b829a25 100644 --- a/packages/app-headless-cms-common/src/types/model.ts +++ b/packages/app-headless-cms-common/src/types/model.ts @@ -5,6 +5,7 @@ import { CmsModelFieldRendererPlugin } from "~/types/index"; import { CmsIdentity } from "~/types/shared"; +import { Icon } from "@webiny/app-admin/components/IconPicker/types"; /** * @deprecated Use `CmsModelField` instead. @@ -65,7 +66,7 @@ export interface CmsGroup { id: string; name: string; slug: string; - icon?: string; + icon?: Icon; description?: string; contentModels: CmsModel[]; createdBy: CmsIdentity; @@ -83,7 +84,7 @@ export interface CmsModel { layout?: CmsEditorFieldsLayout; fields: CmsModelField[]; lockedFields: CmsModelField[]; - icon: string; + icon: Icon; name: string; modelId: string; singularApiName: string; diff --git a/packages/app-headless-cms-common/tsconfig.build.json b/packages/app-headless-cms-common/tsconfig.build.json index d0b4f032975..e579baac6fc 100644 --- a/packages/app-headless-cms-common/tsconfig.build.json +++ b/packages/app-headless-cms-common/tsconfig.build.json @@ -2,6 +2,7 @@ "extends": "../../tsconfig.build.json", "include": ["src"], "references": [ + { "path": "../app-admin/tsconfig.build.json" }, { "path": "../app-security/tsconfig.build.json" }, { "path": "../form/tsconfig.build.json" }, { "path": "../plugins/tsconfig.build.json" } diff --git a/packages/app-headless-cms-common/tsconfig.json b/packages/app-headless-cms-common/tsconfig.json index 318a8f2afa7..1834ee270cc 100644 --- a/packages/app-headless-cms-common/tsconfig.json +++ b/packages/app-headless-cms-common/tsconfig.json @@ -1,7 +1,12 @@ { "extends": "../../tsconfig.json", "include": ["src", "__tests__"], - "references": [{ "path": "../app-security" }, { "path": "../form" }, { "path": "../plugins" }], + "references": [ + { "path": "../app-admin" }, + { "path": "../app-security" }, + { "path": "../form" }, + { "path": "../plugins" } + ], "compilerOptions": { "rootDirs": ["./src", "./__tests__"], "outDir": "./dist", @@ -9,6 +14,8 @@ "paths": { "~/*": ["./src/*"], "~tests/*": ["./__tests__/*"], + "@webiny/app-admin/*": ["../app-admin/src/*"], + "@webiny/app-admin": ["../app-admin/src"], "@webiny/app-security/*": ["../app-security/src/*"], "@webiny/app-security": ["../app-security/src"], "@webiny/form/*": ["../form/src/*"], diff --git a/packages/app-headless-cms/package.json b/packages/app-headless-cms/package.json index 05066aa2c88..f6153d3d338 100644 --- a/packages/app-headless-cms/package.json +++ b/packages/app-headless-cms/package.json @@ -18,12 +18,6 @@ "@babel/runtime": "^7.22.6", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", - "@fortawesome/fontawesome-common-types": "^0.3.0", - "@fortawesome/fontawesome-svg-core": "^1.3.0", - "@fortawesome/free-brands-svg-icons": "^6.0.0", - "@fortawesome/free-regular-svg-icons": "^6.0.0", - "@fortawesome/free-solid-svg-icons": "^6.0.0", - "@fortawesome/react-fontawesome": "^0.1.17", "@lexical/utils": "^0.12.2", "@material-design-icons/svg": "^0.14.2", "@svgr/webpack": "^6.1.1", @@ -71,7 +65,6 @@ "react-dom": "17.0.2", "react-helmet": "^6.1.0", "react-hotkeyz": "^1.0.4", - "react-virtualized": "^9.21.2", "use-deep-compare-effect": "^1.6.1" }, "devDependencies": { diff --git a/packages/app-headless-cms/src/admin/components/IconPicker.tsx b/packages/app-headless-cms/src/admin/components/IconPicker.tsx deleted file mode 100644 index 79e87424644..00000000000 --- a/packages/app-headless-cms/src/admin/components/IconPicker.tsx +++ /dev/null @@ -1,252 +0,0 @@ -import React, { useEffect, useRef, useState, useCallback, useMemo } from "react"; -import { css } from "emotion"; -import { Global, css as reactCss } from "@emotion/react"; -import { plugins } from "@webiny/plugins"; -import { Typography } from "@webiny/ui/Typography"; -import { Grid } from "react-virtualized"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import DelayedOnChange from "./DelayedOnChange"; -import { Menu } from "@webiny/ui/Menu"; -import { Input } from "@webiny/ui/Input"; -import { CmsIcon, CmsIconsPlugin } from "~/types"; -import { FormComponentProps } from "@webiny/ui/types"; -import { FormElementMessage } from "@webiny/ui/FormElementMessage"; -import { GridCellProps } from "react-virtualized/dist/es/Grid"; - -/** - * Controls the helper text below the checkbox. - * @type {string} - */ -const iconPickerLabel = css({ marginBottom: 5, marginLeft: 2 }); - -const globalStyles = reactCss` - #rmwcPortal > .mdc-menu-surface { - z-index: 1000; - } -`; - -const MenuWrapper = css` - color: var(--mdc-theme-text-secondary-on-background); - background-color: var(--mdc-theme-on-background); - border-bottom: 1px solid var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)); - padding: 16px 8px; - cursor: pointer; - :hover { - border-bottom: 1px solid rgba(0, 0, 0, 1); - } -`; - -const NoResultWrapper = css({ - width: 640, - color: "var(--mdc-theme-text-secondary-on-background)", - padding: "16px 12px" -}); - -const COLUMN_COUNT = 6; - -const gridItem = css({ - display: "flex", - flexDirection: "column", - justifyContent: "flex-start", - boxSizing: "border-box", - paddingTop: 15, - alignItems: "center", - textAlign: "center", - cursor: "pointer", - transform: "translateZ(0)", - borderRadius: 2, - color: "var(--mdc-theme-text-secondary-on-background)", - transition: "all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - "&::after": { - boxShadow: "0 0.25rem 0.125rem 0 rgba(0,0,0,0.05)", - transition: "opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - content: '""', - position: "absolute", - top: 0, - left: 0, - width: "100%", - height: "100%", - zIndex: -1, - opacity: 0 - }, - "&:hover": { - backgroundColor: "var(--mdc-theme-background)", - color: "var(--mdc-theme-text-primary-on-background)", - "&::after": { - opacity: 1 - } - }, - ">svg": { - width: 42, - marginBottom: 5 - } -}); - -const grid = css({ - padding: 20 -}); - -const pickIcon = css({ - width: 50, - textAlign: "center", - cursor: "pointer" -}); - -const searchInput = css({ - input: { - padding: "20px 12px 20px" - } -}); - -export interface IconPickerProps extends FormComponentProps { - label?: React.ReactNode; - description?: React.ReactNode; -} - -export const IconPicker = ({ - value, - onChange, - label, - description, - validation -}: IconPickerProps) => { - const [filter, setFilter] = useState(""); - const [mustRenderGrid, setMustRenderGrid] = useState(false); - const inputRef = useRef(null); - - useEffect(() => { - setTimeout(() => { - if (mustRenderGrid && inputRef.current) { - inputRef.current.focus(); - } - }, 50); - }, [mustRenderGrid]); - - const onFilterChange = useCallback( - (value, cb) => { - setFilter(value); - cb(); - }, - [filter] - ); - - const allIcons: CmsIcon[] = useMemo(() => { - const iconPlugins = plugins.byType("cms-icons"); - return iconPlugins.reduce((icons: Array, pl) => { - return icons.concat(pl.getIcons()); - }, []); - }, []); - - const icons = useMemo(() => { - return filter ? allIcons.filter(ic => ic.name.includes(filter)) : allIcons; - }, [filter]); - - const renderCell = useCallback( - ({ closeMenu }) => { - return function renderCell({ - columnIndex, - key, - rowIndex, - style - }: GridCellProps): React.ReactNode { - const item = icons[rowIndex * COLUMN_COUNT + columnIndex]; - if (!item) { - return null; - } - - return ( -
    { - if (onChange) { - onChange(item.id.join("/")); - } - closeMenu(); - }} - > - - {item.name} -
    - ); - }; - }, - [icons] - ); - - const renderGrid = useCallback( - ({ closeMenu }) => { - return ( - <> - - - {({ value, onChange }) => ( - - )} - - {icons.length === 0 ? ( -
    - No results found. -
    - ) : ( - - )} - - ); - }, - [icons] - ); - - const fontAwesomeIconValue: any = - typeof value === "string" && value.includes("/") ? value.split("/") : ["fas", "star"]; - - const { isValid: validationIsValid, message: validationMessage } = validation || {}; - - return ( - <> - {label && ( -
    - {label} -
    - )} - - setMustRenderGrid(true)} - onClose={() => setMustRenderGrid(false)} - renderToPortal={true} - handle={ -
    -
    - -
    -
    - } - > - {mustRenderGrid && renderGrid} -
    - - {validationIsValid === false && ( - {validationMessage} - )} - {validationIsValid !== false && description && ( - {description} - )} - - ); -}; diff --git a/packages/app-headless-cms/src/admin/menus/ContentGroupsMenuItems.tsx b/packages/app-headless-cms/src/admin/menus/ContentGroupsMenuItems.tsx index ac09f5d1e77..2fbe2e9f977 100644 --- a/packages/app-headless-cms/src/admin/menus/ContentGroupsMenuItems.tsx +++ b/packages/app-headless-cms/src/admin/menus/ContentGroupsMenuItems.tsx @@ -1,6 +1,5 @@ import React from "react"; import get from "lodash/get"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { LIST_MENU_CONTENT_GROUPS_MODELS, ListMenuCmsGroupsQueryResponse @@ -8,9 +7,9 @@ import { import useQuery from "~/admin/hooks/useQuery"; import usePermission from "~/admin/hooks/usePermission"; import { AddMenu as Menu } from "@webiny/app-admin"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { NothingToShow } from "./NothingToShowElement"; import { CmsGroup, CmsModel } from "~/types"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; interface HasContentEntryPermissionsProps { group: CmsGroup; @@ -45,18 +44,6 @@ const HasContentEntryPermissions = ({ return children; }; -interface IconProps { - group: CmsGroup; -} -const Icon = ({ group }: IconProps) => { - return ( - - ); -}; - export const ContentGroupsMenuItems = () => { const response = useQuery(LIST_MENU_CONTENT_GROUPS_MODELS); const groups: CmsGroup[] = get(response, "data.listContentModelGroups.data") || []; @@ -74,7 +61,7 @@ export const ContentGroupsMenuItems = () => { name={group.id} label={group.name} tags={["headlessCMS"]} - icon={} + icon={} > {group.contentModels.length === 0 && ( } /> diff --git a/packages/app-headless-cms/src/admin/plugins/editor/formSettings/components/GeneralSettings.tsx b/packages/app-headless-cms/src/admin/plugins/editor/formSettings/components/GeneralSettings.tsx index 08fdefdde37..b53e489fa2f 100644 --- a/packages/app-headless-cms/src/admin/plugins/editor/formSettings/components/GeneralSettings.tsx +++ b/packages/app-headless-cms/src/admin/plugins/editor/formSettings/components/GeneralSettings.tsx @@ -4,8 +4,8 @@ import { Input } from "@webiny/ui/Input"; import { Tags } from "@webiny/ui/Tags"; import { validation } from "@webiny/validation"; import { BindComponent } from "@webiny/form"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import GroupSelect from "./GroupSelect"; -import { IconPicker } from "~/admin/components/IconPicker"; interface GeneralSettingsProps { Bind: BindComponent; diff --git a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.tsx b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.tsx index 9e2e6a7a3e0..2b265cb244a 100644 --- a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/MultiValueDynamicZone.tsx @@ -2,12 +2,12 @@ import React from "react"; import styled from "@emotion/styled"; import cloneDeep from "lodash/cloneDeep"; import { Accordion, AccordionItem } from "@webiny/ui/Accordion"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { ReactComponent as DeleteIcon } from "@material-design-icons/svg/outlined/delete_outline.svg"; import { ReactComponent as CloneIcon } from "@material-design-icons/svg/outlined/library_add.svg"; import { ReactComponent as ArrowUpIcon } from "@material-design-icons/svg/round/expand_less.svg"; import { ReactComponent as ArrowDownIcon } from "@material-design-icons/svg/round/expand_more.svg"; import { AddTemplateButton, AddTemplateIcon } from "./AddTemplate"; -import { TemplateIcon } from "./TemplateIcon"; import { useModelField } from "~/admin/hooks"; import { Fields } from "~/admin/components/ContentEntryForm/Fields"; import { @@ -68,7 +68,7 @@ const TemplateValueForm = ({ } + icon={} actions={ } + icon={} open={true} interactive={false} actions={ diff --git a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.tsx b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.tsx index 95a18ced7a2..42055755f3f 100644 --- a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateCard.tsx @@ -4,7 +4,7 @@ import styled from "@emotion/styled"; import { Typography } from "@webiny/ui/Typography"; import { CmsDynamicZoneTemplate } from "~/types"; import { ButtonSecondary } from "@webiny/ui/Button"; -import { TemplateIcon } from "~/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; const CardContainer = styled.div` display: flex; @@ -16,7 +16,8 @@ const CardContainer = styled.div` `; const CardIcon = styled.div` - text-align: center; + display: flex; + justify-content: center; padding: 25px; font-size: 1.5rem; background-color: var(--mdc-theme-background); @@ -56,7 +57,7 @@ export const TemplateCard = ({ template, onTemplate }: TemplateCardProps) => { return ( - + diff --git a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.tsx b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.tsx deleted file mode 100644 index 1d9387ce066..00000000000 --- a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/dynamicZone/TemplateIcon.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; - -interface TemplateIconProps { - icon: string; -} - -export const TemplateIcon = ({ icon }: TemplateIconProps) => { - const faIcon = icon ? (icon.split("/") as FontAwesomeIconProps["icon"]) : undefined; - - return faIcon ? : null; -}; diff --git a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.tsx b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.tsx index cc2738ddfaa..2651e6afc46 100644 --- a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/entry/Image.tsx @@ -1,7 +1,7 @@ import styled from "@emotion/styled"; import React from "react"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { Icon as IconType } from "@webiny/app-admin/components/IconPicker/types"; const Container = styled("div")({ width: "100%", @@ -21,41 +21,22 @@ const Container = styled("div")({ }); const Icon = styled("div")({ - flex: "0 0 100px", - svg: { - color: "var(--mdc-theme-text-icon-on-light)", - width: "100%", - height: "auto", - maxWidth: 100, - maxHeight: 100, - opacity: 0.3 - } + flex: "0 0 100px" }); -interface IconProps { - icon: string | undefined; -} - interface ImageProps { title: string; src?: string | null; width?: number; - icon: string | undefined; + icon?: IconType; } -const DisplayIcon = ({ icon }: IconProps) => { - if (!icon) { - return null; - } - return ; -}; - export const Image = ({ src, icon, width = 166 }: ImageProps) => { if (!src) { return ( - + ); diff --git a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.tsx b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.tsx index 64c4d17d1aa..858bc3385c9 100644 --- a/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fieldRenderers/ref/advanced/components/options/OptionsModelListItem.tsx @@ -1,8 +1,7 @@ import React, { useCallback } from "react"; import styled from "@emotion/styled"; import { CmsModel } from "~/types"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; const Title = styled("div")({ width: "100%", @@ -47,27 +46,9 @@ const Icon = styled("div")({ width: "24px", height: "24px", marginRight: "15px", - flex: "0 0 24px", - svg: { - color: "var(--mdc-theme-text-icon-on-light)", - width: "100%", - height: "auto", - maxWidth: 24, - maxHeight: 24 - } + flex: "0 0 24px" }); -interface IconProps { - model: Pick; -} - -const DisplayIcon = ({ model }: IconProps) => { - if (!model.icon) { - return null; - } - return ; -}; - interface OptionsModelListItemProps { model: Pick; onClick: (modelId: string) => void; @@ -83,7 +64,7 @@ export const OptionsModelListItem = ({ return ( - + {model.name} diff --git a/packages/app-headless-cms/src/admin/plugins/fieldValidators/dynamicZone.tsx b/packages/app-headless-cms/src/admin/plugins/fieldValidators/dynamicZone.tsx index 9f916e47704..533a0913d03 100644 --- a/packages/app-headless-cms/src/admin/plugins/fieldValidators/dynamicZone.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fieldValidators/dynamicZone.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { AccordionItem } from "@webiny/ui/Accordion"; import { Bind } from "@webiny/form"; import { @@ -34,27 +34,21 @@ function TemplateValidationSettings() { {({ value: templates }) => { return ( <> - {templates.map((template, index) => { - const icon = template.icon - ? (template.icon.split("/") as FontAwesomeIconProps["icon"]) - : undefined; - - return ( - : undefined} - > - new CmsModelFieldValidatorConfigAdapter(field, v) - )} - /> - - ); - })} + {templates.map((template, index) => ( + } + > + new CmsModelFieldValidatorConfigAdapter(field, v) + )} + /> + + ))} ); }} diff --git a/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.tsx b/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.tsx index f0d7b90cc18..3a2c257bd18 100644 --- a/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/DynamicZoneTemplate.tsx @@ -1,7 +1,6 @@ import React, { useCallback, useState } from "react"; import { set } from "dot-prop-immutable"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { ReactComponent as EditIcon } from "@material-design-icons/svg/outlined/edit.svg"; import { ReactComponent as DeleteIcon } from "@material-design-icons/svg/outlined/delete_outline.svg"; import { ReactComponent as ArrowUpIcon } from "@material-design-icons/svg/round/expand_less.svg"; @@ -91,13 +90,11 @@ export const DynamicZoneTemplate = ({ }); }, callbackDeps); - const icon = template.icon ? (template.icon.split("/") as IconProp) : undefined; - return ( : undefined} + icon={} open={open} actions={ diff --git a/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/TemplateDialog.tsx b/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/TemplateDialog.tsx index 17bcb85d9da..e0b692414d0 100644 --- a/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/TemplateDialog.tsx +++ b/packages/app-headless-cms/src/admin/plugins/fields/dynamicZone/TemplateDialog.tsx @@ -6,7 +6,8 @@ import { Form, FormAPI, FormOnSubmit } from "@webiny/form"; import { validation } from "@webiny/validation"; import { CmsDynamicZoneTemplate } from "~/types"; import { generateAlphaNumericLowerCaseId } from "@webiny/utils"; -import { IconPicker } from "~/admin/components/IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { ICON_PICKER_SIZE } from "@webiny/app-admin/components/IconPicker/types"; import { Dialog, DialogTitle, DialogContent, DialogActions } from "~/admin/components/Dialog"; import { Alert } from "@webiny/ui/Alert"; @@ -142,7 +143,7 @@ export const TemplateDialog = (props: TemplateDialogProps) => { name={"icon"} validators={[validation.create("required")]} > - + diff --git a/packages/app-headless-cms/src/admin/plugins/icons.tsx b/packages/app-headless-cms/src/admin/plugins/icons.tsx deleted file mode 100644 index bde8b9d159c..00000000000 --- a/packages/app-headless-cms/src/admin/plugins/icons.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from "react"; -import { IconName, library } from "@fortawesome/fontawesome-svg-core"; -import { IconPrefix } from "@fortawesome/fontawesome-common-types"; -import { fab } from "@fortawesome/free-brands-svg-icons"; -import { fas } from "@fortawesome/free-solid-svg-icons"; -import { far } from "@fortawesome/free-regular-svg-icons"; -import { CmsIcon, CmsIconsPlugin } from "~/types"; - -const createSvg = (icon: string[]): React.ReactElement => { - return ( - - - - ); -}; - -const icons: CmsIcon[] = []; - -interface Icons { - definitions: Record>; -} - -const plugin: CmsIconsPlugin = { - name: "cms-icons-fontawesome", - type: "cms-icons", - init() { - /** - * Ignoring TS errors. We know what we did here is good, but cannot get it to work with typescript. - */ - // @ts-expect-error - library.add(fab, fas, far); - const definitions = (library as unknown as Icons).definitions; - // @ts-expect-error - Object.keys(definitions).forEach((pack: IconPrefix) => { - const defs = definitions[pack]; - // @ts-expect-error - Object.keys(defs).forEach((icon: IconName) => { - icons.push({ - id: [pack, icon], - name: icon, - svg: createSvg(defs[icon]) - }); - }); - }); - }, - getIcons() { - return icons; - } -}; - -export default plugin; diff --git a/packages/app-headless-cms/src/admin/plugins/index.ts b/packages/app-headless-cms/src/admin/plugins/index.ts index fd6b484be8f..afd6c5039f5 100644 --- a/packages/app-headless-cms/src/admin/plugins/index.ts +++ b/packages/app-headless-cms/src/admin/plugins/index.ts @@ -1,5 +1,4 @@ import routes from "./routes"; -import icons from "./icons"; import install from "./install"; import contentFormTransformers from "./transformers"; import defaultBar from "./editor/defaultBar"; @@ -10,7 +9,6 @@ import getObjectId from "./getObjectId"; export default () => [ install, routes, - icons, contentFormTransformers(), defaultBar, formSettings, diff --git a/packages/app-headless-cms/src/admin/views/contentModelGroups/ContentModelGroupsForm.tsx b/packages/app-headless-cms/src/admin/views/contentModelGroups/ContentModelGroupsForm.tsx index bcf7d860267..97b35ec15fc 100644 --- a/packages/app-headless-cms/src/admin/views/contentModelGroups/ContentModelGroupsForm.tsx +++ b/packages/app-headless-cms/src/admin/views/contentModelGroups/ContentModelGroupsForm.tsx @@ -16,7 +16,7 @@ import { SimpleFormFooter, SimpleFormContent } from "@webiny/app-admin/components/SimpleForm"; -import { IconPicker } from "~/admin/components/IconPicker"; +import { IconPicker, defaultIcon } from "@webiny/app-admin/components/IconPicker"; import { useRouter } from "@webiny/react-router"; import { useSnackbar } from "@webiny/app-admin/hooks/useSnackbar"; import EmptyView from "@webiny/app-admin/components/EmptyView"; @@ -193,7 +193,7 @@ const ContentModelGroupsForm = ({ canCreate }: ContentModelGroupsFormProps) => { } return ( -
    + {({ data, form, Bind }: FormRenderPropParams) => ( @@ -210,7 +210,11 @@ const ContentModelGroupsForm = ({ canCreate }: ContentModelGroupsFormProps) => { - + ; -} - -const DisplayIcon = ({ model }: IconProps) => { - if (!model.icon) { - return null; - } - return ; -}; - const ContentModelsDataList = ({ canCreate, onCreate, @@ -272,7 +253,7 @@ const ContentModelsDataList = ({ return ( - + {contentModel.name} diff --git a/packages/app-headless-cms/src/admin/views/contentModels/NewContentModelDialog.tsx b/packages/app-headless-cms/src/admin/views/contentModels/NewContentModelDialog.tsx index 3c7e515de59..da44ebcf53b 100644 --- a/packages/app-headless-cms/src/admin/views/contentModels/NewContentModelDialog.tsx +++ b/packages/app-headless-cms/src/admin/views/contentModels/NewContentModelDialog.tsx @@ -24,7 +24,7 @@ import { Dialog } from "~/admin/components/Dialog"; import { createApiNameValidator } from "~/admin/views/contentModels/helpers/apiNameValidator"; import { createNameValidator } from "~/admin/views/contentModels/helpers/nameValidator"; import { Checkbox } from "@webiny/ui/Checkbox"; -import { IconPicker } from "~/admin/components/IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; const t = i18n.ns("app-headless-cms/admin/views/content-models/new-content-model-dialog"); diff --git a/packages/app-page-builder-elements/src/renderers/button.tsx b/packages/app-page-builder-elements/src/renderers/button.tsx index c44c354baaf..b3467cedcac 100644 --- a/packages/app-page-builder-elements/src/renderers/button.tsx +++ b/packages/app-page-builder-elements/src/renderers/button.tsx @@ -1,5 +1,4 @@ import React, { useMemo } from "react"; -import { usePageElements } from "~/hooks/usePageElements"; import { LinkComponent } from "~/types"; import styled, { CSSObject } from "@emotion/styled"; import { ClassNames } from "@emotion/react"; @@ -85,7 +84,12 @@ export interface ButtonElementData { newTab: boolean; href: string; }; - icon: { position: string; color: string; svg: string; width: string }; + icon: { + value: { + markup: string; + }; + position: string; + }; action: { actionType: "link" | "scrollToElement" | "onClickHandler"; newTab: boolean; @@ -106,10 +110,10 @@ export const createButton = (params: CreateButtonParams = {}) => { return createRenderer( props => { - const { getStyles } = usePageElements(); const { getElement } = useRenderer(); const element = getElement(); - const { link, icon } = element.data; + const { link } = element.data; + const { value: icon, position = "left" } = element.data.icon || {}; const buttonText = props.buttonText || element.data.buttonText; const action = props.action?.href ? props.action : element.data.action; @@ -119,30 +123,17 @@ export const createButton = (params: CreateButtonParams = {}) => { let StyledButtonBody = ButtonBody, StyledButtonIcon; - if (icon && icon.svg) { - const { position = "left", color } = icon; - + if (icon && icon.markup) { StyledButtonBody = styled(StyledButtonBody)({ display: "flex", ...ICON_POSITION_FLEX_DIRECTION[position] }) as (props: ButtonBodyProps) => JSX.Element; - StyledButtonIcon = styled(ButtonIcon)( - { - width: icon.width, - ...ICON_POSITION_MARGIN[position] - }, - getStyles(theme => { - const themeColor = theme.styles.colors?.[color]; - return { - color: themeColor || color - }; - }) - ); + StyledButtonIcon = styled(ButtonIcon)(ICON_POSITION_MARGIN[position]); buttonInnerContent = ( <> - + {buttonInnerContent} ); diff --git a/packages/app-page-builder-elements/src/renderers/icon.tsx b/packages/app-page-builder-elements/src/renderers/icon.tsx index f901c044a09..ee71cf483a3 100644 --- a/packages/app-page-builder-elements/src/renderers/icon.tsx +++ b/packages/app-page-builder-elements/src/renderers/icon.tsx @@ -5,24 +5,19 @@ import { useRenderer } from "~/hooks/useRenderer"; export type IconRenderer = ReturnType; export interface Props { - svg?: string; + markup?: string; } export const createIcon = () => { return createRenderer((props: Props) => { - const { getElement, theme } = useRenderer(); - + const { getElement } = useRenderer(); const element = getElement(); - let color = element.data.icon.color; - if (theme.styles.colors?.[color]) { - color = theme.styles.colors?.[color]; - } - return (
    ); }); diff --git a/packages/app-page-builder/package.json b/packages/app-page-builder/package.json index 411b2a341fc..e1790f198cf 100644 --- a/packages/app-page-builder/package.json +++ b/packages/app-page-builder/package.json @@ -15,12 +15,6 @@ "@babel/runtime": "^7.22.6", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", - "@fortawesome/fontawesome-common-types": "^0.3.0", - "@fortawesome/fontawesome-svg-core": "^1.3.0", - "@fortawesome/free-brands-svg-icons": "^6.0.0", - "@fortawesome/free-regular-svg-icons": "^6.0.0", - "@fortawesome/free-solid-svg-icons": "^6.0.0", - "@fortawesome/react-fontawesome": "^0.1.17", "@material-design-icons/svg": "^0.14.2", "@svgr/webpack": "^6.1.1", "@types/medium-editor": "^5.0.3", @@ -76,7 +70,6 @@ "react-sortable": "^2.0.0", "react-sortable-tree": "^2.6.0", "react-transition-group": "^4.3.0", - "react-virtualized": "^9.21.0", "recoil": "^0.1.2", "slugify": "^1.2.9", "store": "^2.0.12", diff --git a/packages/app-page-builder/src/admin/plugins/icons/index.tsx b/packages/app-page-builder/src/admin/plugins/icons/index.tsx deleted file mode 100644 index aed1e025933..00000000000 --- a/packages/app-page-builder/src/admin/plugins/icons/index.tsx +++ /dev/null @@ -1,55 +0,0 @@ -// TODO: find a way to avoid copying and registering icons twice (Headless CMS has an identical plugin) -import React from "react"; -import { IconName, library } from "@fortawesome/fontawesome-svg-core"; -import { fab } from "@fortawesome/free-brands-svg-icons"; -import { fas } from "@fortawesome/free-solid-svg-icons"; -import { far } from "@fortawesome/free-regular-svg-icons"; -import { PbIcon, PbIconsPlugin } from "~/types"; -import { IconPrefix } from "@fortawesome/fontawesome-common-types"; - -const createSvg = (icon: string[]): React.ReactElement => { - return ( - - - - ); -}; - -const icons: PbIcon[] = []; - -interface Icons { - definitions: Record>; -} - -const plugin: PbIconsPlugin = { - name: "pb-icons-fontawesome", - type: "pb-icons", - init() { - /** - * Ignoring TS errors. We know what we did here is good, but cannot get it to work with typescript. - */ - // @ts-expect-error - library.add(fab, fas, far); - const definitions = (library as unknown as Icons).definitions; - /** - * Ignoring TS errors. We know what we coded is good, but cannot get it to work with typescript. - */ - // @ts-expect-error - Object.keys(definitions).forEach((pack: IconPrefix) => { - const defs = definitions[pack]; - // @ts-expect-error - Object.keys(defs).forEach((icon: IconName) => { - icons.push({ - id: [pack, icon], - name: icon, - svg: createSvg(defs[icon]) - }); - }); - }); - }, - getIcons() { - return icons; - } -}; - -export default plugin; diff --git a/packages/app-page-builder/src/admin/plugins/index.ts b/packages/app-page-builder/src/admin/plugins/index.ts index b2ccc6f6f40..5918e069305 100644 --- a/packages/app-page-builder/src/admin/plugins/index.ts +++ b/packages/app-page-builder/src/admin/plugins/index.ts @@ -7,7 +7,6 @@ import globalSearch from "./globalSearch"; import routes from "./routes"; import installation from "./installation"; import permissionRenderer from "./permissionRenderer"; -import icons from "./icons"; export default () => [ header, @@ -18,6 +17,5 @@ export default () => [ globalSearch, routes, installation, - permissionRenderer, - icons + permissionRenderer ]; diff --git a/packages/app-page-builder/src/admin/utils/createBlockCategoryPlugin.tsx b/packages/app-page-builder/src/admin/utils/createBlockCategoryPlugin.tsx index ea96a5c4984..11703b0050f 100644 --- a/packages/app-page-builder/src/admin/utils/createBlockCategoryPlugin.tsx +++ b/packages/app-page-builder/src/admin/utils/createBlockCategoryPlugin.tsx @@ -1,22 +1,8 @@ import React from "react"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { plugins } from "@webiny/plugins"; import { PbEditorBlockCategoryPlugin, PbBlockCategory } from "~/types"; -interface IconProps { - category: PbBlockCategory; -} - -export const Icon = ({ category }: IconProps) => { - return ( - - ); -}; - export default (element: PbBlockCategory): void => { const plugin: PbEditorBlockCategoryPlugin = { type: "pb-editor-block-category", @@ -24,7 +10,7 @@ export default (element: PbBlockCategory): void => { title: element.name, categoryName: element.slug, description: element.description || "", - icon: + icon: }; plugins.register(plugin); diff --git a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesDataList.tsx b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesDataList.tsx index 37482606d31..38b874f6e1c 100644 --- a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesDataList.tsx +++ b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesDataList.tsx @@ -28,7 +28,7 @@ import SearchUI from "@webiny/app-admin/components/SearchUI"; import { ReactComponent as AddIcon } from "@webiny/app-admin/assets/icons/add-18px.svg"; import { ReactComponent as FilterIcon } from "@webiny/app-admin/assets/icons/filter-24px.svg"; import { PbBlockCategory } from "~/types"; -import { Icon } from "~/admin/utils/createBlockCategoryPlugin"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { useBlockCategoriesPermissions } from "~/hooks/permissions"; const t = i18n.ns("app-page-builder/admin/block-categories/data-list"); @@ -191,7 +191,7 @@ const PageBuilderBlockCategoriesDataList = ({ } > - + {item.name} diff --git a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx index c7e6d3ace56..24d9d23c656 100644 --- a/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx +++ b/packages/app-page-builder/src/admin/views/BlockCategories/BlockCategoriesForm.tsx @@ -12,7 +12,7 @@ import { SimpleFormContent, SimpleFormHeader } from "@webiny/app-admin/components/SimpleForm"; -import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { IconPicker, defaultIcon } from "@webiny/app-admin/components/IconPicker"; import { validation } from "@webiny/validation"; import { blockCategorySlugValidator, blockCategoryDescriptionValidator } from "./validators"; import { @@ -208,8 +208,15 @@ const CategoriesForm = ({ canCreate }: CategoriesFormProps) => { - - + + diff --git a/packages/app-page-builder/src/admin/views/BlockCategories/IconPicker.tsx b/packages/app-page-builder/src/admin/views/BlockCategories/IconPicker.tsx deleted file mode 100644 index 7e718bf330a..00000000000 --- a/packages/app-page-builder/src/admin/views/BlockCategories/IconPicker.tsx +++ /dev/null @@ -1,238 +0,0 @@ -// TODO: find a better way to share IconPicker with icons across apps. -import React, { useState, useCallback, useMemo, useEffect, useRef } from "react"; -import { css } from "emotion"; -import { plugins } from "@webiny/plugins"; -import { Typography } from "@webiny/ui/Typography"; -import { Grid } from "react-virtualized"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; -import { Menu } from "@webiny/ui/Menu"; -import { Input } from "@webiny/ui/Input"; -import { PbIcon, PbIconsPlugin } from "~/types"; -import { FormComponentProps } from "@webiny/ui/types"; -import { FormElementMessage } from "@webiny/ui/FormElementMessage"; -import { GridCellProps } from "react-virtualized/dist/es/Grid"; - -/** - * Controls the helper text below the checkbox. - * @type {string} - */ -const iconPickerLabel = css({ marginBottom: 5, marginLeft: 2 }); - -const MenuWrapper = css` - color: var(--mdc-theme-text-secondary-on-background); - background-color: var(--mdc-theme-on-background); - border-bottom: 1px solid var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, 0.54)); - padding: 16px 8px; - cursor: pointer; - :hover { - border-bottom: 1px solid rgba(0, 0, 0, 1); - } -`; - -const NoResultWrapper = css({ - width: 640, - color: "var(--mdc-theme-text-secondary-on-background)", - padding: "16px 12px" -}); - -const COLUMN_COUNT = 6; - -const gridItem = css({ - display: "flex", - flexDirection: "column", - justifyContent: "flex-start", - boxSizing: "border-box", - paddingTop: 15, - alignItems: "center", - textAlign: "center", - cursor: "pointer", - transform: "translateZ(0)", - borderRadius: 2, - color: "var(--mdc-theme-text-secondary-on-background)", - transition: "all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - "&::after": { - boxShadow: "0 0.25rem 0.125rem 0 rgba(0,0,0,0.05)", - transition: "opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - content: '""', - position: "absolute", - top: 0, - left: 0, - width: "100%", - height: "100%", - zIndex: -1, - opacity: 0 - }, - "&:hover": { - backgroundColor: "var(--mdc-theme-background)", - color: "var(--mdc-theme-text-primary-on-background)", - "&::after": { - opacity: 1 - } - }, - ">svg": { - width: 42, - marginBottom: 5 - } -}); - -const grid = css({ - padding: 20 -}); - -const pickIcon = css({ - width: 50, - textAlign: "center", - cursor: "pointer" -}); - -const searchInput = css({ - input: { - padding: "20px 12px 20px" - } -}); - -interface IconPickerProps extends FormComponentProps { - label?: React.ReactNode; - description?: React.ReactNode; -} -const IconPicker = ({ value, onChange, label, description, validation }: IconPickerProps) => { - const [filter, setFilter] = useState(""); - const [mustRenderGrid, setMustRenderGrid] = useState(false); - const inputRef = useRef(null); - - useEffect(() => { - setTimeout(() => { - if (mustRenderGrid && inputRef.current) { - inputRef.current.focus(); - } - }, 50); - }, [mustRenderGrid]); - - const onFilterChange = useCallback( - (value, cb) => { - setFilter(value); - cb(); - }, - [filter] - ); - - const allIcons: PbIcon[] = useMemo(() => { - const iconPlugins = plugins.byType("pb-icons"); - return iconPlugins.reduce((icons: Array, pl) => { - return icons.concat(pl.getIcons()); - }, []); - }, []); - - const icons = useMemo(() => { - return filter ? allIcons.filter(ic => ic.name.includes(filter)) : allIcons; - }, [filter]); - - const renderCell = useCallback( - ({ closeMenu }) => { - return function renderCell({ - columnIndex, - key, - rowIndex, - style - }: GridCellProps): React.ReactNode { - const item = icons[rowIndex * COLUMN_COUNT + columnIndex]; - if (!item) { - return null; - } - - return ( -
    { - if (onChange) { - onChange(item.id.join("/")); - } - closeMenu(); - }} - > - - {item.name} -
    - ); - }; - }, - [icons] - ); - - const renderGrid = useCallback( - ({ closeMenu }) => { - return ( - <> - - {({ value, onChange }) => ( - - )} - - {icons.length === 0 ? ( -
    - No results found. -
    - ) : ( - - )} - - ); - }, - [icons] - ); - - const fontAwesomeIconValue: any = - typeof value === "string" && value.includes("/") ? value.split("/") : ["fas", "star"]; - - const { isValid: validationIsValid, message: validationMessage } = validation || {}; - - return ( - <> - {label && ( -
    - {label} -
    - )} - setMustRenderGrid(true)} - onClose={() => setMustRenderGrid(false)} - handle={ -
    -
    - -
    -
    - } - > - {mustRenderGrid && renderGrid} -
    - - {validationIsValid === false && ( - {validationMessage} - )} - {validationIsValid !== false && description && ( - {description} - )} - - ); -}; - -export default IconPicker; diff --git a/packages/app-page-builder/src/admin/views/PageBlocks/BlocksByCategoriesDataList.tsx b/packages/app-page-builder/src/admin/views/PageBlocks/BlocksByCategoriesDataList.tsx index df846a5c783..8028a2a5892 100644 --- a/packages/app-page-builder/src/admin/views/PageBlocks/BlocksByCategoriesDataList.tsx +++ b/packages/app-page-builder/src/admin/views/PageBlocks/BlocksByCategoriesDataList.tsx @@ -29,7 +29,7 @@ import { ReactComponent as FilterIcon } from "@webiny/app-admin/assets/icons/fil import { ReactComponent as AddIcon } from "@webiny/app-admin/assets/icons/add-18px.svg"; import { ReactComponent as DownloadFileIcon } from "@webiny/app-admin/assets/icons/file_download.svg"; import { ReactComponent as UploadFileIcon } from "@webiny/app-admin/assets/icons/file_upload.svg"; -import { Icon } from "~/admin/utils/createBlockCategoryPlugin"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; import { OptionsMenu } from "~/admin/components/OptionsMenu"; import { PbBlockCategory } from "~/types"; @@ -238,7 +238,7 @@ const BlocksByCategoriesDataList = ({ } > - + {item.name} @@ -276,7 +276,7 @@ const BlocksByCategoriesDataList = ({ onClick={() => onCreatePageBlock(item.slug)} > - + {item.name} diff --git a/packages/app-page-builder/src/blockEditor/plugins/elementVariables/basic/icon/index.ts b/packages/app-page-builder/src/blockEditor/plugins/elementVariables/basic/icon/index.ts index d8287c7b401..eb58fb17214 100644 --- a/packages/app-page-builder/src/blockEditor/plugins/elementVariables/basic/icon/index.ts +++ b/packages/app-page-builder/src/blockEditor/plugins/elementVariables/basic/icon/index.ts @@ -10,11 +10,19 @@ export default { id: element.id, type: "icon", label: "Icon", - value: { id: element.data?.icon?.id, svg: element.data?.icon?.svg } + // We also store `element?.data.icon?.width` to render + // correctly sized icon markup on icon variable change. + value: { + ...(element.data?.icon?.value || {}), + markupWidth: element?.data.icon?.width + } } ]; }, getVariableValue({ element }) { - return { id: element.data?.icon?.id, svg: element.data?.icon?.svg }; + return { + ...(element.data?.icon?.value || {}), + markupWidth: element?.data.icon?.width + }; } } as PbBlockEditorCreateVariablePlugin; diff --git a/packages/app-page-builder/src/editor/components/IconPicker.tsx b/packages/app-page-builder/src/editor/components/IconPicker.tsx deleted file mode 100644 index cc30cf7bfa3..00000000000 --- a/packages/app-page-builder/src/editor/components/IconPicker.tsx +++ /dev/null @@ -1,345 +0,0 @@ -import React, { CSSProperties, useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { css } from "emotion"; -import { plugins } from "@webiny/plugins"; -import { Typography } from "@webiny/ui/Typography"; -import { Grid } from "react-virtualized"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { DelayedOnChange } from "@webiny/ui/DelayedOnChange"; -import { Menu } from "@webiny/ui/Menu"; -import { Input } from "@webiny/ui/Input"; -import { PbIcon, PbIconsPlugin } from "~/types"; -import classNames from "classnames"; -import { COLORS } from "../plugins/elementSettings/components/StyledComponents"; -// Icons -import { ReactComponent as IconPickerIcon } from "../assets/icons/icon-picker.svg"; - -interface RenderCellCallableParams { - columnIndex: number; - rowIndex: number; - key: string; - style: CSSProperties; -} -interface RenderCellCallable { - (params: RenderCellCallableParams): React.ReactElement | null; -} - -const noop = (): React.ReactElement | null => null; -const gridItem = css({ - position: "relative", - display: "flex", - flexDirection: "column", - justifyContent: "flex-start", - boxSizing: "border-box", - paddingTop: 15, - alignItems: "center", - textAlign: "center", - cursor: "pointer", - transform: "translateZ(0)", - borderRadius: 2, - color: "var(--mdc-theme-text-secondary-on-background)", - transition: "all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - "&::after": { - boxShadow: "0 0.25rem 0.125rem 0 rgba(0,0,0,0.05)", - transition: "opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1)", - content: '""', - position: "absolute", - top: 0, - left: 0, - width: "100%", - height: "100%", - zIndex: -1, - opacity: 0 - }, - "&:hover": { - backgroundColor: "var(--mdc-theme-background)", - color: "var(--mdc-theme-text-primary-on-background)", - "&::after": { - opacity: 1 - } - }, - ">svg": { - width: 42, - marginBottom: 5 - } -}); - -const gridItemSelected = css({ - backgroundColor: "var(--mdc-theme-text-secondary-on-background)", - color: "#FFFFFF", - ">svg": { - fill: "#FFFFFF" - }, - "> .remove": { - position: "absolute", - width: "auto", - marginBottom: "0", - top: "2px", - right: "5px" - } -}); - -const grid = css({ - padding: 20 -}); - -const pickIcon = css({ - width: 50, - textAlign: "center", - cursor: "pointer" -}); - -const searchInput = css({ - input: { - padding: "20px 12px 20px", - "&::placeholder": { - opacity: "1 !important" - } - } -}); - -const iconPickerWrapper = css({ - display: "flex", - justifyContent: "flex-end", - height: 30, - - "& .mdc-menu-surface--anchor": { - position: "static" - }, - - "& .button": { - boxSizing: "border-box", - width: 30, - height: "100%", - display: "flex", - justifyContent: "center", - alignItems: "center", - backgroundColor: COLORS.lightGray, - borderRadius: 1, - border: `1px solid ${COLORS.gray}`, - cursor: "pointer", - "&:hover:not(:disabled)": { borderColor: COLORS.darkGray, backgroundColor: COLORS.gray }, - "&:focus:not(:disabled)": { - borderColor: COLORS.darkGray, - outline: "none", - backgroundColor: COLORS.gray - }, - "&:disabled": { - opacity: 0.5, - cursor: "not-allowed", - borderColor: COLORS.lightGray - } - }, - "& .iconContainer": { - boxSizing: "border-box", - width: 30, - height: "100%", - display: "flex", - justifyContent: "center", - alignItems: "center", - backgroundColor: COLORS.lightGray, - borderRadius: 1, - border: `1px solid ${COLORS.gray}`, - - "& svg": { - width: 16, - height: 16 - }, - "&.disabled": { - pointerEvents: "none", - opacity: 0.5 - } - } -}); - -interface IconPickerPropsType { - value?: IconProp; - onChange: (item: PbIcon) => void; - removable?: boolean; - handlerClassName?: string; - useInSidebar?: boolean; - removeIcon?: () => void; -} -const IconPicker = ({ - value, - onChange, - removable = true, - handlerClassName, - useInSidebar, - removeIcon = noop -}: IconPickerPropsType) => { - const [filter, setFilter] = useState(""); - const [mustRenderGrid, setMustRenderGrid] = useState(false); - const inputRef = useRef(null); - - useEffect(() => { - setTimeout(() => { - if (mustRenderGrid && inputRef.current) { - inputRef.current.focus(); - } - }, 50); - }, [mustRenderGrid]); - - // Icon "Grid" props - const columnCount = useInSidebar ? 3 : 6; - const columnWidth = useInSidebar ? 85 : 100; - const gridWidth = useInSidebar ? 300 : 640; - - const onFilterChange = useCallback( - (value, cb) => { - setFilter(value.trim()); - cb(); - }, - [filter] - ); - - const { prefix: selectedIconPrefix, name: selectedIconName } = useMemo(() => { - if (!value || !Array.isArray(value) || !removable) { - return { - prefix: undefined, - name: undefined - }; - } - return { - prefix: value[0], - name: value[1] - }; - }, [value]); - - const allIcons: PbIcon[] = useMemo(() => { - const iconPlugins = plugins.byType("pb-icons"); - let selectedIconItem = null; - const allIconItems = iconPlugins.reduce((icons: Array, pl) => { - const pluginIcons = pl.getIcons().filter(({ id }) => { - const [prefix, name] = id; - if (!selectedIconPrefix || !selectedIconName || prefix !== selectedIconPrefix) { - return true; - } - return name !== selectedIconName; - }); - const selectedIcon = pl.getIcons().find(({ name }) => { - return name === selectedIconName; - }); - if (selectedIcon) { - selectedIconItem = selectedIcon; - } - return icons.concat(pluginIcons); - }, []); - if (selectedIconItem) { - allIconItems.unshift(selectedIconItem); - } - return allIconItems; - }, [selectedIconPrefix, selectedIconName]); - - const icons = useMemo(() => { - return filter ? allIcons.filter(ic => ic.name.includes(filter)) : allIcons; - }, [filter, selectedIconPrefix, selectedIconName]); - - const renderCell = useCallback( - ({ closeMenu }): RenderCellCallable => { - return function renderCell({ columnIndex, key, rowIndex, style }) { - const item = icons[rowIndex * columnCount + columnIndex]; - if (!item) { - return null; - } - const isSelectedIcon = - item.id[0] === selectedIconPrefix && item.id[1] === selectedIconName; - const gridItemClassName = classNames(gridItem, { - [gridItemSelected]: isSelectedIcon - }); - return ( -
    { - onChange(item); - closeMenu(); - }} - > - {isSelectedIcon && ( - - - - )} - - {item.name} -
    - ); - }; - }, - [icons] - ); - - const renderGrid = useCallback( - ({ closeMenu }) => { - return ( - <> - - {({ value, onChange }) => ( - - )} - - - - ); - }, - [icons] - ); - - if (useInSidebar) { - const disableRemoveIcon = !value || !removable; - return ( -
    - setMustRenderGrid(true)} - onClose={() => setMustRenderGrid(false)} - handle={ -
    - -
    - } - > - {mustRenderGrid && renderGrid} -
    -
    - -
    -
    - ); - } - - return ( - - -
    - } - > - {renderGrid} -
    - ); -}; - -export default IconPicker; diff --git a/packages/app-page-builder/src/editor/plugins/elementSettings/variable/IconVariableInput.tsx b/packages/app-page-builder/src/editor/plugins/elementSettings/variable/IconVariableInput.tsx index fe89565524b..e65cf9951c1 100644 --- a/packages/app-page-builder/src/editor/plugins/elementSettings/variable/IconVariableInput.tsx +++ b/packages/app-page-builder/src/editor/plugins/elementSettings/variable/IconVariableInput.tsx @@ -1,8 +1,8 @@ -import React from "react"; +import React, { useRef, useState, useEffect } from "react"; import styled from "@emotion/styled"; import { useVariable } from "~/hooks/useVariable"; -import IconPicker from "~/editor/components/IconPicker"; -import { getSvg } from "~/editor/plugins/elements/utils/iconUtils"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { ICON_PICKER_SIZE, Icon } from "@webiny/app-admin/components/IconPicker/types"; const Wrapper = styled.div` & > div { @@ -15,17 +15,34 @@ interface IconVariableInputProps { } const IconVariableInput = ({ variableId }: IconVariableInputProps) => { - const { value, onChange } = useVariable(variableId); + const { value = {}, onChange } = useVariable(variableId); + + const iconRef = useRef(null); + const [iconValue, setIconValue] = useState(value); + + useEffect(() => { + setIconValue(value); + }, [value.markup]); + + useEffect(() => { + if (!iconRef.current) { + return; + } + + const markup = iconRef.current.innerHTML; + + if (value.markup !== markup) { + onChange({ ...iconValue, markup, markupWidth: value?.markupWidth }, true); + } + }, [iconValue]); return ( - { - onChange({ id: value.id, svg: getSvg(value.id) }, true); - }} - useInSidebar - /> + + {/* Renders IconPicker.Icon for accessing its HTML without displaying it. */} +
    + +
    ); }; diff --git a/packages/app-page-builder/src/editor/plugins/elementVariables/basic/icon/index.tsx b/packages/app-page-builder/src/editor/plugins/elementVariables/basic/icon/index.tsx index c00d18b3a14..1759a759aa8 100644 --- a/packages/app-page-builder/src/editor/plugins/elementVariables/basic/icon/index.tsx +++ b/packages/app-page-builder/src/editor/plugins/elementVariables/basic/icon/index.tsx @@ -17,9 +17,8 @@ export default { setElementValue(element, variables) { const newIcon = variables?.length > 0 ? variables[0].value : null; - if (newIcon && element?.data?.icon?.id && element?.data?.icon?.svg) { - element.data.icon.id = newIcon.id; - element.data.icon.svg = newIcon.svg; + if (newIcon && element?.data?.icon?.value) { + element.data.icon.value = newIcon; } return element; diff --git a/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettings.tsx b/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettings.tsx index fb10a13c9ab..9d2a15d4a8c 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettings.tsx +++ b/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettings.tsx @@ -1,17 +1,17 @@ -import React, { useCallback } from "react"; +import React, { useCallback, useEffect, useRef, useState } from "react"; import { useRecoilValue } from "recoil"; import { css } from "emotion"; import { activeElementAtom, elementWithChildrenByIdSelector } from "../../../recoil/modules"; import { PbEditorElement, PbEditorPageElementSettingsRenderComponentProps } from "~/types"; // Components -import IconPickerComponent from "../../../components/IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { ICON_PICKER_SIZE } from "@webiny/app-admin/components/IconPicker/types"; import Accordion from "../../elementSettings/components/Accordion"; -import { BaseColorPicker } from "../../elementSettings/components/ColorPicker"; import { ContentWrapper } from "../../elementSettings/components/StyledComponents"; import Wrapper from "../../elementSettings/components/Wrapper"; import InputField from "../../elementSettings/components/InputField"; import SelectField from "../../elementSettings/components/SelectField"; -import { updateButtonElementIcon } from "../utils/iconUtils"; +import { replaceFullIconObject } from "../utils/iconUtils"; import useUpdateHandlers from "../../elementSettings/useUpdateHandlers"; import { usePageElements } from "@webiny/app-page-builder-elements/hooks/usePageElements"; import startCase from "lodash/startCase"; @@ -46,6 +46,9 @@ const classes = { width: "100%" } } + }), + rightCellStyle: css({ + justifySelf: "end" }) }; @@ -67,33 +70,42 @@ const ButtonSettings = ({ })); const defaultType = typesOptions[0].value; - const { type = defaultType, icon = { width: 36 } } = element.data || {}; + const { type = defaultType, icon = {} } = element.data || {}; - const { getUpdateValue, getUpdatePreview } = useUpdateHandlers({ + const { getUpdateValue } = useUpdateHandlers({ element, dataNamespace: "data", - postModifyElement: updateButtonElementIcon + postModifyElement: replaceFullIconObject }); const updateType = useCallback(value => getUpdateValue("type")(value), [getUpdateValue]); - const updateIcon = useCallback(value => getUpdateValue("icon.id")(value?.id), [getUpdateValue]); - const updateIconColor = useCallback( - (value: string) => getUpdateValue("icon.color")(value), - [getUpdateValue] - ); - const updateIconColorPreview = useCallback( - (value: string) => getUpdatePreview("icon.color")(value), - [getUpdatePreview] - ); - const updateIconWidth = useCallback( - (value: string) => getUpdateValue("icon.width")(value), - [getUpdateValue] - ); const updateIconPosition = useCallback( (value: string) => getUpdateValue("icon.position")(value), [getUpdateValue] ); - const removeIcon = useCallback(() => getUpdateValue("icon")({ id: null }), [getUpdateValue]); + + const iconRef = useRef(null); + const [iconValue, setIconValue] = useState(icon.value); + const [iconWidth, setIconWidth] = useState(icon.width); + + useEffect(() => { + setIconValue(icon.value); + setIconWidth(icon.width); + }, [element.id]); + + useEffect(() => { + if (!iconRef.current) { + return; + } + + const markup = iconRef.current.innerHTML; + + if (markup === "") { + getUpdateValue("icon")({ value: null, width: iconWidth }); + } else if (icon.value?.markup !== markup) { + getUpdateValue("icon")({ value: { ...iconValue, markup }, width: iconWidth }); + } + }, [iconValue, iconWidth]); return ( @@ -108,20 +120,11 @@ const ButtonSettings = ({ - - - - { + setIconWidth(value === "" ? undefined : Number(value)); + }} /> Bottom + {/* Renders IconPicker.Icon for accessing its HTML without displaying it. */} +
    + +
    ); diff --git a/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettingsV2.tsx b/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettingsV2.tsx index 0bc109063f9..560088c85ec 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettingsV2.tsx +++ b/packages/app-page-builder/src/editor/plugins/elements/button/ButtonSettingsV2.tsx @@ -1,17 +1,17 @@ -import React, { useCallback } from "react"; +import React, { useCallback, useState, useEffect, useRef } from "react"; import { useRecoilValue } from "recoil"; import { css } from "emotion"; import { activeElementAtom, elementWithChildrenByIdSelector } from "../../../recoil/modules"; import { PbEditorElement, PbEditorPageElementSettingsRenderComponentProps } from "~/types"; // Components -import IconPickerComponent from "../../../components/IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { ICON_PICKER_SIZE } from "@webiny/app-admin/components/IconPicker/types"; import Accordion from "../../elementSettings/components/Accordion"; -import { BaseColorPicker } from "../../elementSettings/components/ColorPicker"; import { ContentWrapper } from "../../elementSettings/components/StyledComponents"; import Wrapper from "../../elementSettings/components/Wrapper"; import InputField from "../../elementSettings/components/InputField"; import SelectField from "../../elementSettings/components/SelectField"; -import { updateButtonElementIcon } from "../utils/iconUtils"; +import { replaceFullIconObject } from "../utils/iconUtils"; import useUpdateHandlers from "../../elementSettings/useUpdateHandlers"; import { usePageElements } from "@webiny/app-page-builder-elements/hooks/usePageElements"; import startCase from "lodash/startCase"; @@ -46,6 +46,9 @@ const classes = { width: "100%" } } + }), + rightCellStyle: css({ + justifySelf: "end" }) }; @@ -67,33 +70,19 @@ const ButtonSettings = ({ })); const defaultType = typesOptions[0].value; - const { type = defaultType, icon = { width: 36 } } = element.data || {}; + const { type = defaultType, icon = {} } = element.data || {}; const { getUpdateValue, getUpdatePreview } = useUpdateHandlers({ element, dataNamespace: "data", - postModifyElement: updateButtonElementIcon + postModifyElement: replaceFullIconObject }); const updateType = useCallback(value => getUpdateValue("type")(value), [getUpdateValue]); - const updateIcon = useCallback(value => getUpdateValue("icon.id")(value?.id), [getUpdateValue]); - const updateIconColor = useCallback( - (value: string) => getUpdateValue("icon.color")(value), - [getUpdateValue] - ); - const updateIconColorPreview = useCallback( - (value: string) => getUpdatePreview("icon.color")(value), - [getUpdatePreview] - ); - const updateIconWidth = useCallback( - (value: string) => getUpdateValue("icon.width")(value), - [getUpdateValue] - ); const updateIconPosition = useCallback( (value: string) => getUpdateValue("icon.position")(value), [getUpdateValue] ); - const removeIcon = useCallback(() => getUpdateValue("icon")({ id: null }), [getUpdateValue]); const updateButtonText = useCallback( (event: React.FocusEvent) => getUpdateValue("buttonText")(event.target.value), @@ -104,6 +93,29 @@ const ButtonSettings = ({ [getUpdatePreview] ); + const iconRef = useRef(null); + const [iconValue, setIconValue] = useState(icon.value); + const [iconWidth, setIconWidth] = useState(icon.width); + + useEffect(() => { + setIconValue(icon.value); + setIconWidth(icon.width); + }, [element.id]); + + useEffect(() => { + if (!iconRef.current) { + return; + } + + const markup = iconRef.current.innerHTML; + + if (markup === "") { + getUpdateValue("icon")({ value: null, width: iconWidth }); + } else if (icon.value?.markup !== markup) { + getUpdateValue("icon")({ value: { ...iconValue, markup }, width: iconWidth }); + } + }, [iconValue, iconWidth]); + return ( @@ -116,21 +128,16 @@ const ButtonSettings = ({ ))} - - - - - + { + setIconWidth(value === "" ? undefined : Number(value)); + }} /> + {/* Renders IconPicker.Icon for accessing its HTML without displaying it. */} +
    + +
    ); diff --git a/packages/app-page-builder/src/editor/plugins/elements/button/IconPicker.tsx b/packages/app-page-builder/src/editor/plugins/elements/button/IconPicker.tsx deleted file mode 100644 index 6f624aa611e..00000000000 --- a/packages/app-page-builder/src/editor/plugins/elements/button/IconPicker.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from "react"; -import IconPickerComponent from "~/editor/components/IconPicker"; -import { PbIcon } from "~/types"; -import { Typography } from "@webiny/ui/Typography"; -import { Cell } from "@webiny/ui/Grid"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; - -interface IconPickerProps { - label: string; - value: IconProp; - updateValue: (item: PbIcon) => void; -} - -const IconPicker = ({ label, value, updateValue }: IconPickerProps) => { - return ( - <> - - {label} - - - - - - ); -}; - -export default React.memo(IconPicker); diff --git a/packages/app-page-builder/src/editor/plugins/elements/icon/IconSettings.tsx b/packages/app-page-builder/src/editor/plugins/elements/icon/IconSettings.tsx index 96b8364e613..e67c421cf60 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/icon/IconSettings.tsx +++ b/packages/app-page-builder/src/editor/plugins/elements/icon/IconSettings.tsx @@ -1,15 +1,15 @@ -import React, { useCallback } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { css } from "emotion"; import { useRecoilValue } from "recoil"; import { PbEditorElement, PbEditorPageElementSettingsRenderComponentProps } from "~/types"; // Components -import IconPicker from "../../../components/IconPicker"; +import { IconPicker } from "@webiny/app-admin/components/IconPicker"; +import { ICON_PICKER_SIZE } from "@webiny/app-admin/components/IconPicker/types"; import Accordion from "../../elementSettings/components/Accordion"; import Wrapper from "../../elementSettings/components/Wrapper"; import InputField from "../../elementSettings/components/InputField"; -import { BaseColorPicker } from "../../elementSettings/components/ColorPicker"; import useUpdateHandlers from "../../elementSettings/useUpdateHandlers"; -import { updateIconElement } from "../utils/iconUtils"; +import { replaceFullIconObject } from "../utils/iconUtils"; import { activeElementAtom, elementWithChildrenByIdSelector } from "~/editor/recoil/modules"; const classes = { @@ -36,43 +36,45 @@ const IconSettings = ({ ) as PbEditorElement; const { data: { icon = {} } = {} } = element; - const { getUpdateValue, getUpdatePreview } = useUpdateHandlers({ + const { getUpdateValue } = useUpdateHandlers({ element, - dataNamespace: "data.icon", - postModifyElement: updateIconElement + dataNamespace: "data", + postModifyElement: replaceFullIconObject }); - const updateIcon = useCallback(value => getUpdateValue("id")(value?.id), [getUpdateValue]); - const updateColor = useCallback( - (value: string) => getUpdateValue("color")(value), - [getUpdateValue] - ); - const updateColorPreview = useCallback( - (value: string) => getUpdatePreview("color")(value), - [getUpdatePreview] - ); - const updateWidth = useCallback( - (value: string) => getUpdateValue("width")(value), - [getUpdateValue] - ); + const iconRef = useRef(null); + const [iconValue, setIconValue] = useState(icon.value); + const [iconWidth, setIconWidth] = useState(icon.width); + + useEffect(() => { + setIconValue(icon.value); + setIconWidth(icon.width); + }, [element.id]); + + useEffect(() => { + if (!iconRef.current) { + return; + } + + const markup = iconRef.current.innerHTML; + + if (icon.value?.markup !== markup) { + getUpdateValue("icon")({ value: { ...iconValue, markup }, width: iconWidth }); + } + }, [iconValue, iconWidth]); return ( <> - + - - - - { + setIconWidth(value === "" ? undefined : Number(value)); + }} placeholder="50" /> + {/* Renders IconPicker.Icon for accessing its HTML without displaying it. */} +
    + +
    ); diff --git a/packages/app-page-builder/src/editor/plugins/elements/icon/PeIcon.tsx b/packages/app-page-builder/src/editor/plugins/elements/icon/PeIcon.tsx index cf7b59eba02..e3bffd78634 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/icon/PeIcon.tsx +++ b/packages/app-page-builder/src/editor/plugins/elements/icon/PeIcon.tsx @@ -12,8 +12,9 @@ interface Props { const PeIcon = (props: Props) => { const { element } = props; const variableValue = useElementVariableValue(element); - if (variableValue?.svg) { - return ; + + if (variableValue?.markup) { + return ; } return ; diff --git a/packages/app-page-builder/src/editor/plugins/elements/icon/index.tsx b/packages/app-page-builder/src/editor/plugins/elements/icon/index.tsx index 9a64c5419db..10307bc9924 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/icon/index.tsx +++ b/packages/app-page-builder/src/editor/plugins/elements/icon/index.tsx @@ -14,7 +14,6 @@ import { ReactComponent as IconSvg } from "./round-star_border-24px.svg"; // Components import IconSettings from "./IconSettings"; import Icon from "./Icon"; -import { getSvg } from "../utils/iconUtils"; export default (args: PbEditorElementPluginArgs = {}) => { const PreviewBox = styled("div")({ @@ -71,8 +70,12 @@ export default (args: PbEditorElementPluginArgs = {}) => { elements: [], data: { icon: { - id: ["far", "star"], - svg: getSvg(["far", "star"], { width: 50 }), + value: { + type: "icon", + name: "regular_star", + value: '', + width: 576 + }, width: 50 }, settings: { diff --git a/packages/app-page-builder/src/editor/plugins/elements/utils/iconUtils.ts b/packages/app-page-builder/src/editor/plugins/elements/utils/iconUtils.ts index 0fe41318cd2..fa9296f0afc 100644 --- a/packages/app-page-builder/src/editor/plugins/elements/utils/iconUtils.ts +++ b/packages/app-page-builder/src/editor/plugins/elements/utils/iconUtils.ts @@ -1,79 +1,13 @@ -import React from "react"; -import { renderToStaticMarkup } from "react-dom/server"; -import { plugins } from "@webiny/plugins"; -import { PbIcon, PbIconsPlugin } from "~/types"; import { PostModifyElementArgs } from "../../elementSettings/useUpdateHandlers"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; -let icons: PbIcon[]; -const getIcons = (): PbIcon[] => { - if (!icons) { - const pluginsByType = plugins.byType("pb-icons"); - icons = pluginsByType.reduce((icons, pl) => { - return icons.concat(pl.getIcons()); - }, [] as PbIcon[]); +export const replaceFullIconObject = ({ + name, + newElement, + newValue +}: PostModifyElementArgs): void => { + // If the icon value has changed, replace `icon.value` with `newValue.value`, + // instead of performing the default merge of objects. + if (newElement.data.icon && name === "icon") { + newElement.data.icon.value = newValue.value; } - return icons; }; -interface GetSvgProps { - width?: number; - color?: string; -} - -const getSvg = (id: IconProp | undefined, props: GetSvgProps = {}): string | undefined => { - if (!props.width) { - props.width = 50; - } - if (!Array.isArray(id)) { - return undefined; - } - const icon = getIcons().find(ic => ic.id[0] === id[0] && ic.id[1] === id[1]); - if (!icon) { - return undefined; - } - return renderToStaticMarkup(React.cloneElement(icon.svg, props)); -}; -interface IconData { - id?: string; - width?: number; - color?: string; - position?: string; -} -const updateButtonElementIcon = ({ name, newElement, element }: PostModifyElementArgs): void => { - const icon: IconData = element?.data || {}; - - const isIcon = name.startsWith("icon"); - if (!isIcon) { - return; - } - const { id, width, color, position } = newElement.data?.icon || {}; - - const isSameIconProps = - icon.width === width && icon.color === color && icon.position === position; - let isSelectedIcon = false; - - if (isSameIconProps && Array.isArray(id) && icon.id) { - isSelectedIcon = icon.id[0] === id[0] && icon.id[1] === id[1]; - } - - const updatedIcon = isSelectedIcon ? {} : newElement.data.icon || {}; - // Modify the element directly. - newElement.data.icon = { - ...updatedIcon, - // By setting "svg" as "null" we can truly reset it; - // otherwise "undefined" will be overridden during merge. - svg: id && !isSelectedIcon ? getSvg(id, { width, color }) : undefined - }; -}; - -const updateIconElement = ({ newElement }: PostModifyElementArgs): void => { - if (!newElement.data.icon) { - console.log(`Missing data.icon on element "${newElement.id}".`); - return; - } - const { id, width, color } = newElement.data.icon; - // Modify the element directly. - newElement.data.icon.svg = getSvg(id, { width, color }); -}; - -export { getSvg, updateButtonElementIcon, updateIconElement }; diff --git a/packages/app-page-builder/src/types.ts b/packages/app-page-builder/src/types.ts index 2fb4a664401..f0af7b0b286 100644 --- a/packages/app-page-builder/src/types.ts +++ b/packages/app-page-builder/src/types.ts @@ -4,7 +4,7 @@ import { BaseEventAction, EventAction } from "./editor/recoil/eventActions"; import { PbState } from "./editor/recoil/modules/types"; import { Plugin } from "@webiny/app/types"; import { BindComponent } from "@webiny/form"; -import { IconName, IconPrefix, IconProp } from "@fortawesome/fontawesome-svg-core"; +import { Icon } from "@webiny/app-admin/components/IconPicker/types"; import { FormAPI, FormOnSubmit, FormSetValue, GenericFormData } from "@webiny/form/types"; import { CoreOptions } from "medium-editor"; import { MenuTreeItem } from "~/admin/views/Menus/types"; @@ -118,10 +118,8 @@ export interface PbElementDataImageType { } export interface PbElementDataIconType { - id?: IconProp; + value?: Icon; width?: number; - color?: string; - svg?: string; position?: string; } @@ -602,26 +600,6 @@ export interface PbEditorPageQueryFieldsPlugin extends Plugin { fields: string; } -export type PbIcon = { - /** - * [ pack, icon ], ex: ["fab", "cog"] - */ - id: [IconPrefix, IconName]; - /** - * Icon name - */ - name: string; - /** - * SVG element - */ - svg: ReactElement; -}; - -export type PbIconsPlugin = Plugin & { - type: "pb-icons"; - getIcons(): PbIcon[]; -}; - export type PbEditorToolbarTopPlugin = Plugin & { type: "pb-editor-toolbar-top"; renderAction(): ReactElement; @@ -869,7 +847,7 @@ export interface PbMenu { export interface PbBlockCategory { name: string; slug: string; - icon: string; + icon: Icon; description: string; createdOn: string; createdBy: PbIdentity; diff --git a/packages/ui/src/ColorPicker/ColorPicker.tsx b/packages/ui/src/ColorPicker/ColorPicker.tsx index 894b4400674..b81d9304751 100644 --- a/packages/ui/src/ColorPicker/ColorPicker.tsx +++ b/packages/ui/src/ColorPicker/ColorPicker.tsx @@ -1,6 +1,7 @@ import React from "react"; import { SketchPicker, ColorResult } from "react-color"; import { css } from "emotion"; +import styled from "@emotion/styled"; import { FormComponentProps } from "~/types"; import { FormElementMessage } from "~/FormElementMessage"; import classNames from "classnames"; @@ -22,11 +23,6 @@ const classes = { display: "inline-block", cursor: "pointer" }), - // @ts-expect-error - popover: css({ - position: "absolute", - zIndex: "2" - }), classNames: css({ position: "fixed", top: "0px", @@ -40,6 +36,12 @@ const classes = { }) }; +const Popover = styled.div<{ align?: string }>` + position: absolute; + z-index: 2; + right: ${({ align }) => (align === "right" ? "10px" : "auto")}; +`; + interface ColorPickerState { showColorPicker: boolean; } @@ -53,6 +55,9 @@ interface ColorPickerProps extends FormComponentProps { // Description beneath the color picker. description?: string; + + // Popover alignment (default is `left`). + align?: "left" | "right"; } /** @@ -96,7 +101,7 @@ class ColorPicker extends React.Component { }; public override render() { - const { value, label, disable, description, validation } = this.props; + const { value, label, disable, description, validation, align } = this.props; let backgroundColorStyle = {}; if (value) { @@ -125,10 +130,10 @@ class ColorPicker extends React.Component {
    {this.state.showColorPicker ? ( -
    +
    -
    +
    ) : null}
    diff --git a/yarn.lock b/yarn.lock index 7d1616fdb83..11a06ee6371 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6293,68 +6293,6 @@ __metadata: languageName: node linkType: hard -"@fortawesome/fontawesome-common-types@npm:6.2.1": - version: 6.2.1 - resolution: "@fortawesome/fontawesome-common-types@npm:6.2.1" - checksum: 1a6e202beac46bc7e7bf791b37b6164b15453cc70b078456121c77d516a1077a1cfdab8aa9c77358c71f87f54560c0d9cbfb440cfb871f6d0f1f4671aabf9a0a - languageName: node - linkType: hard - -"@fortawesome/fontawesome-common-types@npm:^0.3.0": - version: 0.3.0 - resolution: "@fortawesome/fontawesome-common-types@npm:0.3.0" - checksum: f08280e2e6c7df5cf2c80c88092828b367bb824ec21a6ba0e5d290ebf86038de166622152c8845a0aeaeff70bd54df7af17f1ef26dea7b832fdebdcc37412c37 - languageName: node - linkType: hard - -"@fortawesome/fontawesome-svg-core@npm:^1.3.0": - version: 1.3.0 - resolution: "@fortawesome/fontawesome-svg-core@npm:1.3.0" - dependencies: - "@fortawesome/fontawesome-common-types": ^0.3.0 - checksum: 78be521be3aac56cf81695c5f3fefda8a0e0dcbd37cd734f09b74a3657dd9c073cb86c5adf60a4904e584936fe9a63ee913d932c03105092bd8c44bb92f3aad6 - languageName: node - linkType: hard - -"@fortawesome/free-brands-svg-icons@npm:^6.0.0": - version: 6.2.1 - resolution: "@fortawesome/free-brands-svg-icons@npm:6.2.1" - dependencies: - "@fortawesome/fontawesome-common-types": 6.2.1 - checksum: e826787631672faed91b0a1f4bf1580582bd20f3aba1a8e547f0b49548d554a0ac629ea9d3998f076fb2574440f75e08536d088404f760c9910b9f185a6877f5 - languageName: node - linkType: hard - -"@fortawesome/free-regular-svg-icons@npm:^6.0.0": - version: 6.2.1 - resolution: "@fortawesome/free-regular-svg-icons@npm:6.2.1" - dependencies: - "@fortawesome/fontawesome-common-types": 6.2.1 - checksum: 1f591d2a0bb10783b58586fcef5c1affdfb61c3e92de885e633add130e17e28d2e62c3f780b3cf819ec25ac9e332a186be32c9ed6d03e3ff31f36f7789b88e6c - languageName: node - linkType: hard - -"@fortawesome/free-solid-svg-icons@npm:^6.0.0": - version: 6.2.1 - resolution: "@fortawesome/free-solid-svg-icons@npm:6.2.1" - dependencies: - "@fortawesome/fontawesome-common-types": 6.2.1 - checksum: a24170b676fced926cccdd08171357b20714483ceddeb052985a9acae3a347ffe853de2e757bf95cc7add74807d82eb1cc578e17430c32ca2c6a844c8276f91a - languageName: node - linkType: hard - -"@fortawesome/react-fontawesome@npm:^0.1.17": - version: 0.1.19 - resolution: "@fortawesome/react-fontawesome@npm:0.1.19" - dependencies: - prop-types: ^15.8.1 - peerDependencies: - "@fortawesome/fontawesome-svg-core": ~1 || ~6 - react: ">=16.x" - checksum: 77dbe1d5fa156a2ff4aa069d6c11f0ba1fcf43df72c9f03f1eec353d23798513a1f2773957a2bc3107fb8dc79fa606999ed91bf21659745bcc166abc4072819e - languageName: node - linkType: hard - "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -15880,8 +15818,8 @@ __metadata: "@babel/preset-react": ^7.22.5 "@babel/preset-typescript": ^7.22.5 "@babel/runtime": ^7.22.6 - "@fortawesome/fontawesome-svg-core": ^1.3.0 "@types/react": 17.0.39 + "@webiny/app-admin": 0.0.0 "@webiny/app-security": 0.0.0 "@webiny/cli": 0.0.0 "@webiny/form": 0.0.0 @@ -15914,12 +15852,6 @@ __metadata: "@babel/runtime": ^7.22.6 "@emotion/react": ^11.10.6 "@emotion/styled": ^11.10.6 - "@fortawesome/fontawesome-common-types": ^0.3.0 - "@fortawesome/fontawesome-svg-core": ^1.3.0 - "@fortawesome/free-brands-svg-icons": ^6.0.0 - "@fortawesome/free-regular-svg-icons": ^6.0.0 - "@fortawesome/free-solid-svg-icons": ^6.0.0 - "@fortawesome/react-fontawesome": ^0.1.17 "@lexical/utils": ^0.12.2 "@material-design-icons/svg": ^0.14.2 "@svgr/webpack": ^6.1.1 @@ -15971,7 +15903,6 @@ __metadata: react-dom: 17.0.2 react-helmet: ^6.1.0 react-hotkeyz: ^1.0.4 - react-virtualized: ^9.21.2 rimraf: ^3.0.2 ttypescript: ^1.5.12 typescript: 4.7.4 @@ -16195,12 +16126,6 @@ __metadata: "@babel/runtime": ^7.22.6 "@emotion/react": ^11.10.6 "@emotion/styled": ^11.10.6 - "@fortawesome/fontawesome-common-types": ^0.3.0 - "@fortawesome/fontawesome-svg-core": ^1.3.0 - "@fortawesome/free-brands-svg-icons": ^6.0.0 - "@fortawesome/free-regular-svg-icons": ^6.0.0 - "@fortawesome/free-solid-svg-icons": ^6.0.0 - "@fortawesome/react-fontawesome": ^0.1.17 "@material-design-icons/svg": ^0.14.2 "@svgr/webpack": ^6.1.1 "@types/aos": ^3.0.4 @@ -16268,7 +16193,6 @@ __metadata: react-sortable: ^2.0.0 react-sortable-tree: ^2.6.0 react-transition-group: ^4.3.0 - react-virtualized: ^9.21.0 recoil: ^0.1.2 rimraf: ^3.0.2 slugify: ^1.2.9 @@ -39771,7 +39695,7 @@ __metadata: languageName: node linkType: hard -"react-virtualized@npm:^9.21.0, react-virtualized@npm:^9.21.2": +"react-virtualized@npm:^9.21.2": version: 9.22.3 resolution: "react-virtualized@npm:9.22.3" dependencies: