<!-- SPDX-FileCopyrightText: syuilo and misskey-project SPDX-License-Identifier: AGPL-3.0-only --> <template> <div :class="$style.root"> <EmAvatar :class="$style.avatar" :user="note.user" link preview/> <div :class="$style.main"> <EmNoteHeader :class="$style.header" :note="note" :mini="true"/> <div> <p v-if="note.cw != null" :class="$style.cw"> <EmMfm v-if="note.cw != ''" style="margin-right: 8px;" :text="note.cw" :author="note.user" :nyaize="'respect'" :emojiUrls="note.emojis"/> <button style="display: block; width: 100%;" class="_buttonGray _buttonRounded" @click="showContent = !showContent">{{ showContent ? i18n.ts._cw.hide : i18n.ts._cw.show }}</button> </p> <div v-show="note.cw == null || showContent"> <EmSubNoteContent :class="$style.text" :note="note"/> </div> </div> </div> </div> </template> <script lang="ts" setup> import { ref } from 'vue'; import * as Misskey from 'misskey-js'; import { i18n } from '@/i18n.js'; import EmAvatar from '@/components/EmAvatar.vue'; import EmNoteHeader from '@/components/EmNoteHeader.vue'; import EmSubNoteContent from '@/components/EmSubNoteContent.vue'; import EmMfm from '@/components/EmMfm.js'; const props = defineProps<{ note: Misskey.entities.Note; }>(); const showContent = ref(false); </script> <style lang="scss" module> .root { display: flex; margin: 0; padding: 0; font-size: 0.95em; } .avatar { flex-shrink: 0; display: block; margin: 0 10px 0 0; width: 34px; height: 34px; border-radius: 8px; position: sticky !important; top: calc(16px + var(--MI-stickyTop, 0px)); left: 0; } .main { flex: 1; min-width: 0; } .header { margin-bottom: 2px; } .cw { cursor: default; display: block; margin: 0; padding: 0; overflow-wrap: break-word; } .text { cursor: default; margin: 0; padding: 0; } @container (min-width: 250px) { .avatar { margin: 0 10px 0 0; width: 40px; height: 40px; } } @container (min-width: 350px) { .avatar { margin: 0 10px 0 0; width: 44px; height: 44px; } } @container (min-width: 500px) { .avatar { margin: 0 12px 0 0; width: 48px; height: 48px; } } </style>