Browse Source

Switch from EmojiOne to Twemoji, different emoji picker (#5046)

* Switch from EmojiOne to Twemoji, different emoji picker

* Make emoji-mart use a local spritesheet

* Fix emojify test

* yarn manage:translations
pull/4/head
Eugen Rochko 6 years ago
committed by GitHub
parent
commit
846cd4e838
4595 changed files with 3317 additions and 2189 deletions
  1. +3
    -1
      app/javascript/mastodon/emoji.js
  2. +1
    -1
      app/javascript/mastodon/emojione_light.js
  3. +1
    -1
      app/javascript/mastodon/features/compose/components/compose_form.js
  4. +258
    -66
      app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
  5. +1
    -1
      app/javascript/mastodon/features/ui/util/async-components.js
  6. +4
    -0
      app/javascript/mastodon/locales/ar.json
  7. +4
    -0
      app/javascript/mastodon/locales/bg.json
  8. +4
    -0
      app/javascript/mastodon/locales/ca.json
  9. +4
    -0
      app/javascript/mastodon/locales/de.json
  10. +16
    -9
      app/javascript/mastodon/locales/defaultMessages.json
  11. +4
    -0
      app/javascript/mastodon/locales/en.json
  12. +4
    -0
      app/javascript/mastodon/locales/eo.json
  13. +4
    -0
      app/javascript/mastodon/locales/es.json
  14. +4
    -0
      app/javascript/mastodon/locales/fa.json
  15. +4
    -0
      app/javascript/mastodon/locales/fi.json
  16. +4
    -0
      app/javascript/mastodon/locales/fr.json
  17. +4
    -0
      app/javascript/mastodon/locales/he.json
  18. +4
    -0
      app/javascript/mastodon/locales/hr.json
  19. +4
    -0
      app/javascript/mastodon/locales/hu.json
  20. +4
    -0
      app/javascript/mastodon/locales/id.json
  21. +4
    -0
      app/javascript/mastodon/locales/io.json
  22. +4
    -0
      app/javascript/mastodon/locales/it.json
  23. +4
    -0
      app/javascript/mastodon/locales/ja.json
  24. +4
    -0
      app/javascript/mastodon/locales/ko.json
  25. +6
    -5
      app/javascript/mastodon/locales/nl.json
  26. +4
    -0
      app/javascript/mastodon/locales/no.json
  27. +4
    -0
      app/javascript/mastodon/locales/oc.json
  28. +4
    -0
      app/javascript/mastodon/locales/pl.json
  29. +4
    -4
      app/javascript/mastodon/locales/pt-BR.json
  30. +4
    -0
      app/javascript/mastodon/locales/pt.json
  31. +4
    -0
      app/javascript/mastodon/locales/ru.json
  32. +4
    -0
      app/javascript/mastodon/locales/th.json
  33. +4
    -0
      app/javascript/mastodon/locales/tr.json
  34. +4
    -0
      app/javascript/mastodon/locales/uk.json
  35. +4
    -0
      app/javascript/mastodon/locales/zh-CN.json
  36. +4
    -0
      app/javascript/mastodon/locales/zh-HK.json
  37. +4
    -0
      app/javascript/mastodon/locales/zh-TW.json
  38. +1
    -1
      app/javascript/mastodon/reducers/compose.js
  39. +1
    -0
      app/javascript/styles/application.scss
  40. +35
    -183
      app/javascript/styles/components.scss
  41. +197
    -0
      app/javascript/styles/emoji_picker.scss
  42. +1
    -1
      app/views/layouts/application.html.haml
  43. +1
    -0
      package.json
  44. BIN
     
  45. +0
    -2
      public/emoji/0023-20e3.svg
  46. BIN
     
  47. +0
    -1
      public/emoji/0023.svg
  48. BIN
     
  49. +0
    -2
      public/emoji/002a-20e3.svg
  50. BIN
     
  51. +0
    -1
      public/emoji/002a.svg
  52. BIN
     
  53. +0
    -2
      public/emoji/0030-20e3.svg
  54. BIN
     
  55. +0
    -1
      public/emoji/0030.svg
  56. BIN
     
  57. +0
    -2
      public/emoji/0031-20e3.svg
  58. BIN
     
  59. +0
    -1
      public/emoji/0031.svg
  60. BIN
     
  61. +0
    -2
      public/emoji/0032-20e3.svg
  62. BIN
     
  63. +0
    -1
      public/emoji/0032.svg
  64. BIN
     
  65. +0
    -2
      public/emoji/0033-20e3.svg
  66. BIN
     
  67. +0
    -1
      public/emoji/0033.svg
  68. BIN
     
  69. +0
    -2
      public/emoji/0034-20e3.svg
  70. BIN
     
  71. +0
    -1
      public/emoji/0034.svg
  72. BIN
     
  73. +0
    -2
      public/emoji/0035-20e3.svg
  74. BIN
     
  75. +0
    -1
      public/emoji/0035.svg
  76. BIN
     
  77. +0
    -2
      public/emoji/0036-20e3.svg
  78. BIN
     
  79. +0
    -1
      public/emoji/0036.svg
  80. BIN
     
  81. +0
    -2
      public/emoji/0037-20e3.svg
  82. BIN
     
  83. +0
    -1
      public/emoji/0037.svg
  84. BIN
     
  85. +0
    -2
      public/emoji/0038-20e3.svg
  86. BIN
     
  87. +0
    -1
      public/emoji/0038.svg
  88. BIN
     
  89. +0
    -2
      public/emoji/0039-20e3.svg
  90. BIN
     
  91. +0
    -1
      public/emoji/0039.svg
  92. BIN
     
  93. +0
    -1
      public/emoji/00a9.svg
  94. BIN
     
  95. +0
    -1
      public/emoji/00ae.svg
  96. BIN
     
  97. +1
    -1
      public/emoji/1f004.svg
  98. BIN
     
  99. +1
    -1
      public/emoji/1f0cf.svg
  100. BIN
     

+ 3
- 1
app/javascript/mastodon/emoji.js View File

@ -3,6 +3,8 @@ import Trie from 'substring-trie';
const trie = new Trie(Object.keys(unicodeMapping));
const assetHost = process.env.CDN_HOST || '';
const emojify = (str, customEmojis = {}) => {
let rtn = '';
for (;;) {
@ -37,7 +39,7 @@ const emojify = (str, customEmojis = {}) => {
str = str.slice(i + 1);
} else {
const [filename, shortCode] = unicodeMapping[match];
rtn += str.slice(0, i) + `<img draggable="false" class="emojione" alt="${match}" title=":${shortCode}:" src="/emoji/${filename}.svg" />`;
rtn += str.slice(0, i) + `<img draggable="false" class="emojione" alt="${match}" title=":${shortCode}:" src="${assetHost}/emoji/${filename}.svg" />`;
str = str.slice(i + match.length);
}
}

+ 1
- 1
app/javascript/mastodon/emojione_light.js View File

@ -9,5 +9,5 @@ const excluded = ['®', '©', '™'];
module.exports.unicodeMapping = Object.keys(emojione.jsEscapeMap)
.filter(c => !excluded.includes(c))
.map(unicodeStr => [unicodeStr, mappedUnicode[emojione.jsEscapeMap[unicodeStr]]])
.map(([unicodeStr, shortCode]) => ({ [unicodeStr]: [emojione.emojioneList[shortCode].fname, shortCode.slice(1, shortCode.length - 1)] }))
.map(([unicodeStr, shortCode]) => ({ [unicodeStr]: [emojione.emojioneList[shortCode].fname.replace(/^0+/g, ''), shortCode.slice(1, shortCode.length - 1)] }))
.reduce((x, y) => Object.assign(x, y), { });

+ 1
- 1
app/javascript/mastodon/features/compose/components/compose_form.js View File

@ -138,7 +138,7 @@ export default class ComposeForm extends ImmutablePureComponent {
handleEmojiPick = (data) => {
const position = this.autosuggestTextarea.textarea.selectionStart;
const emojiChar = data.unicode.split('-').map(code => String.fromCodePoint(parseInt(code, 16))).join('');
const emojiChar = data.native;
this._restoreCaret = position + emojiChar.length + 1;
this.props.onPickEmoji(position, data);
}

+ 258
- 66
app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js View File

@ -1,12 +1,17 @@
import React from 'react';
import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components';
import { Overlay } from 'react-overlays';
import classNames from 'classnames';
const messages = defineMessages({
emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },
emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' },
emoji_not_found: { id: 'emoji_button.not_found', defaultMessage: 'No emojos!! (╯°□°)╯︵ ┻━┻' },
custom: { id: 'emoji_button.custom', defaultMessage: 'Custom' },
recent: { id: 'emoji_button.recent', defaultMessage: 'Frequently used' },
search_results: { id: 'emoji_button.search_results', defaultMessage: 'Search results' },
people: { id: 'emoji_button.people', defaultMessage: 'People' },
nature: { id: 'emoji_button.nature', defaultMessage: 'Nature' },
food: { id: 'emoji_button.food', defaultMessage: 'Food & Drink' },
@ -17,13 +22,234 @@ const messages = defineMessages({
flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' },
});
const settings = {
imageType: 'png',
sprites: false,
imagePathPNG: '/emoji/',
};
const assetHost = process.env.CDN_HOST || '';
let EmojiPicker; // load asynchronously
let EmojiPicker, Emoji; // load asynchronously
const backgroundImageFn = () => `${assetHost}/emoji/sheet.png`;
class ModifierPickerMenu extends React.PureComponent {
static propTypes = {
active: PropTypes.bool,
onSelect: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
};
handleClick = (e) => {
const modifier = [].slice.call(e.currentTarget.parentNode.children).indexOf(e.target) + 1;
this.props.onSelect(modifier);
}
componentWillReceiveProps (nextProps) {
if (nextProps.active) {
this.attachListeners();
} else {
this.removeListeners();
}
}
componentWillUnmount () {
this.removeListeners();
}
handleDocumentClick = e => {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
}
attachListeners () {
document.addEventListener('click', this.handleDocumentClick, false);
document.addEventListener('touchend', this.handleDocumentClick, false);
}
removeListeners () {
document.removeEventListener('click', this.handleDocumentClick, false);
document.removeEventListener('touchend', this.handleDocumentClick, false);
}
setRef = c => {
this.node = c;
}
render () {
const { active } = this.props;
return (
<div className='emoji-picker-dropdown__modifiers__menu' style={{ display: active ? 'block' : 'none' }} ref={this.setRef}>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={1} backgroundImageFn={backgroundImageFn} /></button>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} /></button>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} /></button>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} /></button>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} /></button>
<button onClick={this.handleClick}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} /></button>
</div>
);
}
}
class ModifierPicker extends React.PureComponent {
static propTypes = {
active: PropTypes.bool,
modifier: PropTypes.number,
onChange: PropTypes.func,
onClose: PropTypes.func,
onOpen: PropTypes.func,
};
handleClick = () => {
if (this.props.active) {
this.props.onClose();
} else {
this.props.onOpen();
}
}
handleSelect = modifier => {
this.props.onChange(modifier);
this.props.onClose();
}
render () {
const { active, modifier } = this.props;
return (
<div className='emoji-picker-dropdown__modifiers'>
<Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} />
<ModifierPickerMenu active={active} onSelect={this.handleSelect} onClose={this.props.onClose} />
</div>
);
}
}
@injectIntl
class EmojiPickerMenu extends React.PureComponent {
static propTypes = {
loading: PropTypes.bool,
onClose: PropTypes.func.isRequired,
onPick: PropTypes.func.isRequired,
style: PropTypes.object,
placement: PropTypes.string,
arrowOffsetLeft: PropTypes.string,
arrowOffsetTop: PropTypes.string,
intl: PropTypes.object.isRequired,
};
static defaultProps = {
style: {},
loading: true,
placement: 'bottom',
};
state = {
modifierOpen: false,
modifier: 1,
};
handleDocumentClick = e => {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
}
componentDidMount () {
document.addEventListener('click', this.handleDocumentClick, false);
document.addEventListener('touchend', this.handleDocumentClick, false);
}
componentWillUnmount () {
document.removeEventListener('click', this.handleDocumentClick, false);
document.removeEventListener('touchend', this.handleDocumentClick, false);
}
setRef = c => {
this.node = c;
}
getI18n = () => {
const { intl } = this.props;
return {
search: intl.formatMessage(messages.emoji_search),
notfound: intl.formatMessage(messages.emoji_not_found),
categories: {
search: intl.formatMessage(messages.search_results),
recent: intl.formatMessage(messages.recent),
people: intl.formatMessage(messages.people),
nature: intl.formatMessage(messages.nature),
foods: intl.formatMessage(messages.food),
activity: intl.formatMessage(messages.activity),
places: intl.formatMessage(messages.travel),
objects: intl.formatMessage(messages.objects),
symbols: intl.formatMessage(messages.symbols),
flags: intl.formatMessage(messages.flags),
custom: intl.formatMessage(messages.custom),
},
};
}
handleClick = emoji => {
this.props.onClose();
this.props.onPick(emoji);
}
handleModifierOpen = () => {
this.setState({ modifierOpen: true });
}
handleModifierClose = () => {
this.setState({ modifierOpen: false });
}
handleModifierChange = modifier => {
if (modifier !== this.state.modifier) {
this.setState({ modifier });
}
}
render () {
const { loading, style, intl } = this.props;
if (loading) {
return <div style={{ width: 299 }} />;
}
const title = intl.formatMessage(messages.emoji);
const { modifierOpen, modifier } = this.state;
return (
<div className={classNames('emoji-picker-dropdown__menu', { selecting: modifierOpen })} style={style} ref={this.setRef}>
<EmojiPicker
perLine={8}
emojiSize={22}
sheetSize={32}
color=''
emoji=''
set='twitter'
title={title}
i18n={this.getI18n()}
onClick={this.handleClick}
skin={modifier}
backgroundImageFn={backgroundImageFn}
/>
<ModifierPicker
active={modifierOpen}
modifier={modifier}
onOpen={this.handleModifierOpen}
onClose={this.handleModifierClose}
onChange={this.handleModifierChange}
/>
</div>
);
}
}
@injectIntl
export default class EmojiPickerDropdown extends React.PureComponent {
@ -42,20 +268,17 @@ export default class EmojiPickerDropdown extends React.PureComponent {
this.dropdown = c;
}
handleChange = (data) => {
this.dropdown.hide();
this.props.onPickEmoji(data);
}
onShowDropdown = () => {
this.setState({ active: true });
if (!EmojiPicker) {
this.setState({ loading: true });
EmojiPickerAsync().then(TheEmojiPicker => {
EmojiPicker = TheEmojiPicker.default;
EmojiPickerAsync().then(EmojiMart => {
EmojiPicker = EmojiMart.Picker;
Emoji = EmojiMart.Emoji;
this.setState({ loading: false });
}).catch(() => {
// TODO: show the user an error?
this.setState({ loading: false });
});
}
@ -75,70 +298,39 @@ export default class EmojiPickerDropdown extends React.PureComponent {
}
}
onEmojiPickerKeyDown = (e) => {
handleKeyDown = e => {
if (e.key === 'Escape') {
this.onHideDropdown();
}
}
render () {
const { intl } = this.props;
setTargetRef = c => {
this.target = c;
}
const categories = {
people: {
title: intl.formatMessage(messages.people),
emoji: 'smile',
},
nature: {
title: intl.formatMessage(messages.nature),
emoji: 'hamster',
},
food: {
title: intl.formatMessage(messages.food),
emoji: 'pizza',
},
activity: {
title: intl.formatMessage(messages.activity),
emoji: 'soccer',
},
travel: {
title: intl.formatMessage(messages.travel),
emoji: 'earth_americas',
},
objects: {
title: intl.formatMessage(messages.objects),
emoji: 'bulb',
},
symbols: {
title: intl.formatMessage(messages.symbols),
emoji: 'clock9',
},
flags: {
title: intl.formatMessage(messages.flags),
emoji: 'flag_gb',
},
};
findTarget = () => {
return this.target;
}
const { active, loading } = this.state;
render () {
const { intl, onPickEmoji } = this.props;
const title = intl.formatMessage(messages.emoji);
const { active, loading } = this.state;
return (
<Dropdown ref={this.setRef} className='emoji-picker__dropdown' active={active && !loading} onShow={this.onShowDropdown} onHide={this.onHideDropdown}>
<DropdownTrigger className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onKeyDown={this.onToggle} tabIndex={0} >
<div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}>
<div ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onClick={this.onToggle} onKeyDown={this.onToggle} tabIndex={0}>
<img
className={`emojione ${active && loading ? 'pulse-loading' : ''}`}
className={classNames('emojione', { 'pulse-loading': active && loading })}
alt='🙂'
src='/emoji/1f602.svg'
src={`${assetHost}/emoji/1f602.svg`}
/>
</DropdownTrigger>
<DropdownContent className='dropdown__left'>
{
this.state.active && !this.state.loading &&
(<EmojiPicker emojione={settings} onChange={this.handleChange} searchPlaceholder={intl.formatMessage(messages.emoji_search)} onKeyDown={this.onEmojiPickerKeyDown} categories={categories} search />)
}
</DropdownContent>
</Dropdown>
</div>
<Overlay show={active} placement='bottom' target={this.findTarget}>
<EmojiPickerMenu loading={loading} onClose={this.onHideDropdown} onPick={onPickEmoji} />
</Overlay>
</div>
);
}

+ 1
- 1
app/javascript/mastodon/features/ui/util/async-components.js View File

@ -1,5 +1,5 @@
export function EmojiPicker () {
return import(/* webpackChunkName: "emojione_picker" */'emojione-picker');
return import(/* webpackChunkName: "emoji_picker" */'emoji-mart');
}
export function Compose () {

+ 4
- 0
app/javascript/mastodon/locales/ar.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "الأنشطة",
"emoji_button.custom": "Custom",
"emoji_button.flags": "الأعلام",
"emoji_button.food": "الطعام والشراب",
"emoji_button.label": "أدرج إيموجي",
"emoji_button.nature": "الطبيعة",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "أشياء",
"emoji_button.people": "الناس",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "ابحث...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "رموز",
"emoji_button.travel": "أماكن و أسفار",
"empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.",

+ 4
- 0
app/javascript/mastodon/locales/bg.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/ca.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activitat",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Menjar i Beure",
"emoji_button.label": "Inserir emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objectes",
"emoji_button.people": "Gent",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Cercar...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs",
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per fer rodar la pilota!",

+ 4
- 0
app/javascript/mastodon/locales/de.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, in dem du den folgenden Code einfügst.",
"embed.preview": "So wird es aussehen:",
"emoji_button.activity": "Aktivitäten",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flaggen",
"emoji_button.food": "Essen und Trinken",
"emoji_button.label": "Emoji einfügen",
"emoji_button.nature": "Natur",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Dinge",
"emoji_button.people": "Leute",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Suche…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reise und Orte",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe etwas öffentlich, um den Ball ins Rollen zu bringen!",

+ 16
- 9
app/javascript/mastodon/locales/defaultMessages.json View File

@ -516,6 +516,22 @@
"defaultMessage": "Search...",
"id": "emoji_button.search"
},
{
"defaultMessage": "No emojos!! (╯°□°)╯︵ ┻━┻",
"id": "emoji_button.not_found"
},
{
"defaultMessage": "Custom",
"id": "emoji_button.custom"
},
{
"defaultMessage": "Frequently used",
"id": "emoji_button.recent"
},
{
"defaultMessage": "Search results",
"id": "emoji_button.search_results"
},
{
"defaultMessage": "People",
"id": "emoji_button.people"
@ -1331,15 +1347,6 @@
],
"path": "app/javascript/mastodon/features/ui/components/upload_area.json"
},
{
"descriptors": [
{
"defaultMessage": "Close",
"id": "lightbox.close"
}
],
"path": "app/javascript/mastodon/features/ui/components/video_modal.json"
},
{
"descriptors": [
{

+ 4
- 0
app/javascript/mastodon/locales/en.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/eo.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/es.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.",
"embed.preview": "Así es como se verá:",
"emoji_button.activity": "Actividad",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Marcas",
"emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Gente",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Buscar…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",

+ 4
- 0
app/javascript/mastodon/locales/fa.json View File

@ -67,13 +67,17 @@
"embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
"embed.preview": "نوشتهٔ جاگذاری‌شده این گونه به نظر خواهد رسید:",
"emoji_button.activity": "فعالیت",
"emoji_button.custom": "Custom",
"emoji_button.flags": "پرچم‌ها",
"emoji_button.food": "غذا و نوشیدنی",
"emoji_button.label": "افزودن شکلک",
"emoji_button.nature": "طبیعت",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "اشیا",
"emoji_button.people": "مردم",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "جستجو...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان",
"empty_column.community": "فهرست نوشته‌های محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",

+ 4
- 0
app/javascript/mastodon/locales/fi.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/fr.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Intégrez ce statut à votre site en copiant ce code ci-dessous.",
"embed.preview": "Il apparaîtra comme cela : ",
"emoji_button.activity": "Activités",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Drapeaux",
"emoji_button.food": "Boire et manger",
"emoji_button.label": "Insérer un emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objets",
"emoji_button.people": "Personnages",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Recherche…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux et voyages",
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",

+ 4
- 0
app/javascript/mastodon/locales/he.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "פעילות",
"emoji_button.custom": "Custom",
"emoji_button.flags": "דגלים",
"emoji_button.food": "אוכל ושתיה",
"emoji_button.label": "הוספת אמוג'י",
"emoji_button.nature": "טבע",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "חפצים",
"emoji_button.people": "אנשים",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "חיפוש...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים",
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",

+ 4
- 0
app/javascript/mastodon/locales/hr.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivnost",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Zastave",
"emoji_button.food": "Hrana & Piće",
"emoji_button.label": "Umetni smajlije",
"emoji_button.nature": "Priroda",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekti",
"emoji_button.people": "Ljudi",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Traži...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & Mjesta",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",

+ 4
- 0
app/javascript/mastodon/locales/hu.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/id.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivitas",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Bendera",
"emoji_button.food": "Makanan & Minuman",
"emoji_button.label": "Tambahkan emoji",
"emoji_button.nature": "Alam",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Benda-benda",
"emoji_button.people": "Orang",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Cari...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simbol",
"emoji_button.travel": "Tempat Wisata",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",

+ 4
- 0
app/javascript/mastodon/locales/io.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",

+ 4
- 0
app/javascript/mastodon/locales/it.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserisci emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",

+ 4
- 0
app/javascript/mastodon/locales/ja.json View File

@ -67,13 +67,17 @@
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
"embed.preview": "表示例:",
"emoji_button.activity": "活動",
"emoji_button.custom": "Custom",
"emoji_button.flags": "国旗",
"emoji_button.food": "食べ物",
"emoji_button.label": "絵文字を追加",
"emoji_button.nature": "自然",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物",
"emoji_button.people": "人々",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "検索...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "記号",
"emoji_button.travel": "旅行と場所",
"empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",

+ 4
- 0
app/javascript/mastodon/locales/ko.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "활동",
"emoji_button.custom": "Custom",
"emoji_button.flags": "국기",
"emoji_button.food": "음식",
"emoji_button.label": "emoji를 추가",
"emoji_button.nature": "자연",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "물건",
"emoji_button.people": "사람들",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "검색...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "기호",
"emoji_button.travel": "여행과 장소",
"empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",

+ 6
- 5
app/javascript/mastodon/locales/nl.json View File

@ -33,9 +33,8 @@
"column.home": "Start",
"column.mutes": "Genegeerde gebruikers",
"column.notifications": "Meldingen",
"column.pins": "Pinned toot",
"column.public": "Globale tijdlijn",
"column.pins": "Vastgezette toots",
"column.public": "Globale tijdlijn",
"column_back_button.label": "terug",
"column_header.hide_settings": "Instellingen verbergen",
"column_header.moveLeft_settings": "Kolom naar links verplaatsen",
@ -68,13 +67,17 @@
"embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.",
"embed.preview": "Zo komt het eruit te zien:",
"emoji_button.activity": "Activiteiten",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Vlaggen",
"emoji_button.food": "Eten en drinken",
"emoji_button.label": "Emoji toevoegen",
"emoji_button.nature": "Natuur",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Voorwerpen",
"emoji_button.people": "Mensen",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Zoeken...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
@ -87,7 +90,6 @@
"follow_request.authorize": "Goedkeuren",
"follow_request.reject": "Afkeuren",
"getting_started.appsshort": "Apps",
"getting_started.donate": "Doneren",
"getting_started.faq": "FAQ",
"getting_started.heading": "Beginnen",
"getting_started.open_source_notice": "Mastodon is open-sourcesoftware. Je kunt bijdragen of problemen melden op GitHub via {github}.",
@ -112,10 +114,9 @@
"navigation_bar.info": "Uitgebreide informatie",
"navigation_bar.logout": "Afmelden",
"navigation_bar.mutes": "Genegeerde gebruikers",
"navigation_bar.pins": "Pinned toots",
"navigation_bar.pins": "Vastgezette toots",
"navigation_bar.preferences": "Instellingen",
"navigation_bar.public_timeline": "Globale tijdlijn",
"navigation_bar.pins": "Vastgezette toots",
"notification.favourite": "{name} markeerde jouw toot als favoriet",
"notification.follow": "{name} volgt jou nu",
"notification.mention": "{name} vermeldde jou",

+ 4
- 0
app/javascript/mastodon/locales/no.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivitet",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flagg",
"emoji_button.food": "Mat og drikke",
"emoji_button.label": "Sett inn emoji",
"emoji_button.nature": "Natur",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekter",
"emoji_button.people": "Mennesker",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Søk...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",

+ 4
- 0
app/javascript/mastodon/locales/oc.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.",
"embed.preview": "Semblarà aquò : ",
"emoji_button.activity": "Activitats",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Drapèus",
"emoji_button.food": "Beure e manjar",
"emoji_button.label": "Inserir un emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objèctes",
"emoji_button.people": "Gents",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Cercar…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",

+ 4
- 0
app/javascript/mastodon/locales/pl.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Osadź ten status na swojej stronie wklejając poniższy kod.",
"embed.preview": "Tak będzie to wyglądać:",
"emoji_button.activity": "Aktywność",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flagi",
"emoji_button.food": "Żywność i napoje",
"emoji_button.label": "Wstaw emoji",
"emoji_button.nature": "Natura",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekty",
"emoji_button.people": "Ludzie",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Szukaj…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",

+ 4
- 4
app/javascript/mastodon/locales/pt-BR.json View File

@ -35,7 +35,6 @@
"column.notifications": "Notificações",
"column.pins": "Postagens fixadas",
"column.public": "Global",
"column.pins": "Postagens fixadas",
"column_back_button.label": "Voltar",
"column_header.hide_settings": "Esconder configurações",
"column_header.moveLeft_settings": "Mover coluna para a esquerda",
@ -68,13 +67,17 @@
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo:",
"embed.preview": "Aqui está uma previsão de como ficará:",
"emoji_button.activity": "Atividades",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Bandeiras",
"emoji_button.food": "Comidas & Bebidas",
"emoji_button.label": "Inserir Emoji",
"emoji_button.nature": "Natureza",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Pessoas",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Buscar...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
@ -114,9 +117,6 @@
"navigation_bar.pins": "Postagens fixadas",
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global",
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global",
"navigation_bar.pins": "Postagens fixadas",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu",
"notification.mention": "{name} te mencionou",

+ 4
- 0
app/javascript/mastodon/locales/pt.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserir Emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "Ainda não existem conteúdo local para mostrar!",

+ 4
- 0
app/javascript/mastodon/locales/ru.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Занятия",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Флаги",
"emoji_button.food": "Еда и напитки",
"emoji_button.label": "Вставить эмодзи",
"emoji_button.nature": "Природа",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предметы",
"emoji_button.people": "Люди",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Найти...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",

+ 4
- 0
app/javascript/mastodon/locales/th.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",

+ 4
- 0
app/javascript/mastodon/locales/tr.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivite",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Bayraklar",
"emoji_button.food": "Yiyecek ve İçecek",
"emoji_button.label": "Emoji ekle",
"emoji_button.nature": "Doğa",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Nesneler",
"emoji_button.people": "İnsanlar",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Emoji ara...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
"empty_column.community": "Yerel zaman tüneliniz boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın.",

+ 4
- 0
app/javascript/mastodon/locales/uk.json View File

@ -67,13 +67,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Заняття",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Прапори",
"emoji_button.food": "Їжа та напої",
"emoji_button.label": "Вставити емодзі",
"emoji_button.nature": "Природа",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предмети",
"emoji_button.people": "Люди",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Знайти...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",

+ 4
- 0
app/javascript/mastodon/locales/zh-CN.json View File

@ -67,13 +67,17 @@
"embed.instructions": "要内嵌此嘟文,请将以下代码贴进你的网站。",
"embed.preview": "到时大概长这样:",
"emoji_button.activity": "活动",
"emoji_button.custom": "Custom",
"emoji_button.flags": "旗帜",
"emoji_button.food": "食物和饮料",
"emoji_button.label": "加入表情符号",
"emoji_button.nature": "自然",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物体",
"emoji_button.people": "人物",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "搜索…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅途和地点",
"empty_column.community": "本站时间轴暂时未有内容,快嘟几个来抢头香啊!",

+ 4
- 0
app/javascript/mastodon/locales/zh-HK.json View File

@ -67,13 +67,17 @@
"embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會是這樣:",
"emoji_button.activity": "活動",
"emoji_button.custom": "Custom",
"emoji_button.flags": "旗幟",
"emoji_button.food": "飲飲食食",
"emoji_button.label": "加入表情符號",
"emoji_button.nature": "自然",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物品",
"emoji_button.people": "人物",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "搜尋…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
"empty_column.community": "本站時間軸暫時未有內容,快文章來搶頭香啊!",

+ 4
- 0
app/javascript/mastodon/locales/zh-TW.json View File

@ -67,13 +67,17 @@
"embed.instructions": "要內嵌此貼文,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會變成這樣:",
"emoji_button.activity": "活動",
"emoji_button.custom": "Custom",
"emoji_button.flags": "旗幟",
"emoji_button.food": "食物與飲料",
"emoji_button.label": "插入表情符號",
"emoji_button.nature": "自然",
"emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物件",
"emoji_button.people": "人",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "搜尋…",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
"empty_column.community": "本地時間軸是空的。公開寫點什麼吧!",

+ 1
- 1
app/javascript/mastodon/reducers/compose.js View File

@ -120,7 +120,7 @@ const insertSuggestion = (state, position, token, completion) => {
};
const insertEmoji = (state, position, emojiData) => {
const emoji = emojiData.unicode.split('-').map(code => String.fromCodePoint(parseInt(code, 16))).join('');
const emoji = emojiData.native;
return state.withMutations(map => {
map.update('text', oldText => `${oldText.slice(0, position)}${emoji} ${oldText.slice(position)}`);

+ 1
- 0
app/javascript/styles/application.scss View File

@ -15,6 +15,7 @@
@import 'accounts';
@import 'stream_entries';
@import 'components';
@import 'emoji_picker';
@import 'about';
@import 'tables';
@import 'admin';

+ 35
- 183
app/javascript/styles/components.scss View File

@ -390,17 +390,11 @@
.compose-form__autosuggest-wrapper {
position: relative;
.emoji-picker__dropdown {
.emoji-picker-dropdown {
position: absolute;
right: 5px;
top: 5px;
&.dropdown--active::after {
border-color: transparent transparent $base-border-color;
bottom: -1px;
right: 8px;
}
::-webkit-scrollbar-track:hover,
::-webkit-scrollbar-track:active {
background-color: rgba($base-overlay-background, 0.3);
@ -2583,197 +2577,55 @@ button.icon-button.active i.fa-retweet {
animation-direction: alternate;
}
.emoji-dialog {
width: 245px;
height: 270px;
.emoji-picker-dropdown__menu {
background: $simple-background-color;
box-sizing: border-box;
position: absolute;
box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
border-radius: 4px;
overflow: hidden;
position: relative;
box-shadow: 0 0 8px rgba($base-shadow-color, 0.2);
.emojione {
margin: 0;
width: 100%;
height: auto;
}
.emoji-dialog-header {
padding: 0 10px;
ul {
padding: 0;
margin: 0;
list-style: none;
}
li {
display: inline-block;
box-sizing: border-box;
padding: 10px 5px;
cursor: pointer;
border-bottom: 2px solid transparent;
.emoji {
width: 18px;
height: 18px;
}
img,
svg {
width: 18px;
height: 18px;
filter: grayscale(100%);
}
&:hover {
img,
svg {
filter: grayscale(0);
}
}
&.active {
border-bottom-color: $ui-highlight-color;
img,
svg {
filter: grayscale(0);
}
}
}
}
.emoji-row {
box-sizing: border-box;
overflow-y: hidden;
padding-left: 10px;
.emoji {
display: inline-block;
padding: 2.5px;
border-radius: 4px;
}
}
.emoji-category-header {
box-sizing: border-box;
overflow-y: hidden;
padding: 10px 8px 10px 16px;
display: table;
> * {
display: table-cell;
vertical-align: middle;
}
}
margin-top: 5px;
.emoji-category-title {
font-size: 12px;
text-transform: uppercase;
font-weight: 500;
color: darken($ui-secondary-color, 18%);
cursor: default;
.emoji-mart-scroll {
transition: opacity 200ms ease;
}
.emoji-category-heading-decoration {
text-align: right;
&.selecting .emoji-mart-scroll {
opacity: 0.5;
}
}
.modifiers {
list-style: none;
padding: 0;
margin: 0;
vertical-align: middle;
white-space: nowrap;
margin-top: 4px;
li {
display: inline-block;
padding: 0 2px;
&:last-of-type {
padding-right: 0;
}
}
.modifier {
display: inline-block;
border-radius: 10px;
width: 15px;
height: 15px;
position: relative;
cursor: pointer;
&.active::after {
content: "";
display: block;
position: absolute;
width: 7px;
height: 7px;
border-radius: 10px;
border: 2px solid $base-border-color;
top: 2px;
left: 2px;
}
}
}
.emoji-picker-dropdown__modifiers {
position: absolute;
top: 60px;
right: 11px;
cursor: pointer;
}
.emoji-search-wrapper {
padding: 10px;
border-bottom: 1px solid lighten($ui-secondary-color, 4%);
}
.emoji-picker-dropdown__modifiers__menu {
position: absolute;
z-index: 4;
top: -4px;
left: -8px;
background: $simple-background-color;
border-radius: 4px;
box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
overflow: hidden;
.emoji-search {
font-size: 14px;
font-weight: 400;
padding: 7px 9px;
font-family: inherit;
button {
display: block;
width: 100%;
background: rgba($ui-secondary-color, 0.3);
color: darken($ui-secondary-color, 18%);
border: 1px solid $ui-secondary-color;
border-radius: 4px;
}
.emoji-categories-wrapper {
position: absolute;
top: 42px;
bottom: 0;
left: 0;
right: 0;
}
.emoji-search-wrapper + .emoji-categories-wrapper {
top: 93px;
}
.emoji-row .emoji {
img,
svg {
transition: transform 60ms ease-in-out;
}
&:hover {
background: lighten($ui-secondary-color, 3%);
cursor: pointer;
border: 0;
padding: 4px 8px;
background: transparent;
img,
svg {
transform: translateZ(0) scale(1.2);
}
&:hover,
&:focus,
&:active {
background: rgba($ui-secondary-color, 0.4);
}
}
.emoji {
width: 22px;
.emoji-mart-emoji {
height: 22px;
cursor: pointer;
&:focus {
outline: 0;
}
}
}

+ 197
- 0
app/javascript/styles/emoji_picker.scss View File

@ -0,0 +1,197 @@
.emoji-mart {
&,
* {
box-sizing: border-box;
line-height: 1.15;
}
font-size: 13px;
display: inline-block;
color: $ui-base-color;
.emoji-mart-emoji {
padding: 6px;
}
}
.emoji-mart-bar {
border: 0 solid darken($ui-secondary-color, 8%);
&:first-child {
border-bottom-width: 1px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
background: $ui-secondary-color;
}
&:last-child {
border-top-width: 1px;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
display: none;
}
}
.emoji-mart-anchors {
display: flex;
justify-content: space-between;
padding: 0 6px;
color: $ui-primary-color;
line-height: 0;
}
.emoji-mart-anchor {
position: relative;
flex: 1;
text-align: center;
padding: 12px 4px;
overflow: hidden;
transition: color .1s ease-out;
cursor: pointer;
&:hover {
color: darken($ui-primary-color, 4%);
}
}
.emoji-mart-anchor-selected {
color: darken($ui-highlight-color, 3%);
&:hover {
color: darken($ui-highlight-color, 3%);
}
.emoji-mart-anchor-bar {
bottom: 0;
}
}
.emoji-mart-anchor-bar {
position: absolute;
bottom: -3px;
left: 0;
width: 100%;
height: 3px;
background-color: darken($ui-highlight-color, 3%);
}
.emoji-mart-anchors {
i {
display: inline-block;
width: 100%;
max-width: 22px;
}
svg {
fill: currentColor;
max-height: 18px;
}
}
.emoji-mart-scroll {
overflow-y: scroll;
height: 270px;
padding: 0 6px 6px;
background: $simple-background-color;
}
.emoji-mart-search {
padding: 10px;
padding-right: 45px;
background: $simple-background-color;
input {
font-size: 14px;
font-weight: 400;
padding: 7px 9px;
font-family: inherit;
display: block;
width: 100%;
background: rgba($ui-secondary-color, 0.3);
color: $ui-primary-color;
border: 1px solid $ui-secondary-color;
border-radius: 4px;
&::-moz-focus-inner {
border: 0;
}
&::-moz-focus-inner,
&:focus,
&:active {
outline: 0 !important;
}
}
}
.emoji-mart-category .emoji-mart-emoji {
cursor: pointer;
span {
z-index: 1;
position: relative;
text-align: center;
}
&:hover::before {
z-index: 0;
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba($ui-secondary-color, 0.7);
border-radius: 100%;
}
}
.emoji-mart-category-label {
z-index: 2;
position: relative;
position: -webkit-sticky;
position: sticky;
top: 0;
span {
display: block;
width: 100%;
font-weight: 500;
padding: 5px 6px;
background: $simple-background-color;
}
}
.emoji-mart-emoji {
position: relative;
display: inline-block;
font-size: 0;
span {
width: 22px;
height: 22px;
}
}
.emoji-mart-no-results {
font-size: 14px;
text-align: center;
padding-top: 70px;
color: $ui-primary-color;
.emoji-mart-category-label {
display: none;
}
.emoji-mart-no-results-label {
margin-top: .2em;
}
.emoji-mart-emoji:hover::before {
content: none;
}
}
.emoji-mart-preview {
display: none;
}

+ 1
- 1
app/views/layouts/application.html.haml View File

@ -28,7 +28,7 @@
%link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('emojione_picker.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('emoji_picker.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
= javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous'
= csrf_meta_tags

+ 1
- 0
package.json View File

@ -45,6 +45,7 @@
"css-loader": "^0.28.4",
"detect-passive-events": "^1.0.2",
"dotenv": "^4.0.0",
"emoji-mart": "^1.0.1",
"emojione": "^2.2.7",
"emojione-picker": "^2.2.1",
"es6-symbol": "^3.1.1",

BIN
View File


+ 0
- 2
public/emoji/0023-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m49.4 24.9l1.6-6h-6.1l1.6-6h-6.1l-1.6 6h-8.1l1.6-6h-6.1l-1.6 6h-6.1l-1.6 6h6.1l-2.2 8h-6.1l-1.6 6h6.1l-1.6 6h6.1l1.6-6h8.1l-1.6 6h6.1l1.6-6h6.1l1.6-6h-6.1l2.2-8c0 0 6.1 0 6.1 0m-14.4 8h-8.1l2.2-8h8.1l-2.2 8" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0023.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m49.4 28l1.6-6h-6.1l1.6-6h-6.1l-1.6 6h-8.1l1.6-6h-6.1l-1.6 6h-6.1l-1.6 6h6.1l-2.2 8h-6.1l-1.7 6h6.1l-1.6 6h6.1l1.6-6h8.1l-1.6 6h6.1l1.6-6h6.1l1.6-6h-6.1l2.2-8h6.2m-14.4 8h-8.1l2.2-8h8.1l-2.2 8" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/002a-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m45.5 33.3c.4.2.5.5.5.9 0 .5-.3 1.2-1 2.3-.6 1.1-1.1 1.7-1.5 2-.4.2-.7.2-1.1 0l-8.6-6.2 1.2 10.5c.1.4-.1.7-.5.9-.4.2-1.3.3-2.5.3-1.2 0-2.1-.1-2.5-.3-.4-.2-.6-.5-.5-.9l1.1-10.5-8.5 6.2c-.3.2-.7.2-1.1 0-.4-.2-.9-.9-1.5-2-.6-1-.9-1.8-.9-2.3 0-.5.2-.8.5-.9l9.7-4.3-9.7-4.3c-.4-.2-.6-.5-.5-1 0-.5.3-1.2.9-2.3.6-1 1.1-1.7 1.5-1.9.4-.2.8-.2 1.1 0l8.5 6.2-1.1-10.4c-.1-.4.1-.7.5-1s1.3-.3 2.5-.3c1.2 0 2.1.1 2.5.3s.6.5.5 1l-1.1 10.5 8.6-6.2c.3-.2.7-.2 1.1 0 .4.2.9.9 1.5 2 .6 1 .9 1.8 1 2.2 0 .5-.1.8-.5 1l-9.8 4.2 9.7 4.3" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/002a.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m45.5 36.3c.4.2.5.5.5.9 0 .5-.3 1.2-1 2.3-.6 1.1-1.1 1.7-1.5 2-.4.2-.7.2-1.1 0l-8.6-6.2 1.2 10.5c.1.4-.1.7-.5.9-.4.2-1.3.3-2.5.3-1.2 0-2.1-.1-2.5-.3-.4-.2-.6-.5-.5-.9l1.1-10.5-8.5 6.2c-.3.2-.7.2-1.1 0-.4-.2-.9-.9-1.5-2-.6-1-.9-1.8-.9-2.3 0-.5.2-.8.5-.9l9.7-4.3-9.7-4.3c-.4-.2-.6-.5-.5-1 0-.5.3-1.2.9-2.3.6-1 1.1-1.7 1.5-1.9s.8-.2 1.1 0l8.5 6.2-1.1-10.4c-.1-.4.1-.7.5-1s1.3-.3 2.5-.3c1.2 0 2.1.1 2.5.3.4.2.6.5.5 1l-1.1 10.5 8.6-6.2c.3-.2.7-.2 1.1 0s.9.9 1.5 2c.6 1 .9 1.8 1 2.2 0 .5-.1.8-.5 1l-9.8 4.2 9.7 4.3" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0030-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m32 13c3 0 5.3 1.1 7 3.2 2 2.6 3 6.8 3 12.8 0 5.9-1 10.2-3 12.8-1.7 2.1-4 3.2-7 3.2-3 0-5.4-1.2-7.2-3.5-1.9-2.4-2.8-6.5-2.8-12.6 0-5.9 1-10.1 3-12.7 1.7-2.1 4-3.2 7-3.2m0 5c-.7 0-1.4.2-1.9.7s-1 1.3-1.3 2.5c-.4 1.6-.6 4.2-.6 7.8 0 3.7.2 6.2.5 7.6.4 1.4.8 2.3 1.4 2.7.6.5 1.2.7 1.9.7.7 0 1.4-.2 1.9-.7.6-.5 1-1.3 1.3-2.5.4-1.5.6-4.1.6-7.8 0-3.7-.2-6.2-.5-7.6-.4-1.4-.8-2.3-1.4-2.8-.6-.4-1.2-.6-1.9-.6" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0030.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m32 16c3 0 5.3 1.1 7 3.2 2 2.6 3 6.8 3 12.8 0 5.9-1 10.2-3 12.8-1.7 2.1-4 3.2-7 3.2-3 0-5.4-1.2-7.2-3.5-1.9-2.4-2.8-6.5-2.8-12.6 0-5.9 1-10.1 3-12.7 1.7-2.1 4-3.2 7-3.2m0 5c-.7 0-1.4.2-1.9.7s-1 1.3-1.3 2.5c-.4 1.6-.6 4.2-.6 7.8 0 3.7.2 6.2.5 7.6.4 1.4.8 2.3 1.4 2.7.6.5 1.2.7 1.9.7.7 0 1.4-.2 1.9-.7.6-.5 1-1.3 1.3-2.5.4-1.5.6-4.1.6-7.8 0-3.7-.2-6.2-.5-7.6-.4-1.4-.8-2.3-1.4-2.8-.6-.4-1.2-.6-1.9-.6" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0031-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m38 45h-6.1v-23c-2.2 2.1-4.9 3.6-7.9 4.6v-5.5c1.6-.5 3.3-1.5 5.2-3 1.9-1.5 3.2-3.2 3.8-5.1h5v32" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0031.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m38 48h-6.1v-23c-2.2 2.1-4.9 3.6-7.9 4.6v-5.5c1.6-.5 3.3-1.5 5.2-3 1.9-1.5 3.2-3.2 3.8-5.1h5v32" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0032-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m42 39.3v5.7h-20c.2-2.1.9-4.2 1.9-6.1 1.1-1.9 3.2-4.5 6.4-7.6 2.6-2.6 4.1-4.3 4.7-5.2.8-1.3 1.2-2.5 1.2-3.7 0-1.4-.3-2.4-1-3.1s-1.6-1.1-2.8-1.1c-1.2 0-2.1.4-2.8 1.2-.7.8-1.1 2-1.2 3.8l-5.7-.6c.3-3.4 1.4-5.8 3.2-7.2 1.8-1.5 4-2.2 6.7-2.2 2.9 0 5.2.8 6.9 2.5s2.5 3.8 2.5 6.3c0 1.4-.2 2.8-.7 4.1-.5 1.2-1.3 2.5-2.3 3.9-.7.9-1.9 2.3-3.7 4.1-1.8 1.8-2.9 2.9-3.4 3.5-.5.6-.9 1.1-1.2 1.7h11.3" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0032.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m42 42.3v5.7h-20c.2-2.1.9-4.2 1.9-6.1 1.1-1.9 3.2-4.5 6.4-7.6 2.6-2.6 4.1-4.3 4.7-5.2.8-1.3 1.2-2.5 1.2-3.7 0-1.4-.3-2.4-1-3.1s-1.6-1.1-2.8-1.1c-1.2 0-2.1.4-2.8 1.2-.7.8-1.1 2-1.2 3.8l-5.7-.6c.3-3.4 1.4-5.8 3.2-7.2 1.8-1.5 4-2.2 6.7-2.2 2.9 0 5.2.8 6.9 2.5s2.5 3.8 2.5 6.3c0 1.4-.2 2.8-.7 4.1-.5 1.2-1.3 2.5-2.3 3.9-.7.9-1.9 2.3-3.7 4.1-1.8 1.8-2.9 2.9-3.4 3.5-.5.6-.9 1.1-1.2 1.7h11.3" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0033-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22 36.1l5.6-.7c.2 1.5.7 2.6 1.4 3.4s1.7 1.2 2.8 1.2c1.2 0 2.2-.5 3-1.4.8-.9 1.2-2.2 1.2-3.8 0-1.5-.4-2.7-1.2-3.6-.8-.9-1.7-1.3-2.9-1.3-.7 0-1.6.1-2.6.4l.6-4.9c1.6 0 2.8-.3 3.6-1.1s1.2-1.7 1.2-3c0-1.1-.3-1.9-.9-2.5-.6-.6-1.4-.9-2.4-.9-1 0-1.8.4-2.5 1.1s-1.1 1.8-1.3 3.1l-5.3-.9c.4-1.9.9-3.4 1.7-4.5.7-1.1 1.8-2 3.1-2.7 1.3-.6 2.8-1 4.5-1 2.8 0 5.1.9 6.8 2.8 1.4 1.5 2.1 3.3 2.1 5.2 0 2.8-1.4 4.9-4.3 6.6 1.7.4 3.1 1.2 4.1 2.6 1 1.3 1.5 3 1.5 4.9 0 2.8-1 5.1-2.9 7-1.7 1.9-4.1 2.9-7 2.9-2.7 0-5-.8-6.8-2.4-1.8-1.7-2.8-3.8-3.1-6.5" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0033.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22 39.2l5.6-.7c.2 1.5.7 2.6 1.4 3.4s1.7 1.2 2.8 1.2c1.2 0 2.2-.5 3-1.4.8-.9 1.2-2.2 1.2-3.8 0-1.5-.4-2.7-1.2-3.6-.8-.9-1.7-1.3-2.9-1.3-.7 0-1.6.1-2.6.4l.6-4.9c1.6 0 2.8-.3 3.6-1.1s1.2-1.7 1.2-3c0-1.1-.3-1.9-.9-2.5-.6-.6-1.4-.9-2.4-.9-1 0-1.8.4-2.5 1.1s-1.1 1.8-1.3 3.1l-5.3-.9c.4-1.9.9-3.4 1.7-4.5.7-1.1 1.8-2 3.1-2.7 1.3-.6 2.8-1 4.5-1 2.8 0 5.1.9 6.8 2.8 1.4 1.5 2.1 3.3 2.1 5.2 0 2.8-1.4 4.9-4.3 6.6 1.7.4 3.1 1.2 4.1 2.6 1 1.3 1.5 3 1.5 4.9 0 2.8-1 5.1-2.9 7-1.7 1.8-4.1 2.8-7 2.8-2.7 0-5-.8-6.8-2.4-1.8-1.7-2.8-3.8-3.1-6.4" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0034-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="M33.7,45v-6.4H20v-5.3L34.5,13h5.4v20.2H44v5.4h-4.1V45H33.7z M33.7,33.2V22.3L26,33.2H33.7z" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0034.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M33.7,48v-6.4H20v-5.3L34.5,16h5.4v20.2H44v5.4h-4.1V48H33.7z M33.7,36.2V25.3L26,36.2H33.7z" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0035-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22 36.3l5.7-.6c.2 1.4.6 2.5 1.4 3.3.8.8 1.7 1.2 2.8 1.2 1.2 0 2.2-.5 3-1.6.8-1 1.2-2.6 1.2-4.7 0-2-.4-3.4-1.2-4.4-.8-1-1.9-1.5-3.2-1.5-1.6 0-3.1.8-4.4 2.3l-4.6-.7 2.9-16.6h15.1v5.7h-10.8l-.9 5.4c1.3-.7 2.6-1 3.9-1 2.5 0 4.7 1 6.4 3 1.8 2 2.6 4.5 2.6 7.7 0 2.6-.7 5-2.1 7-1.9 2.8-4.6 4.2-8.1 4.2-2.7 0-5-.8-6.7-2.4-1.6-1.6-2.7-3.7-3-6.3" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0035.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22 39.3l5.7-.6c.2 1.4.6 2.5 1.4 3.3.8.8 1.7 1.2 2.8 1.2 1.2 0 2.2-.5 3-1.6.8-1 1.2-2.6 1.2-4.7 0-2-.4-3.4-1.2-4.4-.8-1-1.9-1.5-3.2-1.5-1.6 0-3.1.8-4.4 2.3l-4.6-.7 2.9-16.6h15.1v5.7h-10.8l-.9 5.4c1.3-.7 2.6-1 3.9-1 2.5 0 4.7 1 6.4 3 1.8 2 2.6 4.5 2.6 7.7 0 2.6-.7 5-2.1 7-1.9 2.8-4.6 4.2-8.1 4.2-2.7 0-5-.8-6.7-2.4-1.6-1.6-2.7-3.7-3-6.3" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0036-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m41.4 20.8l-5.6.6c-.1-1.2-.5-2.1-1.1-2.6-.6-.6-1.3-.9-2.2-.9-1.2 0-2.2.6-3.1 1.7-.8 1.1-1.4 3.5-1.6 7.1 1.4-1.8 3.2-2.7 5.3-2.7 2.4 0 4.5 1 6.2 2.9 1.7 1.9 2.6 4.4 2.6 7.4 0 3.2-.9 5.8-2.7 7.7s-4 3-6.8 3c-3 0-5.5-1.2-7.5-3.7-1.9-2.4-2.9-6.5-2.9-12.1 0-5.7 1-9.9 3-12.4 2-2.5 4.7-3.8 7.9-3.8 2.3 0 4.2.7 5.6 2 1.6 1.3 2.5 3.3 2.9 5.8m-13 13.1c0 2 .4 3.5 1.3 4.5.9 1.1 1.8 1.6 2.9 1.6 1.1 0 1.9-.4 2.7-1.3.7-.9 1.1-2.3 1.1-4.3 0-2-.4-3.5-1.1-4.5-.8-.9-1.7-1.4-2.9-1.4-1.1 0-2 .5-2.8 1.4s-1.2 2.2-1.2 4" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0036.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m41.4 23.8l-5.6.6c-.1-1.2-.5-2.1-1.1-2.6-.6-.6-1.3-.9-2.2-.9-1.2 0-2.2.6-3.1 1.7-.8 1.1-1.4 3.5-1.6 7.1 1.4-1.8 3.2-2.7 5.3-2.7 2.4 0 4.5 1 6.2 2.9 1.7 1.9 2.6 4.4 2.6 7.4 0 3.2-.9 5.8-2.7 7.7s-4 3-6.8 3c-3 0-5.5-1.2-7.5-3.7-1.9-2.4-2.9-6.5-2.9-12.1 0-5.7 1-9.9 3-12.4 2-2.5 4.7-3.8 7.9-3.8 2.3 0 4.2.7 5.6 2 1.6 1.3 2.5 3.3 2.9 5.8m-13 13.1c0 2 .4 3.5 1.3 4.5.9 1.1 1.8 1.6 2.9 1.6 1.1 0 1.9-.4 2.7-1.3.7-.9 1.1-2.3 1.1-4.3 0-2-.4-3.5-1.1-4.5-.8-.9-1.7-1.4-2.9-1.4-1.1 0-2 .5-2.8 1.4-.8.9-1.2 2.2-1.2 4" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0037-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m23 18.8v-5.8h20v4.5c-1.7 1.7-3.3 4.2-5 7.4-1.7 3.2-3 6.7-3.9 10.3s-1.3 6.9-1.3 9.7h-5.6c.1-4.5 1-9.1 2.6-13.7s3.8-8.8 6.6-12.5l-13.4.1" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0037.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m23 21.8v-5.8h20v4.5c-1.7 1.7-3.3 4.2-5 7.4-1.7 3.2-3 6.7-3.9 10.3-.9 3.6-1.3 6.9-1.3 9.7h-5.6c.1-4.5 1-9.1 2.6-13.7 1.6-4.7 3.8-8.8 6.6-12.5l-13.4.1" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0038-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m27.1 27.5c-1.5-.7-2.6-1.6-3.3-2.7-.7-1.1-1-2.4-1-3.8 0-2.3.8-4.3 2.4-5.8 1.6-1.5 3.8-2.3 6.8-2.3 2.9 0 5.1.8 6.7 2.3s2.4 3.5 2.4 5.8c0 1.5-.4 2.7-1.1 3.9-.7 1.1-1.8 2-3.1 2.6 1.7.7 3 1.7 3.8 3.1.9 1.3 1.3 2.9 1.3 4.6 0 2.9-.9 5.2-2.7 7.1-1.8 1.8-4.2 2.7-7.1 2.7-2.8 0-5.1-.7-6.9-2.2-2.2-1.8-3.3-4.2-3.3-7.3 0-1.7.4-3.2 1.2-4.7.8-1.4 2.1-2.5 3.9-3.3m.6 7.4c0 1.7.4 2.9 1.2 3.9.8.9 1.9 1.4 3.1 1.4 1.2 0 2.2-.4 3-1.3.8-.9 1.2-2.2 1.2-3.9 0-1.5-.4-2.6-1.2-3.5-.8-.9-1.8-1.3-3-1.3-1.4 0-2.5.5-3.2 1.5-.7.9-1.1 2-1.1 3.2m.6-13.4c0 1.2.3 2.1 1 2.8.7.7 1.5 1 2.6 1 1.1 0 2-.3 2.7-1 .7-.7 1-1.6 1-2.8 0-1.1-.3-2-1-2.7-.7-.7-1.5-1-2.6-1-1.1 0-2 .3-2.7 1-.7.7-1 1.6-1 2.7" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0038.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m27.1 30.5c-1.5-.7-2.6-1.6-3.3-2.7-.7-1.1-1-2.4-1-3.8 0-2.3.8-4.3 2.4-5.8 1.6-1.5 3.8-2.3 6.8-2.3 2.9 0 5.1.8 6.7 2.3s2.4 3.5 2.4 5.8c0 1.5-.4 2.7-1.1 3.9-.7 1.1-1.8 2-3.1 2.6 1.7.7 3 1.7 3.8 3.1.9 1.3 1.3 2.9 1.3 4.6 0 2.9-.9 5.2-2.7 7.1-1.8 1.8-4.2 2.7-7.1 2.7-2.8 0-5.1-.7-6.9-2.2-2.2-1.8-3.3-4.2-3.3-7.3 0-1.7.4-3.2 1.2-4.7.8-1.4 2.1-2.5 3.9-3.3m.6 7.4c0 1.7.4 2.9 1.2 3.9.8.9 1.9 1.4 3.1 1.4 1.2 0 2.2-.4 3-1.3.8-.9 1.2-2.2 1.2-3.9 0-1.5-.4-2.6-1.2-3.5-.8-.9-1.8-1.3-3-1.3-1.4 0-2.5.5-3.2 1.5-.7.9-1.1 2-1.1 3.2m.6-13.4c0 1.2.3 2.1 1 2.8.7.7 1.5 1 2.6 1 1.1 0 2-.3 2.7-1 .7-.7 1-1.6 1-2.8 0-1.1-.3-2-1-2.7-.7-.7-1.5-1-2.6-1-1.1 0-2 .3-2.7 1-.7.7-1 1.6-1 2.7" fill="#fff"/></svg>

BIN
View File


+ 0
- 2
public/emoji/0039-20e3.svg View File

@ -1,2 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3
c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22.6 37.2l5.6-.6c.1 1.2.5 2.1 1.1 2.6s1.3.9 2.3.9c1.2 0 2.2-.6 3-1.7.8-1.1 1.4-3.5 1.6-7.1-1.4 1.8-3.2 2.6-5.4 2.6-2.4 0-4.4-1-6.1-2.9-1.7-1.9-2.6-4.4-2.6-7.4 0-3.2.9-5.7 2.7-7.7 1.8-1.9 4.1-2.9 6.9-2.9 3 0 5.5 1.2 7.5 3.7 1.8 2.4 2.8 6.5 2.8 12.1 0 5.7-1 9.9-3 12.4-2 2.5-4.7 3.8-7.9 3.8-2.3 0-4.2-.7-5.7-2-1.5-1.3-2.4-3.2-2.8-5.8m13-13.1c0-1.9-.4-3.4-1.3-4.5-.9-1.1-1.8-1.6-3-1.6-1.1 0-1.9.4-2.6 1.3-.7.9-1.1 2.3-1.1 4.3 0 2 .4 3.5 1.1 4.5.8.9 1.7 1.4 2.9 1.4 1.1 0 2-.5 2.8-1.4s1.2-2.2 1.2-4" fill="#9aa0a5"/></svg>

BIN
View File


+ 0
- 1
public/emoji/0039.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22.6 40.2l5.6-.6c.1 1.2.5 2.1 1.1 2.6s1.3.9 2.3.9c1.2 0 2.2-.6 3-1.7.8-1.1 1.4-3.5 1.6-7.1-1.4 1.8-3.2 2.6-5.4 2.6-2.4 0-4.4-1-6.1-2.8-1.7-1.9-2.6-4.4-2.6-7.4 0-3.2.9-5.7 2.7-7.7 1.8-1.9 4.1-2.9 6.9-2.9 3 0 5.5 1.2 7.5 3.7 1.8 2.3 2.8 6.4 2.8 12 0 5.7-1 9.9-3 12.4-2 2.5-4.7 3.8-7.9 3.8-2.3 0-4.2-.7-5.7-2s-2.4-3.2-2.8-5.8m13-13.1c0-1.9-.4-3.4-1.3-4.5-.9-1.1-1.8-1.6-3-1.6-1.1 0-1.9.4-2.6 1.3-.7.9-1.1 2.3-1.1 4.3 0 2 .4 3.5 1.1 4.5.8.9 1.7 1.4 2.9 1.4 1.1 0 2-.5 2.8-1.4.8-.9 1.2-2.2 1.2-4" fill="#fff"/></svg>

BIN
View File


+ 0
- 1
public/emoji/00a9.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m32 2c-13.8 0-25 11.2-25 25s11.2 25 25 25 25-11.2 25-25-11.2-25-25-25m0 45c-11 0-20-9-20-20 0-11 9-20 20-20 11 0 20 9 20 20 0 11-9 20-20 20"/><path d="m25.4 19.3c.9-1 2-1.8 3.3-2.3 1.3-.6 2.6-.9 4-.9 1.7 0 3.4.4 4.8 1.3 1.4.8 2.7 2 3.6 3.3l3.6-2.7c-1.4-1.8-3.1-3.4-5.1-4.4-2.1-1.1-4.3-1.6-6.8-1.6-2 0-4 .4-5.8 1.2-1.8.8-3.4 1.9-4.7 3.2-1.3 1.4-2.4 2.9-3.2 4.8-.8 1.8-1.2 3.8-1.2 5.8 0 2.1.4 4 1.2 5.8.8 1.8 1.8 3.4 3.2 4.8 1.3 1.4 2.9 2.4 4.7 3.2 1.8.8 3.7 1.2 5.8 1.2 2.5 0 4.8-.5 6.8-1.6 2-1.1 3.8-2.6 5.1-4.4l-3.6-2.7c-.9 1.4-2.1 2.5-3.6 3.3-1.5.8-3.1 1.2-4.8 1.2-1.4 0-2.7-.3-4-.9-1.2-.6-2.3-1.4-3.3-2.3-.9-1-1.7-2.1-2.2-3.4s-.8-2.7-.8-4.2c0-1.5.3-2.9.8-4.2s1.3-2.5 2.2-3.5"/></g></svg>

BIN
View File


+ 0
- 1
public/emoji/00ae.svg View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m32 2c-13.8 0-25 11.2-25 25s11.2 25 25 25 25-11.2 25-25-11.2-25-25-25m0 45c-11 0-20-9-20-20 0-11 9-20 20-20 11 0 20 9 20 20 0 11-9 20-20 20"/><path d="m32.3 14h-9.3v26h4.2v-7.7h7l4.4 7.7h4.4l-5-9c7.7-3.4 7.7-17-5.7-17m.5 15h-5.6v-11.7h5.6c8.8 0 8.8 11.7 0 11.7"/></g></svg>

BIN
View File


+ 1
- 1
public/emoji/1f004.svg View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 30.8v-8.4h-5.7v3l-17.9-14.4c-.9-.8-2.5-.8-3.4 0l-31.3 25v-2.8h-5.7v8.3c0 0 0 0 0 0v.2c.1.4.3.8.7 1.2l22.9 18.4c.9.8 2.5.8 3.4 0l36.2-29.1c.5-.4.8-.9.8-1.4" fill="#b69467"/><path d="m27.1 53c-.9.8-2.5.8-3.4 0l-23-18.4c-.9-.8-.9-2 0-2.8l36.2-29.1c.9-.8 2.5-.8 3.4 0l22.9 18.4c.9.8.9 2 0 2.8l-36.1 29.1" fill="#efdec2"/><path d="m46.5 13.5c.8 2.1.3 4.2.3 6.3-1.8 2.1-3.7 0-5.5 2.5 3.8 2 9.1 6.4 6.6 10.5-4.1-.6-8.3-1.6-12.3.6 0-1.2-2-2.4-3.5-3.7-6.4 2.1-9.5 10.3-16.3 11.3.3-4.6 11.3-9 13.4-13.6-1.6-2-3-1.1-4.6-2.8 4.2-3.6-3.1-7.6 3.4-11.1 2.1 1.6.1 3 1.3 4.5 2.5 1.5 4.9 1.9 7.4 3.3 3.8-2.6 3.2-5.3 5.3-7.9 1.5-.3 3.1.6 4.5.1m-8.5 10.5c-1.6 1.3-3.2 2.6-4.9 3.9 3.6 2.2 7.1 1.5 10.6-.2-.2-2.1-3.8-3-5.7-3.7m-7.9-3.8c-.9 1.9-2.3 3.8.8 5.9 1.5-1.5 4.8-2.9 3.2-4.4-1.4.2-2.7-.9-4-1.5" fill="#b70000"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 45 45" style="enable-background:new 0 0 45 45;" xml:space="preserve" version="1.1" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath16" clipPathUnits="userSpaceOnUse"><path id="path18" d="M 0,36 36,36 36,0 0,0 0,36 Z"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,45)" id="g10"><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g transform="translate(32,4)" id="g20"><path id="path22" style="fill:#e6e7e8;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -20,0 c -2.209,0 -4,1.791 -4,4 l 0,28 c 0,2.209 1.791,4 4,4 l 20,0 c 2.209,0 4,-1.791 4,-4 L 0,0 Z"/></g><g transform="translate(19.0029,23.5781)" id="g24"><path id="path26" style="fill:#be1931;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 0,-6.163 c 0.728,0.087 1.435,0.179 2.119,0.265 1.326,0.178 2.286,0.286 2.879,0.332 0.048,0.11 0.103,0.232 0.168,0.363 0.199,0.641 0.463,1.645 0.798,3.015 0.264,1.084 0.393,1.769 0.393,2.057 0,0.353 -0.338,0.529 -1.024,0.529 C 4.292,0.398 2.637,0.277 0.36,0.035 0.232,0.035 0.107,0.022 0,0 m -7.259,-6.69 c 1.812,0.085 3.545,0.195 5.203,0.327 l 0,6.132 c -1.702,-0.199 -3.347,-0.464 -4.937,-0.796 -0.31,-0.111 -0.596,-0.187 -0.862,-0.232 0,-0.264 0.022,-0.529 0.067,-0.793 0.265,-2.012 0.441,-3.56 0.529,-4.638 m -3.346,7.221 c 0.53,0 0.995,-0.078 1.391,-0.233 0.244,-0.066 0.453,-0.143 0.63,-0.231 0.796,0.044 1.612,0.122 2.453,0.231 1.104,0.134 2.463,0.298 4.075,0.498 l 0,2.319 c 0,1.613 -0.188,2.948 -0.563,4.01 -0.155,0.332 -0.233,0.551 -0.233,0.662 0,0.331 0.133,0.497 0.398,0.497 0.707,0 1.36,-0.089 1.955,-0.266 C 0.187,7.82 0.528,7.565 0.528,7.257 0.528,7.146 0.486,6.915 0.395,6.561 0.13,5.876 0,4.606 0,2.751 L 0,1.028 c 1.299,0.132 2.723,0.276 4.271,0.43 0.706,0.045 1.38,0.166 2.022,0.366 0.463,0.088 0.739,0.132 0.83,0.132 0.264,0 0.837,-0.222 1.72,-0.662 C 9.771,0.741 10.236,0.309 10.236,0 c 0,-0.242 -0.12,-0.486 -0.362,-0.729 C 9.055,-1.61 8.466,-2.538 8.115,-3.512 L 7.317,-5.203 C 7.187,-5.532 7.041,-5.787 6.892,-5.963 6.934,-5.984 6.978,-6.009 7.02,-6.03 c 0.507,-0.311 0.76,-0.586 0.76,-0.828 0,-0.199 -0.182,-0.31 -0.559,-0.332 -1.7,0 -3.237,-0.088 -4.607,-0.266 L 0,-7.652 -0.034,-12.095 c 0,-2.009 -0.069,-3.62 -0.198,-4.838 -0.134,-1.368 -0.334,-2.34 -0.598,-2.914 -0.243,-0.486 -0.443,-0.731 -0.596,-0.731 -0.09,0 -0.232,0.266 -0.431,0.798 -0.133,0.617 -0.199,1.687 -0.199,3.214 l 0,8.749 -1.789,-0.167 c -1.194,-0.112 -2.111,-0.168 -2.75,-0.168 -0.266,0 -0.488,0.024 -0.664,0.069 -0.044,-0.2 -0.11,-0.376 -0.197,-0.533 -0.133,-0.287 -0.277,-0.43 -0.433,-0.43 -0.197,0 -0.385,0.154 -0.562,0.465 -0.287,0.438 -0.442,0.892 -0.464,1.358 l -0.397,2.584 c -0.155,1.349 -0.332,2.286 -0.531,2.818 -0.111,0.551 -0.409,1.081 -0.894,1.59 -0.177,0.11 -0.266,0.187 -0.266,0.231 0,0.354 0.133,0.531 0.398,0.531"/></g></g></g></g></svg>

BIN
View File


+ 1
- 1
public/emoji/1f0cf.svg View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M13,62.5c-3,0-5.5-2.5-5.5-5.5V7c0-3,2.5-5.5,5.5-5.5h38c3,0,5.5,2.5,5.5,5.5v50c0,3-2.5,5.5-5.5,5.5H13z" fill="#efeded"/><path d="m51 3c2.2 0 4 1.8 4 4v50c0 2.2-1.8 4-4 4h-38c-2.2 0-4-1.8-4-4v-50c0-2.2 1.8-4 4-4h38m0-3h-38c-3.9 0-7 3.1-7 7v50c0 3.9 3.1 7 7 7h38c3.9 0 7-3.1 7-7v-50c0-3.9-3.1-7-7-7z" fill="#262626"/><path d="m43.6 55.2l-7.3-12.8c-1.2 1.3-2.7 4.2-4.4 4.2-1.7 0-3.2-2.9-4.3-4.2l-7.3 12.8 8.7-7.3-.9 7.3 3.9-7.7 3.9 7.7-.8-7.3 8.5 7.3" fill="#333"/><path d="m39.3 26.9h-14.6c0 0-3 5.8 2.6 15.3 1.8 3 3.3 4.5 4.8 4.5 1.4 0 3-1.5 4.8-4.5 5.5-9.6 2.4-15.3 2.4-15.3" fill="#fed0ac"/><g fill="#333"><path d="m35.6 39.6c0 0-.1.1-.3.2-.1.1-.2.2-.4.2-.1.1-.3.2-.5.3-.3.2-.7.4-1.2.5-.2.1-.4.1-.6.1-.1 0-.1 0-.2 0-.1 0-.1 0-.2 0h-.1-.2c-.5 0-.9-.1-1.3-.2-.4-.1-.8-.3-1.1-.5-.3-.2-.6-.4-.8-.5s-.3-.2-.3-.2 0 0 0 .1c0 .1 0 .2 0 .3.1.2.2.6.4 1 .1.2.3.4.5.6.2.2.4.4.7.5.3.1.6.3.9.3.3.1.7.1 1 .1h.1.1.1.1c.2 0 .3 0 .5-.1.3-.1.6-.2.9-.4.3-.2.5-.3.7-.5.2-.2.4-.4.5-.6.1-.2.2-.4.3-.5.1-.2.1-.3.1-.4.3-.1.3-.3.3-.3"/><path d="m30.3 33.4c0-.1-.1-.1-.1-.2 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1s-.1-.1-.1-.1c0 0-.1-.1-.1-.1-.1 0-.1-.1-.2-.1-.1 0-.1-.1-.2-.1-.1-.1-.3-.1-.5-.2 0 0-.1 0-.1 0 0 0-.1 0-.1 0-.1 0-.2 0-.3 0-.2 0-.3 0-.5.1-.2 0-.3.1-.4.2-.1.1-.3.1-.4.2-.1.1-.2.2-.3.2-.2.2-.2.3-.3.4 0 .1 0 .1-.1.1s.1 0 .2-.1c.1-.1.3-.1.5-.2.1 0 .2-.1.3-.1-.1.1-.1.3-.1.4 0 .5.5 1 1.1 1 .6 0 1.1-.4 1.1-1 0-.2 0-.3-.1-.4.1 0 .1 0 .1.1.1 0 .1 0 .1.1.1 0 .2.1.3.1.1 0 .2.1.2.1.1 0 .1 0 .1.1s0 0 0 0c.1-.2.1-.2.1-.3"/><path d="m37.6 33.5c0 0 0-.1-.1-.1 0-.1-.1-.1-.1-.2 0 0-.1-.1-.1-.1 0 0-.1-.1-.1-.1s-.1-.1-.1-.1c0 0-.1-.1-.1-.1-.1 0-.1-.1-.2-.1-.1 0-.1-.1-.2-.1-.1-.1-.3-.1-.5-.2 0 0-.1 0-.1 0 0 0-.1 0-.1 0-.1 0-.2 0-.3 0-.2 0-.3 0-.5.1-.2 0-.3.1-.4.2-.1.1-.3.1-.4.2-.1.1-.2.2-.3.2-.2.2-.2.3-.3.4 0 .1 0 .1-.1.1s.1 0 .2-.1.3-.1.5-.2c.1 0 .2-.1.3-.1-.1.1-.1.3-.1.4 0 .5.5 1 1.1 1 .6 0 1.1-.4 1.1-1 0-.2 0-.3-.1-.4.1 0 .1 0 .2.1 0 0 .1 0 .1.1.1 0 .2.1.3.1.1 0 .2.1.2.1.1-.1.1-.1.2-.1"/><path d="m46.4 14.9c-7.5-4-12.6 5.1-14.4 9.2-1.8-4.1-6.9-13.2-14.4-9.2-2.4 1.3-4.7 3.8-4.7 3.8s10.5-1.3 11.2 10c2.2-1.4 4.8-4.1 7.7-4.1 3 0 5.9 2.6 8.1 4.1.7-11.5 11.2-10 11.2-10s-2.2-2.5-4.7-3.8"/></g><path d="m39.3 26.5c-.5-1.8-2.5-9.3-7.3-15.8v-.1h-.1v.1c-5.4 7.5-7.4 16.2-7.4 16.2-.4 1-.7 2.2-.7 3.6 0 0 1.2-3.6 4.4-3.6 3.2 0 3.8 3.6 3.8 3.6s.5-3.6 3.8-3.6 4.4 3.6 4.4 3.6c-.1-1.6-.5-2.9-.9-4" fill="#94989b"/><ellipse cx="32" cy="10.6" rx="1.9" ry="1.7" fill="#333"/><g fill="#94989b"><ellipse cx="12.9" cy="18.7" rx="1.9" ry="1.7"/><ellipse cx="51.1" cy="18.7" rx="1.9" ry="1.7"/></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 45 45" style="enable-background:new 0 0 45 45;" xml:space="preserve" version="1.1" id="svg2"><metadata id="metadata8"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/></cc:Work></rdf:RDF></metadata><defs id="defs6"><clipPath id="clipPath16" clipPathUnits="userSpaceOnUse"><path id="path18" d="M 0,36 36,36 36,0 0,0 0,36 Z"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,45)" id="g10"><g id="g12"><g clip-path="url(#clipPath16)" id="g14"><g transform="translate(32,4)" id="g20"><path id="path22" style="fill:#e6e7e8;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-2.209 -1.791,-4 -4,-4 l -20,0 c -2.209,0 -4,1.791 -4,4 l 0,28 c 0,2.209 1.791,4 4,4 l 20,0 c 2.209,0 4,-1.791 4,-4 L 0,0 Z"/></g><g transform="translate(11,29)" id="g24"><path id="path26" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C -2.519,0 -4.583,-1.87 -4.929,-4.294 -4.198,-3.503 -3.161,-3 -2,-3 0.209,-3 2,-4.791 2,-7 2,-9 3.497,-9.198 2.706,-9.929 5.13,-9.583 5,-7.519 5,-5 5,-2.239 2.761,0 0,0"/></g><g transform="translate(23,22)" id="g28"><path id="path30" style="fill:#55acee;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,2.209 1.791,4 4,4 5.161,4 6.198,3.497 6.929,2.706 6.583,5.13 4.52,7 2,7 -0.762,7 -3,4.761 -3,2 -3,-0.519 -3.131,-2.583 -0.707,-2.929 -1.497,-2.198 0,-2 0,0"/></g><g transform="translate(14,24)" id="g32"><path id="path34" style="fill:#ffac33;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,4.971 4,9 4,9 4,9 8,4.971 8,0 8,-4.971 6.209,-9 4,-9 1.791,-9 0,-4.971 0,0"/></g><g transform="translate(11.7065,14.9287)" id="g36"><path id="path38" style="fill:#553788;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0.791,-0.73 1.294,-1.768 1.294,-2.929 0,-2.209 -1.791,-4 -4,-4 -1.162,0 -2.199,0.503 -2.929,1.293 0.345,-2.424 2.409,-4.293 4.929,-4.293 2.761,0 5,2.239 5,5 0,2.52 -1.87,4.583 -4.294,4.929"/></g><g transform="translate(27,8)" id="g40"><path id="path42" style="fill:#553788;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c -2.209,0 -4,1.791 -4,4 0,1.161 0.503,2.198 1.293,2.929 C -5.131,6.583 -7,4.52 -7,2 c 0,-2.762 2.238,-5 5,-5 2.52,0 4.583,1.869 4.929,4.293 C 2.198,0.503 1.161,0 0,0"/></g><g transform="translate(14,12)" id="g44"><path id="path46" style="fill:#9266cc;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,-4.971 3,-9 4,-9 5,-9 8,-4.971 8,0 8,4.971 6.209,9 4,9 1.791,9 0,4.971 0,0"/></g><g transform="translate(13,19)" id="g48"><path id="path50" style="fill:#edbb9f;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,3.866 3,4 5,4 7,4 10,3.866 10,0 10,-3.865 7.762,-7 5,-7 2.239,-7 0,-3.865 0,0"/></g><g transform="translate(17.0005,19)" id="g52"><path id="path54" style="fill:#662113;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-0.552 -0.448,-1 -1,-1 -0.552,0 -1,0.448 -1,1 0,0.552 0.448,1 1,1 0.552,0 1,-0.448 1,-1"/></g><g transform="translate(21,19)" id="g56"><path id="path58" style="fill:#662113;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-0.552 -0.447,-1 -1,-1 -0.552,0 -1,0.448 -1,1 0,0.552 0.448,1 1,1 0.553,0 1,-0.448 1,-1"/></g><g transform="translate(18,14)" id="g60"><path id="path62" style="fill:#662113;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 1.105,0 2,0.896 2,2 L -2,2 C -2,0.896 -1.104,0 0,0"/></g><g transform="translate(7,25)" id="g64"><path id="path66" style="fill:#a0041e;fill-opacity:1;fill-rule:nonzero;stroke:none" d="m 0,0 c 0,-0.552 -0.448,-1 -1,-1 -0.552,0 -1,0.448 -1,1 0,0.552 0.448,1 1,1 0.552,0 1,-0.448 1,-1"/></g><g transform="translate(29,25)" id="g68"><path id="path70" style="fill:#226699;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,-0.552 0.447,-1 1,-1 1.553,-1 2,-0.552 2,0 2,0.552 1.553,1 1,1 0.447,1 0,0.552 0,0"/></g><g transform="translate(17,33)" id="g72"><path id="path74" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none" d="M 0,0 C 0,0.552 0.448,1 1,1 1.552,1 2,0.552 2,0 2,-0.552 1.552,-1 1,-1 0.448,-1 0,-0.552 0,0"/></g></g></g></g></svg>

BIN
View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save