Showing preview only (1,752K chars total). Download the full file or copy to clipboard to get everything.
Repository: rotick/searchemoji
Branch: main
Commit: be31747fb286
Files: 83
Total size: 12.7 MB
Directory structure:
gitextract_wse6tx42/
├── .env.example
├── .eslintrc
├── .gitignore
├── .husky/
│ ├── commit-msg
│ └── pre-commit
├── .npmrc
├── .prettierrc
├── Dockerfile
├── LICENSE
├── README.md
├── app/
│ └── router.options.ts
├── app.vue
├── assets/
│ └── css/
│ └── tailwind.css
├── components/
│ ├── Detail.vue
│ ├── DropDown.vue
│ ├── Footer.vue
│ ├── Logo.vue
│ ├── Range.vue
│ ├── ThemeToggle.vue
│ ├── Toggle.vue
│ ├── ToolBar.vue
│ ├── Underline.vue
│ └── Yesicon.vue
├── data/
│ ├── emoji-index.json
│ ├── emoji-test.txt
│ ├── emoji.json
│ ├── group-translate.json
│ └── groupNames.json
├── error.vue
├── i18n.config.ts
├── lang/
│ ├── ar.json
│ ├── bn.json
│ ├── da.json
│ ├── de.json
│ ├── el.json
│ ├── en.json
│ ├── es.json
│ ├── fi.json
│ ├── fr.json
│ ├── he.json
│ ├── hi.json
│ ├── hu.json
│ ├── id.json
│ ├── it.json
│ ├── ja.json
│ ├── ko.json
│ ├── ms.json
│ ├── nl.json
│ ├── no.json
│ ├── pl.json
│ ├── pt.json
│ ├── ro.json
│ ├── ru.json
│ ├── sv.json
│ ├── th.json
│ ├── tr.json
│ ├── uk.json
│ ├── vi.json
│ ├── zh-hans.json
│ └── zh-hant.json
├── locale.ts
├── nuxt.config.ts
├── package.json
├── pages/
│ ├── [id].vue
│ └── index.vue
├── public/
│ └── site.webmanifest
├── scripts/
│ ├── copyFile.ts
│ ├── generateEmojiData.ts
│ ├── generateGroupName.ts
│ ├── generateKeywords.ts
│ ├── generateLocale.ts
│ ├── handle.ts
│ ├── openAI.ts
│ └── prompts.ts
├── server/
│ ├── api/
│ │ ├── emoji/
│ │ │ └── [id].ts
│ │ ├── emojis.ts
│ │ └── home.ts
│ ├── middleware/
│ │ └── emoji.ts
│ ├── plugins/
│ │ └── handleQuery.ts
│ └── tsconfig.json
├── tailwind.config.ts
├── tsconfig.json
└── utils/
└── index.ts
================================================
FILE CONTENTS
================================================
================================================
FILE: .env.example
================================================
# Your API Key for OpenAI
OPENAI_API_KEY=
# Provide proxy for OpenAI API. e.g. http://127.0.0.1:7890
# HTTPS_PROXY=
# Custom base url for OpenAI API. default: https://api.openai.com
OPENAI_API_BASE_URL=https://api.openai.com
# ID of the model to use. https://platform.openai.com/docs/api-reference/models/list
OPENAI_API_MODEL=gpt-3.5-turbo-1106
================================================
FILE: .eslintrc
================================================
{
"root":true,
"env":{
"browser": true,
"node":true
},
"parser":"vue-eslint-parser",
"extends":[
"plugin:vue/vue3-recommended",
"standard-with-typescript"
],
"parserOptions":{
"project":[
"./tsconfig.json"
],
"parser":"@typescript-eslint/parser",
"ecmaVersion":2020,
"ecmaFeatures":{
"jsx":true
},
"extraFileExtensions":[
".vue"
]
},
"rules":{
"no-console":"off",
"no-debugger":"off",
"no-control-regex":0,
"no-self-compare":0,
"space-infix-ops":0,
"vue/no-v-html": 0,
"vue/multi-word-component-names":0,
"vue/no-deprecated-slot-attribute":0,
"vue/no-deprecated-dollar-listeners-api":0,
"vue/max-attributes-per-line":"off",
"vue/singleline-html-element-content-newline":0,
"@typescript-eslint/return-await":"off",
"@typescript-eslint/no-explicit-any":"off",
"@typescript-eslint/no-var-requires":"off",
"@typescript-eslint/no-empty-function":"off",
"@typescript-eslint/explicit-function-return-type":"off",
"@typescript-eslint/strict-boolean-expressions":"off",
"@typescript-eslint/promise-function-async":"off",
"@typescript-eslint/no-floating-promises":"off",
"@typescript-eslint/prefer-nullish-coalescing":"off",
"@typescript-eslint/triple-slash-reference":"off",
"@typescript-eslint/restrict-template-expressions": "off",
"@typescript-eslint/no-misused-promises": "off"
}
}
================================================
FILE: .gitignore
================================================
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
temp
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example
================================================
FILE: .husky/commit-msg
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx --no-install commitlint --edit $1
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
================================================
FILE: .npmrc
================================================
shamefully-hoist=true
================================================
FILE: .prettierrc
================================================
semi: false
singleQuote: true
printWidth: 160
trailingComma: 'none'
arrowParens: 'avoid'
================================================
FILE: Dockerfile
================================================
ARG NODE_VERSION=18.19.0
FROM node:${NODE_VERSION}-alpine
# Set working directory for all build stages.
WORKDIR /app
# Copy the rest of the source files into the image.
COPY .output .output
COPY data/emoji-index.json data/emoji-index.json
COPY data/group-translate.json data/group-translate.json
COPY package.json .
# Use production node environment by default.
ENV NODE_ENV production
ENV PORT 8081
# Run the application as a non-root user.
# USER node
EXPOSE 8081
# Run the application.
CMD node .output/server/index.mjs
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2023-present dongnaebi <https://github.com/dongnaebi>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<h1 align="center">🧐 SearchEmoji</h1>
<p align="center">🔍Search for Emoji, 🖱️Click to Copy - Emoji Search Engine Supporting 30 Languages</p>
<p align="center"><a href="https://searchemoji.app/">👉 Visit Website</a></p>

Let Emojis bring your content to life. SearchEmoji houses the largest collection of emojis from around the world. Find exactly the emoji you need through powerful search functions—either search by keyword or browse through categories. Preview any emoji and copy it with one click into your documents, messages, and social posts.
## Emoji Data
Emoji data comes from [Unicode](https://unicode.org/Public/emoji/latest/emoji-test.txt), Multilingual names and keywords are generated by GPT-3.5-turbo. You can view the detailed generation code in the `/scripts` directory, or you can directly view the generated results in the `/data` directory.
## Contributing
The content generated by AI may be inaccurate. If you encounter problems or want to correct the name and keywords, you can submit an issue or submit a PR directly.
## Development
```bash
# install
pnpm install
# development
pnpm run dev
# build for production
pnpm run build
```
================================================
FILE: app/router.options.ts
================================================
import type { RouterConfig } from '@nuxt/schema'
const options: RouterConfig = {
scrollBehavior (_to, _from, savedPosition) {
if (_to.hash) {
// don't back to hash when close detail but refresh
if (_from.hash && savedPosition) {
return savedPosition
}
return {
el: _to.hash,
top: window.innerWidth <= 768 ? 148 : 96,
behavior: 'smooth'
}
}
}
}
export default options
================================================
FILE: app.vue
================================================
<template>
<NuxtPage />
</template>
<script setup lang="ts">
const { t } = useI18n()
const route = useRoute()
const i18nHead = useLocaleHead({
addSeoAttributes: true
})
const url = useRequestURL()
// const origin = 'https://' + url.host
const origin = url.origin
useHead({
htmlAttrs: {
lang: i18nHead.value.htmlAttrs?.lang
},
titleTemplate: titleChunk => {
return (route.name as string).startsWith('index') && !route.query.q ? titleChunk || t('seo.title') : `${titleChunk} - SearchEmoji`
},
link: [
...(i18nHead.value.link || []),
{
rel: 'icon',
type: 'image/png',
sizes: '16x16',
href: '/favicon-16x16.png'
},
{
rel: 'icon',
type: 'image/png',
sizes: '32x32',
href: '/favicon-32x32.png'
},
{
rel: 'apple-touch-icon',
sizes: '152x152',
href: '/apple-touch-icon.png'
},
{
rel: 'manifest',
href: '/site.webmanifest'
}
],
meta: [
...(i18nHead.value?.meta || []),
{ name: 'description', content: t('seo.description') },
{ property: 'og:site_name', content: t('seo.siteName') },
{ property: 'og:url', content: `${origin}/` },
{ property: 'og:type', content: 'website' },
{ property: 'og:title', content: t('seo.title') },
{ property: 'og:description', content: t('seo.description') },
{ property: 'og:image', content: `${origin}/cover.jpg` },
{ name: 'twitter:card', content: 'summary_large_image' },
{ name: 'twitter:domain', content: url.host },
{ name: 'twitter:url', content: `${origin}/` },
{ name: 'twitter:title', content: t('seo.title') },
{ name: 'twitter:description', content: t('seo.description') },
{ name: 'twitter:image', content: `${origin}/cover.jpg` }
]
})
</script>
================================================
FILE: assets/css/tailwind.css
================================================
@tailwind base;
@tailwind components;
@tailwind utilities;
@layer components {
.bg-body {
@apply bg-zinc-100 dark:bg-zinc-900;
}
.color-title {
@apply text-zinc-800 dark:text-white;
}
.color-action {
@apply text-zinc-700 dark:text-zinc-200;
}
.color-secondary {
@apply text-zinc-400 dark:text-zinc-500;
}
/* 输入框的 placeholder 和 disable 颜色一致 */
.color-disable {
@apply text-zinc-300 dark:text-zinc-600;
}
.border-main {
@apply border-zinc-200 dark:border-zinc-700
}
.card{
@apply bg-white/90 dark:bg-zinc-800/90 border border-zinc-200/80 dark:border-zinc-700/80 backdrop-blur-xl shadow-sm
}
.no-backdrop, .card.no-backdrop, .no-backdrop{
@apply backdrop-blur-none
}
.card .card{
@apply bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700
}
.btn {
@apply font-medium rounded-lg text-sm px-7 md:px-5 py-2.5 focus:outline-none inline-flex justify-center items-center disabled:bg-zinc-200 dark:disabled:bg-zinc-700 disabled:cursor-not-allowed
}
.btn-xs{
@apply px-2 py-0
}
.btn-primary {
@apply text-white bg-fuchsia-500 hover:bg-fuchsia-600 disabled:bg-zinc-200 dark:disabled:bg-zinc-800 dark:disabled:text-zinc-700
}
.btn-outline{
@apply text-fuchsia-500 hover:text-white border border-fuchsia-500 hover:bg-fuchsia-500
}
.checkbox{
@apply w-4 h-4 text-fuchsia-500/80 bg-zinc-100 border-zinc-300 rounded dark:bg-zinc-700 dark:border-zinc-600
checked:bg-fuchsia-500/80 dark:checked:bg-current dark:checked:border-transparent
indeterminate:bg-none indeterminate:bg-zinc-100 indeterminate:border-zinc-300 dark:indeterminate:bg-zinc-700 dark:indeterminate:border-zinc-600
disabled:opacity-50 disabled:cursor-not-allowed focus:ring-0 focus:ring-transparent focus:ring-offset-transparent border
focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-zinc-900
}
.tooltip{
@apply relative after:absolute after:top-0 after:left-[50%] after:w-[auto] after:translate-x-[-50%] after:translate-y-[-105%] after:whitespace-nowrap after:z-10 after:bg-zinc-900 after:shadow-sm after:text-white after:py-1 after:px-2 after:text-sm after:rounded-lg after:content-[attr(data-tip)] after:hidden hover:after:block
}
}
html{
font-family: Roboto, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui;
}
.dark {
color-scheme: dark;
}
body {
@apply bg-zinc-100 dark:bg-zinc-900 text-zinc-500 dark:text-zinc-400
}
input::placeholder{
@apply text-zinc-300 dark:text-zinc-600;
}
a[target=_blank]:not(.no-icon){
@apply inline-flex items-center text-zinc-700 dark:text-zinc-200 font-medium;
}
a[target=_blank]:not(.no-icon):hover{
text-decoration: underline wavy;
@apply text-fuchsia-500
}
a[target=_blank]:not(.no-icon):after{
content: '';display: inline-block;width: 1em;height:1em;margin-left:4px;
mask-size:100%;mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxZW0iIGhlaWdodD0iMWVtIiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+PHBhdGggZD0iTTEyIDEuMjVoLS4wNTdjLTIuMzA5IDAtNC4xMTggMC01LjUzLjE5Yy0xLjQ0NC4xOTQtMi41ODQuNi0zLjQ3OSAxLjQ5NGMtLjg5NS44OTUtMS4zIDIuMDM1LTEuNDk0IDMuNDhjLS4xOSAxLjQxMS0uMTkgMy4yMi0uMTkgNS41Mjl2LjExNGMwIDIuMzA5IDAgNC4xMTguMTkgNS41M2MuMTk0IDEuNDQ0LjYgMi41ODQgMS40OTQgMy40NzljLjg5NS44OTUgMi4wMzUgMS4zIDMuNDggMS40OTRjMS40MTEuMTkgMy4yMi4xOSA1LjUyOS4xOWguMTE0YzIuMzA5IDAgNC4xMTggMCA1LjUzLS4xOWMxLjQ0NC0uMTk0IDIuNTg0LS42IDMuNDc5LTEuNDk0Yy44OTUtLjg5NSAxLjMtMi4wMzUgMS40OTQtMy40OGMuMTktMS40MTEuMTktMy4yMi4xOS01LjUyOVYxMmEuNzUuNzUgMCAwIDAtMS41IDBjMCAyLjM3OC0uMDAyIDQuMDg2LS4xNzYgNS4zODZjLS4xNzIgMS4yNzktLjUgMi4wNS0xLjA2OSAyLjYyYy0uNTcuNTY5LTEuMzQuODk2LTIuNjE5IDEuMDY4Yy0xLjMuMTc0LTMuMDA4LjE3Ni01LjM4Ni4xNzZzLTQuMDg2LS4wMDItNS4zODYtLjE3NmMtMS4yNzktLjE3Mi0yLjA1LS41LTIuNjItMS4wNjljLS41NjktLjU3LS44OTYtMS4zNC0xLjA2OC0yLjYxOWMtLjE3NC0xLjMtLjE3Ni0zLjAwOC0uMTc2LTUuMzg2cy4wMDItNC4wODYuMTc2LTUuMzg2Yy4xNzItMS4yNzkuNS0yLjA1IDEuMDY5LTIuNjJjLjU3LS41NjkgMS4zNC0uODk2IDIuNjE5LTEuMDY4YzEuMy0uMTc0IDMuMDA4LS4xNzYgNS4zODYtLjE3NmEuNzUuNzUgMCAwIDAgMC0xLjVaIi8+PHBhdGggZD0iTTEyLjQ3IDEwLjQ3YS43NS43NSAwIDEgMCAxLjA2IDEuMDZsNy43Mi03LjcydjMuNTM0YS43NS43NSAwIDAgMCAxLjUgMFYyYS43NS43NSAwIDAgMC0uNzUtLjc1aC01LjM0NGEuNzUuNzUgMCAwIDAgMCAxLjVoMy41MzNsLTcuNzIgNy43MloiLz48L2c+PC9zdmc+);
background-position: center right;background-color: currentColor;background-repeat: no-repeat;
}
.nested-enter-active,
.nested-leave-active {
transition: all 0.15s ease;
}
.nested-enter-from,
.nested-leave-to {
opacity: 0;
}
.nested-enter-active .inner,
.nested-leave-active .inner {
transition: transform 0.15s ease;
}
.nested-enter-from .inner,
.nested-leave-to .inner {
transform: translateY(100%);
opacity: 0;
}
================================================
FILE: components/Detail.vue
================================================
<script setup lang="ts">
import { useClipboard } from '@vueuse/core'
const props = defineProps({
emoji: {
type: [Object],
default: null
}
})
const route = useRoute()
const { locale, t } = useI18n()
const rtl = computed(() => ['ar', 'he'].includes(locale.value))
const defaultData = {
c: props.emoji?.c || '',
q: '',
e: props.emoji?.e || '',
v: '',
n: '',
g: props.emoji?.g || '',
s: props.emoji?.s || '',
t: props.emoji?.t || '',
k: []
}
const id = props.emoji?.c || route.params.id
const { data: fetchData, error } = useFetch(`/api/emoji/${id}`, { query: { locale: locale.value } })
const data = computed(() => fetchData.value || defaultData)
const title = computed(() => t('seo.detailTitle', { emoji: data.value.e, name: data.value.t }))
const description = computed(() =>
t('seo.detailDescription', {
emoji: data.value.e,
name: data.value.t,
version: data.value.v,
group: data.value.g,
code: `U+${data.value.c.replace(/ /g, ' U+')}`,
oName: data.value.n
})
)
useHead({
title,
meta: [{ name: 'description', content: description }]
})
const source = computed(() => data.value.e)
const { copy, copied } = useClipboard({ source, legacy: true })
function handleCopy (e: KeyboardEvent) {
if ((e.metaKey || e.ctrlKey) && e.key === 'c') {
const selection = document.getSelection()
if (!selection?.toString()) {
copy(source.value)
}
}
}
const isMac = ref(false)
const isAndroidQQ = ref(false)
onMounted(() => {
document.addEventListener('keydown', handleCopy)
isMac.value = window.navigator.userAgent.toLowerCase().includes('macintosh')
isAndroidQQ.value =
window.navigator.userAgent.toLowerCase().includes('android') &&
(window.navigator.userAgent.toLowerCase().includes('mqq') || window.navigator.userAgent.toLowerCase().includes('micromessenger'))
})
onUnmounted(() => {
document.removeEventListener('keydown', handleCopy)
})
const platform = [
{
name: 'Apple',
imgPath: 'apple'
},
{
name: 'Google',
imgPath: 'google'
},
{
name: 'Facebook',
imgPath: 'facebook'
},
{
name: 'X / Twitter',
imgPath: 'x'
},
{
name: 'Microsoft',
imgPath: 'microsoft'
},
{
name: 'Samsung',
imgPath: 'samsung'
},
{
name: 'Whatsapp',
imgPath: 'whatsapp'
}
]
const localePath = useLocalePath()
const schema = computed(() => [
// delete when nuxt-schema-org fix the bug, delete defineWebSite and defineWebPage
// defineWebSite({
// '@id': 'https://searchemoji.app/#website',
// '@type': 'WebSite',
// description: t('seo.title'),
// inLanguage: locale.value,
// name: 'SearchEmoji',
// url: 'https://searchemoji.app',
// publisher: {
// '@id': 'https://searchemoji.app/#identity'
// }
// }),
// defineWebPage({
// '@id': `https://searchemoji.app${localePath('/' + data.value?.c || '')}/#webpage`,
// '@type': 'WebPage',
// description: description.value,
// name: title.value,
// url: localePath('/' + data.value?.c || ''),
// about: {
// '@id': 'https://searchemoji.app/#identity'
// },
// isPartOf: {
// '@id': 'https://searchemoji.app/#website'
// }
// }),
{
'@id': `https://searchemoji.app${localePath('/' + data.value?.c || '')}/#VisualArtwork`,
'@type': 'VisualArtwork',
name: data.value?.t || '',
alternateName: data.value?.n || '',
keywords: data.value?.k.join(',') || '',
url: localePath('/' + data.value?.c || ''),
creator: {
'@type': 'Organization',
name: 'Unicode',
url: 'https://unicode.org/'
},
image: {
'@type': 'ImageObject',
contentUrl: `https://img.searchemoji.app/emoji-images/apple/${data.value?.c.toLowerCase()}.webp`,
width: 144,
height: 144
},
version: data.value?.v || ''
}
])
useSchemaOrg(schema)
</script>
<template>
<div class="max-w-[680px] mx-auto my-8 px-4">
<div v-if="error" class="text-rose-500 card p-6 mb-6 rounded-2xl">
{{ error }}
<button class="border border-rose-500 px-2 rounded-full" onclick="window.location.reload()">{{ $t('refresh') }}</button>
</div>
<main v-if="data">
<div class="flex justify-center items-center mx-auto">
<h2 class="text-[128px]">{{ data.e }}</h2>
</div>
<div>
<h3 class="font-bold text-2xl color-title text-center">{{ data.t }}</h3>
<button
class="px-6 h-12 rounded-2xl bg-rose-500 text-white flex items-center mx-auto my-6 md:tooltip"
:class="rtl ? 'flex-row-reverse' : ''"
:data-tip="copied ? $t('copied') : `${isMac ? '⌘' : 'Ctrl'} + C`"
@click="copy(source)"
>
<i
class="text-xl"
:class="[copied ? 'icon-[material-symbols--check-circle] text-success' : 'icon-[material-symbols--content-copy-outline]', rtl ? 'ml-2' : 'mr-2']"
aria-hidden="true"
role="img"
/>
{{ $t('copyBtn') }}
</button>
<p v-if="isAndroidQQ && locale === 'zh-hans'" class="text-center color-disable text-sm mb-4">
点击复制功能在安卓微信或 QQ 浏览器中可能会失效,如果不能复制,可以长按上面的 Emoji 手动复制。或者点击右上角,在浏览器中打开使用本站。
</p>
<div class="flex justify-between border-t border-b border-main py-2" :class="rtl ? 'flex-row-reverse' : ''">
<span class="shrink-0" :class="rtl ? 'flex-row-reverse ml-4' : 'mr-4'">{{ $t('unicodeName') }}</span> <span>{{ data.n }}</span>
</div>
<div class="flex justify-between border-b border-main py-2" :class="rtl ? 'flex-row-reverse' : ''">
<span class="shrink-0 my-0.5" :class="rtl ? 'flex-row-reverse ml-4' : 'mr-4'">{{ $t('searchKeyword') }}</span>
<div class="flex items-center flex-wrap justify-end" :class="rtl ? 'flex-row-reverse' : ''">
<span v-for="k in data.k" :key="k" class="card color-action rounded-xl px-2 my-0.5" :class="rtl ? 'flex-row-reverse mr-1' : 'ml-1'">{{ k }}</span>
</div>
</div>
<div class="flex justify-between border-b border-main py-2" :class="rtl ? 'flex-row-reverse' : ''">
<span class="shrink-0" :class="rtl ? 'flex-row-reverse ml-4' : 'mr-4'">{{ $t('version') }}</span> <span>{{ data.v }}</span>
</div>
<div class="flex justify-between border-b border-main py-2" :class="rtl ? 'flex-row-reverse' : ''">
<span class="shrink-0" :class="rtl ? 'flex-row-reverse ml-4' : 'mr-4'">{{ $t('code') }}</span> <span>U+{{ data.c.replace(/ /g, ' U+') }}</span>
</div>
<div class="flex justify-between border-b border-main py-2" :class="rtl ? 'flex-row-reverse' : ''">
<span class="shrink-0" :class="rtl ? 'flex-row-reverse ml-4' : 'mr-4'">{{ $t('inGroup') }}</span>
<span class="text-right">{{ data.g }} > {{ data.s }}</span>
</div>
</div>
<div class="mt-6">
<h4 class="font-bold color-action" :class="rtl ? 'text-right' : ''">{{ $t('otherPlatform') }}</h4>
<div
class="mt-6 flex justify-between md:block bg-white/90 dark:bg-zinc-800/90 border border-zinc-200/80 dark:border-zinc-700/80 p-4 md:p-0 md:bg-transparent md:dark:bg-transparent md:border-none rounded-2xl"
>
<div class="md:flex md:border-t md:border-b md:border-main md:py-2">
<div v-for="p in platform" :key="p.imgPath" class="md:flex-1 md:text-center h-[72px] leading-[72px] md:h-auto md:leading-normal mb-2 md:mb-0">
{{ p.name }}
</div>
</div>
<div class="md:flex md:mt-2">
<div v-for="p in platform" :key="p.imgPath" class="mb-2 md:flex-1 md:flex md:justify-center md:tooltip" :data-tip="$t('imgCopyTip')">
<img
:src="`https://img.searchemoji.app/emoji-images/${p.imgPath}/${data.c.toLowerCase()}.webp`"
width="72"
height="72"
:alt="$t('platformImg', { name: data.n, platform: p.name })"
>
</div>
</div>
</div>
</div>
</main>
</div>
</template>
<style scoped></style>
================================================
FILE: components/DropDown.vue
================================================
<script setup lang="ts">
import { onClickOutside } from '@vueuse/core'
defineProps({
top: {
type: Number,
default: 32
},
left: {
type: Number,
default: undefined
},
right: {
type: Number,
default: undefined
}
})
const show = ref(false)
const wrap = ref()
onClickOutside(wrap, () => {
show.value = false
})
function toggleShow () {
show.value = !show.value
}
function closeDropDown () {
show.value = false
}
</script>
<template>
<div ref="wrap" class="relative" @click="toggleShow">
<slot :active="show" />
<div
v-show="show"
class="absolute"
:style="{ top: `${top}px`, left: left !== undefined ? `${left}px` : undefined, right: right !== undefined ? `${right}px` : undefined }"
@click.stop
>
<slot :close="closeDropDown" name="content" />
</div>
</div>
</template>
<style scoped></style>
================================================
FILE: components/Footer.vue
================================================
<script setup lang="ts"></script>
<template>
<footer class="py-10 color-secondary text-center text-sm">
<p class="flex items-center justify-center">Copyright © {{ new Date().getFullYear() }} SearchEmoji</p>
<p class="mt-4">Emojis data comes from <a href="https://unicode.org/" target="_blank">Unicode</a></p>
</footer>
</template>
<style scoped></style>
================================================
FILE: components/Logo.vue
================================================
<script setup lang="ts"></script>
<template>
<svg height="1em" viewBox="0 0 677 128" xmlns="http://www.w3.org/2000/svg">
<path
d="M65.968 31.24C62.64 29.0213 59.184 27.1867 55.6 25.736C52.1013 24.2 48.7307 23.3467 45.488 23.176C43.44 23.0907 41.6053 23.2187 39.984 23.56C38.3627 23.816 36.912 24.328 35.632 25.096C34.4373 25.7787 33.456 26.7173 32.688 27.912C32.0053 29.1067 31.5787 30.5147 31.408 32.136C31.152 34.3547 31.7493 36.4027 33.2 38.28C34.736 40.072 36.784 41.736 39.344 43.272C41.9893 44.808 44.7627 46.216 47.664 47.496C51.1627 49.032 54.4907 50.952 57.648 53.256C60.8053 55.56 63.28 58.5893 65.072 62.344C66.864 66.0133 67.376 70.8347 66.608 76.808C66.1813 80.392 65.072 83.7627 63.28 86.92C61.488 90.0773 59.056 92.8507 55.984 95.24C52.9973 97.544 49.4133 99.2933 45.232 100.488C41.0507 101.683 36.3147 102.109 31.024 101.768C27.44 101.512 23.856 100.915 20.272 99.976C16.688 99.0373 13.1893 97.7573 9.776 96.136C6.36267 94.4293 3.12 92.296 0.0480001 89.736L10.032 75.784C11.9947 77.4907 14.2133 79.0693 16.688 80.52C19.1627 81.8853 21.68 82.9947 24.24 83.848C26.8 84.7013 29.1893 85.2133 31.408 85.384C33.6267 85.4693 35.888 85.2987 38.192 84.872C40.496 84.36 42.5013 83.3787 44.208 81.928C45.9147 80.4773 46.9387 78.3867 47.28 75.656C47.536 73.7787 47.1093 72.0293 46 70.408C44.8907 68.7867 43.3973 67.2933 41.52 65.928C39.6427 64.5627 37.5093 63.3253 35.12 62.216C32.3893 60.936 29.5733 59.4853 26.672 57.864C23.7707 56.2427 21.0827 54.3227 18.608 52.104C16.2187 49.8853 14.384 47.1547 13.104 43.912C11.824 40.6693 11.4827 36.8293 12.08 32.392C12.7627 26.9307 14.5547 22.28 17.456 18.44C20.3573 14.5147 24.1547 11.5707 28.848 9.60799C33.5413 7.56 38.832 6.57866 44.72 6.66399C49.7547 6.92 54.064 7.60266 57.648 8.712C61.3173 9.73599 64.5173 11.016 67.248 12.552C69.9787 14.088 72.496 15.752 74.8 17.544L65.968 31.24ZM102.949 87.304C104.656 87.304 106.277 87.0053 107.813 86.408C109.434 85.8107 111.056 85.0853 112.677 84.232L118.949 98.056C116.133 99.4213 113.146 100.488 109.989 101.256C106.917 102.024 103.93 102.408 101.029 102.408C94.885 102.408 89.509 101.384 84.901 99.336C80.3783 97.2027 76.837 94.0027 74.277 89.736C71.717 85.384 70.437 79.9653 70.437 73.48C70.437 70.152 71.0343 66.696 72.229 63.112C73.509 59.528 75.429 56.2 77.989 53.128C80.6343 49.9707 84.0477 47.4107 88.229 45.448C92.4957 43.4853 97.6157 42.504 103.589 42.504C106.832 42.504 110.032 42.9307 113.189 43.784C116.432 44.552 119.376 46.0027 122.021 48.136C124.752 50.184 127.056 53.0853 128.933 56.84C130.896 60.5947 132.261 65.4587 133.029 71.432L87.973 82.568L85.157 72.584L120.229 63.496L113.957 65.416C113.274 62.5147 111.909 60.296 109.861 58.76C107.898 57.224 105.594 56.456 102.949 56.456C99.4503 56.456 96.6343 57.1813 94.501 58.632C92.3677 60.0827 90.789 61.96 89.765 64.264C88.8263 66.568 88.357 68.9573 88.357 71.432C88.357 75.6987 89.125 78.984 90.661 81.288C92.2823 83.592 94.2023 85.1707 96.421 86.024C98.725 86.8773 100.901 87.304 102.949 87.304ZM156.413 102.28C152.744 102.365 149.16 101.341 145.661 99.208C142.162 97.0747 139.261 93.96 136.957 89.864C134.738 85.768 133.629 80.8187 133.629 75.016C133.629 70.8347 134.397 66.824 135.933 62.984C137.469 59.0587 139.645 55.56 142.461 52.488C145.277 49.3307 148.605 46.856 152.445 45.064C156.285 43.1867 160.509 42.248 165.117 42.248C168.872 42.248 171.901 42.6747 174.205 43.528C176.594 44.3813 178.514 45.4907 179.965 46.856C181.416 48.136 182.653 49.544 183.677 51.08L182.525 53.768L185.341 45.064H201.981L195.197 101H177.277L178.685 88.84L179.709 92.68C179.538 92.68 178.941 93.192 177.917 94.216C176.893 95.1547 175.4 96.264 173.437 97.544C171.56 98.824 169.17 99.976 166.269 101C163.453 101.939 160.168 102.365 156.413 102.28ZM166.525 87.944C168.232 87.944 169.853 87.6453 171.389 87.048C173.01 86.3653 174.546 85.4267 175.997 84.232C177.448 82.952 178.728 81.3733 179.837 79.496L181.501 65.8C181.074 63.9227 180.264 62.344 179.069 61.064C177.874 59.6987 176.381 58.6747 174.589 57.992C172.797 57.224 170.749 56.84 168.445 56.84C165.544 56.84 163.069 57.352 161.021 58.376C158.973 59.4 157.266 60.7227 155.901 62.344C154.621 63.9653 153.682 65.7147 153.085 67.592C152.488 69.384 152.189 71.1333 152.189 72.84C152.189 75.912 152.786 78.6 153.981 80.904C155.176 83.1227 156.84 84.872 158.973 86.152C161.192 87.3467 163.709 87.944 166.525 87.944ZM229.01 45.064L228.498 57.48C230.546 54.152 232.978 51.3787 235.794 49.16C238.695 46.856 241.597 45.1493 244.498 44.04C247.485 42.8453 250.002 42.248 252.05 42.248L248.978 60.168C244.882 59.656 241.213 60.3387 237.97 62.216C234.727 64.0933 232.125 66.568 230.162 69.64C228.199 72.712 227.005 75.8693 226.578 79.112L223.89 101H206.098L212.882 45.064H229.01ZM297.046 97.416C294.486 99.0373 291.414 100.317 287.83 101.256C284.331 102.195 280.875 102.664 277.462 102.664C275.158 102.664 272.342 102.28 269.014 101.512C265.686 100.829 262.401 99.5493 259.158 97.672C255.915 95.7093 253.185 92.9787 250.966 89.48C248.833 85.896 247.766 81.3307 247.766 75.784C247.766 72.1147 248.406 68.4027 249.686 64.648C250.966 60.8933 252.886 57.4373 255.446 54.28C258.006 51.1227 261.249 48.6053 265.174 46.728C269.099 44.7653 273.75 43.784 279.126 43.784C284.843 43.784 289.622 44.6373 293.462 46.344C297.387 48.0507 300.587 50.1413 303.062 52.616L292.95 63.496C291.841 62.3867 290.219 61.2773 288.086 60.168C285.953 59.0587 283.35 58.504 280.278 58.504C277.803 58.504 275.457 59.1867 273.238 60.552C271.019 61.9173 269.227 63.7947 267.862 66.184C266.497 68.5733 265.814 71.3467 265.814 74.504C265.814 77.064 266.411 79.368 267.606 81.416C268.801 83.464 270.507 85.128 272.726 86.408C274.945 87.6027 277.59 88.2 280.662 88.2C282.369 88.2 283.947 87.9867 285.398 87.56C286.934 87.1333 288.299 86.4933 289.494 85.64L297.046 97.416ZM326.147 54.152C328.536 50.6533 331.694 47.8373 335.619 45.704C339.63 43.4853 344.238 42.376 349.443 42.376C354.734 42.376 358.915 43.9547 361.987 47.112C365.144 50.184 366.51 54.1947 366.083 59.144L360.963 101H343.043L347.267 65.8C347.438 63.3253 347.011 61.3627 345.987 59.912C344.963 58.376 343 57.608 340.099 57.608C337.368 57.608 334.851 58.504 332.547 60.296C330.328 62.088 328.494 64.52 327.043 67.592C325.592 70.664 324.611 74.2053 324.099 78.216L321.283 101H303.363L315.651 0.00799561H333.187L326.275 57.352L326.147 54.152ZM385.76 6.79199H450.016L447.968 24.072H402.912L400.352 45.064H440.16L437.984 62.728H398.176L395.616 83.208H442.464L440.288 101H374.24L385.76 6.79199ZM472.543 45.064L472.799 55.944L472.543 54.152C475.188 50.3973 478.303 47.496 481.887 45.448C485.556 43.3147 489.738 42.248 494.431 42.248C498.954 42.248 502.58 43.144 505.311 44.936C508.127 46.6427 509.748 49.4587 510.175 53.384L509.919 53.512C512.65 50.2693 515.807 47.5813 519.391 45.448C523.06 43.3147 526.73 42.248 530.399 42.248C535.946 42.248 540.17 43.8267 543.071 46.984C545.972 50.056 547.167 54.0667 546.655 59.016L541.535 101H523.743L527.967 66.44C528.138 63.9653 527.967 61.96 527.455 60.424C527.028 58.8027 525.578 57.9067 523.103 57.736C520.202 57.736 517.642 58.76 515.423 60.808C513.204 62.7707 511.412 65.3307 510.047 68.488C508.682 71.56 507.786 74.76 507.359 78.088L504.543 101H486.623L490.847 66.44C491.018 63.9653 490.804 61.96 490.207 60.424C489.61 58.8027 488.074 57.9067 485.599 57.736C482.783 57.736 480.266 58.76 478.047 60.808C475.914 62.7707 474.164 65.288 472.799 68.36C471.519 71.432 470.666 74.5893 470.239 77.832L467.423 101H449.503L456.287 45.064H472.543ZM582.272 102.536C578.944 102.536 575.488 102.024 571.904 101C568.32 99.8907 564.949 98.2267 561.792 96.008C558.72 93.7893 556.203 90.9307 554.24 87.432C552.363 83.9333 551.424 79.752 551.424 74.888C551.424 71.4747 551.979 67.8907 553.088 64.136C554.283 60.3813 556.16 56.8827 558.72 53.64C561.28 50.312 564.693 47.624 568.96 45.576C573.227 43.528 578.432 42.504 584.576 42.504C589.611 42.504 594.432 43.5707 599.04 45.704C603.733 47.752 607.573 50.824 610.56 54.92C613.632 59.016 615.168 64.0933 615.168 70.152C615.168 72.2853 614.869 74.8027 614.272 77.704C613.675 80.52 612.651 83.3787 611.2 86.28C609.749 89.1813 607.787 91.8693 605.312 94.344C602.837 96.7333 599.68 98.696 595.84 100.232C592.085 101.768 587.563 102.536 582.272 102.536ZM582.784 87.816C586.453 87.816 589.312 86.8773 591.36 85C593.408 83.1227 594.859 80.8613 595.712 78.216C596.565 75.5707 596.992 73.1387 596.992 70.92C596.992 67.9333 596.48 65.544 595.456 63.752C594.517 61.8747 593.323 60.4667 591.872 59.528C590.421 58.5893 588.971 57.9493 587.52 57.608C586.069 57.2667 584.875 57.096 583.936 57.096C580.437 57.096 577.621 58.0347 575.488 59.912C573.355 61.704 571.819 63.9227 570.88 66.568C569.941 69.2133 569.472 71.688 569.472 73.992C569.472 77.832 570.24 80.7333 571.776 82.696C573.397 84.6587 575.232 86.024 577.28 86.792C579.413 87.4747 581.248 87.816 582.784 87.816ZM609.695 116.872C612.426 114.995 614.687 112.691 616.479 109.96C618.271 107.229 619.38 103.901 619.807 99.976L626.591 45.064H644.511L637.599 101C636.831 107.144 634.911 112.477 631.839 117C628.852 121.523 624.458 125.192 618.655 128.008L609.695 116.872ZM627.615 25.352C627.615 22.6213 628.554 20.3173 630.431 18.44C632.308 16.5627 634.783 15.624 637.855 15.624C639.988 15.624 642.122 16.264 644.255 17.544C646.388 18.7387 647.455 20.872 647.455 23.944C647.455 26.5893 646.516 28.8933 644.639 30.856C642.762 32.7333 640.287 33.672 637.215 33.672C635.082 33.672 632.948 33.0747 630.815 31.88C628.682 30.6 627.615 28.424 627.615 25.352ZM655.247 45.064H673.167L666.255 101H648.335L655.247 45.064ZM656.399 25.352C656.399 22.6213 657.338 20.3173 659.215 18.44C661.092 16.5627 663.567 15.624 666.639 15.624C668.772 15.624 670.906 16.264 673.039 17.544C675.172 18.7387 676.239 20.872 676.239 23.944C676.239 26.5893 675.3 28.8933 673.423 30.856C671.546 32.7333 669.071 33.672 665.999 33.672C663.866 33.672 661.732 33.0747 659.599 31.88C657.466 30.6 656.399 28.424 656.399 25.352Z"
fill="currentColor"
/>
</svg>
</template>
<style scoped></style>
================================================
FILE: components/Range.vue
================================================
<script setup lang="ts">
import { useColorMode } from '#imports'
const props = defineProps({
modelValue: {
type: Number,
default: 24
},
min: {
type: Number,
default: 0
},
max: {
type: Number,
default: 100
}
})
const emit = defineEmits(['update:modelValue'])
const value = computed({
get () {
return props.modelValue
},
set (value) {
emit('update:modelValue', Number(value))
}
})
const colorMode = useColorMode()
const progress = computed(() => ((value.value - props.min) / (props.max - props.min)) * 100)
const bgColor = ref('#d4d4d8')
watch(
() => colorMode.value,
() => {
bgColor.value = colorMode.value === 'dark' ? '#3f3f46' : '#d4d4d8'
}
)
// wtf!!! there are so many problems with computed and watch in ssr
onMounted(() => {
bgColor.value = colorMode.value === 'dark' ? '#3f3f46' : '#d4d4d8'
})
</script>
<template>
<input
v-model="value"
class="range"
type="range"
:min="min"
:max="max"
:style="{
'--thumb-rotate': `${(value / 48) * 2160}deg`,
background: `linear-gradient(to right, #f43f5e ${progress}%, ${bgColor} ${progress}% 100%)`
}"
>
</template>
<style scoped>
.range {
-webkit-appearance: none;
appearance: none;
width: 100%;
outline: none;
border-radius: 10px;
height: 10px;
}
.range::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
height: 30px;
width: 30px;
background: transparent;
background-image: url('/logo.png');
background-size: cover;
border-radius: 50%;
transition: 0.2s ease-in-out;
transform: rotateZ(var(--thumb-rotate, 0deg));
}
/* Thumb: Firefox */
.range::-moz-range-thumb {
height: 30px;
width: 30px;
background: transparent;
background-image: url('/logo.png');
background-size: cover;
border: none;
border-radius: 50%;
transform: rotateZ(var(--thumb-rotate, 0deg));
transition: 0.2s ease-in-out;
}
.range::-webkit-slider-thumb:hover {
box-shadow: 0 0 0 10px rgba(244, 63, 94, 0.1);
}
.range:active::-webkit-slider-thumb {
box-shadow: 0 0 0 13px rgba(244, 63, 94, 0.2);
}
.range:focus::-webkit-slider-thumb {
box-shadow: 0 0 0 13px rgba(244, 63, 94, 0.2);
}
.range::-moz-range-thumb:hover {
box-shadow: 0 0 0 10px rgba(244, 63, 94, 0.1);
}
.range:active::-moz-range-thumb {
box-shadow: 0 0 0 13px rgba(244, 63, 94, 0.2);
}
.range:focus::-moz-range-thumb {
box-shadow: 0 0 0 13px rgba(244, 63, 94, 0.2);
}
</style>
================================================
FILE: components/ThemeToggle.vue
================================================
<script setup lang="ts">
import { useColorMode } from '#imports'
const colorMode = useColorMode()
function toggleTheme () {
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
}
</script>
<template>
<div class="ml-4 text-2xl cursor-pointer items-center relative group flex items-center" @click="toggleTheme">
<i v-show="colorMode.value === 'system'" class="icon-[solar--display-bold]" role="img" aria-hidden="true" />
<i v-show="colorMode.value === 'light'" class="icon-[solar--sun-bold]" role="img" aria-hidden="true" />
<i v-show="colorMode.value === 'dark'" class="icon-[solar--moon-stars-bold]" role="img" aria-hidden="true" />
<div role="tooltip" class="absolute top-7 right-0 whitespace-nowrap card rounded-lg p-2 text-sm color-action hidden md:group-hover:block">
{{ colorMode.value === 'light' ? $t('darkTip') : $t('lightTip') }}
</div>
</div>
</template>
<style scoped></style>
================================================
FILE: components/Toggle.vue
================================================
<script setup lang="ts">
import { computed } from 'vue'
const props = defineProps({
modelValue: {
type: Boolean,
default: false
}
})
const emit = defineEmits(['update:modelValue'])
const value = computed({
get () {
return props.modelValue
},
set (value) {
emit('update:modelValue', value)
}
})
</script>
<template>
<label class="relative inline-flex items-center cursor-default">
<input v-model="value" type="checkbox" class="sr-only peer">
<span
class="w-9 h-5 bg-zinc-200 peer-focus:outline-none rounded-full peer dark:bg-zinc-700 peer-checked:after:translate-x-full after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white dark:after:bg-zinc-300 after:rounded-full after:h-4 after:w-4 after:transition-all peer-checked:bg-rose-500"
/>
</label>
</template>
<style scoped></style>
================================================
FILE: components/ToolBar.vue
================================================
<script setup lang="ts"></script>
<template>
<div class="flex items-center">
<ThemeToggle />
<a href="https://github.com/rotick/searchemoji" target="_blank" aria-label="Folk on GitHub" class="no-icon text-2xl ml-4 flex items-center">
<i class="icon-[mdi--github]" role="img" aria-hidden="true" />
</a>
</div>
</template>
<style scoped></style>
================================================
FILE: components/Underline.vue
================================================
<script setup lang="ts"></script>
<template>
<svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0.00 0.00 321.00 39.00">
<path
fill="currentColor"
d="
M 181.70 10.80
A 0.89 0.88 -35.4 0 0 182.73 10.97
C 188.65 7.98 194.55 4.49 200.92 2.48
C 211.51 -0.85 215.34 5.41 221.15 12.36
Q 222.29 13.72 224.69 13.16
C 231.98 11.47 238.84 8.17 246.13 6.26
C 254.14 4.17 258.96 7.58 264.05 13.14
A 1.40 1.39 54.0 0 0 265.76 13.42
Q 272.50 9.66 279.54 6.30
C 285.41 3.50 291.04 5.84 296.81 9.37
Q 301.94 12.50 307.06 15.63
C 310.68 17.83 313.17 18.73 317.00 17.19
A 1.34 1.33 82.7 0 1 318.82 18.60
C 318.44 21.45 313.30 25.08 310.76 25.99
C 301.28 29.41 290.47 25.53 282.68 20.10
A 2.41 2.40 -41.7 0 0 280.17 19.96
C 276.26 22.07 272.19 25.58 268.79 27.09
Q 257.77 31.99 250.50 20.79
A 1.65 1.64 -27.2 0 0 248.52 20.16
Q 242.50 22.52 236.26 25.57
C 224.62 31.27 211.93 31.43 205.38 18.42
A 1.36 1.36 0.0 0 0 203.46 17.87
C 191.51 25.02 176.90 37.57 165.92 19.67
Q 165.23 18.54 164.01 19.06
Q 154.69 23.03 146.85 27.55
C 137.76 32.81 130.65 29.41 124.98 21.59
A 1.43 1.43 0.0 0 0 123.24 21.12
Q 115.24 24.67 107.22 28.93
C 98.59 33.51 88.33 30.40 86.18 20.19
A 0.85 0.85 0.0 0 0 84.89 19.65
C 72.98 27.18 61.46 37.24 48.84 22.95
Q 47.09 20.96 45.70 18.85
A 0.78 0.78 0.0 0 0 44.61 18.64
C 38.66 22.70 33.63 28.15 28.05 32.73
Q 18.24 40.78 10.18 31.33
C 6.13 26.59 4.22 15.40 3.34 9.00
C 2.80 5.07 5.66 2.74 9.35 4.63
Q 11.37 5.66 12.76 9.77
Q 15.05 16.57 18.38 23.32
A 1.52 1.52 0.0 0 0 20.77 23.77
C 27.30 17.89 33.00 11.59 41.02 7.02
C 49.31 2.31 53.97 6.80 59.45 12.55
C 62.41 15.65 65.90 14.27 68.93 12.45
C 78.25 6.85 95.35 -4.75 101.19 12.97
A 1.10 1.10 0.0 0 0 102.76 13.60
Q 109.97 9.81 117.40 6.93
C 127.10 3.16 132.73 3.95 139.56 11.72
A 1.07 1.07 0.0 0 0 140.83 11.97
C 148.54 8.09 157.14 3.94 165.77 2.97
C 173.97 2.05 176.60 5.61 181.70 10.80
Z"
/>
</svg>
</template>
<style scoped></style>
================================================
FILE: components/Yesicon.vue
================================================
<template>
<span class="flex items-center" role="img">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" width="1.333334em" height="1.333334em" role="img" style="margin-right: 0.3em">
<linearGradient id="logo-grad" x1="0" x2="1" y1="0" y2="1">
<stop offset="0%" stop-color="#d946ef" />
<stop offset="30%" stop-color="#d946ef" />
<stop offset="100%" stop-color="#6366f1" />
</linearGradient>
<path
fill="url(#logo-grad)"
d="M300 150l-.081 17.622-.243 10.335-.406 8.644-.567 7.684-.731 7.018-.892 6.516-1.055 6.108-1.216 5.762-1.38 5.46-1.542 5.19-1.704 4.942-1.868 4.714-2.031 4.499-2.195 4.294-2.359 4.099-2.525 3.909-2.689 3.724-2.858 3.546-3.026 3.369-3.197 3.197-3.369 3.026-3.546 2.858-3.724 2.69-3.91 2.524-4.097 2.36-4.295 2.194-4.499 2.031-4.714 1.868-4.942 1.704-5.19 1.541-5.46 1.38-5.762 1.217-6.108 1.055-6.516.892-7.018.73-7.684.567-8.644.407-10.335.243L150 300l-17.622-.081-10.336-.243-8.644-.406-7.682-.567-7.02-.731-6.515-.892-6.108-1.055-5.761-1.216-5.46-1.38-5.19-1.542-4.944-1.704-4.714-1.868-4.498-2.031-4.294-2.195-4.098-2.359-3.909-2.525-3.725-2.689-3.545-2.858-3.37-3.026-3.197-3.197-3.026-3.369-2.858-3.546-2.69-3.724-2.524-3.91-2.36-4.097-2.194-4.295-2.031-4.499-1.868-4.714-1.704-4.942-1.542-5.19-1.38-5.46-1.216-5.762-1.055-6.108-.892-6.516-.73-7.018L.73 186.6l-.406-8.644-.243-10.335L0 150l.081-17.622.243-10.336.406-8.644.568-7.682.73-7.02.892-6.515 1.055-6.108 1.217-5.761 1.379-5.46 1.542-5.19 1.704-4.944 1.868-4.714 2.031-4.498 2.195-4.294 2.359-4.098 2.524-3.909 2.69-3.725 2.858-3.545 3.026-3.37 3.197-3.197 3.37-3.026 3.545-2.858 3.725-2.69 3.909-2.524 4.098-2.36 4.294-2.194 4.498-2.031 4.714-1.868 4.944-1.704 5.19-1.542 5.46-1.38 5.761-1.216 6.108-1.055 6.515-.892 7.02-.73 7.682-.568 8.644-.406 10.336-.243L150 0l17.622.081 10.335.243 8.644.406 7.684.568 7.018.73 6.516.892 6.108 1.055 5.762 1.217 5.46 1.379 5.19 1.542 4.942 1.704 4.714 1.868 4.499 2.031 4.294 2.195 4.099 2.359 3.909 2.524 3.724 2.69 3.546 2.858 3.369 3.026 3.197 3.197 3.026 3.37 2.858 3.545 2.69 3.725 2.524 3.909 2.36 4.098 2.194 4.294 2.031 4.498 1.868 4.714 1.704 4.944 1.541 5.19 1.38 5.46 1.217 5.761 1.055 6.108.892 6.515.73 7.02.567 7.682.407 8.644.243 10.336z"
/>
<path
fill="#fff"
transform="translate(22 22)"
d="M232 120v8a104 104 0 0 1-104.37 104c-54-.19-98-42.06-103.12-94.78a4 4 0 0 1 5.56-4A35.94 35.94 0 0 0 72 122.59a35.92 35.92 0 0 0 53.94 2.33a40.36 40.36 0 0 0 12.87 13A47.94 47.94 0 0 0 120 176a8 8 0 0 0 8.67 8a8.21 8.21 0 0 0 7.33-8.26A32 32 0 0 1 168 144a8 8 0 0 0 8-8.53a8.18 8.18 0 0 0-8.25-7.47H160a24 24 0 0 1-24-24V88h64a32 32 0 0 1 32 32Zm-187.27 0C55.57 119.6 64 110.37 64 99.52v-23C64 65.63 55.57 56.4 44.73 56A20 20 0 0 0 24 76v24a20 20 0 0 0 20.73 20Zm56 0c10.84-.39 19.27-9.62 19.27-20.47v-47c0-10.85-8.43-20.08-19.27-20.47A20 20 0 0 0 80 52v48a20 20 0 0 0 20.73 20ZM176 52a20 20 0 0 0-20.73-20c-10.84.4-19.27 9.63-19.27 20.48V72h36a4 4 0 0 0 4-4Z"
/>
</svg>
<svg width="3.393em" height="1em" viewBox="0 0 631 186" xmlns="http://www.w3.org/2000/svg" role="img">
<path
fill="currentColor"
d="M105.4 50L23.8 185.8H0.4L33.8 130.4L11.8 50H35L51.6 122.8L41.6 122L81.8 50H105.4Z
M141.272 144C133.005 144 125.739 142.333 119.472 139C113.339 135.667 108.539 130.867 105.072 124.6C101.605 118.333 99.8719 110.8 99.8719 102C99.8719 94.6667 101.205 87.7333 103.872 81.2C106.539 74.6667 110.272 68.9333 115.072 64C119.872 59.0667 125.539 55.2 132.072 52.4C138.739 49.4667 145.939 48 153.672 48C162.072 48 169.205 49.6 175.072 52.8C180.939 55.8667 185.405 60.4 188.472 66.4C191.672 72.4 193.272 79.7333 193.272 88.4C193.272 90.5333 193.072 92.8 192.672 95.2C192.272 97.6 191.739 99.5333 191.072 101H111.872V86.2H175.272L168.672 95.4C169.339 93.8 169.939 92.2 170.472 90.6C171.005 88.8667 171.272 87.2 171.272 85.6C171.272 81.2 170.539 77.4667 169.072 74.4C167.739 71.2 165.605 68.7333 162.672 67C159.872 65.2667 156.339 64.4 152.072 64.4C147.539 64.4 143.405 65.3333 139.672 67.2C136.072 68.9333 132.939 71.4 130.272 74.6C127.605 77.8 125.539 81.6 124.072 86C122.605 90.2667 121.739 94.8667 121.472 99.8C121.205 105 121.805 109.6 123.272 113.6C124.739 117.6 127.072 120.733 130.272 123C133.605 125.133 137.872 126.2 143.072 126.2C148.805 126.2 153.939 124.867 158.472 122.2C163.139 119.4 167.005 115.867 170.072 111.6L188.072 119.2C183.139 126.667 176.739 132.667 168.872 137.2C161.005 141.733 151.805 144 141.272 144Z
M213.959 112C216.359 114.933 218.893 117.6 221.559 120C224.359 122.267 227.293 124.067 230.359 125.4C233.426 126.733 236.626 127.333 239.959 127.2C243.826 127.2 246.959 126.2 249.359 124.2C251.893 122.067 253.159 119.467 253.159 116.4C253.159 113.6 252.293 111.267 250.559 109.4C248.959 107.533 246.759 105.933 243.959 104.6C241.293 103.267 238.493 102 235.559 100.8C231.826 99.3333 228.159 97.5333 224.559 95.4C221.093 93.1333 218.226 90.3333 215.959 87C213.693 83.5333 212.626 79.2 212.759 74C212.893 68.1333 214.493 63.3333 217.559 59.6C220.759 55.7333 224.759 52.8667 229.559 51C234.493 49 239.693 48 245.159 48C252.493 48 259.026 49.6 264.759 52.8C270.626 55.8667 275.426 59.6667 279.159 64.2L267.159 76.6C264.226 73.1333 260.826 70.2667 256.959 68C253.226 65.6 249.226 64.4 244.959 64.4C241.359 64.4 238.426 65.2 236.159 66.8C234.026 68.4 232.959 70.4667 232.959 73C232.826 75.2667 233.493 77.2667 234.959 79C236.559 80.6 238.693 82 241.359 83.2C244.026 84.4 246.826 85.6667 249.759 87C254.293 88.8667 258.426 91 262.159 93.4C265.893 95.6667 268.826 98.5333 270.959 102C273.226 105.467 274.293 109.867 274.159 115.2C274.026 120.933 272.493 126.067 269.559 130.6C266.626 135 262.626 138.467 257.559 141C252.626 143.4 246.893 144.6 240.359 144.6C234.093 144.6 228.426 143.667 223.359 141.8C218.293 139.8 213.826 137.267 209.959 134.2C206.093 131 202.826 127.667 200.159 124.2L213.959 112Z
M303.181 50H324.581L308.981 142H287.981L303.181 50Z
M360.144 96C359.477 101.067 359.877 105.867 361.344 110.4C362.944 114.8 365.544 118.333 369.144 121C372.877 123.667 377.41 125.067 382.744 125.2C389.277 125.333 395.344 123.867 400.944 120.8C406.677 117.733 411.277 114.133 414.744 110L411.544 133.6C407.41 136.667 402.677 139.133 397.344 141C392.01 142.867 386.277 143.8 380.144 143.8C370.944 143.8 363.01 141.667 356.344 137.4C349.677 133.133 344.744 127.4 341.544 120.2C338.344 112.867 337.277 104.8 338.344 96C339.544 86.8 342.744 78.6 347.944 71.4C353.144 64.2 359.677 58.5333 367.544 54.4C375.544 50.1333 384.21 48 393.544 48C399.544 48 405.01 48.9333 409.944 50.8C415.01 52.5333 419.277 55.0667 422.744 58.4L419.544 82.2C417.277 77.4 413.744 73.6 408.944 70.8C404.277 68 398.944 66.6 392.944 66.6C387.477 66.6 382.344 67.9333 377.544 70.6C372.877 73.2667 369.01 76.8 365.944 81.2C363.01 85.6 361.077 90.5333 360.144 96Z
M433.098 96C434.298 86.8 437.432 78.6 442.498 71.4C447.698 64.2 454.232 58.5333 462.098 54.4C470.098 50.1333 478.765 48 488.098 48C497.298 48 505.165 50.2 511.698 54.6C518.365 58.8667 523.298 64.6667 526.498 72C529.698 79.2 530.698 87.2 529.498 96C528.298 105.067 525.098 113.2 519.898 120.4C514.698 127.6 508.165 133.333 500.298 137.6C492.432 141.733 483.832 143.8 474.498 143.8C465.432 143.8 457.565 141.667 450.898 137.4C444.232 133.133 439.298 127.4 436.098 120.2C432.898 112.867 431.898 104.8 433.098 96Z
M454.698 96C454.032 100.933 454.432 105.6 455.898 110C457.365 114.4 459.765 118 463.098 120.8C466.565 123.467 470.898 124.8 476.098 124.8C481.432 124.8 486.365 123.533 490.898 121C495.432 118.467 499.165 115 502.098 110.6C505.165 106.067 507.098 101.2 507.898 96C508.565 90.9333 508.165 86.2667 506.698 82C505.232 77.6 502.765 74 499.298 71.2C495.832 68.4 491.498 67 486.298 67C481.098 66.8667 476.232 68.1333 471.698 70.8C467.165 73.4667 463.365 77 460.298 81.4C457.365 85.8 455.498 90.6667 454.698 96Z
M607.273 86C607.807 82.4 607.807 79.0667 607.273 76C606.74 72.8 605.473 70.2667 603.473 68.4C601.473 66.4 598.473 65.4 594.473 65.4C590.473 65.4 586.807 66.2667 583.473 68C580.273 69.7333 577.607 72.0667 575.473 75C573.34 77.9333 572.007 81.4 571.473 85.4L561.473 142H539.873L555.873 50H577.273L575.073 63.4C578.54 58.6 582.54 54.8667 587.073 52.2C591.74 49.4 597.207 48 603.473 48C610.54 48 616.073 49.6 620.073 52.8C624.207 56 627.007 60.3333 628.473 65.8C630.073 71.1333 630.407 77.0667 629.473 83.6L619.473 142H597.673L607.273 86Z
"
/>
<path
fill="url(#logo-grad)"
d="M306.781 13.4C306.781 9.66667 308.048 6.53333 310.581 3.99999C313.248 1.46666 316.448 0.19999 320.181 0.19999C323.915 0.19999 327.115 1.46666 329.781 3.99999C332.448 6.53333 333.781 9.66667 333.781 13.4C333.781 17 332.448 20.0667 329.781 22.6C327.115 25.1333 323.915 26.4 320.181 26.4C316.448 26.4 313.248 25.1333 310.581 22.6C308.048 20.0667 306.781 17 306.781 13.4Z"
/>
</svg>
</span>
</template>
<script setup lang="ts"></script>
================================================
FILE: data/emoji-index.json
================================================
[File too large to display: 11.2 MB]
================================================
FILE: data/emoji-test.txt
================================================
# emoji-test.txt
# Date: 2023-06-05, 21:39:54 GMT
# © 2023 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Emoji Keyboard/Display Test Data for UTS #51
# Version: 15.1
#
# For documentation and usage, see https://www.unicode.org/reports/tr51
#
# This file provides data for testing which emoji forms should be in keyboards and which should also be displayed/processed.
# Format: code points; status # emoji name
# Code points — list of one or more hex code points, separated by spaces
# Status
# component — an Emoji_Component,
# excluding Regional_Indicators, ASCII, and non-Emoji.
# fully-qualified — a fully-qualified emoji (see ED-18 in UTS #51),
# excluding Emoji_Component
# minimally-qualified — a minimally-qualified emoji (see ED-18a in UTS #51)
# unqualified — a unqualified emoji (See ED-19 in UTS #51)
# Notes:
# • This includes the emoji components that need emoji presentation (skin tone and hair)
# when isolated, but omits the components that need not have an emoji
# presentation when isolated.
# • The RGI set is covered by the listed fully-qualified emoji.
# • The listed minimally-qualified and unqualified cover all cases where an
# element of the RGI set is missing one or more emoji presentation selectors.
# • The file is in CLDR order, not codepoint order. This is recommended (but not required!) for keyboard palettes.
# • The groups and subgroups are illustrative. See the Emoji Order chart for more information.
# group: Smileys & Emotion
# subgroup: face-smiling
1F600 ; fully-qualified # 😀 E1.0 grinning face
1F603 ; fully-qualified # 😃 E0.6 grinning face with big eyes
1F604 ; fully-qualified # 😄 E0.6 grinning face with smiling eyes
1F601 ; fully-qualified # 😁 E0.6 beaming face with smiling eyes
1F606 ; fully-qualified # 😆 E0.6 grinning squinting face
1F605 ; fully-qualified # 😅 E0.6 grinning face with sweat
1F923 ; fully-qualified # 🤣 E3.0 rolling on the floor laughing
1F602 ; fully-qualified # 😂 E0.6 face with tears of joy
1F642 ; fully-qualified # 🙂 E1.0 slightly smiling face
1F643 ; fully-qualified # 🙃 E1.0 upside-down face
1FAE0 ; fully-qualified # 🫠 E14.0 melting face
1F609 ; fully-qualified # 😉 E0.6 winking face
1F60A ; fully-qualified # 😊 E0.6 smiling face with smiling eyes
1F607 ; fully-qualified # 😇 E1.0 smiling face with halo
# subgroup: face-affection
1F970 ; fully-qualified # 🥰 E11.0 smiling face with hearts
1F60D ; fully-qualified # 😍 E0.6 smiling face with heart-eyes
1F929 ; fully-qualified # 🤩 E5.0 star-struck
1F618 ; fully-qualified # 😘 E0.6 face blowing a kiss
1F617 ; fully-qualified # 😗 E1.0 kissing face
263A FE0F ; fully-qualified # ☺️ E0.6 smiling face
263A ; unqualified # ☺ E0.6 smiling face
1F61A ; fully-qualified # 😚 E0.6 kissing face with closed eyes
1F619 ; fully-qualified # 😙 E1.0 kissing face with smiling eyes
1F972 ; fully-qualified # 🥲 E13.0 smiling face with tear
# subgroup: face-tongue
1F60B ; fully-qualified # 😋 E0.6 face savoring food
1F61B ; fully-qualified # 😛 E1.0 face with tongue
1F61C ; fully-qualified # 😜 E0.6 winking face with tongue
1F92A ; fully-qualified # 🤪 E5.0 zany face
1F61D ; fully-qualified # 😝 E0.6 squinting face with tongue
1F911 ; fully-qualified # 🤑 E1.0 money-mouth face
# subgroup: face-hand
1F917 ; fully-qualified # 🤗 E1.0 smiling face with open hands
1F92D ; fully-qualified # 🤭 E5.0 face with hand over mouth
1FAE2 ; fully-qualified # 🫢 E14.0 face with open eyes and hand over mouth
1FAE3 ; fully-qualified # 🫣 E14.0 face with peeking eye
1F92B ; fully-qualified # 🤫 E5.0 shushing face
1F914 ; fully-qualified # 🤔 E1.0 thinking face
1FAE1 ; fully-qualified # 🫡 E14.0 saluting face
# subgroup: face-neutral-skeptical
1F910 ; fully-qualified # 🤐 E1.0 zipper-mouth face
1F928 ; fully-qualified # 🤨 E5.0 face with raised eyebrow
1F610 ; fully-qualified # 😐 E0.7 neutral face
1F611 ; fully-qualified # 😑 E1.0 expressionless face
1F636 ; fully-qualified # 😶 E1.0 face without mouth
1FAE5 ; fully-qualified # 🫥 E14.0 dotted line face
1F636 200D 1F32B FE0F ; fully-qualified # 😶🌫️ E13.1 face in clouds
1F636 200D 1F32B ; minimally-qualified # 😶🌫 E13.1 face in clouds
1F60F ; fully-qualified # 😏 E0.6 smirking face
1F612 ; fully-qualified # 😒 E0.6 unamused face
1F644 ; fully-qualified # 🙄 E1.0 face with rolling eyes
1F62C ; fully-qualified # 😬 E1.0 grimacing face
1F62E 200D 1F4A8 ; fully-qualified # 😮💨 E13.1 face exhaling
1F925 ; fully-qualified # 🤥 E3.0 lying face
1FAE8 ; fully-qualified # 🫨 E15.0 shaking face
1F642 200D 2194 FE0F ; fully-qualified # 🙂↔️ E15.1 head shaking horizontally
1F642 200D 2194 ; minimally-qualified # 🙂↔ E15.1 head shaking horizontally
1F642 200D 2195 FE0F ; fully-qualified # 🙂↕️ E15.1 head shaking vertically
1F642 200D 2195 ; minimally-qualified # 🙂↕ E15.1 head shaking vertically
# subgroup: face-sleepy
1F60C ; fully-qualified # 😌 E0.6 relieved face
1F614 ; fully-qualified # 😔 E0.6 pensive face
1F62A ; fully-qualified # 😪 E0.6 sleepy face
1F924 ; fully-qualified # 🤤 E3.0 drooling face
1F634 ; fully-qualified # 😴 E1.0 sleeping face
# subgroup: face-unwell
1F637 ; fully-qualified # 😷 E0.6 face with medical mask
1F912 ; fully-qualified # 🤒 E1.0 face with thermometer
1F915 ; fully-qualified # 🤕 E1.0 face with head-bandage
1F922 ; fully-qualified # 🤢 E3.0 nauseated face
1F92E ; fully-qualified # 🤮 E5.0 face vomiting
1F927 ; fully-qualified # 🤧 E3.0 sneezing face
1F975 ; fully-qualified # 🥵 E11.0 hot face
1F976 ; fully-qualified # 🥶 E11.0 cold face
1F974 ; fully-qualified # 🥴 E11.0 woozy face
1F635 ; fully-qualified # 😵 E0.6 face with crossed-out eyes
1F635 200D 1F4AB ; fully-qualified # 😵💫 E13.1 face with spiral eyes
1F92F ; fully-qualified # 🤯 E5.0 exploding head
# subgroup: face-hat
1F920 ; fully-qualified # 🤠 E3.0 cowboy hat face
1F973 ; fully-qualified # 🥳 E11.0 partying face
1F978 ; fully-qualified # 🥸 E13.0 disguised face
# subgroup: face-glasses
1F60E ; fully-qualified # 😎 E1.0 smiling face with sunglasses
1F913 ; fully-qualified # 🤓 E1.0 nerd face
1F9D0 ; fully-qualified # 🧐 E5.0 face with monocle
# subgroup: face-concerned
1F615 ; fully-qualified # 😕 E1.0 confused face
1FAE4 ; fully-qualified # 🫤 E14.0 face with diagonal mouth
1F61F ; fully-qualified # 😟 E1.0 worried face
1F641 ; fully-qualified # 🙁 E1.0 slightly frowning face
2639 FE0F ; fully-qualified # ☹️ E0.7 frowning face
2639 ; unqualified # ☹ E0.7 frowning face
1F62E ; fully-qualified # 😮 E1.0 face with open mouth
1F62F ; fully-qualified # 😯 E1.0 hushed face
1F632 ; fully-qualified # 😲 E0.6 astonished face
1F633 ; fully-qualified # 😳 E0.6 flushed face
1F97A ; fully-qualified # 🥺 E11.0 pleading face
1F979 ; fully-qualified # 🥹 E14.0 face holding back tears
1F626 ; fully-qualified # 😦 E1.0 frowning face with open mouth
1F627 ; fully-qualified # 😧 E1.0 anguished face
1F628 ; fully-qualified # 😨 E0.6 fearful face
1F630 ; fully-qualified # 😰 E0.6 anxious face with sweat
1F625 ; fully-qualified # 😥 E0.6 sad but relieved face
1F622 ; fully-qualified # 😢 E0.6 crying face
1F62D ; fully-qualified # 😭 E0.6 loudly crying face
1F631 ; fully-qualified # 😱 E0.6 face screaming in fear
1F616 ; fully-qualified # 😖 E0.6 confounded face
1F623 ; fully-qualified # 😣 E0.6 persevering face
1F61E ; fully-qualified # 😞 E0.6 disappointed face
1F613 ; fully-qualified # 😓 E0.6 downcast face with sweat
1F629 ; fully-qualified # 😩 E0.6 weary face
1F62B ; fully-qualified # 😫 E0.6 tired face
1F971 ; fully-qualified # 🥱 E12.0 yawning face
# subgroup: face-negative
1F624 ; fully-qualified # 😤 E0.6 face with steam from nose
1F621 ; fully-qualified # 😡 E0.6 enraged face
1F620 ; fully-qualified # 😠 E0.6 angry face
1F92C ; fully-qualified # 🤬 E5.0 face with symbols on mouth
1F608 ; fully-qualified # 😈 E1.0 smiling face with horns
1F47F ; fully-qualified # 👿 E0.6 angry face with horns
1F480 ; fully-qualified # 💀 E0.6 skull
2620 FE0F ; fully-qualified # ☠️ E1.0 skull and crossbones
2620 ; unqualified # ☠ E1.0 skull and crossbones
# subgroup: face-costume
1F4A9 ; fully-qualified # 💩 E0.6 pile of poo
1F921 ; fully-qualified # 🤡 E3.0 clown face
1F479 ; fully-qualified # 👹 E0.6 ogre
1F47A ; fully-qualified # 👺 E0.6 goblin
1F47B ; fully-qualified # 👻 E0.6 ghost
1F47D ; fully-qualified # 👽 E0.6 alien
1F47E ; fully-qualified # 👾 E0.6 alien monster
1F916 ; fully-qualified # 🤖 E1.0 robot
# subgroup: cat-face
1F63A ; fully-qualified # 😺 E0.6 grinning cat
1F638 ; fully-qualified # 😸 E0.6 grinning cat with smiling eyes
1F639 ; fully-qualified # 😹 E0.6 cat with tears of joy
1F63B ; fully-qualified # 😻 E0.6 smiling cat with heart-eyes
1F63C ; fully-qualified # 😼 E0.6 cat with wry smile
1F63D ; fully-qualified # 😽 E0.6 kissing cat
1F640 ; fully-qualified # 🙀 E0.6 weary cat
1F63F ; fully-qualified # 😿 E0.6 crying cat
1F63E ; fully-qualified # 😾 E0.6 pouting cat
# subgroup: monkey-face
1F648 ; fully-qualified # 🙈 E0.6 see-no-evil monkey
1F649 ; fully-qualified # 🙉 E0.6 hear-no-evil monkey
1F64A ; fully-qualified # 🙊 E0.6 speak-no-evil monkey
# subgroup: heart
1F48C ; fully-qualified # 💌 E0.6 love letter
1F498 ; fully-qualified # 💘 E0.6 heart with arrow
1F49D ; fully-qualified # 💝 E0.6 heart with ribbon
1F496 ; fully-qualified # 💖 E0.6 sparkling heart
1F497 ; fully-qualified # 💗 E0.6 growing heart
1F493 ; fully-qualified # 💓 E0.6 beating heart
1F49E ; fully-qualified # 💞 E0.6 revolving hearts
1F495 ; fully-qualified # 💕 E0.6 two hearts
1F49F ; fully-qualified # 💟 E0.6 heart decoration
2763 FE0F ; fully-qualified # ❣️ E1.0 heart exclamation
2763 ; unqualified # ❣ E1.0 heart exclamation
1F494 ; fully-qualified # 💔 E0.6 broken heart
2764 FE0F 200D 1F525 ; fully-qualified # ❤️🔥 E13.1 heart on fire
2764 200D 1F525 ; unqualified # ❤🔥 E13.1 heart on fire
2764 FE0F 200D 1FA79 ; fully-qualified # ❤️🩹 E13.1 mending heart
2764 200D 1FA79 ; unqualified # ❤🩹 E13.1 mending heart
2764 FE0F ; fully-qualified # ❤️ E0.6 red heart
2764 ; unqualified # ❤ E0.6 red heart
1FA77 ; fully-qualified # 🩷 E15.0 pink heart
1F9E1 ; fully-qualified # 🧡 E5.0 orange heart
1F49B ; fully-qualified # 💛 E0.6 yellow heart
1F49A ; fully-qualified # 💚 E0.6 green heart
1F499 ; fully-qualified # 💙 E0.6 blue heart
1FA75 ; fully-qualified # 🩵 E15.0 light blue heart
1F49C ; fully-qualified # 💜 E0.6 purple heart
1F90E ; fully-qualified # 🤎 E12.0 brown heart
1F5A4 ; fully-qualified # 🖤 E3.0 black heart
1FA76 ; fully-qualified # 🩶 E15.0 grey heart
1F90D ; fully-qualified # 🤍 E12.0 white heart
# subgroup: emotion
1F48B ; fully-qualified # 💋 E0.6 kiss mark
1F4AF ; fully-qualified # 💯 E0.6 hundred points
1F4A2 ; fully-qualified # 💢 E0.6 anger symbol
1F4A5 ; fully-qualified # 💥 E0.6 collision
1F4AB ; fully-qualified # 💫 E0.6 dizzy
1F4A6 ; fully-qualified # 💦 E0.6 sweat droplets
1F4A8 ; fully-qualified # 💨 E0.6 dashing away
1F573 FE0F ; fully-qualified # 🕳️ E0.7 hole
1F573 ; unqualified # 🕳 E0.7 hole
1F4AC ; fully-qualified # 💬 E0.6 speech balloon
1F441 FE0F 200D 1F5E8 FE0F ; fully-qualified # 👁️🗨️ E2.0 eye in speech bubble
1F441 200D 1F5E8 FE0F ; unqualified # 👁🗨️ E2.0 eye in speech bubble
1F441 FE0F 200D 1F5E8 ; minimally-qualified # 👁️🗨 E2.0 eye in speech bubble
1F441 200D 1F5E8 ; unqualified # 👁🗨 E2.0 eye in speech bubble
1F5E8 FE0F ; fully-qualified # 🗨️ E2.0 left speech bubble
1F5E8 ; unqualified # 🗨 E2.0 left speech bubble
1F5EF FE0F ; fully-qualified # 🗯️ E0.7 right anger bubble
1F5EF ; unqualified # 🗯 E0.7 right anger bubble
1F4AD ; fully-qualified # 💭 E1.0 thought balloon
1F4A4 ; fully-qualified # 💤 E0.6 ZZZ
# Smileys & Emotion subtotal: 184
# Smileys & Emotion subtotal: 184 w/o modifiers
# group: People & Body
# subgroup: hand-fingers-open
1F44B ; fully-qualified # 👋 E0.6 waving hand
1F44B 1F3FB ; fully-qualified # 👋🏻 E1.0 waving hand: light skin tone
1F44B 1F3FC ; fully-qualified # 👋🏼 E1.0 waving hand: medium-light skin tone
1F44B 1F3FD ; fully-qualified # 👋🏽 E1.0 waving hand: medium skin tone
1F44B 1F3FE ; fully-qualified # 👋🏾 E1.0 waving hand: medium-dark skin tone
1F44B 1F3FF ; fully-qualified # 👋🏿 E1.0 waving hand: dark skin tone
1F91A ; fully-qualified # 🤚 E3.0 raised back of hand
1F91A 1F3FB ; fully-qualified # 🤚🏻 E3.0 raised back of hand: light skin tone
1F91A 1F3FC ; fully-qualified # 🤚🏼 E3.0 raised back of hand: medium-light skin tone
1F91A 1F3FD ; fully-qualified # 🤚🏽 E3.0 raised back of hand: medium skin tone
1F91A 1F3FE ; fully-qualified # 🤚🏾 E3.0 raised back of hand: medium-dark skin tone
1F91A 1F3FF ; fully-qualified # 🤚🏿 E3.0 raised back of hand: dark skin tone
1F590 FE0F ; fully-qualified # 🖐️ E0.7 hand with fingers splayed
1F590 ; unqualified # 🖐 E0.7 hand with fingers splayed
1F590 1F3FB ; fully-qualified # 🖐🏻 E1.0 hand with fingers splayed: light skin tone
1F590 1F3FC ; fully-qualified # 🖐🏼 E1.0 hand with fingers splayed: medium-light skin tone
1F590 1F3FD ; fully-qualified # 🖐🏽 E1.0 hand with fingers splayed: medium skin tone
1F590 1F3FE ; fully-qualified # 🖐🏾 E1.0 hand with fingers splayed: medium-dark skin tone
1F590 1F3FF ; fully-qualified # 🖐🏿 E1.0 hand with fingers splayed: dark skin tone
270B ; fully-qualified # ✋ E0.6 raised hand
270B 1F3FB ; fully-qualified # ✋🏻 E1.0 raised hand: light skin tone
270B 1F3FC ; fully-qualified # ✋🏼 E1.0 raised hand: medium-light skin tone
270B 1F3FD ; fully-qualified # ✋🏽 E1.0 raised hand: medium skin tone
270B 1F3FE ; fully-qualified # ✋🏾 E1.0 raised hand: medium-dark skin tone
270B 1F3FF ; fully-qualified # ✋🏿 E1.0 raised hand: dark skin tone
1F596 ; fully-qualified # 🖖 E1.0 vulcan salute
1F596 1F3FB ; fully-qualified # 🖖🏻 E1.0 vulcan salute: light skin tone
1F596 1F3FC ; fully-qualified # 🖖🏼 E1.0 vulcan salute: medium-light skin tone
1F596 1F3FD ; fully-qualified # 🖖🏽 E1.0 vulcan salute: medium skin tone
1F596 1F3FE ; fully-qualified # 🖖🏾 E1.0 vulcan salute: medium-dark skin tone
1F596 1F3FF ; fully-qualified # 🖖🏿 E1.0 vulcan salute: dark skin tone
1FAF1 ; fully-qualified # 🫱 E14.0 rightwards hand
1FAF1 1F3FB ; fully-qualified # 🫱🏻 E14.0 rightwards hand: light skin tone
1FAF1 1F3FC ; fully-qualified # 🫱🏼 E14.0 rightwards hand: medium-light skin tone
1FAF1 1F3FD ; fully-qualified # 🫱🏽 E14.0 rightwards hand: medium skin tone
1FAF1 1F3FE ; fully-qualified # 🫱🏾 E14.0 rightwards hand: medium-dark skin tone
1FAF1 1F3FF ; fully-qualified # 🫱🏿 E14.0 rightwards hand: dark skin tone
1FAF2 ; fully-qualified # 🫲 E14.0 leftwards hand
1FAF2 1F3FB ; fully-qualified # 🫲🏻 E14.0 leftwards hand: light skin tone
1FAF2 1F3FC ; fully-qualified # 🫲🏼 E14.0 leftwards hand: medium-light skin tone
1FAF2 1F3FD ; fully-qualified # 🫲🏽 E14.0 leftwards hand: medium skin tone
1FAF2 1F3FE ; fully-qualified # 🫲🏾 E14.0 leftwards hand: medium-dark skin tone
1FAF2 1F3FF ; fully-qualified # 🫲🏿 E14.0 leftwards hand: dark skin tone
1FAF3 ; fully-qualified # 🫳 E14.0 palm down hand
1FAF3 1F3FB ; fully-qualified # 🫳🏻 E14.0 palm down hand: light skin tone
1FAF3 1F3FC ; fully-qualified # 🫳🏼 E14.0 palm down hand: medium-light skin tone
1FAF3 1F3FD ; fully-qualified # 🫳🏽 E14.0 palm down hand: medium skin tone
1FAF3 1F3FE ; fully-qualified # 🫳🏾 E14.0 palm down hand: medium-dark skin tone
1FAF3 1F3FF ; fully-qualified # 🫳🏿 E14.0 palm down hand: dark skin tone
1FAF4 ; fully-qualified # 🫴 E14.0 palm up hand
1FAF4 1F3FB ; fully-qualified # 🫴🏻 E14.0 palm up hand: light skin tone
1FAF4 1F3FC ; fully-qualified # 🫴🏼 E14.0 palm up hand: medium-light skin tone
1FAF4 1F3FD ; fully-qualified # 🫴🏽 E14.0 palm up hand: medium skin tone
1FAF4 1F3FE ; fully-qualified # 🫴🏾 E14.0 palm up hand: medium-dark skin tone
1FAF4 1F3FF ; fully-qualified # 🫴🏿 E14.0 palm up hand: dark skin tone
1FAF7 ; fully-qualified # 🫷 E15.0 leftwards pushing hand
1FAF7 1F3FB ; fully-qualified # 🫷🏻 E15.0 leftwards pushing hand: light skin tone
1FAF7 1F3FC ; fully-qualified # 🫷🏼 E15.0 leftwards pushing hand: medium-light skin tone
1FAF7 1F3FD ; fully-qualified # 🫷🏽 E15.0 leftwards pushing hand: medium skin tone
1FAF7 1F3FE ; fully-qualified # 🫷🏾 E15.0 leftwards pushing hand: medium-dark skin tone
1FAF7 1F3FF ; fully-qualified # 🫷🏿 E15.0 leftwards pushing hand: dark skin tone
1FAF8 ; fully-qualified # 🫸 E15.0 rightwards pushing hand
1FAF8 1F3FB ; fully-qualified # 🫸🏻 E15.0 rightwards pushing hand: light skin tone
1FAF8 1F3FC ; fully-qualified # 🫸🏼 E15.0 rightwards pushing hand: medium-light skin tone
1FAF8 1F3FD ; fully-qualified # 🫸🏽 E15.0 rightwards pushing hand: medium skin tone
1FAF8 1F3FE ; fully-qualified # 🫸🏾 E15.0 rightwards pushing hand: medium-dark skin tone
1FAF8 1F3FF ; fully-qualified # 🫸🏿 E15.0 rightwards pushing hand: dark skin tone
# subgroup: hand-fingers-partial
1F44C ; fully-qualified # 👌 E0.6 OK hand
1F44C 1F3FB ; fully-qualified # 👌🏻 E1.0 OK hand: light skin tone
1F44C 1F3FC ; fully-qualified # 👌🏼 E1.0 OK hand: medium-light skin tone
1F44C 1F3FD ; fully-qualified # 👌🏽 E1.0 OK hand: medium skin tone
1F44C 1F3FE ; fully-qualified # 👌🏾 E1.0 OK hand: medium-dark skin tone
1F44C 1F3FF ; fully-qualified # 👌🏿 E1.0 OK hand: dark skin tone
1F90C ; fully-qualified # 🤌 E13.0 pinched fingers
1F90C 1F3FB ; fully-qualified # 🤌🏻 E13.0 pinched fingers: light skin tone
1F90C 1F3FC ; fully-qualified # 🤌🏼 E13.0 pinched fingers: medium-light skin tone
1F90C 1F3FD ; fully-qualified # 🤌🏽 E13.0 pinched fingers: medium skin tone
1F90C 1F3FE ; fully-qualified # 🤌🏾 E13.0 pinched fingers: medium-dark skin tone
1F90C 1F3FF ; fully-qualified # 🤌🏿 E13.0 pinched fingers: dark skin tone
1F90F ; fully-qualified # 🤏 E12.0 pinching hand
1F90F 1F3FB ; fully-qualified # 🤏🏻 E12.0 pinching hand: light skin tone
1F90F 1F3FC ; fully-qualified # 🤏🏼 E12.0 pinching hand: medium-light skin tone
1F90F 1F3FD ; fully-qualified # 🤏🏽 E12.0 pinching hand: medium skin tone
1F90F 1F3FE ; fully-qualified # 🤏🏾 E12.0 pinching hand: medium-dark skin tone
1F90F 1F3FF ; fully-qualified # 🤏🏿 E12.0 pinching hand: dark skin tone
270C FE0F ; fully-qualified # ✌️ E0.6 victory hand
270C ; unqualified # ✌ E0.6 victory hand
270C 1F3FB ; fully-qualified # ✌🏻 E1.0 victory hand: light skin tone
270C 1F3FC ; fully-qualified # ✌🏼 E1.0 victory hand: medium-light skin tone
270C 1F3FD ; fully-qualified # ✌🏽 E1.0 victory hand: medium skin tone
270C 1F3FE ; fully-qualified # ✌🏾 E1.0 victory hand: medium-dark skin tone
270C 1F3FF ; fully-qualified # ✌🏿 E1.0 victory hand: dark skin tone
1F91E ; fully-qualified # 🤞 E3.0 crossed fingers
1F91E 1F3FB ; fully-qualified # 🤞🏻 E3.0 crossed fingers: light skin tone
1F91E 1F3FC ; fully-qualified # 🤞🏼 E3.0 crossed fingers: medium-light skin tone
1F91E 1F3FD ; fully-qualified # 🤞🏽 E3.0 crossed fingers: medium skin tone
1F91E 1F3FE ; fully-qualified # 🤞🏾 E3.0 crossed fingers: medium-dark skin tone
1F91E 1F3FF ; fully-qualified # 🤞🏿 E3.0 crossed fingers: dark skin tone
1FAF0 ; fully-qualified # 🫰 E14.0 hand with index finger and thumb crossed
1FAF0 1F3FB ; fully-qualified # 🫰🏻 E14.0 hand with index finger and thumb crossed: light skin tone
1FAF0 1F3FC ; fully-qualified # 🫰🏼 E14.0 hand with index finger and thumb crossed: medium-light skin tone
1FAF0 1F3FD ; fully-qualified # 🫰🏽 E14.0 hand with index finger and thumb crossed: medium skin tone
1FAF0 1F3FE ; fully-qualified # 🫰🏾 E14.0 hand with index finger and thumb crossed: medium-dark skin tone
1FAF0 1F3FF ; fully-qualified # 🫰🏿 E14.0 hand with index finger and thumb crossed: dark skin tone
1F91F ; fully-qualified # 🤟 E5.0 love-you gesture
1F91F 1F3FB ; fully-qualified # 🤟🏻 E5.0 love-you gesture: light skin tone
1F91F 1F3FC ; fully-qualified # 🤟🏼 E5.0 love-you gesture: medium-light skin tone
1F91F 1F3FD ; fully-qualified # 🤟🏽 E5.0 love-you gesture: medium skin tone
1F91F 1F3FE ; fully-qualified # 🤟🏾 E5.0 love-you gesture: medium-dark skin tone
1F91F 1F3FF ; fully-qualified # 🤟🏿 E5.0 love-you gesture: dark skin tone
1F918 ; fully-qualified # 🤘 E1.0 sign of the horns
1F918 1F3FB ; fully-qualified # 🤘🏻 E1.0 sign of the horns: light skin tone
1F918 1F3FC ; fully-qualified # 🤘🏼 E1.0 sign of the horns: medium-light skin tone
1F918 1F3FD ; fully-qualified # 🤘🏽 E1.0 sign of the horns: medium skin tone
1F918 1F3FE ; fully-qualified # 🤘🏾 E1.0 sign of the horns: medium-dark skin tone
1F918 1F3FF ; fully-qualified # 🤘🏿 E1.0 sign of the horns: dark skin tone
1F919 ; fully-qualified # 🤙 E3.0 call me hand
1F919 1F3FB ; fully-qualified # 🤙🏻 E3.0 call me hand: light skin tone
1F919 1F3FC ; fully-qualified # 🤙🏼 E3.0 call me hand: medium-light skin tone
1F919 1F3FD ; fully-qualified # 🤙🏽 E3.0 call me hand: medium skin tone
1F919 1F3FE ; fully-qualified # 🤙🏾 E3.0 call me hand: medium-dark skin tone
1F919 1F3FF ; fully-qualified # 🤙🏿 E3.0 call me hand: dark skin tone
# subgroup: hand-single-finger
1F448 ; fully-qualified # 👈 E0.6 backhand index pointing left
1F448 1F3FB ; fully-qualified # 👈🏻 E1.0 backhand index pointing left: light skin tone
1F448 1F3FC ; fully-qualified # 👈🏼 E1.0 backhand index pointing left: medium-light skin tone
1F448 1F3FD ; fully-qualified # 👈🏽 E1.0 backhand index pointing left: medium skin tone
1F448 1F3FE ; fully-qualified # 👈🏾 E1.0 backhand index pointing left: medium-dark skin tone
1F448 1F3FF ; fully-qualified # 👈🏿 E1.0 backhand index pointing left: dark skin tone
1F449 ; fully-qualified # 👉 E0.6 backhand index pointing right
1F449 1F3FB ; fully-qualified # 👉🏻 E1.0 backhand index pointing right: light skin tone
1F449 1F3FC ; fully-qualified # 👉🏼 E1.0 backhand index pointing right: medium-light skin tone
1F449 1F3FD ; fully-qualified # 👉🏽 E1.0 backhand index pointing right: medium skin tone
1F449 1F3FE ; fully-qualified # 👉🏾 E1.0 backhand index pointing right: medium-dark skin tone
1F449 1F3FF ; fully-qualified # 👉🏿 E1.0 backhand index pointing right: dark skin tone
1F446 ; fully-qualified # 👆 E0.6 backhand index pointing up
1F446 1F3FB ; fully-qualified # 👆🏻 E1.0 backhand index pointing up: light skin tone
1F446 1F3FC ; fully-qualified # 👆🏼 E1.0 backhand index pointing up: medium-light skin tone
1F446 1F3FD ; fully-qualified # 👆🏽 E1.0 backhand index pointing up: medium skin tone
1F446 1F3FE ; fully-qualified # 👆🏾 E1.0 backhand index pointing up: medium-dark skin tone
1F446 1F3FF ; fully-qualified # 👆🏿 E1.0 backhand index pointing up: dark skin tone
1F595 ; fully-qualified # 🖕 E1.0 middle finger
1F595 1F3FB ; fully-qualified # 🖕🏻 E1.0 middle finger: light skin tone
1F595 1F3FC ; fully-qualified # 🖕🏼 E1.0 middle finger: medium-light skin tone
1F595 1F3FD ; fully-qualified # 🖕🏽 E1.0 middle finger: medium skin tone
1F595 1F3FE ; fully-qualified # 🖕🏾 E1.0 middle finger: medium-dark skin tone
1F595 1F3FF ; fully-qualified # 🖕🏿 E1.0 middle finger: dark skin tone
1F447 ; fully-qualified # 👇 E0.6 backhand index pointing down
1F447 1F3FB ; fully-qualified # 👇🏻 E1.0 backhand index pointing down: light skin tone
1F447 1F3FC ; fully-qualified # 👇🏼 E1.0 backhand index pointing down: medium-light skin tone
1F447 1F3FD ; fully-qualified # 👇🏽 E1.0 backhand index pointing down: medium skin tone
1F447 1F3FE ; fully-qualified # 👇🏾 E1.0 backhand index pointing down: medium-dark skin tone
1F447 1F3FF ; fully-qualified # 👇🏿 E1.0 backhand index pointing down: dark skin tone
261D FE0F ; fully-qualified # ☝️ E0.6 index pointing up
261D ; unqualified # ☝ E0.6 index pointing up
261D 1F3FB ; fully-qualified # ☝🏻 E1.0 index pointing up: light skin tone
261D 1F3FC ; fully-qualified # ☝🏼 E1.0 index pointing up: medium-light skin tone
261D 1F3FD ; fully-qualified # ☝🏽 E1.0 index pointing up: medium skin tone
261D 1F3FE ; fully-qualified # ☝🏾 E1.0 index pointing up: medium-dark skin tone
261D 1F3FF ; fully-qualified # ☝🏿 E1.0 index pointing up: dark skin tone
1FAF5 ; fully-qualified # 🫵 E14.0 index pointing at the viewer
1FAF5 1F3FB ; fully-qualified # 🫵🏻 E14.0 index pointing at the viewer: light skin tone
1FAF5 1F3FC ; fully-qualified # 🫵🏼 E14.0 index pointing at the viewer: medium-light skin tone
1FAF5 1F3FD ; fully-qualified # 🫵🏽 E14.0 index pointing at the viewer: medium skin tone
1FAF5 1F3FE ; fully-qualified # 🫵🏾 E14.0 index pointing at the viewer: medium-dark skin tone
1FAF5 1F3FF ; fully-qualified # 🫵🏿 E14.0 index pointing at the viewer: dark skin tone
# subgroup: hand-fingers-closed
1F44D ; fully-qualified # 👍 E0.6 thumbs up
1F44D 1F3FB ; fully-qualified # 👍🏻 E1.0 thumbs up: light skin tone
1F44D 1F3FC ; fully-qualified # 👍🏼 E1.0 thumbs up: medium-light skin tone
1F44D 1F3FD ; fully-qualified # 👍🏽 E1.0 thumbs up: medium skin tone
1F44D 1F3FE ; fully-qualified # 👍🏾 E1.0 thumbs up: medium-dark skin tone
1F44D 1F3FF ; fully-qualified # 👍🏿 E1.0 thumbs up: dark skin tone
1F44E ; fully-qualified # 👎 E0.6 thumbs down
1F44E 1F3FB ; fully-qualified # 👎🏻 E1.0 thumbs down: light skin tone
1F44E 1F3FC ; fully-qualified # 👎🏼 E1.0 thumbs down: medium-light skin tone
1F44E 1F3FD ; fully-qualified # 👎🏽 E1.0 thumbs down: medium skin tone
1F44E 1F3FE ; fully-qualified # 👎🏾 E1.0 thumbs down: medium-dark skin tone
1F44E 1F3FF ; fully-qualified # 👎🏿 E1.0 thumbs down: dark skin tone
270A ; fully-qualified # ✊ E0.6 raised fist
270A 1F3FB ; fully-qualified # ✊🏻 E1.0 raised fist: light skin tone
270A 1F3FC ; fully-qualified # ✊🏼 E1.0 raised fist: medium-light skin tone
270A 1F3FD ; fully-qualified # ✊🏽 E1.0 raised fist: medium skin tone
270A 1F3FE ; fully-qualified # ✊🏾 E1.0 raised fist: medium-dark skin tone
270A 1F3FF ; fully-qualified # ✊🏿 E1.0 raised fist: dark skin tone
1F44A ; fully-qualified # 👊 E0.6 oncoming fist
1F44A 1F3FB ; fully-qualified # 👊🏻 E1.0 oncoming fist: light skin tone
1F44A 1F3FC ; fully-qualified # 👊🏼 E1.0 oncoming fist: medium-light skin tone
1F44A 1F3FD ; fully-qualified # 👊🏽 E1.0 oncoming fist: medium skin tone
1F44A 1F3FE ; fully-qualified # 👊🏾 E1.0 oncoming fist: medium-dark skin tone
1F44A 1F3FF ; fully-qualified # 👊🏿 E1.0 oncoming fist: dark skin tone
1F91B ; fully-qualified # 🤛 E3.0 left-facing fist
1F91B 1F3FB ; fully-qualified # 🤛🏻 E3.0 left-facing fist: light skin tone
1F91B 1F3FC ; fully-qualified # 🤛🏼 E3.0 left-facing fist: medium-light skin tone
1F91B 1F3FD ; fully-qualified # 🤛🏽 E3.0 left-facing fist: medium skin tone
1F91B 1F3FE ; fully-qualified # 🤛🏾 E3.0 left-facing fist: medium-dark skin tone
1F91B 1F3FF ; fully-qualified # 🤛🏿 E3.0 left-facing fist: dark skin tone
1F91C ; fully-qualified # 🤜 E3.0 right-facing fist
1F91C 1F3FB ; fully-qualified # 🤜🏻 E3.0 right-facing fist: light skin tone
1F91C 1F3FC ; fully-qualified # 🤜🏼 E3.0 right-facing fist: medium-light skin tone
1F91C 1F3FD ; fully-qualified # 🤜🏽 E3.0 right-facing fist: medium skin tone
1F91C 1F3FE ; fully-qualified # 🤜🏾 E3.0 right-facing fist: medium-dark skin tone
1F91C 1F3FF ; fully-qualified # 🤜🏿 E3.0 right-facing fist: dark skin tone
# subgroup: hands
1F44F ; fully-qualified # 👏 E0.6 clapping hands
1F44F 1F3FB ; fully-qualified # 👏🏻 E1.0 clapping hands: light skin tone
1F44F 1F3FC ; fully-qualified # 👏🏼 E1.0 clapping hands: medium-light skin tone
1F44F 1F3FD ; fully-qualified # 👏🏽 E1.0 clapping hands: medium skin tone
1F44F 1F3FE ; fully-qualified # 👏🏾 E1.0 clapping hands: medium-dark skin tone
1F44F 1F3FF ; fully-qualified # 👏🏿 E1.0 clapping hands: dark skin tone
1F64C ; fully-qualified # 🙌 E0.6 raising hands
1F64C 1F3FB ; fully-qualified # 🙌🏻 E1.0 raising hands: light skin tone
1F64C 1F3FC ; fully-qualified # 🙌🏼 E1.0 raising hands: medium-light skin tone
1F64C 1F3FD ; fully-qualified # 🙌🏽 E1.0 raising hands: medium skin tone
1F64C 1F3FE ; fully-qualified # 🙌🏾 E1.0 raising hands: medium-dark skin tone
1F64C 1F3FF ; fully-qualified # 🙌🏿 E1.0 raising hands: dark skin tone
1FAF6 ; fully-qualified # 🫶 E14.0 heart hands
1FAF6 1F3FB ; fully-qualified # 🫶🏻 E14.0 heart hands: light skin tone
1FAF6 1F3FC ; fully-qualified # 🫶🏼 E14.0 heart hands: medium-light skin tone
1FAF6 1F3FD ; fully-qualified # 🫶🏽 E14.0 heart hands: medium skin tone
1FAF6 1F3FE ; fully-qualified # 🫶🏾 E14.0 heart hands: medium-dark skin tone
1FAF6 1F3FF ; fully-qualified # 🫶🏿 E14.0 heart hands: dark skin tone
1F450 ; fully-qualified # 👐 E0.6 open hands
1F450 1F3FB ; fully-qualified # 👐🏻 E1.0 open hands: light skin tone
1F450 1F3FC ; fully-qualified # 👐🏼 E1.0 open hands: medium-light skin tone
1F450 1F3FD ; fully-qualified # 👐🏽 E1.0 open hands: medium skin tone
1F450 1F3FE ; fully-qualified # 👐🏾 E1.0 open hands: medium-dark skin tone
1F450 1F3FF ; fully-qualified # 👐🏿 E1.0 open hands: dark skin tone
1F932 ; fully-qualified # 🤲 E5.0 palms up together
1F932 1F3FB ; fully-qualified # 🤲🏻 E5.0 palms up together: light skin tone
1F932 1F3FC ; fully-qualified # 🤲🏼 E5.0 palms up together: medium-light skin tone
1F932 1F3FD ; fully-qualified # 🤲🏽 E5.0 palms up together: medium skin tone
1F932 1F3FE ; fully-qualified # 🤲🏾 E5.0 palms up together: medium-dark skin tone
1F932 1F3FF ; fully-qualified # 🤲🏿 E5.0 palms up together: dark skin tone
1F91D ; fully-qualified # 🤝 E3.0 handshake
1F91D 1F3FB ; fully-qualified # 🤝🏻 E14.0 handshake: light skin tone
1F91D 1F3FC ; fully-qualified # 🤝🏼 E14.0 handshake: medium-light skin tone
1F91D 1F3FD ; fully-qualified # 🤝🏽 E14.0 handshake: medium skin tone
1F91D 1F3FE ; fully-qualified # 🤝🏾 E14.0 handshake: medium-dark skin tone
1F91D 1F3FF ; fully-qualified # 🤝🏿 E14.0 handshake: dark skin tone
1FAF1 1F3FB 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏻🫲🏼 E14.0 handshake: light skin tone, medium-light skin tone
1FAF1 1F3FB 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏻🫲🏽 E14.0 handshake: light skin tone, medium skin tone
1FAF1 1F3FB 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏻🫲🏾 E14.0 handshake: light skin tone, medium-dark skin tone
1FAF1 1F3FB 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏻🫲🏿 E14.0 handshake: light skin tone, dark skin tone
1FAF1 1F3FC 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏼🫲🏻 E14.0 handshake: medium-light skin tone, light skin tone
1FAF1 1F3FC 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏼🫲🏽 E14.0 handshake: medium-light skin tone, medium skin tone
1FAF1 1F3FC 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏼🫲🏾 E14.0 handshake: medium-light skin tone, medium-dark skin tone
1FAF1 1F3FC 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏼🫲🏿 E14.0 handshake: medium-light skin tone, dark skin tone
1FAF1 1F3FD 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏽🫲🏻 E14.0 handshake: medium skin tone, light skin tone
1FAF1 1F3FD 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏽🫲🏼 E14.0 handshake: medium skin tone, medium-light skin tone
1FAF1 1F3FD 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏽🫲🏾 E14.0 handshake: medium skin tone, medium-dark skin tone
1FAF1 1F3FD 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏽🫲🏿 E14.0 handshake: medium skin tone, dark skin tone
1FAF1 1F3FE 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏾🫲🏻 E14.0 handshake: medium-dark skin tone, light skin tone
1FAF1 1F3FE 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏾🫲🏼 E14.0 handshake: medium-dark skin tone, medium-light skin tone
1FAF1 1F3FE 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏾🫲🏽 E14.0 handshake: medium-dark skin tone, medium skin tone
1FAF1 1F3FE 200D 1FAF2 1F3FF ; fully-qualified # 🫱🏾🫲🏿 E14.0 handshake: medium-dark skin tone, dark skin tone
1FAF1 1F3FF 200D 1FAF2 1F3FB ; fully-qualified # 🫱🏿🫲🏻 E14.0 handshake: dark skin tone, light skin tone
1FAF1 1F3FF 200D 1FAF2 1F3FC ; fully-qualified # 🫱🏿🫲🏼 E14.0 handshake: dark skin tone, medium-light skin tone
1FAF1 1F3FF 200D 1FAF2 1F3FD ; fully-qualified # 🫱🏿🫲🏽 E14.0 handshake: dark skin tone, medium skin tone
1FAF1 1F3FF 200D 1FAF2 1F3FE ; fully-qualified # 🫱🏿🫲🏾 E14.0 handshake: dark skin tone, medium-dark skin tone
1F64F ; fully-qualified # 🙏 E0.6 folded hands
1F64F 1F3FB ; fully-qualified # 🙏🏻 E1.0 folded hands: light skin tone
1F64F 1F3FC ; fully-qualified # 🙏🏼 E1.0 folded hands: medium-light skin tone
1F64F 1F3FD ; fully-qualified # 🙏🏽 E1.0 folded hands: medium skin tone
1F64F 1F3FE ; fully-qualified # 🙏🏾 E1.0 folded hands: medium-dark skin tone
1F64F 1F3FF ; fully-qualified # 🙏🏿 E1.0 folded hands: dark skin tone
# subgroup: hand-prop
270D FE0F ; fully-qualified # ✍️ E0.7 writing hand
270D ; unqualified # ✍ E0.7 writing hand
270D 1F3FB ; fully-qualified # ✍🏻 E1.0 writing hand: light skin tone
270D 1F3FC ; fully-qualified # ✍🏼 E1.0 writing hand: medium-light skin tone
270D 1F3FD ; fully-qualified # ✍🏽 E1.0 writing hand: medium skin tone
270D 1F3FE ; fully-qualified # ✍🏾 E1.0 writing hand: medium-dark skin tone
270D 1F3FF ; fully-qualified # ✍🏿 E1.0 writing hand: dark skin tone
1F485 ; fully-qualified # 💅 E0.6 nail polish
1F485 1F3FB ; fully-qualified # 💅🏻 E1.0 nail polish: light skin tone
1F485 1F3FC ; fully-qualified # 💅🏼 E1.0 nail polish: medium-light skin tone
1F485 1F3FD ; fully-qualified # 💅🏽 E1.0 nail polish: medium skin tone
1F485 1F3FE ; fully-qualified # 💅🏾 E1.0 nail polish: medium-dark skin tone
1F485 1F3FF ; fully-qualified # 💅🏿 E1.0 nail polish: dark skin tone
1F933 ; fully-qualified # 🤳 E3.0 selfie
1F933 1F3FB ; fully-qualified # 🤳🏻 E3.0 selfie: light skin tone
1F933 1F3FC ; fully-qualified # 🤳🏼 E3.0 selfie: medium-light skin tone
1F933 1F3FD ; fully-qualified # 🤳🏽 E3.0 selfie: medium skin tone
1F933 1F3FE ; fully-qualified # 🤳🏾 E3.0 selfie: medium-dark skin tone
1F933 1F3FF ; fully-qualified # 🤳🏿 E3.0 selfie: dark skin tone
# subgroup: body-parts
1F4AA ; fully-qualified # 💪 E0.6 flexed biceps
1F4AA 1F3FB ; fully-qualified # 💪🏻 E1.0 flexed biceps: light skin tone
1F4AA 1F3FC ; fully-qualified # 💪🏼 E1.0 flexed biceps: medium-light skin tone
1F4AA 1F3FD ; fully-qualified # 💪🏽 E1.0 flexed biceps: medium skin tone
1F4AA 1F3FE ; fully-qualified # 💪🏾 E1.0 flexed biceps: medium-dark skin tone
1F4AA 1F3FF ; fully-qualified # 💪🏿 E1.0 flexed biceps: dark skin tone
1F9BE ; fully-qualified # 🦾 E12.0 mechanical arm
1F9BF ; fully-qualified # 🦿 E12.0 mechanical leg
1F9B5 ; fully-qualified # 🦵 E11.0 leg
1F9B5 1F3FB ; fully-qualified # 🦵🏻 E11.0 leg: light skin tone
1F9B5 1F3FC ; fully-qualified # 🦵🏼 E11.0 leg: medium-light skin tone
1F9B5 1F3FD ; fully-qualified # 🦵🏽 E11.0 leg: medium skin tone
1F9B5 1F3FE ; fully-qualified # 🦵🏾 E11.0 leg: medium-dark skin tone
1F9B5 1F3FF ; fully-qualified # 🦵🏿 E11.0 leg: dark skin tone
1F9B6 ; fully-qualified # 🦶 E11.0 foot
1F9B6 1F3FB ; fully-qualified # 🦶🏻 E11.0 foot: light skin tone
1F9B6 1F3FC ; fully-qualified # 🦶🏼 E11.0 foot: medium-light skin tone
1F9B6 1F3FD ; fully-qualified # 🦶🏽 E11.0 foot: medium skin tone
1F9B6 1F3FE ; fully-qualified # 🦶🏾 E11.0 foot: medium-dark skin tone
1F9B6 1F3FF ; fully-qualified # 🦶🏿 E11.0 foot: dark skin tone
1F442 ; fully-qualified # 👂 E0.6 ear
1F442 1F3FB ; fully-qualified # 👂🏻 E1.0 ear: light skin tone
1F442 1F3FC ; fully-qualified # 👂🏼 E1.0 ear: medium-light skin tone
1F442 1F3FD ; fully-qualified # 👂🏽 E1.0 ear: medium skin tone
1F442 1F3FE ; fully-qualified # 👂🏾 E1.0 ear: medium-dark skin tone
1F442 1F3FF ; fully-qualified # 👂🏿 E1.0 ear: dark skin tone
1F9BB ; fully-qualified # 🦻 E12.0 ear with hearing aid
1F9BB 1F3FB ; fully-qualified # 🦻🏻 E12.0 ear with hearing aid: light skin tone
1F9BB 1F3FC ; fully-qualified # 🦻🏼 E12.0 ear with hearing aid: medium-light skin tone
1F9BB 1F3FD ; fully-qualified # 🦻🏽 E12.0 ear with hearing aid: medium skin tone
1F9BB 1F3FE ; fully-qualified # 🦻🏾 E12.0 ear with hearing aid: medium-dark skin tone
1F9BB 1F3FF ; fully-qualified # 🦻🏿 E12.0 ear with hearing aid: dark skin tone
1F443 ; fully-qualified # 👃 E0.6 nose
1F443 1F3FB ; fully-qualified # 👃🏻 E1.0 nose: light skin tone
1F443 1F3FC ; fully-qualified # 👃🏼 E1.0 nose: medium-light skin tone
1F443 1F3FD ; fully-qualified # 👃🏽 E1.0 nose: medium skin tone
1F443 1F3FE ; fully-qualified # 👃🏾 E1.0 nose: medium-dark skin tone
1F443 1F3FF ; fully-qualified # 👃🏿 E1.0 nose: dark skin tone
1F9E0 ; fully-qualified # 🧠 E5.0 brain
1FAC0 ; fully-qualified # 🫀 E13.0 anatomical heart
1FAC1 ; fully-qualified # 🫁 E13.0 lungs
1F9B7 ; fully-qualified # 🦷 E11.0 tooth
1F9B4 ; fully-qualified # 🦴 E11.0 bone
1F440 ; fully-qualified # 👀 E0.6 eyes
1F441 FE0F ; fully-qualified # 👁️ E0.7 eye
1F441 ; unqualified # 👁 E0.7 eye
1F445 ; fully-qualified # 👅 E0.6 tongue
1F444 ; fully-qualified # 👄 E0.6 mouth
1FAE6 ; fully-qualified # 🫦 E14.0 biting lip
# subgroup: person
1F476 ; fully-qualified # 👶 E0.6 baby
1F476 1F3FB ; fully-qualified # 👶🏻 E1.0 baby: light skin tone
1F476 1F3FC ; fully-qualified # 👶🏼 E1.0 baby: medium-light skin tone
1F476 1F3FD ; fully-qualified # 👶🏽 E1.0 baby: medium skin tone
1F476 1F3FE ; fully-qualified # 👶🏾 E1.0 baby: medium-dark skin tone
1F476 1F3FF ; fully-qualified # 👶🏿 E1.0 baby: dark skin tone
1F9D2 ; fully-qualified # 🧒 E5.0 child
1F9D2 1F3FB ; fully-qualified # 🧒🏻 E5.0 child: light skin tone
1F9D2 1F3FC ; fully-qualified # 🧒🏼 E5.0 child: medium-light skin tone
1F9D2 1F3FD ; fully-qualified # 🧒🏽 E5.0 child: medium skin tone
1F9D2 1F3FE ; fully-qualified # 🧒🏾 E5.0 child: medium-dark skin tone
1F9D2 1F3FF ; fully-qualified # 🧒🏿 E5.0 child: dark skin tone
1F466 ; fully-qualified # 👦 E0.6 boy
1F466 1F3FB ; fully-qualified # 👦🏻 E1.0 boy: light skin tone
1F466 1F3FC ; fully-qualified # 👦🏼 E1.0 boy: medium-light skin tone
1F466 1F3FD ; fully-qualified # 👦🏽 E1.0 boy: medium skin tone
1F466 1F3FE ; fully-qualified # 👦🏾 E1.0 boy: medium-dark skin tone
1F466 1F3FF ; fully-qualified # 👦🏿 E1.0 boy: dark skin tone
1F467 ; fully-qualified # 👧 E0.6 girl
1F467 1F3FB ; fully-qualified # 👧🏻 E1.0 girl: light skin tone
1F467 1F3FC ; fully-qualified # 👧🏼 E1.0 girl: medium-light skin tone
1F467 1F3FD ; fully-qualified # 👧🏽 E1.0 girl: medium skin tone
1F467 1F3FE ; fully-qualified # 👧🏾 E1.0 girl: medium-dark skin tone
1F467 1F3FF ; fully-qualified # 👧🏿 E1.0 girl: dark skin tone
1F9D1 ; fully-qualified # 🧑 E5.0 person
1F9D1 1F3FB ; fully-qualified # 🧑🏻 E5.0 person: light skin tone
1F9D1 1F3FC ; fully-qualified # 🧑🏼 E5.0 person: medium-light skin tone
1F9D1 1F3FD ; fully-qualified # 🧑🏽 E5.0 person: medium skin tone
1F9D1 1F3FE ; fully-qualified # 🧑🏾 E5.0 person: medium-dark skin tone
1F9D1 1F3FF ; fully-qualified # 🧑🏿 E5.0 person: dark skin tone
1F471 ; fully-qualified # 👱 E0.6 person: blond hair
1F471 1F3FB ; fully-qualified # 👱🏻 E1.0 person: light skin tone, blond hair
1F471 1F3FC ; fully-qualified # 👱🏼 E1.0 person: medium-light skin tone, blond hair
1F471 1F3FD ; fully-qualified # 👱🏽 E1.0 person: medium skin tone, blond hair
1F471 1F3FE ; fully-qualified # 👱🏾 E1.0 person: medium-dark skin tone, blond hair
1F471 1F3FF ; fully-qualified # 👱🏿 E1.0 person: dark skin tone, blond hair
1F468 ; fully-qualified # 👨 E0.6 man
1F468 1F3FB ; fully-qualified # 👨🏻 E1.0 man: light skin tone
1F468 1F3FC ; fully-qualified # 👨🏼 E1.0 man: medium-light skin tone
1F468 1F3FD ; fully-qualified # 👨🏽 E1.0 man: medium skin tone
1F468 1F3FE ; fully-qualified # 👨🏾 E1.0 man: medium-dark skin tone
1F468 1F3FF ; fully-qualified # 👨🏿 E1.0 man: dark skin tone
1F9D4 ; fully-qualified # 🧔 E5.0 person: beard
1F9D4 1F3FB ; fully-qualified # 🧔🏻 E5.0 person: light skin tone, beard
1F9D4 1F3FC ; fully-qualified # 🧔🏼 E5.0 person: medium-light skin tone, beard
1F9D4 1F3FD ; fully-qualified # 🧔🏽 E5.0 person: medium skin tone, beard
1F9D4 1F3FE ; fully-qualified # 🧔🏾 E5.0 person: medium-dark skin tone, beard
1F9D4 1F3FF ; fully-qualified # 🧔🏿 E5.0 person: dark skin tone, beard
1F9D4 200D 2642 FE0F ; fully-qualified # 🧔♂️ E13.1 man: beard
1F9D4 200D 2642 ; minimally-qualified # 🧔♂ E13.1 man: beard
1F9D4 1F3FB 200D 2642 FE0F ; fully-qualified # 🧔🏻♂️ E13.1 man: light skin tone, beard
1F9D4 1F3FB 200D 2642 ; minimally-qualified # 🧔🏻♂ E13.1 man: light skin tone, beard
1F9D4 1F3FC 200D 2642 FE0F ; fully-qualified # 🧔🏼♂️ E13.1 man: medium-light skin tone, beard
1F9D4 1F3FC 200D 2642 ; minimally-qualified # 🧔🏼♂ E13.1 man: medium-light skin tone, beard
1F9D4 1F3FD 200D 2642 FE0F ; fully-qualified # 🧔🏽♂️ E13.1 man: medium skin tone, beard
1F9D4 1F3FD 200D 2642 ; minimally-qualified # 🧔🏽♂ E13.1 man: medium skin tone, beard
1F9D4 1F3FE 200D 2642 FE0F ; fully-qualified # 🧔🏾♂️ E13.1 man: medium-dark skin tone, beard
1F9D4 1F3FE 200D 2642 ; minimally-qualified # 🧔🏾♂ E13.1 man: medium-dark skin tone, beard
1F9D4 1F3FF 200D 2642 FE0F ; fully-qualified # 🧔🏿♂️ E13.1 man: dark skin tone, beard
1F9D4 1F3FF 200D 2642 ; minimally-qualified # 🧔🏿♂ E13.1 man: dark skin tone, beard
1F9D4 200D 2640 FE0F ; fully-qualified # 🧔♀️ E13.1 woman: beard
1F9D4 200D 2640 ; minimally-qualified # 🧔♀ E13.1 woman: beard
1F9D4 1F3FB 200D 2640 FE0F ; fully-qualified # 🧔🏻♀️ E13.1 woman: light skin tone, beard
1F9D4 1F3FB 200D 2640 ; minimally-qualified # 🧔🏻♀ E13.1 woman: light skin tone, beard
1F9D4 1F3FC 200D 2640 FE0F ; fully-qualified # 🧔🏼♀️ E13.1 woman: medium-light skin tone, beard
1F9D4 1F3FC 200D 2640 ; minimally-qualified # 🧔🏼♀ E13.1 woman: medium-light skin tone, beard
1F9D4 1F3FD 200D 2640 FE0F ; fully-qualified # 🧔🏽♀️ E13.1 woman: medium skin tone, beard
1F9D4 1F3FD 200D 2640 ; minimally-qualified # 🧔🏽♀ E13.1 woman: medium skin tone, beard
1F9D4 1F3FE 200D 2640 FE0F ; fully-qualified # 🧔🏾♀️ E13.1 woman: medium-dark skin tone, beard
1F9D4 1F3FE 200D 2640 ; minimally-qualified # 🧔🏾♀ E13.1 woman: medium-dark skin tone, beard
1F9D4 1F3FF 200D 2640 FE0F ; fully-qualified # 🧔🏿♀️ E13.1 woman: dark skin tone, beard
1F9D4 1F3FF 200D 2640 ; minimally-qualified # 🧔🏿♀ E13.1 woman: dark skin tone, beard
1F468 200D 1F9B0 ; fully-qualified # 👨🦰 E11.0 man: red hair
1F468 1F3FB 200D 1F9B0 ; fully-qualified # 👨🏻🦰 E11.0 man: light skin tone, red hair
1F468 1F3FC 200D 1F9B0 ; fully-qualified # 👨🏼🦰 E11.0 man: medium-light skin tone, red hair
1F468 1F3FD 200D 1F9B0 ; fully-qualified # 👨🏽🦰 E11.0 man: medium skin tone, red hair
1F468 1F3FE 200D 1F9B0 ; fully-qualified # 👨🏾🦰 E11.0 man: medium-dark skin tone, red hair
1F468 1F3FF 200D 1F9B0 ; fully-qualified # 👨🏿🦰 E11.0 man: dark skin tone, red hair
1F468 200D 1F9B1 ; fully-qualified # 👨🦱 E11.0 man: curly hair
1F468 1F3FB 200D 1F9B1 ; fully-qualified # 👨🏻🦱 E11.0 man: light skin tone, curly hair
1F468 1F3FC 200D 1F9B1 ; fully-qualified # 👨🏼🦱 E11.0 man: medium-light skin tone, curly hair
1F468 1F3FD 200D 1F9B1 ; fully-qualified # 👨🏽🦱 E11.0 man: medium skin tone, curly hair
1F468 1F3FE 200D 1F9B1 ; fully-qualified # 👨🏾🦱 E11.0 man: medium-dark skin tone, curly hair
1F468 1F3FF 200D 1F9B1 ; fully-qualified # 👨🏿🦱 E11.0 man: dark skin tone, curly hair
1F468 200D 1F9B3 ; fully-qualified # 👨🦳 E11.0 man: white hair
1F468 1F3FB 200D 1F9B3 ; fully-qualified # 👨🏻🦳 E11.0 man: light skin tone, white hair
1F468 1F3FC 200D 1F9B3 ; fully-qualified # 👨🏼🦳 E11.0 man: medium-light skin tone, white hair
1F468 1F3FD 200D 1F9B3 ; fully-qualified # 👨🏽🦳 E11.0 man: medium skin tone, white hair
1F468 1F3FE 200D 1F9B3 ; fully-qualified # 👨🏾🦳 E11.0 man: medium-dark skin tone, white hair
1F468 1F3FF 200D 1F9B3 ; fully-qualified # 👨🏿🦳 E11.0 man: dark skin tone, white hair
1F468 200D 1F9B2 ; fully-qualified # 👨🦲 E11.0 man: bald
1F468 1F3FB 200D 1F9B2 ; fully-qualified # 👨🏻🦲 E11.0 man: light skin tone, bald
1F468 1F3FC 200D 1F9B2 ; fully-qualified # 👨🏼🦲 E11.0 man: medium-light skin tone, bald
1F468 1F3FD 200D 1F9B2 ; fully-qualified # 👨🏽🦲 E11.0 man: medium skin tone, bald
1F468 1F3FE 200D 1F9B2 ; fully-qualified # 👨🏾🦲 E11.0 man: medium-dark skin tone, bald
1F468 1F3FF 200D 1F9B2 ; fully-qualified # 👨🏿🦲 E11.0 man: dark skin tone, bald
1F469 ; fully-qualified # 👩 E0.6 woman
1F469 1F3FB ; fully-qualified # 👩🏻 E1.0 woman: light skin tone
1F469 1F3FC ; fully-qualified # 👩🏼 E1.0 woman: medium-light skin tone
1F469 1F3FD ; fully-qualified # 👩🏽 E1.0 woman: medium skin tone
1F469 1F3FE ; fully-qualified # 👩🏾 E1.0 woman: medium-dark skin tone
1F469 1F3FF ; fully-qualified # 👩🏿 E1.0 woman: dark skin tone
1F469 200D 1F9B0 ; fully-qualified # 👩🦰 E11.0 woman: red hair
1F469 1F3FB 200D 1F9B0 ; fully-qualified # 👩🏻🦰 E11.0 woman: light skin tone, red hair
1F469 1F3FC 200D 1F9B0 ; fully-qualified # 👩🏼🦰 E11.0 woman: medium-light skin tone, red hair
1F469 1F3FD 200D 1F9B0 ; fully-qualified # 👩🏽🦰 E11.0 woman: medium skin tone, red hair
1F469 1F3FE 200D 1F9B0 ; fully-qualified # 👩🏾🦰 E11.0 woman: medium-dark skin tone, red hair
1F469 1F3FF 200D 1F9B0 ; fully-qualified # 👩🏿🦰 E11.0 woman: dark skin tone, red hair
1F9D1 200D 1F9B0 ; fully-qualified # 🧑🦰 E12.1 person: red hair
1F9D1 1F3FB 200D 1F9B0 ; fully-qualified # 🧑🏻🦰 E12.1 person: light skin tone, red hair
1F9D1 1F3FC 200D 1F9B0 ; fully-qualified # 🧑🏼🦰 E12.1 person: medium-light skin tone, red hair
1F9D1 1F3FD 200D 1F9B0 ; fully-qualified # 🧑🏽🦰 E12.1 person: medium skin tone, red hair
1F9D1 1F3FE 200D 1F9B0 ; fully-qualified # 🧑🏾🦰 E12.1 person: medium-dark skin tone, red hair
1F9D1 1F3FF 200D 1F9B0 ; fully-qualified # 🧑🏿🦰 E12.1 person: dark skin tone, red hair
1F469 200D 1F9B1 ; fully-qualified # 👩🦱 E11.0 woman: curly hair
1F469 1F3FB 200D 1F9B1 ; fully-qualified # 👩🏻🦱 E11.0 woman: light skin tone, curly hair
1F469 1F3FC 200D 1F9B1 ; fully-qualified # 👩🏼🦱 E11.0 woman: medium-light skin tone, curly hair
1F469 1F3FD 200D 1F9B1 ; fully-qualified # 👩🏽🦱 E11.0 woman: medium skin tone, curly hair
1F469 1F3FE 200D 1F9B1 ; fully-qualified # 👩🏾🦱 E11.0 woman: medium-dark skin tone, curly hair
1F469 1F3FF 200D 1F9B1 ; fully-qualified # 👩🏿🦱 E11.0 woman: dark skin tone, curly hair
1F9D1 200D 1F9B1 ; fully-qualified # 🧑🦱 E12.1 person: curly hair
1F9D1 1F3FB 200D 1F9B1 ; fully-qualified # 🧑🏻🦱 E12.1 person: light skin tone, curly hair
1F9D1 1F3FC 200D 1F9B1 ; fully-qualified # 🧑🏼🦱 E12.1 person: medium-light skin tone, curly hair
1F9D1 1F3FD 200D 1F9B1 ; fully-qualified # 🧑🏽🦱 E12.1 person: medium skin tone, curly hair
1F9D1 1F3FE 200D 1F9B1 ; fully-qualified # 🧑🏾🦱 E12.1 person: medium-dark skin tone, curly hair
1F9D1 1F3FF 200D 1F9B1 ; fully-qualified # 🧑🏿🦱 E12.1 person: dark skin tone, curly hair
1F469 200D 1F9B3 ; fully-qualified # 👩🦳 E11.0 woman: white hair
1F469 1F3FB 200D 1F9B3 ; fully-qualified # 👩🏻🦳 E11.0 woman: light skin tone, white hair
1F469 1F3FC 200D 1F9B3 ; fully-qualified # 👩🏼🦳 E11.0 woman: medium-light skin tone, white hair
1F469 1F3FD 200D 1F9B3 ; fully-qualified # 👩🏽🦳 E11.0 woman: medium skin tone, white hair
1F469 1F3FE 200D 1F9B3 ; fully-qualified # 👩🏾🦳 E11.0 woman: medium-dark skin tone, white hair
1F469 1F3FF 200D 1F9B3 ; fully-qualified # 👩🏿🦳 E11.0 woman: dark skin tone, white hair
1F9D1 200D 1F9B3 ; fully-qualified # 🧑🦳 E12.1 person: white hair
1F9D1 1F3FB 200D 1F9B3 ; fully-qualified # 🧑🏻🦳 E12.1 person: light skin tone, white hair
1F9D1 1F3FC 200D 1F9B3 ; fully-qualified # 🧑🏼🦳 E12.1 person: medium-light skin tone, white hair
1F9D1 1F3FD 200D 1F9B3 ; fully-qualified # 🧑🏽🦳 E12.1 person: medium skin tone, white hair
1F9D1 1F3FE 200D 1F9B3 ; fully-qualified # 🧑🏾🦳 E12.1 person: medium-dark skin tone, white hair
1F9D1 1F3FF 200D 1F9B3 ; fully-qualified # 🧑🏿🦳 E12.1 person: dark skin tone, white hair
1F469 200D 1F9B2 ; fully-qualified # 👩🦲 E11.0 woman: bald
1F469 1F3FB 200D 1F9B2 ; fully-qualified # 👩🏻🦲 E11.0 woman: light skin tone, bald
1F469 1F3FC 200D 1F9B2 ; fully-qualified # 👩🏼🦲 E11.0 woman: medium-light skin tone, bald
1F469 1F3FD 200D 1F9B2 ; fully-qualified # 👩🏽🦲 E11.0 woman: medium skin tone, bald
1F469 1F3FE 200D 1F9B2 ; fully-qualified # 👩🏾🦲 E11.0 woman: medium-dark skin tone, bald
1F469 1F3FF 200D 1F9B2 ; fully-qualified # 👩🏿🦲 E11.0 woman: dark skin tone, bald
1F9D1 200D 1F9B2 ; fully-qualified # 🧑🦲 E12.1 person: bald
1F9D1 1F3FB 200D 1F9B2 ; fully-qualified # 🧑🏻🦲 E12.1 person: light skin tone, bald
1F9D1 1F3FC 200D 1F9B2 ; fully-qualified # 🧑🏼🦲 E12.1 person: medium-light skin tone, bald
1F9D1 1F3FD 200D 1F9B2 ; fully-qualified # 🧑🏽🦲 E12.1 person: medium skin tone, bald
1F9D1 1F3FE 200D 1F9B2 ; fully-qualified # 🧑🏾🦲 E12.1 person: medium-dark skin tone, bald
1F9D1 1F3FF 200D 1F9B2 ; fully-qualified # 🧑🏿🦲 E12.1 person: dark skin tone, bald
1F471 200D 2640 FE0F ; fully-qualified # 👱♀️ E4.0 woman: blond hair
1F471 200D 2640 ; minimally-qualified # 👱♀ E4.0 woman: blond hair
1F471 1F3FB 200D 2640 FE0F ; fully-qualified # 👱🏻♀️ E4.0 woman: light skin tone, blond hair
1F471 1F3FB 200D 2640 ; minimally-qualified # 👱🏻♀ E4.0 woman: light skin tone, blond hair
1F471 1F3FC 200D 2640 FE0F ; fully-qualified # 👱🏼♀️ E4.0 woman: medium-light skin tone, blond hair
1F471 1F3FC 200D 2640 ; minimally-qualified # 👱🏼♀ E4.0 woman: medium-light skin tone, blond hair
1F471 1F3FD 200D 2640 FE0F ; fully-qualified # 👱🏽♀️ E4.0 woman: medium skin tone, blond hair
1F471 1F3FD 200D 2640 ; minimally-qualified # 👱🏽♀ E4.0 woman: medium skin tone, blond hair
1F471 1F3FE 200D 2640 FE0F ; fully-qualified # 👱🏾♀️ E4.0 woman: medium-dark skin tone, blond hair
1F471 1F3FE 200D 2640 ; minimally-qualified # 👱🏾♀ E4.0 woman: medium-dark skin tone, blond hair
1F471 1F3FF 200D 2640 FE0F ; fully-qualified # 👱🏿♀️ E4.0 woman: dark skin tone, blond hair
1F471 1F3FF 200D 2640 ; minimally-qualified # 👱🏿♀ E4.0 woman: dark skin tone, blond hair
1F471 200D 2642 FE0F ; fully-qualified # 👱♂️ E4.0 man: blond hair
1F471 200D 2642 ; minimally-qualified # 👱♂ E4.0 man: blond hair
1F471 1F3FB 200D 2642 FE0F ; fully-qualified # 👱🏻♂️ E4.0 man: light skin tone, blond hair
1F471 1F3FB 200D 2642 ; minimally-qualified # 👱🏻♂ E4.0 man: light skin tone, blond hair
1F471 1F3FC 200D 2642 FE0F ; fully-qualified # 👱🏼♂️ E4.0 man: medium-light skin tone, blond hair
1F471 1F3FC 200D 2642 ; minimally-qualified # 👱🏼♂ E4.0 man: medium-light skin tone, blond hair
1F471 1F3FD 200D 2642 FE0F ; fully-qualified # 👱🏽♂️ E4.0 man: medium skin tone, blond hair
1F471 1F3FD 200D 2642 ; minimally-qualified # 👱🏽♂ E4.0 man: medium skin tone, blond hair
1F471 1F3FE 200D 2642 FE0F ; fully-qualified # 👱🏾♂️ E4.0 man: medium-dark skin tone, blond hair
1F471 1F3FE 200D 2642 ; minimally-qualified # 👱🏾♂ E4.0 man: medium-dark skin tone, blond hair
1F471 1F3FF 200D 2642 FE0F ; fully-qualified # 👱🏿♂️ E4.0 man: dark skin tone, blond hair
1F471 1F3FF 200D 2642 ; minimally-qualified # 👱🏿♂ E4.0 man: dark skin tone, blond hair
1F9D3 ; fully-qualified # 🧓 E5.0 older person
1F9D3 1F3FB ; fully-qualified # 🧓🏻 E5.0 older person: light skin tone
1F9D3 1F3FC ; fully-qualified # 🧓🏼 E5.0 older person: medium-light skin tone
1F9D3 1F3FD ; fully-qualified # 🧓🏽 E5.0 older person: medium skin tone
1F9D3 1F3FE ; fully-qualified # 🧓🏾 E5.0 older person: medium-dark skin tone
1F9D3 1F3FF ; fully-qualified # 🧓🏿 E5.0 older person: dark skin tone
1F474 ; fully-qualified # 👴 E0.6 old man
1F474 1F3FB ; fully-qualified # 👴🏻 E1.0 old man: light skin tone
1F474 1F3FC ; fully-qualified # 👴🏼 E1.0 old man: medium-light skin tone
1F474 1F3FD ; fully-qualified # 👴🏽 E1.0 old man: medium skin tone
1F474 1F3FE ; fully-qualified # 👴🏾 E1.0 old man: medium-dark skin tone
1F474 1F3FF ; fully-qualified # 👴🏿 E1.0 old man: dark skin tone
1F475 ; fully-qualified # 👵 E0.6 old woman
1F475 1F3FB ; fully-qualified # 👵🏻 E1.0 old woman: light skin tone
1F475 1F3FC ; fully-qualified # 👵🏼 E1.0 old woman: medium-light skin tone
1F475 1F3FD ; fully-qualified # 👵🏽 E1.0 old woman: medium skin tone
1F475 1F3FE ; fully-qualified # 👵🏾 E1.0 old woman: medium-dark skin tone
1F475 1F3FF ; fully-qualified # 👵🏿 E1.0 old woman: dark skin tone
# subgroup: person-gesture
1F64D ; fully-qualified # 🙍 E0.6 person frowning
1F64D 1F3FB ; fully-qualified # 🙍🏻 E1.0 person frowning: light skin tone
1F64D 1F3FC ; fully-qualified # 🙍🏼 E1.0 person frowning: medium-light skin tone
1F64D 1F3FD ; fully-qualified # 🙍🏽 E1.0 person frowning: medium skin tone
1F64D 1F3FE ; fully-qualified # 🙍🏾 E1.0 person frowning: medium-dark skin tone
1F64D 1F3FF ; fully-qualified # 🙍🏿 E1.0 person frowning: dark skin tone
1F64D 200D 2642 FE0F ; fully-qualified # 🙍♂️ E4.0 man frowning
1F64D 200D 2642 ; minimally-qualified # 🙍♂ E4.0 man frowning
1F64D 1F3FB 200D 2642 FE0F ; fully-qualified # 🙍🏻♂️ E4.0 man frowning: light skin tone
1F64D 1F3FB 200D 2642 ; minimally-qualified # 🙍🏻♂ E4.0 man frowning: light skin tone
1F64D 1F3FC 200D 2642 FE0F ; fully-qualified # 🙍🏼♂️ E4.0 man frowning: medium-light skin tone
1F64D 1F3FC 200D 2642 ; minimally-qualified # 🙍🏼♂ E4.0 man frowning: medium-light skin tone
1F64D 1F3FD 200D 2642 FE0F ; fully-qualified # 🙍🏽♂️ E4.0 man frowning: medium skin tone
1F64D 1F3FD 200D 2642 ; minimally-qualified # 🙍🏽♂ E4.0 man frowning: medium skin tone
1F64D 1F3FE 200D 2642 FE0F ; fully-qualified # 🙍🏾♂️ E4.0 man frowning: medium-dark skin tone
1F64D 1F3FE 200D 2642 ; minimally-qualified # 🙍🏾♂ E4.0 man frowning: medium-dark skin tone
1F64D 1F3FF 200D 2642 FE0F ; fully-qualified # 🙍🏿♂️ E4.0 man frowning: dark skin tone
1F64D 1F3FF 200D 2642 ; minimally-qualified # 🙍🏿♂ E4.0 man frowning: dark skin tone
1F64D 200D 2640 FE0F ; fully-qualified # 🙍♀️ E4.0 woman frowning
1F64D 200D 2640 ; minimally-qualified # 🙍♀ E4.0 woman frowning
1F64D 1F3FB 200D 2640 FE0F ; fully-qualified # 🙍🏻♀️ E4.0 woman frowning: light skin tone
1F64D 1F3FB 200D 2640 ; minimally-qualified # 🙍🏻♀ E4.0 woman frowning: light skin tone
1F64D 1F3FC 200D 2640 FE0F ; fully-qualified # 🙍🏼♀️ E4.0 woman frowning: medium-light skin tone
1F64D 1F3FC 200D 2640 ; minimally-qualified # 🙍🏼♀ E4.0 woman frowning: medium-light skin tone
1F64D 1F3FD 200D 2640 FE0F ; fully-qualified # 🙍🏽♀️ E4.0 woman frowning: medium skin tone
1F64D 1F3FD 200D 2640 ; minimally-qualified # 🙍🏽♀ E4.0 woman frowning: medium skin tone
1F64D 1F3FE 200D 2640 FE0F ; fully-qualified # 🙍🏾♀️ E4.0 woman frowning: medium-dark skin tone
1F64D 1F3FE 200D 2640 ; minimally-qualified # 🙍🏾♀ E4.0 woman frowning: medium-dark skin tone
1F64D 1F3FF 200D 2640 FE0F ; fully-qualified # 🙍🏿♀️ E4.0 woman frowning: dark skin tone
1F64D 1F3FF 200D 2640 ; minimally-qualified # 🙍🏿♀ E4.0 woman frowning: dark skin tone
1F64E ; fully-qualified # 🙎 E0.6 person pouting
1F64E 1F3FB ; fully-qualified # 🙎🏻 E1.0 person pouting: light skin tone
1F64E 1F3FC ; fully-qualified # 🙎🏼 E1.0 person pouting: medium-light skin tone
1F64E 1F3FD ; fully-qualified # 🙎🏽 E1.0 person pouting: medium skin tone
1F64E 1F3FE ; fully-qualified # 🙎🏾 E1.0 person pouting: medium-dark skin tone
1F64E 1F3FF ; fully-qualified # 🙎🏿 E1.0 person pouting: dark skin tone
1F64E 200D 2642 FE0F ; fully-qualified # 🙎♂️ E4.0 man pouting
1F64E 200D 2642 ; minimally-qualified # 🙎♂ E4.0 man pouting
1F64E 1F3FB 200D 2642 FE0F ; fully-qualified # 🙎🏻♂️ E4.0 man pouting: light skin tone
1F64E 1F3FB 200D 2642 ; minimally-qualified # 🙎🏻♂ E4.0 man pouting: light skin tone
1F64E 1F3FC 200D 2642 FE0F ; fully-qualified # 🙎🏼♂️ E4.0 man pouting: medium-light skin tone
1F64E 1F3FC 200D 2642 ; minimally-qualified # 🙎🏼♂ E4.0 man pouting: medium-light skin tone
1F64E 1F3FD 200D 2642 FE0F ; fully-qualified # 🙎🏽♂️ E4.0 man pouting: medium skin tone
1F64E 1F3FD 200D 2642 ; minimally-qualified # 🙎🏽♂ E4.0 man pouting: medium skin tone
1F64E 1F3FE 200D 2642 FE0F ; fully-qualified # 🙎🏾♂️ E4.0 man pouting: medium-dark skin tone
1F64E 1F3FE 200D 2642 ; minimally-qualified # 🙎🏾♂ E4.0 man pouting: medium-dark skin tone
1F64E 1F3FF 200D 2642 FE0F ; fully-qualified # 🙎🏿♂️ E4.0 man pouting: dark skin tone
1F64E 1F3FF 200D 2642 ; minimally-qualified # 🙎🏿♂ E4.0 man pouting: dark skin tone
1F64E 200D 2640 FE0F ; fully-qualified # 🙎♀️ E4.0 woman pouting
1F64E 200D 2640 ; minimally-qualified # 🙎♀ E4.0 woman pouting
1F64E 1F3FB 200D 2640 FE0F ; fully-qualified # 🙎🏻♀️ E4.0 woman pouting: light skin tone
1F64E 1F3FB 200D 2640 ; minimally-qualified # 🙎🏻♀ E4.0 woman pouting: light skin tone
1F64E 1F3FC 200D 2640 FE0F ; fully-qualified # 🙎🏼♀️ E4.0 woman pouting: medium-light skin tone
1F64E 1F3FC 200D 2640 ; minimally-qualified # 🙎🏼♀ E4.0 woman pouting: medium-light skin tone
1F64E 1F3FD 200D 2640 FE0F ; fully-qualified # 🙎🏽♀️ E4.0 woman pouting: medium skin tone
1F64E 1F3FD 200D 2640 ; minimally-qualified # 🙎🏽♀ E4.0 woman pouting: medium skin tone
1F64E 1F3FE 200D 2640 FE0F ; fully-qualified # 🙎🏾♀️ E4.0 woman pouting: medium-dark skin tone
1F64E 1F3FE 200D 2640 ; minimally-qualified # 🙎🏾♀ E4.0 woman pouting: medium-dark skin tone
1F64E 1F3FF 200D 2640 FE0F ; fully-qualified # 🙎🏿♀️ E4.0 woman pouting: dark skin tone
1F64E 1F3FF 200D 2640 ; minimally-qualified # 🙎🏿♀ E4.0 woman pouting: dark skin tone
1F645 ; fully-qualified # 🙅 E0.6 person gesturing NO
1F645 1F3FB ; fully-qualified # 🙅🏻 E1.0 person gesturing NO: light skin tone
1F645 1F3FC ; fully-qualified # 🙅🏼 E1.0 person gesturing NO: medium-light skin tone
1F645 1F3FD ; fully-qualified # 🙅🏽 E1.0 person gesturing NO: medium skin tone
1F645 1F3FE ; fully-qualified # 🙅🏾 E1.0 person gesturing NO: medium-dark skin tone
1F645 1F3FF ; fully-qualified # 🙅🏿 E1.0 person gesturing NO: dark skin tone
1F645 200D 2642 FE0F ; fully-qualified # 🙅♂️ E4.0 man gesturing NO
1F645 200D 2642 ; minimally-qualified # 🙅♂ E4.0 man gesturing NO
1F645 1F3FB 200D 2642 FE0F ; fully-qualified # 🙅🏻♂️ E4.0 man gesturing NO: light skin tone
1F645 1F3FB 200D 2642 ; minimally-qualified # 🙅🏻♂ E4.0 man gesturing NO: light skin tone
1F645 1F3FC 200D 2642 FE0F ; fully-qualified # 🙅🏼♂️ E4.0 man gesturing NO: medium-light skin tone
1F645 1F3FC 200D 2642 ; minimally-qualified # 🙅🏼♂ E4.0 man gesturing NO: medium-light skin tone
1F645 1F3FD 200D 2642 FE0F ; fully-qualified # 🙅🏽♂️ E4.0 man gesturing NO: medium skin tone
1F645 1F3FD 200D 2642 ; minimally-qualified # 🙅🏽♂ E4.0 man gesturing NO: medium skin tone
1F645 1F3FE 200D 2642 FE0F ; fully-qualified # 🙅🏾♂️ E4.0 man gesturing NO: medium-dark skin tone
1F645 1F3FE 200D 2642 ; minimally-qualified # 🙅🏾♂ E4.0 man gesturing NO: medium-dark skin tone
1F645 1F3FF 200D 2642 FE0F ; fully-qualified # 🙅🏿♂️ E4.0 man gesturing NO: dark skin tone
1F645 1F3FF 200D 2642 ; minimally-qualified # 🙅🏿♂ E4.0 man gesturing NO: dark skin tone
1F645 200D 2640 FE0F ; fully-qualified # 🙅♀️ E4.0 woman gesturing NO
1F645 200D 2640 ; minimally-qualified # 🙅♀ E4.0 woman gesturing NO
1F645 1F3FB 200D 2640 FE0F ; fully-qualified # 🙅🏻♀️ E4.0 woman gesturing NO: light skin tone
1F645 1F3FB 200D 2640 ; minimally-qualified # 🙅🏻♀ E4.0 woman gesturing NO: light skin tone
1F645 1F3FC 200D 2640 FE0F ; fully-qualified # 🙅🏼♀️ E4.0 woman gesturing NO: medium-light skin tone
1F645 1F3FC 200D 2640 ; minimally-qualified # 🙅🏼♀ E4.0 woman gesturing NO: medium-light skin tone
1F645 1F3FD 200D 2640 FE0F ; fully-qualified # 🙅🏽♀️ E4.0 woman gesturing NO: medium skin tone
1F645 1F3FD 200D 2640 ; minimally-qualified # 🙅🏽♀ E4.0 woman gesturing NO: medium skin tone
1F645 1F3FE 200D 2640 FE0F ; fully-qualified # 🙅🏾♀️ E4.0 woman gesturing NO: medium-dark skin tone
1F645 1F3FE 200D 2640 ; minimally-qualified # 🙅🏾♀ E4.0 woman gesturing NO: medium-dark skin tone
1F645 1F3FF 200D 2640 FE0F ; fully-qualified # 🙅🏿♀️ E4.0 woman gesturing NO: dark skin tone
1F645 1F3FF 200D 2640 ; minimally-qualified # 🙅🏿♀ E4.0 woman gesturing NO: dark skin tone
1F646 ; fully-qualified # 🙆 E0.6 person gesturing OK
1F646 1F3FB ; fully-qualified # 🙆🏻 E1.0 person gesturing OK: light skin tone
1F646 1F3FC ; fully-qualified # 🙆🏼 E1.0 person gesturing OK: medium-light skin tone
1F646 1F3FD ; fully-qualified # 🙆🏽 E1.0 person gesturing OK: medium skin tone
1F646 1F3FE ; fully-qualified # 🙆🏾 E1.0 person gesturing OK: medium-dark skin tone
1F646 1F3FF ; fully-qualified # 🙆🏿 E1.0 person gesturing OK: dark skin tone
1F646 200D 2642 FE0F ; fully-qualified # 🙆♂️ E4.0 man gesturing OK
1F646 200D 2642 ; minimally-qualified # 🙆♂ E4.0 man gesturing OK
1F646 1F3FB 200D 2642 FE0F ; fully-qualified # 🙆🏻♂️ E4.0 man gesturing OK: light skin tone
1F646 1F3FB 200D 2642 ; minimally-qualified # 🙆🏻♂ E4.0 man gesturing OK: light skin tone
1F646 1F3FC 200D 2642 FE0F ; fully-qualified # 🙆🏼♂️ E4.0 man gesturing OK: medium-light skin tone
1F646 1F3FC 200D 2642 ; minimally-qualified # 🙆🏼♂ E4.0 man gesturing OK: medium-light skin tone
1F646 1F3FD 200D 2642 FE0F ; fully-qualified # 🙆🏽♂️ E4.0 man gesturing OK: medium skin tone
1F646 1F3FD 200D 2642 ; minimally-qualified # 🙆🏽♂ E4.0 man gesturing OK: medium skin tone
1F646 1F3FE 200D 2642 FE0F ; fully-qualified # 🙆🏾♂️ E4.0 man gesturing OK: medium-dark skin tone
1F646 1F3FE 200D 2642 ; minimally-qualified # 🙆🏾♂ E4.0 man gesturing OK: medium-dark skin tone
1F646 1F3FF 200D 2642 FE0F ; fully-qualified # 🙆🏿♂️ E4.0 man gesturing OK: dark skin tone
1F646 1F3FF 200D 2642 ; minimally-qualified # 🙆🏿♂ E4.0 man gesturing OK: dark skin tone
1F646 200D 2640 FE0F ; fully-qualified # 🙆♀️ E4.0 woman gesturing OK
1F646 200D 2640 ; minimally-qualified # 🙆♀ E4.0 woman gesturing OK
1F646 1F3FB 200D 2640 FE0F ; fully-qualified # 🙆🏻♀️ E4.0 woman gesturing OK: light skin tone
1F646 1F3FB 200D 2640 ; minimally-qualified # 🙆🏻♀ E4.0 woman gesturing OK: light skin tone
1F646 1F3FC 200D 2640 FE0F ; fully-qualified # 🙆🏼♀️ E4.0 woman gesturing OK: medium-light skin tone
1F646 1F3FC 200D 2640 ; minimally-qualified # 🙆🏼♀ E4.0 woman gesturing OK: medium-light skin tone
1F646 1F3FD 200D 2640 FE0F ; fully-qualified # 🙆🏽♀️ E4.0 woman gesturing OK: medium skin tone
1F646 1F3FD 200D 2640 ; minimally-qualified # 🙆🏽♀ E4.0 woman gesturing OK: medium skin tone
1F646 1F3FE 200D 2640 FE0F ; fully-qualified # 🙆🏾♀️ E4.0 woman gesturing OK: medium-dark skin tone
1F646 1F3FE 200D 2640 ; minimally-qualified # 🙆🏾♀ E4.0 woman gesturing OK: medium-dark skin tone
1F646 1F3FF 200D 2640 FE0F ; fully-qualified # 🙆🏿♀️ E4.0 woman gesturing OK: dark skin tone
1F646 1F3FF 200D 2640 ; minimally-qualified # 🙆🏿♀ E4.0 woman gesturing OK: dark skin tone
1F481 ; fully-qualified # 💁 E0.6 person tipping hand
1F481 1F3FB ; fully-qualified # 💁🏻 E1.0 person tipping hand: light skin tone
1F481 1F3FC ; fully-qualified # 💁🏼 E1.0 person tipping hand: medium-light skin tone
1F481 1F3FD ; fully-qualified # 💁🏽 E1.0 person tipping hand: medium skin tone
1F481 1F3FE ; fully-qualified # 💁🏾 E1.0 person tipping hand: medium-dark skin tone
1F481 1F3FF ; fully-qualified # 💁🏿 E1.0 person tipping hand: dark skin tone
1F481 200D 2642 FE0F ; fully-qualified # 💁♂️ E4.0 man tipping hand
1F481 200D 2642 ; minimally-qualified # 💁♂ E4.0 man tipping hand
1F481 1F3FB 200D 2642 FE0F ; fully-qualified # 💁🏻♂️ E4.0 man tipping hand: light skin tone
1F481 1F3FB 200D 2642 ; minimally-qualified # 💁🏻♂ E4.0 man tipping hand: light skin tone
1F481 1F3FC 200D 2642 FE0F ; fully-qualified # 💁🏼♂️ E4.0 man tipping hand: medium-light skin tone
1F481 1F3FC 200D 2642 ; minimally-qualified # 💁🏼♂ E4.0 man tipping hand: medium-light skin tone
1F481 1F3FD 200D 2642 FE0F ; fully-qualified # 💁🏽♂️ E4.0 man tipping hand: medium skin tone
1F481 1F3FD 200D 2642 ; minimally-qualified # 💁🏽♂ E4.0 man tipping hand: medium skin tone
1F481 1F3FE 200D 2642 FE0F ; fully-qualified # 💁🏾♂️ E4.0 man tipping hand: medium-dark skin tone
1F481 1F3FE 200D 2642 ; minimally-qualified # 💁🏾♂ E4.0 man tipping hand: medium-dark skin tone
1F481 1F3FF 200D 2642 FE0F ; fully-qualified # 💁🏿♂️ E4.0 man tipping hand: dark skin tone
1F481 1F3FF 200D 2642 ; minimally-qualified # 💁🏿♂ E4.0 man tipping hand: dark skin tone
1F481 200D 2640 FE0F ; fully-qualified # 💁♀️ E4.0 woman tipping hand
1F481 200D 2640 ; minimally-qualified # 💁♀ E4.0 woman tipping hand
1F481 1F3FB 200D 2640 FE0F ; fully-qualified # 💁🏻♀️ E4.0 woman tipping hand: light skin tone
1F481 1F3FB 200D 2640 ; minimally-qualified # 💁🏻♀ E4.0 woman tipping hand: light skin tone
1F481 1F3FC 200D 2640 FE0F ; fully-qualified # 💁🏼♀️ E4.0 woman tipping hand: medium-light skin tone
1F481 1F3FC 200D 2640 ; minimally-qualified # 💁🏼♀ E4.0 woman tipping hand: medium-light skin tone
1F481 1F3FD 200D 2640 FE0F ; fully-qualified # 💁🏽♀️ E4.0 woman tipping hand: medium skin tone
1F481 1F3FD 200D 2640 ; minimally-qualified # 💁🏽♀ E4.0 woman tipping hand: medium skin tone
1F481 1F3FE 200D 2640 FE0F ; fully-qualified # 💁🏾♀️ E4.0 woman tipping hand: medium-dark skin tone
1F481 1F3FE 200D 2640 ; minimally-qualified # 💁🏾♀ E4.0 woman tipping hand: medium-dark skin tone
1F481 1F3FF 200D 2640 FE0F ; fully-qualified # 💁🏿♀️ E4.0 woman tipping hand: dark skin tone
1F481 1F3FF 200D 2640 ; minimally-qualified # 💁🏿♀ E4.0 woman tipping hand: dark skin tone
1F64B ; fully-qualified # 🙋 E0.6 person raising hand
1F64B 1F3FB ; fully-qualified # 🙋🏻 E1.0 person raising hand: light skin tone
1F64B 1F3FC ; fully-qualified # 🙋🏼 E1.0 person raising hand: medium-light skin tone
1F64B 1F3FD ; fully-qualified # 🙋🏽 E1.0 person raising hand: medium skin tone
1F64B 1F3FE ; fully-qualified # 🙋🏾 E1.0 person raising hand: medium-dark skin tone
1F64B 1F3FF ; fully-qualified # 🙋🏿 E1.0 person raising hand: dark skin tone
1F64B 200D 2642 FE0F ; fully-qualified # 🙋♂️ E4.0 man raising hand
1F64B 200D 2642 ; minimally-qualified # 🙋♂ E4.0 man raising hand
1F64B 1F3FB 200D 2642 FE0F ; fully-qualified # 🙋🏻♂️ E4.0 man raising hand: light skin tone
1F64B 1F3FB 200D 2642 ; minimally-qualified # 🙋🏻♂ E4.0 man raising hand: light skin tone
1F64B 1F3FC 200D 2642 FE0F ; fully-qualified # 🙋🏼♂️ E4.0 man raising hand: medium-light skin tone
1F64B 1F3FC 200D 2642 ; minimally-qualified # 🙋🏼♂ E4.0 man raising hand: medium-light skin tone
1F64B 1F3FD 200D 2642 FE0F ; fully-qualified # 🙋🏽♂️ E4.0 man raising hand: medium skin tone
1F64B 1F3FD 200D 2642 ; minimally-qualified # 🙋🏽♂ E4.0 man raising hand: medium skin tone
1F64B 1F3FE 200D 2642 FE0F ; fully-qualified # 🙋🏾♂️ E4.0 man raising hand: medium-dark skin tone
1F64B 1F3FE 200D 2642 ; minimally-qualified # 🙋🏾♂ E4.0 man raising hand: medium-dark skin tone
1F64B 1F3FF 200D 2642 FE0F ; fully-qualified # 🙋🏿♂️ E4.0 man raising hand: dark skin tone
1F64B 1F3FF 200D 2642 ; minimally-qualified # 🙋🏿♂ E4.0 man raising hand: dark skin tone
1F64B 200D 2640 FE0F ; fully-qualified # 🙋♀️ E4.0 woman raising hand
1F64B 200D 2640 ; minimally-qualified # 🙋♀ E4.0 woman raising hand
1F64B 1F3FB 200D 2640 FE0F ; fully-qualified # 🙋🏻♀️ E4.0 woman raising hand: light skin tone
1F64B 1F3FB 200D 2640 ; minimally-qualified # 🙋🏻♀ E4.0 woman raising hand: light skin tone
1F64B 1F3FC 200D 2640 FE0F ; fully-qualified # 🙋🏼♀️ E4.0 woman raising hand: medium-light skin tone
1F64B 1F3FC 200D 2640 ; minimally-qualified # 🙋🏼♀ E4.0 woman raising hand: medium-light skin tone
1F64B 1F3FD 200D 2640 FE0F ; fully-qualified # 🙋🏽♀️ E4.0 woman raising hand: medium skin tone
1F64B 1F3FD 200D 2640 ; minimally-qualified # 🙋🏽♀ E4.0 woman raising hand: medium skin tone
1F64B 1F3FE 200D 2640 FE0F ; fully-qualified # 🙋🏾♀️ E4.0 woman raising hand: medium-dark skin tone
1F64B 1F3FE 200D 2640 ; minimally-qualified # 🙋🏾♀ E4.0 woman raising hand: medium-dark skin tone
1F64B 1F3FF 200D 2640 FE0F ; fully-qualified # 🙋🏿♀️ E4.0 woman raising hand: dark skin tone
1F64B 1F3FF 200D 2640 ; minimally-qualified # 🙋🏿♀ E4.0 woman raising hand: dark skin tone
1F9CF ; fully-qualified # 🧏 E12.0 deaf person
1F9CF 1F3FB ; fully-qualified # 🧏🏻 E12.0 deaf person: light skin tone
1F9CF 1F3FC ; fully-qualified # 🧏🏼 E12.0 deaf person: medium-light skin tone
1F9CF 1F3FD ; fully-qualified # 🧏🏽 E12.0 deaf person: medium skin tone
1F9CF 1F3FE ; fully-qualified # 🧏🏾 E12.0 deaf person: medium-dark skin tone
1F9CF 1F3FF ; fully-qualified # 🧏🏿 E12.0 deaf person: dark skin tone
1F9CF 200D 2642 FE0F ; fully-qualified # 🧏♂️ E12.0 deaf man
1F9CF 200D 2642 ; minimally-qualified # 🧏♂ E12.0 deaf man
1F9CF 1F3FB 200D 2642 FE0F ; fully-qualified # 🧏🏻♂️ E12.0 deaf man: light skin tone
1F9CF 1F3FB 200D 2642 ; minimally-qualified # 🧏🏻♂ E12.0 deaf man: light skin tone
1F9CF 1F3FC 200D 2642 FE0F ; fully-qualified # 🧏🏼♂️ E12.0 deaf man: medium-light skin tone
1F9CF 1F3FC 200D 2642 ; minimally-qualified # 🧏🏼♂ E12.0 deaf man: medium-light skin tone
1F9CF 1F3FD 200D 2642 FE0F ; fully-qualified # 🧏🏽♂️ E12.0 deaf man: medium skin tone
1F9CF 1F3FD 200D 2642 ; minimally-qualified # 🧏🏽♂ E12.0 deaf man: medium skin tone
1F9CF 1F3FE 200D 2642 FE0F ; fully-qualified # 🧏🏾♂️ E12.0 deaf man: medium-dark skin tone
1F9CF 1F3FE 200D 2642 ; minimally-qualified # 🧏🏾♂ E12.0 deaf man: medium-dark skin tone
1F9CF 1F3FF 200D 2642 FE0F ; fully-qualified # 🧏🏿♂️ E12.0 deaf man: dark skin tone
1F9CF 1F3FF 200D 2642 ; minimally-qualified # 🧏🏿♂ E12.0 deaf man: dark skin tone
1F9CF 200D 2640 FE0F ; fully-qualified # 🧏♀️ E12.0 deaf woman
1F9CF 200D 2640 ; minimally-qualified # 🧏♀ E12.0 deaf woman
1F9CF 1F3FB 200D 2640 FE0F ; fully-qualified # 🧏🏻♀️ E12.0 deaf woman: light skin tone
1F9CF 1F3FB 200D 2640 ; minimally-qualified # 🧏🏻♀ E12.0 deaf woman: light skin tone
1F9CF 1F3FC 200D 2640 FE0F ; fully-qualified # 🧏🏼♀️ E12.0 deaf woman: medium-light skin tone
1F9CF 1F3FC 200D 2640 ; minimally-qualified # 🧏🏼♀ E12.0 deaf woman: medium-light skin tone
1F9CF 1F3FD 200D 2640 FE0F ; fully-qualified # 🧏🏽♀️ E12.0 deaf woman: medium skin tone
1F9CF 1F3FD 200D 2640 ; minimally-qualified # 🧏🏽♀ E12.0 deaf woman: medium skin tone
1F9CF 1F3FE 200D 2640 FE0F ; fully-qualified # 🧏🏾♀️ E12.0 deaf woman: medium-dark skin tone
1F9CF 1F3FE 200D 2640 ; minimally-qualified # 🧏🏾♀ E12.0 deaf woman: medium-dark skin tone
1F9CF 1F3FF 200D 2640 FE0F ; fully-qualified # 🧏🏿♀️ E12.0 deaf woman: dark skin tone
1F9CF 1F3FF 200D 2640 ; minimally-qualified # 🧏🏿♀ E12.0 deaf woman: dark skin tone
1F647 ; fully-qualified # 🙇 E0.6 person bowing
1F647 1F3FB ; fully-qualified # 🙇🏻 E1.0 person bowing: light skin tone
1F647 1F3FC ; fully-qualified # 🙇🏼 E1.0 person bowing: medium-light skin tone
1F647 1F3FD ; fully-qualified # 🙇🏽 E1.0 person bowing: medium skin tone
1F647 1F3FE ; fully-qualified # 🙇🏾 E1.0 person bowing: medium-dark skin tone
1F647 1F3FF ; fully-qualified # 🙇🏿 E1.0 person bowing: dark skin tone
1F647 200D 2642 FE0F ; fully-qualified # 🙇♂️ E4.0 man bowing
1F647 200D 2642 ; minimally-qualified # 🙇♂ E4.0 man bowing
1F647 1F3FB 200D 2642 FE0F ; fully-qualified # 🙇🏻♂️ E4.0 man bowing: light skin tone
1F647 1F3FB 200D 2642 ; minimally-qualified # 🙇🏻♂ E4.0 man bowing: light skin tone
1F647 1F3FC 200D 2642 FE0F ; fully-qualified # 🙇🏼♂️ E4.0 man bowing: medium-light skin tone
1F647 1F3FC 200D 2642 ; minimally-qualified # 🙇🏼♂ E4.0 man bowing: medium-light skin tone
1F647 1F3FD 200D 2642 FE0F ; fully-qualified # 🙇🏽♂️ E4.0 man bowing: medium skin tone
1F647 1F3FD 200D 2642 ; minimally-qualified # 🙇🏽♂ E4.0 man bowing: medium skin tone
1F647 1F3FE 200D 2642 FE0F ; fully-qualified # 🙇🏾♂️ E4.0 man bowing: medium-dark skin tone
1F647 1F3FE 200D 2642 ; minimally-qualified # 🙇🏾♂ E4.0 man bowing: medium-dark skin tone
1F647 1F3FF 200D 2642 FE0F ; fully-qualified # 🙇🏿♂️ E4.0 man bowing: dark skin tone
1F647 1F3FF 200D 2642 ; minimally-qualified # 🙇🏿♂ E4.0 man bowing: dark skin tone
1F647 200D 2640 FE0F ; fully-qualified # 🙇♀️ E4.0 woman bowing
1F647 200D 2640 ; minimally-qualified # 🙇♀ E4.0 woman bowing
1F647 1F3FB 200D 2640 FE0F ; fully-qualified # 🙇🏻♀️ E4.0 woman bowing: light skin tone
1F647 1F3FB 200D 2640 ; minimally-qualified # 🙇🏻♀ E4.0 woman bowing: light skin tone
1F647 1F3FC 200D 2640 FE0F ; fully-qualified # 🙇🏼♀️ E4.0 woman bowing: medium-light skin tone
1F647 1F3FC 200D 2640 ; minimally-qualified # 🙇🏼♀ E4.0 woman bowing: medium-light skin tone
1F647 1F3FD 200D 2640 FE0F ; fully-qualified # 🙇🏽♀️ E4.0 woman bowing: medium skin tone
1F647 1F3FD 200D 2640 ; minimally-qualified # 🙇🏽♀ E4.0 woman bowing: medium skin tone
1F647 1F3FE 200D 2640 FE0F ; fully-qualified # 🙇🏾♀️ E4.0 woman bowing: medium-dark skin tone
1F647 1F3FE 200D 2640 ; minimally-qualified # 🙇🏾♀ E4.0 woman bowing: medium-dark skin tone
1F647 1F3FF 200D 2640 FE0F ; fully-qualified # 🙇🏿♀️ E4.0 woman bowing: dark skin tone
1F647 1F3FF 200D 2640 ; minimally-qualified # 🙇🏿♀ E4.0 woman bowing: dark skin tone
1F926 ; fully-qualified # 🤦 E3.0 person facepalming
1F926 1F3FB ; fully-qualified # 🤦🏻 E3.0 person facepalming: light skin tone
1F926 1F3FC ; fully-qualified # 🤦🏼 E3.0 person facepalming: medium-light skin tone
1F926 1F3FD ; fully-qualified # 🤦🏽 E3.0 person facepalming: medium skin tone
1F926 1F3FE ; fully-qualified # 🤦🏾 E3.0 person facepalming: medium-dark skin tone
1F926 1F3FF ; fully-qualified # 🤦🏿 E3.0 person facepalming: dark skin tone
1F926 200D 2642 FE0F ; fully-qualified # 🤦♂️ E4.0 man facepalming
1F926 200D 2642 ; minimally-qualified # 🤦♂ E4.0 man facepalming
1F926 1F3FB 200D 2642 FE0F ; fully-qualified # 🤦🏻♂️ E4.0 man facepalming: light skin tone
1F926 1F3FB 200D 2642 ; minimally-qualified # 🤦🏻♂ E4.0 man facepalming: light skin tone
1F926 1F3FC 200D 2642 FE0F ; fully-qualified # 🤦🏼♂️ E4.0 man facepalming: medium-light skin tone
1F926 1F3FC 200D 2642 ; minimally-qualified # 🤦🏼♂ E4.0 man facepalming: medium-light skin tone
1F926 1F3FD 200D 2642 FE0F ; fully-qualified # 🤦🏽♂️ E4.0 man facepalming: medium skin tone
1F926 1F3FD 200D 2642 ; minimally-qualified # 🤦🏽♂ E4.0 man facepalming: medium skin tone
1F926 1F3FE 200D 2642 FE0F ; fully-qualified # 🤦🏾♂️ E4.0 man facepalming: medium-dark skin tone
1F926 1F3FE 200D 2642 ; minimally-qualified # 🤦🏾♂ E4.0 man facepalming: medium-dark skin tone
1F926 1F3FF 200D 2642 FE0F ; fully-qualified # 🤦🏿♂️ E4.0 man facepalming: dark skin tone
1F926 1F3FF 200D 2642 ; minimally-qualified # 🤦🏿♂ E4.0 man facepalming: dark skin tone
1F926 200D 2640 FE0F ; fully-qualified # 🤦♀️ E4.0 woman facepalming
1F926 200D 2640 ; minimally-qualified # 🤦♀ E4.0 woman facepalming
1F926 1F3FB 200D 2640 FE0F ; fully-qualified # 🤦🏻♀️ E4.0 woman facepalming: light skin tone
1F926 1F3FB 200D 2640 ; minimally-qualified # 🤦🏻♀ E4.0 woman facepalming: light skin tone
1F926 1F3FC 200D 2640 FE0F ; fully-qualified # 🤦🏼♀️ E4.0 woman facepalming: medium-light skin tone
1F926 1F3FC 200D 2640 ; minimally-qualified # 🤦🏼♀ E4.0 woman facepalming: medium-light skin tone
1F926 1F3FD 200D 2640 FE0F ; fully-qualified # 🤦🏽♀️ E4.0 woman facepalming: medium skin tone
1F926 1F3FD 200D 2640 ; minimally-qualified # 🤦🏽♀ E4.0 woman facepalming: medium skin tone
1F926 1F3FE 200D 2640 FE0F ; fully-qualified # 🤦🏾♀️ E4.0 woman facepalming: medium-dark skin tone
1F926 1F3FE 200D 2640 ; minimally-qualified # 🤦🏾♀ E4.0 woman facepalming: medium-dark skin tone
1F926 1F3FF 200D 2640 FE0F ; fully-qualified # 🤦🏿♀️ E4.0 woman facepalming: dark skin tone
1F926 1F3FF 200D 2640 ; minimally-qualified # 🤦🏿♀ E4.0 woman facepalming: dark skin tone
1F937 ; fully-qualified # 🤷 E3.0 person shrugging
1F937 1F3FB ; fully-qualified # 🤷🏻 E3.0 person shrugging: light skin tone
1F937 1F3FC ; fully-qualified # 🤷🏼 E3.0 person shrugging: medium-light skin tone
1F937 1F3FD ; fully-qualified # 🤷🏽 E3.0 person shrugging: medium skin tone
1F937 1F3FE ; fully-qualified # 🤷🏾 E3.0 person shrugging: medium-dark skin tone
1F937 1F3FF ; fully-qualified # 🤷🏿 E3.0 person shrugging: dark skin tone
1F937 200D 2642 FE0F ; fully-qualified # 🤷♂️ E4.0 man shrugging
1F937 200D 2642 ; minimally-qualified # 🤷♂ E4.0 man shrugging
1F937 1F3FB 200D 2642 FE0F ; fully-qualified # 🤷🏻♂️ E4.0 man shrugging: light skin tone
1F937 1F3FB 200D 2642 ; minimally-qualified # 🤷🏻♂ E4.0 man shrugging: light skin tone
1F937 1F3FC 200D 2642 FE0F ; fully-qualified # 🤷🏼♂️ E4.0 man shrugging: medium-light skin tone
1F937 1F3FC 200D 2642 ; minimally-qualified # 🤷🏼♂ E4.0 man shrugging: medium-light skin tone
1F937 1F3FD 200D 2642 FE0F ; fully-qualified # 🤷🏽♂️ E4.0 man shrugging: medium skin tone
1F937 1F3FD 200D 2642 ; minimally-qualified # 🤷🏽♂ E4.0 man shrugging: medium skin tone
1F937 1F3FE 200D 2642 FE0F ; fully-qualified # 🤷🏾♂️ E4.0 man shrugging: medium-dark skin tone
1F937 1F3FE 200D 2642 ; minimally-qualified # 🤷🏾♂ E4.0 man shrugging: medium-dark skin tone
1F937 1F3FF 200D 2642 FE0F ; fully-qualified # 🤷🏿♂️ E4.0 man shrugging: dark skin tone
1F937 1F3FF 200D 2642 ; minimally-qualified # 🤷🏿♂ E4.0 man shrugging: dark skin tone
1F937 200D 2640 FE0F ; fully-qualified # 🤷♀️ E4.0 woman shrugging
1F937 200D 2640 ; minimally-qualified # 🤷♀ E4.0 woman shrugging
1F937 1F3FB 200D 2640 FE0F ; fully-qualified # 🤷🏻♀️ E4.0 woman shrugging: light skin tone
1F937 1F3FB 200D 2640 ; minimally-qualified # 🤷🏻♀ E4.0 woman shrugging: light skin tone
1F937 1F3FC 200D 2640 FE0F ; fully-qualified # 🤷🏼♀️ E4.0 woman shrugging: medium-light skin tone
1F937 1F3FC 200D 2640 ; minimally-qualified # 🤷🏼♀ E4.0 woman shrugging: medium-light skin tone
1F937 1F3FD 200D 2640 FE0F ; fully-qualified # 🤷🏽♀️ E4.0 woman shrugging: medium skin tone
1F937 1F3FD 200D 2640 ; minimally-qualified # 🤷🏽♀ E4.0 woman shrugging: medium skin tone
1F937 1F3FE 200D 2640 FE0F ; fully-qualified # 🤷🏾♀️ E4.0 woman shrugging: medium-dark skin tone
1F937 1F3FE 200D 2640 ; minimally-qualified # 🤷🏾♀ E4.0 woman shrugging: medium-dark skin tone
1F937 1F3FF 200D 2640 FE0F ; fully-qualified # 🤷🏿♀️ E4.0 woman shrugging: dark skin tone
1F937 1F3FF 200D 2640 ; minimally-qualified # 🤷🏿♀ E4.0 woman shrugging: dark skin tone
# subgroup: person-role
1F9D1 200D 2695 FE0F ; fully-qualified # 🧑⚕️ E12.1 health worker
1F9D1 200D 2695 ; minimally-qualified # 🧑⚕ E12.1 health worker
1F9D1 1F3FB 200D 2695 FE0F ; fully-qualified # 🧑🏻⚕️ E12.1 health worker: light skin tone
1F9D1 1F3FB 200D 2695 ; minimally-qualified # 🧑🏻⚕ E12.1 health worker: light skin tone
1F9D1 1F3FC 200D 2695 FE0F ; fully-qualified # 🧑🏼⚕️ E12.1 health worker: medium-light skin tone
1F9D1 1F3FC 200D 2695 ; minimally-qualified # 🧑🏼⚕ E12.1 health worker: medium-light skin tone
1F9D1 1F3FD 200D 2695 FE0F ; fully-qualified # 🧑🏽⚕️ E12.1 health worker: medium skin tone
1F9D1 1F3FD 200D 2695 ; minimally-qualified # 🧑🏽⚕ E12.1 health worker: medium skin tone
1F9D1 1F3FE 200D 2695 FE0F ; fully-qualified # 🧑🏾⚕️ E12.1 health worker: medium-dark skin tone
1F9D1 1F3FE 200D 2695 ; minimally-qualified # 🧑🏾⚕ E12.1 health worker: medium-dark skin tone
1F9D1 1F3FF 200D 2695 FE0F ; fully-qualified # 🧑🏿⚕️ E12.1 health worker: dark skin tone
1F9D1 1F3FF 200D 2695 ; minimally-qualified # 🧑🏿⚕ E12.1 health worker: dark skin tone
1F468 200D 2695 FE0F ; fully-qualified # 👨⚕️ E4.0 man health worker
1F468 200D 2695 ; minimally-qualified # 👨⚕ E4.0 man health worker
1F468 1F3FB 200D 2695 FE0F ; fully-qualified # 👨🏻⚕️ E4.0 man health worker: light skin tone
1F468 1F3FB 200D 2695 ; minimally-qualified # 👨🏻⚕ E4.0 man health worker: light skin tone
1F468 1F3FC 200D 2695 FE0F ; fully-qualified # 👨🏼⚕️ E4.0 man health worker: medium-light skin tone
1F468 1F3FC 200D 2695 ; minimally-qualified # 👨🏼⚕ E4.0 man health worker: medium-light skin tone
1F468 1F3FD 200D 2695 FE0F ; fully-qualified # 👨🏽⚕️ E4.0 man health worker: medium skin tone
1F468 1F3FD 200D 2695 ; minimally-qualified # 👨🏽⚕ E4.0 man health worker: medium skin tone
1F468 1F3FE 200D 2695 FE0F ; fully-qualified # 👨🏾⚕️ E4.0 man health worker: medium-dark skin tone
1F468 1F3FE 200D 2695 ; minimally-qualified # 👨🏾⚕ E4.0 man health worker: medium-dark skin tone
1F468 1F3FF 200D 2695 FE0F ; fully-qualified # 👨🏿⚕️ E4.0 man health worker: dark skin tone
1F468 1F3FF 200D 2695 ; minimally-qualified # 👨🏿⚕ E4.0 man health worker: dark skin tone
1F469 200D 2695 FE0F ; fully-qualified # 👩⚕️ E4.0 woman health worker
1F469 200D 2695 ; minimally-qualified # 👩⚕ E4.0 woman health worker
1F469 1F3FB 200D 2695 FE0F ; fully-qualified # 👩🏻⚕️ E4.0 woman health worker: light skin tone
1F469 1F3FB 200D 2695 ; minimally-qualified # 👩🏻⚕ E4.0 woman health worker: light skin tone
1F469 1F3FC 200D 2695 FE0F ; fully-qualified # 👩🏼⚕️ E4.0 woman health worker: medium-light skin tone
1F469 1F3FC 200D 2695 ; minimally-qualified # 👩🏼⚕ E4.0 woman health worker: medium-light skin tone
1F469 1F3FD 200D 2695 FE0F ; fully-qualified # 👩🏽⚕️ E4.0 woman health worker: medium skin tone
1F469 1F3FD 200D 2695 ; minimally-qualified # 👩🏽⚕ E4.0 woman health worker: medium skin tone
1F469 1F3FE 200D 2695 FE0F ; fully-qualified # 👩🏾⚕️ E4.0 woman health worker: medium-dark skin tone
1F469 1F3FE 200D 2695 ; minimally-qualified # 👩🏾⚕ E4.0 woman health worker: medium-dark skin tone
1F469 1F3FF 200D 2695 FE0F ; fully-qualified # 👩🏿⚕️ E4.0 woman health worker: dark skin tone
1F469 1F3FF 200D 2695 ; minimally-qualified # 👩🏿⚕ E4.0 woman health worker: dark skin tone
1F9D1 200D 1F393 ; fully-qualified # 🧑🎓 E12.1 student
1F9D1 1F3FB 200D 1F393 ; fully-qualified # 🧑🏻🎓 E12.1 student: light skin tone
1F9D1 1F3FC 200D 1F393 ; fully-qualified # 🧑🏼🎓 E12.1 student: medium-light skin tone
1F9D1 1F3FD 200D 1F393 ; fully-qualified # 🧑🏽🎓 E12.1 student: medium skin tone
1F9D1 1F3FE 200D 1F393 ; fully-qualified # 🧑🏾🎓 E12.1 student: medium-dark skin tone
1F9D1 1F3FF 200D 1F393 ; fully-qualified # 🧑🏿🎓 E12.1 student: dark skin tone
1F468 200D 1F393 ; fully-qualified # 👨🎓 E4.0 man student
1F468 1F3FB 200D 1F393 ; fully-qualified # 👨🏻🎓 E4.0 man student: light skin tone
1F468 1F3FC 200D 1F393 ; fully-qualified # 👨🏼🎓 E4.0 man student: medium-light skin tone
1F468 1F3FD 200D 1F393 ; fully-qualified # 👨🏽🎓 E4.0 man student: medium skin tone
1F468 1F3FE 200D 1F393 ; fully-qualified # 👨🏾🎓 E4.0 man student: medium-dark skin tone
1F468 1F3FF 200D 1F393 ; fully-qualified # 👨🏿🎓 E4.0 man student: dark skin tone
1F469 200D 1F393 ; fully-qualified # 👩🎓 E4.0 woman student
1F469 1F3FB 200D 1F393 ; fully-qualified # 👩🏻🎓 E4.0 woman student: light skin tone
1F469 1F3FC 200D 1F393 ; fully-qualified # 👩🏼🎓 E4.0 woman student: medium-light skin tone
1F469 1F3FD 200D 1F393 ; fully-qualified # 👩🏽🎓 E4.0 woman student: medium skin tone
1F469 1F3FE 200D 1F393 ; fully-qualified # 👩🏾🎓 E4.0 woman student: medium-dark skin tone
1F469 1F3FF 200D 1F393 ; fully-qualified # 👩🏿🎓 E4.0 woman student: dark skin tone
1F9D1 200D 1F3EB ; fully-qualified # 🧑🏫 E12.1 teacher
1F9D1 1F3FB 200D 1F3EB ; fully-qualified # 🧑🏻🏫 E12.1 teacher: light skin tone
1F9D1 1F3FC 200D 1F3EB ; fully-qualified # 🧑🏼🏫 E12.1 teacher: medium-light skin tone
1F9D1 1F3FD 200D 1F3EB ; fully-qualified # 🧑🏽🏫 E12.1 teacher: medium skin tone
1F9D1 1F3FE 200D 1F3EB ; fully-qualified # 🧑🏾🏫 E12.1 teacher: medium-dark skin tone
1F9D1 1F3FF 200D 1F3EB ; fully-qualified # 🧑🏿🏫 E12.1 teacher: dark skin tone
1F468 200D 1F3EB ; fully-qualified # 👨🏫 E4.0 man teacher
1F468 1F3FB 200D 1F3EB ; fully-qualified # 👨🏻🏫 E4.0 man teacher: light skin tone
1F468 1F3FC 200D 1F3EB ; fully-qualified # 👨🏼🏫 E4.0 man teacher: medium-light skin tone
1F468 1F3FD 200D 1F3EB ; fully-qualified # 👨🏽🏫 E4.0 man teacher: medium skin tone
1F468 1F3FE 200D 1F3EB ; fully-qualified # 👨🏾🏫 E4.0 man teacher: medium-dark skin tone
1F468 1F3FF 200D 1F3EB ; fully-qualified # 👨🏿🏫 E4.0 man teacher: dark skin tone
1F469 200D 1F3EB ; fully-qualified # 👩🏫 E4.0 woman teacher
1F469 1F3FB 200D 1F3EB ; fully-qualified # 👩🏻🏫 E4.0 woman teacher: light skin tone
1F469 1F3FC 200D 1F3EB ; fully-qualified # 👩🏼🏫 E4.0 woman teacher: medium-light skin tone
1F469 1F3FD 200D 1F3EB ; fully-qualified # 👩🏽🏫 E4.0 woman teacher: medium skin tone
1F469 1F3FE 200D 1F3EB ; fully-qualified # 👩🏾🏫 E4.0 woman teacher: medium-dark skin tone
1F469 1F3FF 200D 1F3EB ; fully-qualified # 👩🏿🏫 E4.0 woman teacher: dark skin tone
1F9D1 200D 2696 FE0F ; fully-qualified # 🧑⚖️ E12.1 judge
1F9D1 200D 2696 ; minimally-qualified # 🧑⚖ E12.1 judge
1F9D1 1F3FB 200D 2696 FE0F ; fully-qualified # 🧑🏻⚖️ E12.1 judge: light skin tone
1F9D1 1F3FB 200D 2696 ; minimally-qualified # 🧑🏻⚖ E12.1 judge: light skin tone
1F9D1 1F3FC 200D 2696 FE0F ; fully-qualified # 🧑🏼⚖️ E12.1 judge: medium-light skin tone
1F9D1 1F3FC 200D 2696 ; minimally-qualified # 🧑🏼⚖ E12.1 judge: medium-light skin tone
1F9D1 1F3FD 200D 2696 FE0F ; fully-qualified # 🧑🏽⚖️ E12.1 judge: medium skin tone
1F9D1 1F3FD 200D 2696 ; minimally-qualified # 🧑🏽⚖ E12.1 judge: medium skin tone
1F9D1 1F3FE 200D 2696 FE0F ; fully-qualified # 🧑🏾⚖️ E12.1 judge: medium-dark skin tone
1F9D1 1F3FE 200D 2696 ; minimally-qualified # 🧑🏾⚖ E12.1 judge: medium-dark skin tone
1F9D1 1F3FF 200D 2696 FE0F ; fully-qualified # 🧑🏿⚖️ E12.1 judge: dark skin tone
1F9D1 1F3FF 200D 2696 ; minimally-qualified # 🧑🏿⚖ E12.1 judge: dark skin tone
1F468 200D 2696 FE0F ; fully-qualified # 👨⚖️ E4.0 man judge
1F468 200D 2696 ; minimally-qualified # 👨⚖ E4.0 man judge
1F468 1F3FB 200D 2696 FE0F ; fully-qualified # 👨🏻⚖️ E4.0 man judge: light skin tone
1F468 1F3FB 200D 2696 ; minimally-qualified # 👨🏻⚖ E4.0 man judge: light skin tone
1F468 1F3FC 200D 2696 FE0F ; fully-qualified # 👨🏼⚖️ E4.0 man judge: medium-light skin tone
1F468 1F3FC 200D 2696 ; minimally-qualified # 👨🏼⚖ E4.0 man judge: medium-light skin tone
1F468 1F3FD 200D 2696 FE0F ; fully-qualified # 👨🏽⚖️ E4.0 man judge: medium skin tone
1F468 1F3FD 200D 2696 ; minimally-qualified # 👨🏽⚖ E4.0 man judge: medium skin tone
1F468 1F3FE 200D 2696 FE0F ; fully-qualified # 👨🏾⚖️ E4.0 man judge: medium-dark skin tone
1F468 1F3FE 200D 2696 ; minimally-qualified # 👨🏾⚖ E4.0 man judge: medium-dark skin tone
1F468 1F3FF 200D 2696 FE0F ; fully-qualified # 👨🏿⚖️ E4.0 man judge: dark skin tone
1F468 1F3FF 200D 2696 ; minimally-qualified # 👨🏿⚖ E4.0 man judge: dark skin tone
1F469 200D 2696 FE0F ; fully-qualified # 👩⚖️ E4.0 woman judge
1F469 200D 2696 ; minimally-qualified # 👩⚖ E4.0 woman judge
1F469 1F3FB 200D 2696 FE0F ; fully-qualified # 👩🏻⚖️ E4.0 woman judge: light skin tone
1F469 1F3FB 200D 2696 ; minimally-qualified # 👩🏻⚖ E4.0 woman judge: light skin tone
1F469 1F3FC 200D 2696 FE0F ; fully-qualified # 👩🏼⚖️ E4.0 woman judge: medium-light skin tone
1F469 1F3FC 200D 2696 ; minimally-qualified # 👩🏼⚖ E4.0 woman judge: medium-light skin tone
1F469 1F3FD 200D 2696 FE0F ; fully-qualified # 👩🏽⚖️ E4.0 woman judge: medium skin tone
1F469 1F3FD 200D 2696 ; minimally-qualified # 👩🏽⚖ E4.0 woman judge: medium skin tone
1F469 1F3FE 200D 2696 FE0F ; fully-qualified # 👩🏾⚖️ E4.0 woman judge: medium-dark skin tone
1F469 1F3FE 200D 2696 ; minimally-qualified # 👩🏾⚖ E4.0 woman judge: medium-dark skin tone
1F469 1F3FF 200D 2696 FE0F ; fully-qualified # 👩🏿⚖️ E4.0 woman judge: dark skin tone
1F469 1F3FF 200D 2696 ; minimally-qualified # 👩🏿⚖ E4.0 woman judge: dark skin tone
1F9D1 200D 1F33E ; fully-qualified # 🧑🌾 E12.1 farmer
1F9D1 1F3FB 200D 1F33E ; fully-qualified # 🧑🏻🌾 E12.1 farmer: light skin tone
1F9D1 1F3FC 200D 1F33E ; fully-qualified # 🧑🏼🌾 E12.1 farmer: medium-light skin tone
1F9D1 1F3FD 200D 1F33E ; fully-qualified # 🧑🏽🌾 E12.1 farmer: medium skin tone
1F9D1 1F3FE 200D 1F33E ; fully-qualified # 🧑🏾🌾 E12.1 farmer: medium-dark skin tone
1F9D1 1F3FF 200D 1F33E ; fully-qualified # 🧑🏿🌾 E12.1 farmer: dark skin tone
1F468 200D 1F33E ; fully-qualified # 👨🌾 E4.0 man farmer
1F468 1F3FB 200D 1F33E ; fully-qualified # 👨🏻🌾 E4.0 man farmer: light skin tone
1F468 1F3FC 200D 1F33E ; fully-qualified # 👨🏼🌾 E4.0 man farmer: medium-light skin tone
1F468 1F3FD 200D 1F33E ; fully-qualified # 👨🏽🌾 E4.0 man farmer: medium skin tone
1F468 1F3FE 200D 1F33E ; fully-qualified # 👨🏾🌾 E4.0 man farmer: medium-dark skin tone
1F468 1F3FF 200D 1F33E ; fully-qualified # 👨🏿🌾 E4.0 man farmer: dark skin tone
1F469 200D 1F33E ; fully-qualified # 👩🌾 E4.0 woman farmer
1F469 1F3FB 200D 1F33E ; fully-qualified # 👩🏻🌾 E4.0 woman farmer: light skin tone
1F469 1F3FC 200D 1F33E ; fully-qualified # 👩🏼🌾 E4.0 woman farmer: medium-light skin tone
1F469 1F3FD 200D 1F33E ; fully-qualified # 👩🏽🌾 E4.0 woman farmer: medium skin tone
1F469 1F3FE 200D 1F33E ; fully-qualified # 👩🏾🌾 E4.0 woman farmer: medium-dark skin tone
1F469 1F3FF 200D 1F33E ; fully-qualified # 👩🏿🌾 E4.0 woman farmer: dark skin tone
1F9D1 200D 1F373 ; fully-qualified # 🧑🍳 E12.1 cook
1F9D1 1F3FB 200D 1F373 ; fully-qualified # 🧑🏻🍳 E12.1 cook: light skin tone
1F9D1 1F3FC 200D 1F373 ; fully-qualified # 🧑🏼🍳 E12.1 cook: medium-light skin tone
1F9D1 1F3FD 200D 1F373 ; fully-qualified # 🧑🏽🍳 E12.1 cook: medium skin tone
1F9D1 1F3FE 200D 1F373 ; fully-qualified # 🧑🏾🍳 E12.1 cook: medium-dark skin tone
1F9D1 1F3FF 200D 1F373 ; fully-qualified # 🧑🏿🍳 E12.1 cook: dark skin tone
1F468 200D 1F373 ; fully-qualified # 👨🍳 E4.0 man cook
1F468 1F3FB 200D 1F373 ; fully-qualified # 👨🏻🍳 E4.0 man cook: light skin tone
1F468 1F3FC 200D 1F373 ; fully-qualified # 👨🏼🍳 E4.0 man cook: medium-light skin tone
1F468 1F3FD 200D 1F373 ; fully-qualified # 👨🏽🍳 E4.0 man cook: medium skin tone
1F468 1F3FE 200D 1F373 ; fully-qualified # 👨🏾🍳 E4.0 man cook: medium-dark skin tone
1F468 1F3FF 200D 1F373 ; fully-qualified # 👨🏿🍳 E4.0 man cook: dark skin tone
1F469 200D 1F373 ; fully-qualified # 👩🍳 E4.0 woman cook
1F469 1F3FB 200D 1F373 ; fully-qualified # 👩🏻🍳 E4.0 woman cook: light skin tone
1F469 1F3FC 200D 1F373 ; fully-qualified # 👩🏼🍳 E4.0 woman cook: medium-light skin tone
1F469 1F3FD 200D 1F373 ; fully-qualified # 👩🏽🍳 E4.0 woman cook: medium skin tone
1F469 1F3FE 200D 1F373 ; fully-qualified # 👩🏾🍳 E4.0 woman cook: medium-dark skin tone
1F469 1F3FF 200D 1F373 ; fully-qualified # 👩🏿🍳 E4.0 woman cook: dark skin tone
1F9D1 200D 1F527 ; fully-qualified # 🧑🔧 E12.1 mechanic
1F9D1 1F3FB 200D 1F527 ; fully-qualified # 🧑🏻🔧 E12.1 mechanic: light skin tone
1F9D1 1F3FC 200D 1F527 ; fully-qualified # 🧑🏼🔧 E12.1 mechanic: medium-light skin tone
1F9D1 1F3FD 200D 1F527 ; fully-qualified # 🧑🏽🔧 E12.1 mechanic: medium skin tone
1F9D1 1F3FE 200D 1F527 ; fully-qualified # 🧑🏾🔧 E12.1 mechanic: medium-dark skin tone
1F9D1 1F3FF 200D 1F527 ; fully-qualified # 🧑🏿🔧 E12.1 mechanic: dark skin tone
1F468 200D 1F527 ; fully-qualified # 👨🔧 E4.0 man mechanic
1F468 1F3FB 200D 1F527 ; fully-qualified # 👨🏻🔧 E4.0 man mechanic: light skin tone
1F468 1F3FC 200D 1F527 ; fully-qualified # 👨🏼🔧 E4.0 man mechanic: medium-light skin tone
1F468 1F3FD 200D 1F527 ; fully-qualified # 👨🏽🔧 E4.0 man mechanic: medium skin tone
1F468 1F3FE 200D 1F527 ; fully-qualified # 👨🏾🔧 E4.0 man mechanic: medium-dark skin tone
1F468 1F3FF 200D 1F527 ; fully-qualified # 👨🏿🔧 E4.0 man mechanic: dark skin tone
1F469 200D 1F527 ; fully-qualified # 👩🔧 E4.0 woman mechanic
1F469 1F3FB 200D 1F527 ; fully-qualified # 👩🏻🔧 E4.0 woman mechanic: light skin tone
1F469 1F3FC 200D 1F527 ; fully-qualified # 👩🏼🔧 E4.0 woman mechanic: medium-light skin tone
1F469 1F3FD 200D 1F527 ; fully-qualified # 👩🏽🔧 E4.0 woman mechanic: medium skin tone
1F469 1F3FE 200D 1F527 ; fully-qualified # 👩🏾🔧 E4.0 woman mechanic: medium-dark skin tone
1F469 1F3FF 200D 1F527 ; fully-qualified # 👩🏿🔧 E4.0 woman mechanic: dark skin tone
1F9D1 200D 1F3ED ; fully-qualified # 🧑🏭 E12.1 factory worker
1F9D1 1F3FB 200D 1F3ED ; fully-qualified # 🧑🏻🏭 E12.1 factory worker: light skin tone
1F9D1 1F3FC 200D 1F3ED ; fully-qualified # 🧑🏼🏭 E12.1 factory worker: medium-light skin tone
1F9D1 1F3FD 200D 1F3ED ; fully-qualified # 🧑🏽🏭 E12.1 factory worker: medium skin tone
1F9D1 1F3FE 200D 1F3ED ; fully-qualified # 🧑🏾🏭 E12.1 factory worker: medium-dark skin tone
1F9D1 1F3FF 200D 1F3ED ; fully-qualified # 🧑🏿🏭 E12.1 factory worker: dark skin tone
1F468 200D 1F3ED ; fully-qualified # 👨🏭 E4.0 man factory worker
1F468 1F3FB 200D 1F3ED ; fully-qualified # 👨🏻🏭 E4.0 man factory worker: light skin tone
1F468 1F3FC 200D 1F3ED ; fully-qualified # 👨🏼🏭 E4.0 man factory worker: medium-light skin tone
1F468 1F3FD 200D 1F3ED ; fully-qualified # 👨🏽🏭 E4.0 man factory worker: medium skin tone
1F468 1F3FE 200D 1F3ED ; fully-qualified # 👨🏾🏭 E4.0 man factory worker: medium-dark skin tone
1F468 1F3FF 200D 1F3ED ; fully-qualified # 👨🏿🏭 E4.0 man factory worker: dark skin tone
1F469 200D 1F3ED ; fully-qualified # 👩🏭 E4.0 woman factory worker
1F469 1F3FB 200D 1F3ED ; fully-qualified # 👩🏻🏭 E4.0 woman factory worker: light skin tone
1F469 1F3FC 200D 1F3ED ; fully-qualified # 👩🏼🏭 E4.0 woman factory worker: medium-light skin tone
1F469 1F3FD 200D 1F3ED ; fully-qualified # 👩🏽🏭 E4.0 woman factory worker: medium skin tone
1F469 1F3FE 200D 1F3ED ; fully-qualified # 👩🏾🏭 E4.0 woman factory worker: medium-dark skin tone
1F469 1F3FF 200D 1F3ED ; fully-qualified # 👩🏿🏭 E4.0 woman factory worker: dark skin tone
1F9D1 200D 1F4BC ; fully-qualified # 🧑💼 E12.1 office worker
1F9D1 1F3FB 200D 1F4BC ; fully-qualified # 🧑🏻💼 E12.1 office worker: light skin tone
1F9D1 1F3FC 200D 1F4BC ; fully-qualified # 🧑🏼💼 E12.1 office worker: medium-light skin tone
1F9D1 1F3FD 200D 1F4BC ; fully-qualified # 🧑🏽💼 E12.1 office worker: medium skin tone
1F9D1 1F3FE 200D 1F4BC ; fully-qualified # 🧑🏾💼 E12.1 office worker: medium-dark skin tone
1F9D1 1F3FF 200D 1F4BC ; fully-qualified # 🧑🏿💼 E12.1 office worker: dark skin tone
1F468 200D 1F4BC ; fully-qualified # 👨💼 E4.0 man office worker
1F468 1F3FB 200D 1F4BC ; fully-qualified # 👨🏻💼 E4.0 man office worker: light skin tone
1F468 1F3FC 200D 1F4BC ; fully-qualified # 👨🏼💼 E4.0 man office worker: medium-light skin tone
1F468 1F3FD 200D 1F4BC ; fully-qualified # 👨🏽💼 E4.0 man office worker: medium skin tone
1F468 1F3FE 200D 1F4BC ; fully-qualified # 👨🏾💼 E4.0 man office worker: medium-dark skin tone
1F468 1F3FF 200D 1F4BC ; fully-qualified # 👨🏿💼 E4.0 man office worker: dark skin tone
1F469 200D 1F4BC ; fully-qualified # 👩💼 E4.0 woman office worker
1F469 1F3FB 200D 1F4BC ; fully-qualified # 👩🏻💼 E4.0 woman office worker: light skin tone
1F469 1F3FC 200D 1F4BC ; fully-qualified # 👩🏼💼 E4.0 woman office worker: medium-light skin tone
1F469 1F3FD 200D 1F4BC ; fully-qualified # 👩🏽💼 E4.0 woman office worker: medium skin tone
1F469 1F3FE 200D 1F4BC ; fully-qualified # 👩🏾💼 E4.0 woman office worker: medium-dark skin tone
1F469 1F3FF 200D 1F4BC ; fully-qualified # 👩🏿💼 E4.0 woman office worker: dark skin tone
1F9D1 200D 1F52C ; fully-qualified # 🧑🔬 E12.1 scientist
1F9D1 1F3FB 200D 1F52C ; fully-qualified # 🧑🏻🔬 E12.1 scientist: light skin tone
1F9D1 1F3FC 200D 1F52C ; fully-qualified # 🧑🏼🔬 E12.1 scientist: medium-light skin tone
1F9D1 1F3FD 200D 1F52C ; fully-qualified # 🧑🏽🔬 E12.1 scientist: medium skin tone
1F9D1 1F3FE 200D 1F52C ; fully-qualified # 🧑🏾🔬 E12.1 scientist: medium-dark skin tone
1F9D1 1F3FF 200D 1F52C ; fully-qualified # 🧑🏿🔬 E12.1 scientist: dark skin tone
1F468 200D 1F52C ; fully-qualified # 👨🔬 E4.0 man scientist
1F468 1F3FB 200D 1F52C ; fully-qualified # 👨🏻🔬 E4.0 man scientist: light skin tone
1F468 1F3FC 200D 1F52C ; fully-qualified # 👨🏼🔬 E4.0 man scientist: medium-light skin tone
1F468 1F3FD 200D 1F52C ; fully-qualified # 👨🏽🔬 E4.0 man scientist: medium skin tone
1F468 1F3FE 200D 1F52C ; fully-qualified # 👨🏾🔬 E4.0 man scientist: medium-dark skin tone
1F468 1F3FF 200D 1F52C ; fully-qualified # 👨🏿🔬 E4.0 man scientist: dark skin tone
1F469 200D 1F52C ; fully-qualified # 👩🔬 E4.0 woman scientist
1F469 1F3FB 200D 1F52C ; fully-qualified # 👩🏻🔬 E4.0 woman scientist: light skin tone
1F469 1F3FC 200D 1F52C ; fully-qualified # 👩🏼🔬 E4.0 woman scientist: medium-light skin tone
1F469 1F3FD 200D 1F52C ; fully-qualified # 👩🏽🔬 E4.0 woman scientist: medium skin tone
1F469 1F3FE 200D 1F52C ; fully-qualified # 👩🏾🔬 E4.0 woman scientist: medium-dark skin tone
1F469 1F3FF 200D 1F52C ; fully-qualified # 👩🏿🔬 E4.0 woman scientist: dark skin tone
1F9D1 200D 1F4BB ; fully-qualified # 🧑💻 E12.1 technologist
1F9D1 1F3FB 200D 1F4BB ; fully-qualified # 🧑🏻💻 E12.1 technologist: light skin tone
1F9D1 1F3FC 200D 1F4BB ; fully-qualified # 🧑🏼💻 E12.1 technologist: medium-light skin tone
1F9D1 1F3FD 200D 1F4BB ; fully-qualified # 🧑🏽💻 E12.1 technologist: medium skin tone
1F9D1 1F3FE 200D 1F4BB ; fully-qualified # 🧑🏾💻 E12.1 technologist: medium-dark skin tone
1F9D1 1F3FF 200D 1F4BB ; fully-qualified # 🧑🏿💻 E12.1 technologist: dark skin tone
1F468 200D 1F4BB ; fully-qualified # 👨💻 E4.0 man technologist
1F468 1F3FB 200D 1F4BB ; fully-qualified # 👨🏻💻 E4.0 man technologist: light skin tone
1F468 1F3FC 200D 1F4BB ; fully-qualified # 👨🏼💻 E4.0 man technologist: medium-light skin tone
1F468 1F3FD 200D 1F4BB ; fully-qualified # 👨🏽💻 E4.0 man technologist: medium skin tone
1F468 1F3FE 200D 1F4BB ; fully-qualified # 👨🏾💻 E4.0 man technologist: medium-dark skin tone
1F468 1F3FF 200D 1F4BB ; fully-qualified # 👨🏿💻 E4.0 man technologist: dark skin tone
1F469 200D 1F4BB ; fully-qualified # 👩💻 E4.0 woman technologist
1F469 1F3FB 200D 1F4BB ; fully-qualified # 👩🏻💻 E4.0 woman technologist: light skin tone
1F469 1F3FC 200D 1F4BB ; fully-qualified # 👩🏼💻 E4.0 woman technologist: medium-light skin tone
1F469 1F3FD 200D 1F4BB ; fully-qualified # 👩🏽💻 E4.0 woman technologist: medium skin tone
1F469 1F3FE 200D 1F4BB ; fully-qualified # 👩🏾💻 E4.0 woman technologist: medium-dark skin tone
1F469 1F3FF 200D 1F4BB ; fully-qualified # 👩🏿💻 E4.0 woman technologist: dark skin tone
1F9D1 200D 1F3A4 ; fully-qualified # 🧑🎤 E12.1 singer
1F9D1 1F3FB 200D 1F3A4 ; fully-qualified # 🧑🏻🎤 E12.1 singer: light skin tone
1F9D1 1F3FC 200D 1F3A4 ; fully-qualified # 🧑🏼🎤 E12.1 singer: medium-light skin tone
1F9D1 1F3FD 200D 1F3A4 ; fully-qualified # 🧑🏽🎤 E12.1 singer: medium skin tone
1F9D1 1F3FE 200D 1F3A4 ; fully-qualified # 🧑🏾🎤 E12.1 singer: medium-dark skin tone
1F9D1 1F3FF 200D 1F3A4 ; fully-qualified # 🧑🏿🎤 E12.1 singer: dark skin tone
1F468 200D 1F3A4 ; fully-qualified # 👨🎤 E4.0 man singer
1F468 1F3FB 200D 1F3A4 ; fully-qualified # 👨🏻🎤 E4.0 man singer: light skin tone
1F468 1F3FC 200D 1F3A4 ; fully-qualified # 👨🏼🎤 E4.0 man singer: medium-light skin tone
1F468 1F3FD 200D 1F3A4 ; fully-qualified # 👨🏽🎤 E4.0 man singer: medium skin tone
1F468 1F3FE 200D 1F3A4 ; fully-qualified # 👨🏾🎤 E4.0 man singer: medium-dark skin tone
1F468 1F3FF 200D 1F3A4 ; fully-qualified # 👨🏿🎤 E4.0 man singer: dark skin tone
1F469 200D 1F3A4 ; fully-qualified # 👩🎤 E4.0 woman singer
1F469 1F3FB 200D 1F3A4 ; fully-qualified # 👩🏻🎤 E4.0 woman singer: light skin tone
1F469 1F3FC 200D 1F3A4 ; fully-qualified # 👩🏼🎤 E4.0 woman singer: medium-light skin tone
1F469 1F3FD 200D 1F3A4 ; fully-qualified # 👩🏽🎤 E4.0 woman singer: medium skin tone
1F469 1F3FE 200D 1F3A4 ; fully-qualified # 👩🏾🎤 E4.0 woman singer: medi
gitextract_wse6tx42/
├── .env.example
├── .eslintrc
├── .gitignore
├── .husky/
│ ├── commit-msg
│ └── pre-commit
├── .npmrc
├── .prettierrc
├── Dockerfile
├── LICENSE
├── README.md
├── app/
│ └── router.options.ts
├── app.vue
├── assets/
│ └── css/
│ └── tailwind.css
├── components/
│ ├── Detail.vue
│ ├── DropDown.vue
│ ├── Footer.vue
│ ├── Logo.vue
│ ├── Range.vue
│ ├── ThemeToggle.vue
│ ├── Toggle.vue
│ ├── ToolBar.vue
│ ├── Underline.vue
│ └── Yesicon.vue
├── data/
│ ├── emoji-index.json
│ ├── emoji-test.txt
│ ├── emoji.json
│ ├── group-translate.json
│ └── groupNames.json
├── error.vue
├── i18n.config.ts
├── lang/
│ ├── ar.json
│ ├── bn.json
│ ├── da.json
│ ├── de.json
│ ├── el.json
│ ├── en.json
│ ├── es.json
│ ├── fi.json
│ ├── fr.json
│ ├── he.json
│ ├── hi.json
│ ├── hu.json
│ ├── id.json
│ ├── it.json
│ ├── ja.json
│ ├── ko.json
│ ├── ms.json
│ ├── nl.json
│ ├── no.json
│ ├── pl.json
│ ├── pt.json
│ ├── ro.json
│ ├── ru.json
│ ├── sv.json
│ ├── th.json
│ ├── tr.json
│ ├── uk.json
│ ├── vi.json
│ ├── zh-hans.json
│ └── zh-hant.json
├── locale.ts
├── nuxt.config.ts
├── package.json
├── pages/
│ ├── [id].vue
│ └── index.vue
├── public/
│ └── site.webmanifest
├── scripts/
│ ├── copyFile.ts
│ ├── generateEmojiData.ts
│ ├── generateGroupName.ts
│ ├── generateKeywords.ts
│ ├── generateLocale.ts
│ ├── handle.ts
│ ├── openAI.ts
│ └── prompts.ts
├── server/
│ ├── api/
│ │ ├── emoji/
│ │ │ └── [id].ts
│ │ ├── emojis.ts
│ │ └── home.ts
│ ├── middleware/
│ │ └── emoji.ts
│ ├── plugins/
│ │ └── handleQuery.ts
│ └── tsconfig.json
├── tailwind.config.ts
├── tsconfig.json
└── utils/
└── index.ts
SYMBOL INDEX (18 symbols across 9 files)
FILE: app/router.options.ts
method scrollBehavior (line 4) | scrollBehavior (_to, _from, savedPosition) {
FILE: scripts/copyFile.ts
function main (line 2) | async function main () {
FILE: scripts/generateEmojiData.ts
function parseTextToJson (line 6) | function parseTextToJson (text: string) {
function main (line 52) | async function main () {
FILE: scripts/generateGroupName.ts
function batch (line 6) | function batch (arr: any[], size: number) {
function main (line 14) | async function main () {
FILE: scripts/generateKeywords.ts
function batch (line 6) | function batch (arr: any[], size: number) {
function main (line 15) | async function main () {
FILE: scripts/generateLocale.ts
function main (line 18) | async function main (lang: string) {
function go (line 45) | async function go () {
FILE: scripts/handle.ts
function batch (line 41) | function batch (arr: any[], size: number) {
function main (line 49) | async function main () {
FILE: scripts/openAI.ts
type ChatMessage (line 6) | interface ChatMessage {
function chatGPT (line 17) | async function chatGPT (message: string) {
method start (line 60) | async start (controller) {
FILE: server/middleware/emoji.ts
function loadEmojiData (line 7) | async function loadEmojiData () {
function loadGroupsData (line 29) | async function loadGroupsData () {
function extractName (line 49) | function extractName (str: string) {
Condensed preview — 83 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,942K chars).
[
{
"path": ".env.example",
"chars": 345,
"preview": "# Your API Key for OpenAI\nOPENAI_API_KEY=\n# Provide proxy for OpenAI API. e.g. http://127.0.0.1:7890\n# HTTPS_PROXY=\n# Cu"
},
{
"path": ".eslintrc",
"chars": 1454,
"preview": "{\n \"root\":true,\n \"env\":{\n \"browser\": true,\n \"node\":true\n },\n \"parser\":\"vue-eslint-parser\",\n \"extends\":[\n \""
},
{
"path": ".gitignore",
"chars": 198,
"preview": "# Nuxt dev/build outputs\n.output\n.data\n.nuxt\n.nitro\n.cache\ndist\ntemp\n\n# Node dependencies\nnode_modules\n\n# Logs\nlogs\n*.lo"
},
{
"path": ".husky/commit-msg",
"chars": 80,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx --no-install commitlint --edit $1\n"
},
{
"path": ".husky/pre-commit",
"chars": 58,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
},
{
"path": ".npmrc",
"chars": 21,
"preview": "shamefully-hoist=true"
},
{
"path": ".prettierrc",
"chars": 89,
"preview": "semi: false\nsingleQuote: true\nprintWidth: 160\ntrailingComma: 'none'\narrowParens: 'avoid'\n"
},
{
"path": "Dockerfile",
"chars": 530,
"preview": "ARG NODE_VERSION=18.19.0\n\nFROM node:${NODE_VERSION}-alpine\n\n# Set working directory for all build stages.\nWORKDIR /app\n\n"
},
{
"path": "LICENSE",
"chars": 1114,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2023-present dongnaebi <https://github.com/dongnaebi>\n\nPermission is hereby granted"
},
{
"path": "README.md",
"chars": 1204,
"preview": "<h1 align=\"center\">🧐 SearchEmoji</h1>\n<p align=\"center\">🔍Search for Emoji, 🖱️Click to Copy - Emoji Search Engine Support"
},
{
"path": "app/router.options.ts",
"chars": 442,
"preview": "import type { RouterConfig } from '@nuxt/schema'\n\nconst options: RouterConfig = {\n scrollBehavior (_to, _from, savedPos"
},
{
"path": "app.vue",
"chars": 1778,
"preview": "<template>\n <NuxtPage />\n</template>\n<script setup lang=\"ts\">\nconst { t } = useI18n()\nconst route = useRoute()\nconst i1"
},
{
"path": "assets/css/tailwind.css",
"chars": 4921,
"preview": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n@layer components {\n .bg-body {\n @apply bg-zinc-100 dark:"
},
{
"path": "components/Detail.vue",
"chars": 8091,
"preview": "<script setup lang=\"ts\">\nimport { useClipboard } from '@vueuse/core'\nconst props = defineProps({\n emoji: {\n type: [O"
},
{
"path": "components/DropDown.vue",
"chars": 882,
"preview": "<script setup lang=\"ts\">\nimport { onClickOutside } from '@vueuse/core'\ndefineProps({\n top: {\n type: Number,\n defa"
},
{
"path": "components/Footer.vue",
"chars": 368,
"preview": "<script setup lang=\"ts\"></script>\n\n<template>\n <footer class=\"py-10 color-secondary text-center text-sm\">\n <p class="
},
{
"path": "components/Logo.vue",
"chars": 9898,
"preview": "<script setup lang=\"ts\"></script>\n\n<template>\n <svg height=\"1em\" viewBox=\"0 0 677 128\" xmlns=\"http://www.w3.org/2000/sv"
},
{
"path": "components/Range.vue",
"chars": 2446,
"preview": "<script setup lang=\"ts\">\nimport { useColorMode } from '#imports'\n\nconst props = defineProps({\n modelValue: {\n type: "
},
{
"path": "components/ThemeToggle.vue",
"chars": 938,
"preview": "<script setup lang=\"ts\">\nimport { useColorMode } from '#imports'\nconst colorMode = useColorMode()\nfunction toggleTheme ("
},
{
"path": "components/Toggle.vue",
"chars": 858,
"preview": "<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n modelValue: {\n type: Boolean,\n"
},
{
"path": "components/ToolBar.vue",
"chars": 368,
"preview": "<script setup lang=\"ts\"></script>\n\n<template>\n <div class=\"flex items-center\">\n <ThemeToggle />\n <a href=\"https:/"
},
{
"path": "components/Underline.vue",
"chars": 2030,
"preview": "<script setup lang=\"ts\"></script>\n\n<template>\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0.00 0.00 "
},
{
"path": "components/Yesicon.vue",
"chars": 8948,
"preview": "<template>\n <span class=\"flex items-center\" role=\"img\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 300 30"
},
{
"path": "data/emoji-test.txt",
"chars": 596247,
"preview": "# emoji-test.txt\n# Date: 2023-06-05, 21:39:54 GMT\n# © 2023 Unicode®, Inc.\n# Unicode and the Unicode Logo are registered "
},
{
"path": "data/emoji.json",
"chars": 764026,
"preview": "[\n {\n \"c\": \"1F600\",\n \"q\": \"f\",\n \"e\": \"😀\",\n \"v\": \"1.0\",\n \"n\": \"grinning face\",\n \"g\": 0,\n \"s\": 1\n }"
},
{
"path": "data/group-translate.json",
"chars": 84572,
"preview": "[\n {\n \"name\": \"Smileys & Emotion\",\n \"en\": \"Smileys & Emotion\",\n \"zh-hans\": \"笑脸与情感\",\n \"es\": \"Caritas y Emoci"
},
{
"path": "data/groupNames.json",
"chars": 1814,
"preview": "[\n \"Smileys & Emotion\",\n \"face-smiling\",\n \"face-affection\",\n \"face-tongue\",\n \"face-hand\",\n \"face-neutral-skeptical"
},
{
"path": "error.vue",
"chars": 378,
"preview": "<script setup>\nconst error = useError()\nuseHead({\n title: `${error.value.statusCode} - ${error.value.url}`\n})\n</script>"
},
{
"path": "i18n.config.ts",
"chars": 126,
"preview": "export default defineI18nConfig(() => ({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: tru"
},
{
"path": "lang/ar.json",
"chars": 1978,
"preview": "{\n \"seo\": {\n \"title\": \"🔍البحث عن الرموز التعبيرية، 🖱️انقر للنسخ - محرك بحث الرموز التعبيرية يدعم 30 لغة\",\n \"descr"
},
{
"path": "lang/bn.json",
"chars": 2035,
"preview": "{\n \"seo\": {\n \"title\": \"ইমোজি অনুসন্ধানে, ইমোজি কপি করতে ব্যবহার করুন - ৩০ ভাষা সমর্থিত ইমোজি অনুসন্ধান ইঞ্জিন\",\n "
},
{
"path": "lang/da.json",
"chars": 2047,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Søg efter emoji, 🖱️Klik for at kopiere - Emoji-søgemaskine der understøtter 30 sprog\",\n \""
},
{
"path": "lang/de.json",
"chars": 2233,
"preview": "{\n \"seo\": {\n \"title\": \"Suche nach Emoji, 🖱️Klicken zum Kopieren - Emoji-Suchmaschine mit Unterstützung von 30 Sprach"
},
{
"path": "lang/el.json",
"chars": 2277,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Αναζήτηση για Emoji, 🖱️Κάντε κλικ για αντιγραφή - Μηχανή αναζήτησης Emoji με υποστήριξη 30 Γ"
},
{
"path": "lang/en.json",
"chars": 1988,
"preview": "{\n \"seo\": {\n \"title\": \"\\uD83D\\uDD0DSearch for Emoji, \\uD83D\\uDDB1\\uFE0FClick to Copy - Emoji Search Engine Supportin"
},
{
"path": "lang/es.json",
"chars": 2174,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Busque Emojis, 🖱️Haga clic para Copiar - Motor de búsqueda de emojis compatible con 30 idiom"
},
{
"path": "lang/fi.json",
"chars": 2061,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Emoji-haku, 🖱️Napsauta kopioidaksesi - Emoji-hakukone, joka tukee 30 kieltä\",\n \"descripti"
},
{
"path": "lang/fr.json",
"chars": 2207,
"preview": "{\n \"seo\": {\n \"title\": \"Recherche d'emoji, 🖱️Cliquez pour copier - Moteur de recherche d'emoji prenant en charge 30 l"
},
{
"path": "lang/he.json",
"chars": 1805,
"preview": "{\n \"seo\": {\n \"title\": \"🔍חיפוש אמוג'ים, 🖱️לחץ כדי להעתיק - מנוע חיפוש אמוג'ים התומך ב-30 שפות\",\n \"description\": \"ת"
},
{
"path": "lang/hi.json",
"chars": 1987,
"preview": "{\n \"seo\": {\n \"title\": \"🔍इमोजी खोजें, 🖱️क्लिक करें - 30 भाषाओं का समर्थन करने वाला इमोजी खोज इंजन\",\n \"description\""
},
{
"path": "lang/hu.json",
"chars": 2158,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Emoji Keresés, 🖱️Kattints a Másoláshoz - 30 Nyelvet Támogató Emoji Keresőmotor\",\n \"descri"
},
{
"path": "lang/id.json",
"chars": 2036,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Cari Emoji, 🖱️Klik untuk Menyalin - Mesin Pencari Emoji Mendukung 30 Bahasa\",\n \"descripti"
},
{
"path": "lang/it.json",
"chars": 2197,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Cerca Emoji, 🖱️Clicca per Copiare - Motore di Ricerca Emoji che Supporta 30 Lingue\",\n \"de"
},
{
"path": "lang/ja.json",
"chars": 1437,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Emojiを検索、🖱️クリックしてコピー - 30か国語をサポートする絵文字検索エンジン\",\n \"description\": \"絵文字でコンテンツをより活気づけましょう。Sear"
},
{
"path": "lang/ko.json",
"chars": 1474,
"preview": "{\n \"seo\": {\n \"title\": \"🔍이모지 검색, 🖱️클릭하여 복사 - 30개 언어를 지원하는 이모지 검색 엔진\",\n \"description\": \"이모지를 통해 콘텐츠를 다채롭게 표현해보세요. S"
},
{
"path": "lang/ms.json",
"chars": 2085,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Cari Emoji, 🖱️Klik untuk Menyalin - Enjin Carian Emoji yang Menyokong 30 Bahasa\",\n \"descr"
},
{
"path": "lang/nl.json",
"chars": 2158,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Zoek naar Emoji, 🖱️Klik om te kopiëren - Emoji-zoekmachine met ondersteuning voor 30 talen\","
},
{
"path": "lang/no.json",
"chars": 2140,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Søk etter Emoji, 🖱️Klikk for å kopiere - Emoji-søkemotor som støtter 30 språk\",\n \"descrip"
},
{
"path": "lang/pl.json",
"chars": 2186,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Wyszukaj emoji, 🖱️Kliknij, aby skopiować - Wyszukiwarka emoji obsługująca 30 języków\",\n \""
},
{
"path": "lang/pt.json",
"chars": 2131,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Pesquisar Emoji, 🖱️Clique para Copiar - Motor de Busca de Emoji Suportando 30 Idiomas\",\n "
},
{
"path": "lang/ro.json",
"chars": 2140,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Caută Emoji, 🖱️Clic pentru a Copia - Motor de căutare Emoji care acceptă 30 de limbi\",\n \""
},
{
"path": "lang/ru.json",
"chars": 2227,
"preview": "{\n \"seo\": {\n \"title\": \"🔍 Поиск по эмодзи, 🖱️ Щелкните, чтобы скопировать - Поисковый двигатель эмодзи, поддерживающи"
},
{
"path": "lang/sv.json",
"chars": 2110,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Sök efter emotikoner, 🖱️Klicka för att kopiera - Emotikon-sökmotor som stöder 30 språk\",\n "
},
{
"path": "lang/th.json",
"chars": 1846,
"preview": "{\n \"seo\": {\n \"title\": \"🔍ค้นหา Emoji, 🖱️คลิกเพื่อคัดลอก - มอเตอร์การค้นหา Emoji รองรับ 30 ภาษา\",\n \"description\": \""
},
{
"path": "lang/tr.json",
"chars": 2052,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Emoji Arama, 🖱️Kopyalamak için Tıklayın - 30 Dil Desteği Sunan Emoji Arama Motoru\",\n \"des"
},
{
"path": "lang/uk.json",
"chars": 2168,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Пошук Emoji, 🖱️натисніть, щоб скопіювати - Пошуковий двигун Emoji з підтримкою 30 мов\",\n "
},
{
"path": "lang/vi.json",
"chars": 2203,
"preview": "{\n \"seo\": {\n \"title\": \"🔍Tìm kiếm biểu tượng cảm xúc, 🖱️Bấm để Sao chép - Công cụ Tìm kiếm Biểu tượng Cảm xúc Hỗ trợ "
},
{
"path": "lang/zh-hans.json",
"chars": 1335,
"preview": "{\n \"seo\": {\n \"title\": \"SearchEmoji - 支持 30 个语言的 Emoji 搜索引擎。\\uD83D\\uDD0D一词搜索,\\uD83D\\uDDB1\\uFE0F一键复制!\",\n \"descripti"
},
{
"path": "lang/zh-hant.json",
"chars": 1301,
"preview": "{\n \"seo\": {\n \"title\": \"支援 30 種語言的 Emoji 搜尋引擎。🔍一詞搜尋,🖱️一鍵複製!\",\n \"description\": \"豐富多彩的 Emoji 助你內容更生動。SearchEmoji 收錄最"
},
{
"path": "locale.ts",
"chars": 2358,
"preview": "const locale = [\n {\n code: 'en',\n iso: 'en',\n name: 'English',\n file: 'en.json'\n },\n {\n code: 'zh-hans"
},
{
"path": "nuxt.config.ts",
"chars": 3040,
"preview": "import locale from './locale'\n// https://nuxt.com/docs/api/configuration/nuxt-config\nexport default defineNuxtConfig({\n "
},
{
"path": "package.json",
"chars": 2387,
"preview": "{\n \"name\": \"nuxt-app\",\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"nuxt build\",\n \"build:imag"
},
{
"path": "pages/[id].vue",
"chars": 2390,
"preview": "<script setup lang=\"ts\">\nconst route = useRoute()\nconst router = useRouter()\nconst { locale } = useI18n()\nconst localePa"
},
{
"path": "pages/index.vue",
"chars": 24075,
"preview": "<script setup lang=\"ts\">\nimport { Document } from '@akryum/flexsearch-es'\nimport { qualityMap } from '~/utils'\nimport { "
},
{
"path": "public/site.webmanifest",
"chars": 313,
"preview": "{\n \"name\": \"SearchEmoji\",\n \"short_name\": \"SearchEmoji\",\n \"icons\": [\n {\n \"src\": \"/android-chro"
},
{
"path": "scripts/copyFile.ts",
"chars": 124,
"preview": "import { $ } from 'zx'\nasync function main () {\n await $`cp -r ./data ./dist`\n // await $`cp -r ./data ./output`\n}\nmai"
},
{
"path": "scripts/generateEmojiData.ts",
"chars": 1852,
"preview": "// import { fetch } from 'undici'\nimport stringify from 'json-stringify-pretty-compact'\nimport { promises as fs } from '"
},
{
"path": "scripts/generateGroupName.ts",
"chars": 2166,
"preview": "import { promises as fs } from 'fs'\nimport { chatGPT } from './openAI'\nimport { groupNamePrompt } from './prompts'\nimpor"
},
{
"path": "scripts/generateKeywords.ts",
"chars": 3424,
"preview": "import { promises as fs } from 'fs'\nimport { chatGPT } from './openAI'\nimport { keywords } from './prompts'\nimport local"
},
{
"path": "scripts/generateLocale.ts",
"chars": 1638,
"preview": "import en from '../lang/en.json'\nimport zh from '../lang/zh-hans.json'\nimport { localePrompt } from './prompts'\nimport {"
},
{
"path": "scripts/handle.ts",
"chars": 5730,
"preview": "import { promises as fs } from 'fs'\nimport stringify from 'json-stringify-pretty-compact'\nimport { chatGPT } from './ope"
},
{
"path": "scripts/openAI.ts",
"chars": 2665,
"preview": "import { createParser } from 'eventsource-parser'\nimport { ProxyAgent, fetch, Response } from 'undici'\nimport { Readable"
},
{
"path": "scripts/prompts.ts",
"chars": 9336,
"preview": "export const keywords = (\n langs: string[],\n emojis: string[]\n) => `I want to build an Emoji search engine to help peo"
},
{
"path": "server/api/emoji/[id].ts",
"chars": 644,
"preview": "export default defineEventHandler(ev => {\n const id = ev.context.params?.id || ''\n const query = getQuery(ev)\n const "
},
{
"path": "server/api/emojis.ts",
"chars": 793,
"preview": "export default defineEventHandler(ev => {\n const query = getQuery(ev)\n const locale = query.locale as string\n const q"
},
{
"path": "server/api/home.ts",
"chars": 834,
"preview": "export default defineEventHandler(ev => {\n const query = getQuery(ev)\n const locale = query.locale as string\n const q"
},
{
"path": "server/middleware/emoji.ts",
"chars": 2912,
"preview": "import { promises as fs } from 'fs'\n// import emojis from '../../data/emoji-index.json'\n// import groups from '../../dat"
},
{
"path": "server/plugins/handleQuery.ts",
"chars": 556,
"preview": "export default defineNitroPlugin(nitroApp => {\n nitroApp.hooks.hook('render:response', (response, { event }) => {\n i"
},
{
"path": "server/tsconfig.json",
"chars": 49,
"preview": "{\n \"extends\": \"../.nuxt/tsconfig.server.json\"\n}\n"
},
{
"path": "tailwind.config.ts",
"chars": 144,
"preview": "const { addDynamicIconSelectors } = require('@iconify/tailwind')\nexport default {\n darkMode: 'class',\n plugins: [addDy"
},
{
"path": "tsconfig.json",
"chars": 94,
"preview": "{\n // https://nuxt.com/docs/guide/concepts/typescript\n \"extends\": \"./.nuxt/tsconfig.json\"\n}\n"
},
{
"path": "utils/index.ts",
"chars": 147,
"preview": "export const qualityMap: Record<string, string> = {\n 'fully-qualified': 'f',\n 'minimally-qualified': 'm',\n unqualifie"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the rotick/searchemoji GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 83 files (12.7 MB), approximately 655.4k tokens, and a symbol index with 18 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.