<!-- SPDX-FileCopyrightText: syuilo and misskey-project SPDX-License-Identifier: AGPL-3.0-only --> <template> <MkModalWindow ref="dialogEl" @close="cancel()" @closed="$emit('closed')"> <template #header>:{{ emoji.name }}:</template> <template #default> <MkSpacer> <div style="display: flex; flex-direction: column; gap: 1em;"> <div :class="$style.emojiImgWrapper"> <MkCustomEmoji :name="emoji.name" :normal="true" :useOriginalSize="true" style="height: 100%;"></MkCustomEmoji> </div> <MkKeyValue :copy="`:${emoji.name}:`"> <template #key>{{ i18n.ts.name }}</template> <template #value>{{ emoji.name }}</template> </MkKeyValue> <MkKeyValue> <template #key>{{ i18n.ts.tags }}</template> <template #value> <div v-if="emoji.aliases.length === 0">{{ i18n.ts.none }}</div> <div v-else :class="$style.aliases"> <span v-for="alias in emoji.aliases" :key="alias" :class="$style.alias"> {{ alias }} </span> </div> </template> </MkKeyValue> <MkKeyValue> <template #key>{{ i18n.ts.category }}</template> <template #value>{{ emoji.category ?? i18n.ts.none }}</template> </MkKeyValue> <MkKeyValue> <template #key>{{ i18n.ts.sensitive }}</template> <template #value>{{ emoji.isSensitive ? i18n.ts.yes : i18n.ts.no }}</template> </MkKeyValue> <MkKeyValue> <template #key>{{ i18n.ts.localOnly }}</template> <template #value>{{ emoji.localOnly ? i18n.ts.yes : i18n.ts.no }}</template> </MkKeyValue> <MkKeyValue> <template #key>{{ i18n.ts.license }}</template> <template #value><Mfm :text="emoji.license ?? i18n.ts.none" /></template> </MkKeyValue> <MkKeyValue :copy="emoji.url"> <template #key>{{ i18n.ts.emojiUrl }}</template> <template #value> <MkLink :url="emoji.url" target="_blank">{{ emoji.url }}</MkLink> </template> </MkKeyValue> </div> </MkSpacer> </template> </MkModalWindow> </template> <script lang="ts" setup> import * as Misskey from 'misskey-js'; import { defineProps, shallowRef } from 'vue'; import { i18n } from '@/i18n.js'; import MkModalWindow from '@/components/MkModalWindow.vue'; import MkKeyValue from '@/components/MkKeyValue.vue'; import MkLink from './MkLink.vue'; const props = defineProps<{ emoji: Misskey.entities.EmojiDetailed, }>(); const emit = defineEmits<{ (ev: 'ok', cropped: Misskey.entities.DriveFile): void; (ev: 'cancel'): void; (ev: 'closed'): void; }>(); const dialogEl = shallowRef<InstanceType<typeof MkModalWindow>>(); const cancel = () => { emit('cancel'); dialogEl.value!.close(); }; </script> <style lang="scss" module> .emojiImgWrapper { max-width: 100%; height: 40cqh; background-image: repeating-linear-gradient(45deg, transparent, transparent 8px, var(--X5) 8px, var(--X5) 14px); border-radius: var(--radius); margin: auto; overflow-y: hidden; } .aliases { display: flex; flex-wrap: wrap; gap: 3px; } .alias { display: inline-block; word-break: break-all; padding: 3px 10px; background-color: var(--X5); border: solid 1px var(--divider); border-radius: var(--radius); } </style>