Porównaj commity

...

16 Commity

Autor SHA1 Wiadomość Data
TAKAHASHI Shuuji 841755d1f2
Merge 5e1a8183c3 into 09cae9f924 2024-04-22 22:28:21 +09:00
TAKAHASHI Shuuji 09cae9f924
fix(ui): fix publish dialog layout (#2842) 2024-04-22 12:54:20 +00:00
TAKAHASHI Shuuji bd8cfc7b57
fix(i18n,a11y): fix missing or incorrect translations in `aria-label` strings (#2837) 2024-04-21 10:26:35 +00:00
Joaquín Sánchez 77f0e2c2f8
feat(a11y): add semantic markup to preference settings (#2811) 2024-04-21 07:14:12 +00:00
lazzzis 57ff04853b
fix(ui): show custom emoji in spoiler text (#2836) 2024-04-21 05:25:40 +00:00
TAKAHASHI Shuuji 5e1a8183c3 i18n: allow localizing "Pinned post" 2024-04-19 21:22:34 +09:00
TAKAHASHI Shuuji c874b3d6c5 fix: adjust "Pinned post" position and styling 2024-04-19 21:22:34 +09:00
TAKAHASHI Shuuji 06e906f95e feat: show pinned posts on individual account page 2024-04-19 21:22:34 +09:00
Joaquín Sánchez 1eaaa6ce9a
feat(i18n): add `manage lists` spanish translation (#2832) 2024-04-18 19:39:08 +00:00
patak-dev 1526847a18 chore: release v0.14.0 2024-04-18 14:53:14 +02:00
Duy cc1d149ac8
feat(i18n): Update vi-VN.json (#2830) 2024-04-18 07:26:04 +00:00
Duy 569604646d
feat(i18n): Update vi-VN.json (#2825) 2024-04-18 04:20:15 +00:00
Dohány Tamás 6f47d1aeff
feat(i18n): update hu-HU.json (#2828) 2024-04-18 04:20:10 +00:00
Francesco 9d62edf295
feat(i18n): Update it-IT locale (#2827) 2024-04-18 04:20:06 +00:00
Xabi 7f4d8c04c6
feat(i18n): update eu-ES.json (#2826) 2024-04-18 04:20:01 +00:00
Emanuel Pina 79c6714bac
feat(i18n): Update pt-PT language (#2829) 2024-04-18 04:19:57 +00:00
21 zmienionych plików z 230 dodań i 179 usunięć

Wyświetl plik

@ -56,7 +56,7 @@ async function removeUserNote() {
<template> <template>
<CommonDropdown :eager-mount="command"> <CommonDropdown :eager-mount="command">
<button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group aria-label="More actions"> <button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group :aria-label="t('actions.more')">
<div rounded-5 p2 elk-group-hover="bg-purple/10"> <div rounded-5 p2 elk-group-hover="bg-purple/10">
<div i-ri:more-2-fill /> <div i-ri:more-2-fill />
</div> </div>

Wyświetl plik

@ -8,7 +8,7 @@ const vAutoFocus = (el: HTMLElement) => el.focus()
<template> <template>
<div my-8 px-3 sm:px-8 md:max-w-200 flex="~ col gap-4" relative> <div my-8 px-3 sm:px-8 md:max-w-200 flex="~ col gap-4" relative>
<button v-auto-focus type="button" btn-action-icon absolute top--8 right-0 m1 aria-label="Close" @click="emit('close')"> <button v-auto-focus type="button" btn-action-icon absolute top--8 right-0 m1 :aria-label="$t('action.close')" @click="emit('close')">
<span i-ri:close-line /> <span i-ri:close-line />
</button> </button>

Wyświetl plik

@ -63,7 +63,7 @@ function handleFavouritedBoostedByClose() {
</ModalDialog> </ModalDialog>
<ModalDialog <ModalDialog
v-model="isPublishDialogOpen" v-model="isPublishDialogOpen"
max-w-180 flex max-w-180 flex flex-col
@close="handlePublishClose" @close="handlePublishClose"
> >
<!-- This `w-0` style is used to avoid overflow problems in flex layoutsso don't remove it unless you know what you're doing --> <!-- This `w-0` style is used to avoid overflow problems in flex layoutsso don't remove it unless you know what you're doing -->

Wyświetl plik

@ -39,14 +39,14 @@ onUnmounted(() => locked.value = false)
<template> <template>
<div relative h-full w-full flex pt-12 @click="onClick"> <div relative h-full w-full flex pt-12 @click="onClick">
<button <button
v-if="hasNext" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.previous')" v-if="hasNext" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.next')"
hover:bg="black/40" dark:bg="white/30" dark-hover:bg="white/20" absolute top="1/2" right-1 z5 hover:bg="black/40" dark:bg="white/30" dark-hover:bg="white/20" absolute top="1/2" right-1 z5
:title="$t('action.next')" @click="next" :title="$t('action.next')" @click="next"
> >
<div i-ri:arrow-right-s-line text-white /> <div i-ri:arrow-right-s-line text-white />
</button> </button>
<button <button
v-if="hasPrev" pointer-events-auto btn-action-icon bg="black/20" aria-label="action.next" v-if="hasPrev" pointer-events-auto btn-action-icon bg="black/20" :aria-label="$t('action.prev')"
hover:bg="black/40" dark:bg="white/30" dark:hover-bg="white/20" absolute top="1/2" left-1 z5 hover:bg="black/40" dark:bg="white/30" dark:hover-bg="white/20" absolute top="1/2" left-1 z5
:title="$t('action.prev')" @click="prev" :title="$t('action.prev')" @click="prev"
> >
@ -71,7 +71,7 @@ onUnmounted(() => locked.value = false)
<div absolute top-0 w-full flex justify-end> <div absolute top-0 w-full flex justify-end>
<button <button
btn-action-icon bg="black/30" aria-label="action.close" hover:bg="black/40" dark:bg="white/30" btn-action-icon bg="black/30" :aria-label="$t('action.close')" hover:bg="black/40" dark:bg="white/30"
dark:hover-bg="white/20" pointer-events-auto shrink-0 @click="emit('close')" dark:hover-bg="white/20" pointer-events-auto shrink-0 @click="emit('close')"
> >
<div i-ri:close-line text-white /> <div i-ri:close-line text-white />

Wyświetl plik

@ -10,7 +10,7 @@ defineModel<boolean>()
<button <button
flex items-center place-content-center h-full flex-1 class="select-none" flex items-center place-content-center h-full flex-1 class="select-none"
:class="show ? '!text-primary' : ''" :class="show ? '!text-primary' : ''"
aria-label="More menu" :aria-label="$t('nav.more_menu')"
@click="toggleVisible" @click="toggleVisible"
> >
<span :class="show ? 'i-ri:close-fill' : 'i-ri:more-fill'" /> <span :class="show ? 'i-ri:close-fill' : 'i-ri:more-fill'" />

Wyświetl plik

@ -97,7 +97,7 @@ function resetModal() {
<b text-primary>@{{ account.acct }}</b> <b text-primary>@{{ account.acct }}</b>
</i18n-t> </i18n-t>
</h2> </h2>
<button ref="dismissButton" btn-action-icon absolute top--8 right-0 m1 aria-label="Close" @click="emit('close')"> <button ref="dismissButton" btn-action-icon absolute top--8 right-0 m1 :aria-label="$t('action.close')" @click="emit('close')">
<div i-ri:close-line /> <div i-ri:close-line />
</button> </button>

Wyświetl plik

@ -211,7 +211,7 @@ watch(shouldLoadAttachment, () => {
rounded-lg rounded-lg
h-full h-full
w-full w-full
aria-label="Open image preview dialog" :aria-label="$t('action.open_image_preview_dialog')"
relative relative
@click="!shouldLoadAttachment ? loadAttachment() : openMediaPreview(attachments ? attachments : [attachment], attachments?.indexOf(attachment) || 0)" @click="!shouldLoadAttachment ? loadAttachment() : openMediaPreview(attachments ? attachments : [attachment], attachments?.indexOf(attachment) || 0)"
> >

Wyświetl plik

@ -62,6 +62,7 @@ const timeago = useTimeAgo(() => status.value.createdAt, timeAgoOptions)
const isSelfReply = computed(() => status.value.inReplyToAccountId === status.value.account.id) const isSelfReply = computed(() => status.value.inReplyToAccountId === status.value.account.id)
const collapseRebloggedBy = computed(() => rebloggedBy.value?.id === status.value.account.id) const collapseRebloggedBy = computed(() => rebloggedBy.value?.id === status.value.account.id)
const isDM = computed(() => status.value.visibility === 'direct') const isDM = computed(() => status.value.visibility === 'direct')
const isPinned = computed(() => status.value.pinned)
const showUpperBorder = computed(() => props.newer && !directReply.value) const showUpperBorder = computed(() => props.newer && !directReply.value)
const showReplyTo = computed(() => !replyToMain.value && !directReply.value) const showReplyTo = computed(() => !replyToMain.value && !directReply.value)
@ -75,6 +76,19 @@ const forceShow = ref(false)
<div :h="showUpperBorder ? '1px' : '0'" w-auto bg-border mb-1 /> <div :h="showUpperBorder ? '1px' : '0'" w-auto bg-border mb-1 />
<slot name="meta"> <slot name="meta">
<!-- Pinned status -->
<div flex="~ col" justify-between>
<div
v-if="isPinned"
flex="~ gap2" items-center h-auto text-sm text-orange
m="is-5" p="t-1 is-5"
relative text-secondary ws-nowrap
>
<div i-ri:pushpin-line />
<span>{{ $t('status.pinned') }}</span>
</div>
</div>
<!-- Line connecting to previous status --> <!-- Line connecting to previous status -->
<template v-if="status.inReplyToAccountId"> <template v-if="status.inReplyToAccountId">
<StatusReplyingTo <StatusReplyingTo

Wyświetl plik

@ -44,7 +44,9 @@ const allowEmbeddedMedia = computed(() => status.card?.html && embeddedMediaPref
<StatusBody v-if="(!isFiltered && isSensitiveNonSpoiler) || hideAllMedia" :status="status" :newer="newer" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" /> <StatusBody v-if="(!isFiltered && isSensitiveNonSpoiler) || hideAllMedia" :status="status" :newer="newer" :with-action="!isDetails" :class="isDetails ? 'text-xl' : ''" />
<StatusSpoiler :enabled="hasSpoilerOrSensitiveMedia || isFiltered" :filter="isFiltered" :sensitive-non-spoiler="isSensitiveNonSpoiler || hideAllMedia" :is-d-m="isDM"> <StatusSpoiler :enabled="hasSpoilerOrSensitiveMedia || isFiltered" :filter="isFiltered" :sensitive-non-spoiler="isSensitiveNonSpoiler || hideAllMedia" :is-d-m="isDM">
<template v-if="spoilerTextPresent" #spoiler> <template v-if="spoilerTextPresent" #spoiler>
<p>{{ status.spoilerText }}</p> <p>
<ContentRich :content="status.spoilerText" :emojis="status.emojis" :markdown="false" />
</p>
</template> </template>
<template v-else-if="filterPhrase" #spoiler> <template v-else-if="filterPhrase" #spoiler>
<p>{{ `${$t('status.filter_hidden_phrase')}: ${filterPhrase}` }}</p> <p>{{ `${$t('status.filter_hidden_phrase')}: ${filterPhrase}` }}</p>

Wyświetl plik

@ -20,7 +20,7 @@ function clickUser(user: UserLogin) {
<button <button
flex rounded flex rounded
cursor-pointer cursor-pointer
aria-label="Switch user" :aria-label="$t('action.switch_account')"
:class="user.account.acct === currentUser?.account.acct ? '' : 'op25 grayscale'" :class="user.account.acct === currentUser?.account.acct ? '' : 'op25 grayscale'"
hover="filter-none op100" hover="filter-none op100"
@click="clickUser(user)" @click="clickUser(user)"

Wyświetl plik

@ -36,7 +36,7 @@ function processSignIn() {
<button <button
flex rounded px4 py3 text-left flex rounded px4 py3 text-left
hover:bg-active cursor-pointer transition-100 hover:bg-active cursor-pointer transition-100
aria-label="Switch user" :aria-label="$t('action.switch_account')"
@click="clickUser(user)" @click="clickUser(user)"
> >
<AccountInfo :account="user.account" :hover-card="false" square /> <AccountInfo :account="user.account" :hover-card="false" square />

Wyświetl plik

@ -73,6 +73,7 @@
"favourited": "Favorited", "favourited": "Favorited",
"more": "More", "more": "More",
"next": "Next", "next": "Next",
"open_image_preview_dialog": "Open image preview dialog",
"prev": "Prev", "prev": "Prev",
"publish": "Publish", "publish": "Publish",
"publish_thread": "Publish thread", "publish_thread": "Publish thread",
@ -632,6 +633,7 @@
"dismiss": "Dismiss", "dismiss": "Dismiss",
"read": "Read {0} description" "read": "Read {0} description"
}, },
"pinned": "Pinned post",
"poll": { "poll": {
"count": "{0} votes|{0} vote|{0} votes", "count": "{0} votes|{0} vote|{0} votes",
"ends": "ends {0}", "ends": "ends {0}",

Wyświetl plik

@ -217,11 +217,12 @@
"create": "Crear", "create": "Crear",
"delete": "Eliminar esta lista", "delete": "Eliminar esta lista",
"delete_error": "Se produjo un error eliminando la lista", "delete_error": "Se produjo un error eliminando la lista",
"edit": "Ediar esta lista", "edit": "Editar esta lista",
"edit_error": "Se produjo un error modificando la lista", "edit_error": "Se produjo un error modificando la lista",
"error": "Se produjo un error creando la lista", "error": "Se produjo un error creando la lista",
"error_prefix": "Error: ", "error_prefix": "Error: ",
"list_title_placeholder": "Título de la lista", "list_title_placeholder": "Título de la lista",
"manage": "Administrar listas",
"modify_account": "Modificar listas con cuenta", "modify_account": "Modificar listas con cuenta",
"remove_account": "Eliminar cuenta de la lista", "remove_account": "Eliminar cuenta de la lista",
"save": "Guardar" "save": "Guardar"

Wyświetl plik

@ -222,6 +222,7 @@
"error": "Errorea gertatu da zerrenda sortzerakoan", "error": "Errorea gertatu da zerrenda sortzerakoan",
"error_prefix": "Errorea: ", "error_prefix": "Errorea: ",
"list_title_placeholder": "Zerrendaren izena", "list_title_placeholder": "Zerrendaren izena",
"manage": "Kudeatu zerrendak",
"modify_account": "Aldatu honako kontua duten zerrendak:", "modify_account": "Aldatu honako kontua duten zerrendak:",
"remove_account": "Kendu kontua zerrendatik", "remove_account": "Kendu kontua zerrendatik",
"save": "Gorde aldaketak" "save": "Gorde aldaketak"

Wyświetl plik

@ -222,6 +222,7 @@
"error": "Hiba történt a lista létrehozása közben", "error": "Hiba történt a lista létrehozása közben",
"error_prefix": "Hiba: ", "error_prefix": "Hiba: ",
"list_title_placeholder": "Lista címe", "list_title_placeholder": "Lista címe",
"manage": "Listák kezelése",
"modify_account": "Listák módosítása fiókkal", "modify_account": "Listák módosítása fiókkal",
"remove_account": "Fiók eltávolítása a listáról", "remove_account": "Fiók eltávolítása a listáról",
"save": "Változtatások mentése" "save": "Változtatások mentése"

Wyświetl plik

@ -222,6 +222,7 @@
"error": "C'è stato un errore nella creazione della lista", "error": "C'è stato un errore nella creazione della lista",
"error_prefix": "Errore: ", "error_prefix": "Errore: ",
"list_title_placeholder": "Titolo lista", "list_title_placeholder": "Titolo lista",
"manage": "Gestisci liste",
"modify_account": "Modifica liste con account", "modify_account": "Modifica liste con account",
"remove_account": "Rimuovi account dalla lista", "remove_account": "Rimuovi account dalla lista",
"save": "Salva modifiche" "save": "Salva modifiche"
@ -660,7 +661,7 @@
"report": "Segnalazione", "report": "Segnalazione",
"sign_up": "Iscrizione" "sign_up": "Iscrizione"
}, },
"notifications_all": "Tutti", "notifications_all": "Tutte",
"notifications_favourite": "Apprezzamento", "notifications_favourite": "Apprezzamento",
"notifications_follow": "Nuovo seguace", "notifications_follow": "Nuovo seguace",
"notifications_follow_request": "Richiesta di seguire", "notifications_follow_request": "Richiesta di seguire",

Wyświetl plik

@ -222,6 +222,7 @@
"error": "Ocorreu um erro ao criar a lista", "error": "Ocorreu um erro ao criar a lista",
"error_prefix": "Erro: ", "error_prefix": "Erro: ",
"list_title_placeholder": "Título da lista", "list_title_placeholder": "Título da lista",
"manage": "Gerir listas",
"modify_account": "Modificar listas com a conta", "modify_account": "Modificar listas com a conta",
"remove_account": "Remover conta da lista", "remove_account": "Remover conta da lista",
"save": "Salvar alterações" "save": "Salvar alterações"

Wyświetl plik

@ -58,6 +58,7 @@
"boost": "Đăng lại", "boost": "Đăng lại",
"boost_count": "{0}", "boost_count": "{0}",
"boosted": "Đã đăng lại", "boosted": "Đã đăng lại",
"clear": "Xóa",
"clear_publish_failed": "Xóa lỗi khi đăng tút", "clear_publish_failed": "Xóa lỗi khi đăng tút",
"clear_save_failed": "Xóa lỗi khi lưu tút", "clear_save_failed": "Xóa lỗi khi lưu tút",
"clear_upload_failed": "Xóa lỗi khi xóa file", "clear_upload_failed": "Xóa lỗi khi xóa file",
@ -196,7 +197,7 @@
"desc3": "Đừng đăng nhập bằng tài khoản chính.", "desc3": "Đừng đăng nhập bằng tài khoản chính.",
"title": "Bản dựng" "title": "Bản dựng"
}, },
"desc_highlight": "Sẽ có một số lỗi và tính năng bị thiếu ở đây.", "desc_highlight": "Sẽ có lỗi và một số tính năng bị thiếu.",
"desc_para1": "Elk là một ứng dụng web Mastodon nhanh nhẹn. Sử dụng để đăng nhập Mastodon và tương tác với Fediverse.", "desc_para1": "Elk là một ứng dụng web Mastodon nhanh nhẹn. Sử dụng để đăng nhập Mastodon và tương tác với Fediverse.",
"desc_para2": "Elk là Mã Nguồn Mở và chúng tôi cải tiến nó như một dự án cộng đồng. Hãy tham gia và cùng xây dựng!", "desc_para2": "Elk là Mã Nguồn Mở và chúng tôi cải tiến nó như một dự án cộng đồng. Hãy tham gia và cùng xây dựng!",
"desc_para3": "Để thúc đẩy sự phát triển, bạn có thể tài trợ cho Nhóm thông qua GitHub Sponsors. Chúng tôi hy vọng bạn thích Elk!", "desc_para3": "Để thúc đẩy sự phát triển, bạn có thể tài trợ cho Nhóm thông qua GitHub Sponsors. Chúng tôi hy vọng bạn thích Elk!",
@ -221,6 +222,7 @@
"error": "Xảy ra lỗi khi tạo danh sách", "error": "Xảy ra lỗi khi tạo danh sách",
"error_prefix": "Lỗi: ", "error_prefix": "Lỗi: ",
"list_title_placeholder": "Tên danh sách", "list_title_placeholder": "Tên danh sách",
"manage": "Quản lý danh sách",
"modify_account": "Sửa danh sách có người này", "modify_account": "Sửa danh sách có người này",
"remove_account": "Xóa người ra khỏi danh sách", "remove_account": "Xóa người ra khỏi danh sách",
"save": "Lưu thay đổi" "save": "Lưu thay đổi"
@ -316,6 +318,7 @@
"list": "Danh sách", "list": "Danh sách",
"lists": "Danh sách", "lists": "Danh sách",
"local": "Máy chủ", "local": "Máy chủ",
"more_menu": "Thêm",
"muted_users": "Người đã ẩn", "muted_users": "Người đã ẩn",
"notifications": "Thông báo", "notifications": "Thông báo",
"privacy": "Bảo mật", "privacy": "Bảo mật",
@ -450,6 +453,8 @@
"label": "Cài đặt tài khoản" "label": "Cài đặt tài khoản"
}, },
"interface": { "interface": {
"bottom_nav": "Menu dưới màn hình",
"bottom_nav_instructions": "Chọn tối đa năm nút điều hướng yêu thích của bạn. Bao gồm nút \"Thêm\" ",
"color_mode": "Chủ đề", "color_mode": "Chủ đề",
"dark_mode": "Tối", "dark_mode": "Tối",
"default": " (mặc định)", "default": " (mặc định)",
@ -488,14 +493,14 @@
"title": "Bạn muốn nhận những kiểu thông báo nào?" "title": "Bạn muốn nhận những kiểu thông báo nào?"
}, },
"description": "Nhận thông báo kể cả khi bạn không sử dụng Elk.", "description": "Nhận thông báo kể cả khi bạn không sử dụng Elk.",
"instructions": "Đừng quên lưu các thay đổi của bạn bằng cách @:settings.notifications.push_notifications.save_settings button!", "instructions": "Nhớ lưu các thay đổi của bạn bằng cách nhấn @:settings.notifications.push_notifications.save_settings !",
"label": "Cài đặt thông báo đẩy", "label": "Cài đặt thông báo đẩy",
"policy": { "policy": {
"all": "Từ bất kỳ ai", "all": "Từ bất kỳ ai",
"followed": "Từ người tôi theo dõi", "followed": "Từ người bạn theo dõi",
"follower": "Từ người theo dõi tôi", "follower": "Từ người theo dõi bạn",
"none": "Không ai cả", "none": "Không ai cả",
"title": "Tôi sẽ nhận thông báo từ ai?" "title": "Bạn muốn nhận thông báo từ ai?"
}, },
"save_settings": "Lưu cài đặt", "save_settings": "Lưu cài đặt",
"subscription_error": { "subscription_error": {

Wyświetl plik

@ -1,7 +1,7 @@
{ {
"name": "@elk-zone/elk", "name": "@elk-zone/elk",
"type": "module", "type": "module",
"version": "0.13.2", "version": "0.14.0",
"packageManager": "pnpm@8.15.5", "packageManager": "pnpm@8.15.5",
"license": "MIT", "license": "MIT",
"homepage": "https://elk.zone/", "homepage": "https://elk.zone/",

Wyświetl plik

@ -10,11 +10,21 @@ const { t } = useI18n()
const account = await fetchAccountByHandle(handle.value) const account = await fetchAccountByHandle(handle.value)
// we need to ensure `pinned === true` on status
// because this prop is appeared only on current account's posts
function applyPinned(statuses: mastodon.v1.Status[]) {
return statuses.map((status) => {
status.pinned = true
return status
})
}
function reorderAndFilter(items: mastodon.v1.Status[]) { function reorderAndFilter(items: mastodon.v1.Status[]) {
return reorderedTimeline(items, 'account') return reorderedTimeline(items, 'account')
} }
const paginator = useMastoClient().v1.accounts.$select(account.id).statuses.list({ limit: 30, excludeReplies: true }) const pinnedPaginator = useMastoClient().v1.accounts.$select(account.id).statuses.list({ pinned: true })
const accountPaginator = useMastoClient().v1.accounts.$select(account.id).statuses.list({ limit: 30, excludeReplies: true })
if (account) { if (account) {
useHydratedHead({ useHydratedHead({
@ -26,6 +36,9 @@ if (account) {
<template> <template>
<div> <div>
<AccountTabs /> <AccountTabs />
<TimelinePaginator :paginator="paginator" :preprocess="reorderAndFilter" context="account" :account="account" /> <TimelinePaginator :paginator="pinnedPaginator" :preprocess="applyPinned" context="account" :account="account" :end-message="false" />
<!-- Upper border -->
<div h="1px" w-auto bg-border mb-1 />
<TimelinePaginator :paginator="accountPaginator" :preprocess="reorderAndFilter" context="account" :account="account" />
</div> </div>
</template> </template>

Wyświetl plik

@ -15,162 +15,172 @@ const userSettings = useUserSettings()
{{ $t('settings.preferences.label') }} {{ $t('settings.preferences.label') }}
</h1> </h1>
</template> </template>
<SettingsToggleItem <section>
:checked="getPreferences(userSettings, 'hideAltIndicatorOnPosts')" <h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center sr-only>
@click="togglePreferences('hideAltIndicatorOnPosts')" <span aria-hidden="true" block i-ri-equalizer-line />
> {{ $t('settings.preferences.label') }}
{{ $t('settings.preferences.hide_alt_indi_on_posts') }} </h2>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'hideAltIndicatorOnPosts')"
:checked="getPreferences(userSettings, 'hideGifIndicatorOnPosts')" @click="togglePreferences('hideAltIndicatorOnPosts')"
@click="togglePreferences('hideGifIndicatorOnPosts')" >
> {{ $t('settings.preferences.hide_alt_indi_on_posts') }}
{{ $t('settings.preferences.hide_gif_indi_on_posts') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'hideGifIndicatorOnPosts')"
:checked="getPreferences(userSettings, 'hideAccountHoverCard')" @click="togglePreferences('hideGifIndicatorOnPosts')"
@click="togglePreferences('hideAccountHoverCard')" >
> {{ $t('settings.preferences.hide_gif_indi_on_posts') }}
{{ $t('settings.preferences.hide_account_hover_card') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'hideAccountHoverCard')"
:checked="getPreferences(userSettings, 'hideTagHoverCard')" @click="togglePreferences('hideAccountHoverCard')"
@click="togglePreferences('hideTagHoverCard')" >
> {{ $t('settings.preferences.hide_account_hover_card') }}
{{ $t('settings.preferences.hide_tag_hover_card') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'hideTagHoverCard')"
:checked="getPreferences(userSettings, 'enableAutoplay')" @click="togglePreferences('hideTagHoverCard')"
:disabled="getPreferences(userSettings, 'enableDataSaving')" >
@click="togglePreferences('enableAutoplay')" {{ $t('settings.preferences.hide_tag_hover_card') }}
> </SettingsToggleItem>
{{ $t('settings.preferences.enable_autoplay') }} <SettingsToggleItem
</SettingsToggleItem> :checked="getPreferences(userSettings, 'enableAutoplay')"
<SettingsToggleItem :disabled="getPreferences(userSettings, 'enableDataSaving')"
:checked="getPreferences(userSettings, 'optimizeForLowPerformanceDevice')" @click="togglePreferences('enableAutoplay')"
@click="togglePreferences('optimizeForLowPerformanceDevice')" >
> {{ $t('settings.preferences.enable_autoplay') }}
{{ $t('settings.preferences.optimize_for_low_performance_device') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'optimizeForLowPerformanceDevice')"
:checked="getPreferences(userSettings, 'enableDataSaving')" @click="togglePreferences('optimizeForLowPerformanceDevice')"
@click="togglePreferences('enableDataSaving')" >
> {{ $t('settings.preferences.optimize_for_low_performance_device') }}
{{ $t("settings.preferences.enable_data_saving") }} </SettingsToggleItem>
<template #description> <SettingsToggleItem
{{ $t("settings.preferences.enable_data_saving_description") }} :checked="getPreferences(userSettings, 'enableDataSaving')"
</template> @click="togglePreferences('enableDataSaving')"
</SettingsToggleItem> >
<SettingsToggleItem {{ $t("settings.preferences.enable_data_saving") }}
:checked="getPreferences(userSettings, 'enablePinchToZoom')" <template #description>
@click="togglePreferences('enablePinchToZoom')" {{ $t("settings.preferences.enable_data_saving_description") }}
> </template>
{{ $t('settings.preferences.enable_pinch_to_zoom') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<SettingsToggleItem :checked="getPreferences(userSettings, 'enablePinchToZoom')"
:checked="getPreferences(userSettings, 'useStarFavoriteIcon')" @click="togglePreferences('enablePinchToZoom')"
@click="togglePreferences('useStarFavoriteIcon')" >
> {{ $t('settings.preferences.enable_pinch_to_zoom') }}
{{ $t('settings.preferences.use_star_favorite_icon') }} </SettingsToggleItem>
</SettingsToggleItem> <SettingsToggleItem
<h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center> :checked="getPreferences(userSettings, 'useStarFavoriteIcon')"
<div i-ri-hearts-line /> @click="togglePreferences('useStarFavoriteIcon')"
{{ $t('settings.preferences.wellbeing') }} >
</h2> {{ $t('settings.preferences.use_star_favorite_icon') }}
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'grayscaleMode')" </section>
@click="togglePreferences('grayscaleMode')" <section>
> <h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center>
{{ $t('settings.preferences.grayscale_mode') }} <span aria-hidden="true" block i-ri-hearts-line />
</SettingsToggleItem> {{ $t('settings.preferences.wellbeing') }}
<SettingsToggleItem </h2>
:checked="getPreferences(userSettings, 'hideBoostCount')" <SettingsToggleItem
@click="togglePreferences('hideBoostCount')" :checked="getPreferences(userSettings, 'grayscaleMode')"
> @click="togglePreferences('grayscaleMode')"
{{ $t('settings.preferences.hide_boost_count') }} >
</SettingsToggleItem> {{ $t('settings.preferences.grayscale_mode') }}
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'hideFavoriteCount')" <SettingsToggleItem
@click="togglePreferences('hideFavoriteCount')" :checked="getPreferences(userSettings, 'hideBoostCount')"
> @click="togglePreferences('hideBoostCount')"
{{ $t('settings.preferences.hide_favorite_count') }} >
</SettingsToggleItem> {{ $t('settings.preferences.hide_boost_count') }}
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'hideReplyCount')" <SettingsToggleItem
@click="togglePreferences('hideReplyCount')" :checked="getPreferences(userSettings, 'hideFavoriteCount')"
> @click="togglePreferences('hideFavoriteCount')"
{{ $t('settings.preferences.hide_reply_count') }} >
</SettingsToggleItem> {{ $t('settings.preferences.hide_favorite_count') }}
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'hideFollowerCount')" <SettingsToggleItem
@click="togglePreferences('hideFollowerCount')" :checked="getPreferences(userSettings, 'hideReplyCount')"
> @click="togglePreferences('hideReplyCount')"
{{ $t('settings.preferences.hide_follower_count') }} >
</SettingsToggleItem> {{ $t('settings.preferences.hide_reply_count') }}
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'hideUsernameEmojis')" <SettingsToggleItem
@click="togglePreferences('hideUsernameEmojis')" :checked="getPreferences(userSettings, 'hideFollowerCount')"
> @click="togglePreferences('hideFollowerCount')"
{{ $t("settings.preferences.hide_username_emojis") }} >
<template #description> {{ $t('settings.preferences.hide_follower_count') }}
{{ $t('settings.preferences.hide_username_emojis_description') }} </SettingsToggleItem>
</template> <SettingsToggleItem
</SettingsToggleItem> :checked="getPreferences(userSettings, 'hideUsernameEmojis')"
<SettingsToggleItem @click="togglePreferences('hideUsernameEmojis')"
:checked="getPreferences(userSettings, 'hideNews')" >
@click="togglePreferences('hideNews')" {{ $t("settings.preferences.hide_username_emojis") }}
> <template #description>
{{ $t("settings.preferences.hide_news") }} {{ $t('settings.preferences.hide_username_emojis_description') }}
</SettingsToggleItem> </template>
<SettingsToggleItem </SettingsToggleItem>
:checked="getPreferences(userSettings, 'zenMode')" <SettingsToggleItem
@click="togglePreferences('zenMode')" :checked="getPreferences(userSettings, 'hideNews')"
> @click="togglePreferences('hideNews')"
{{ $t("settings.preferences.zen_mode") }} >
<template #description> {{ $t("settings.preferences.hide_news") }}
{{ $t('settings.preferences.zen_mode_description') }} </SettingsToggleItem>
</template> <SettingsToggleItem
</SettingsToggleItem> :checked="getPreferences(userSettings, 'zenMode')"
<h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center> @click="togglePreferences('zenMode')"
<div i-ri-flask-line /> >
{{ $t('settings.preferences.title') }} {{ $t("settings.preferences.zen_mode") }}
</h2> <template #description>
<!-- Embedded Media --> {{ $t('settings.preferences.zen_mode_description') }}
<SettingsToggleItem </template>
:checked="getPreferences(userSettings, 'experimentalEmbeddedMedia')" </SettingsToggleItem>
@click="togglePreferences('experimentalEmbeddedMedia')" </section>
> <section>
{{ $t('settings.preferences.embedded_media') }} <h2 px6 py4 mt2 font-bold text-xl flex="~ gap-1" items-center>
<template #description> <span aria-hidden="true" block i-ri-flask-line />
{{ $t('settings.preferences.embedded_media_description') }} {{ $t('settings.preferences.title') }}
</template> </h2>
</SettingsToggleItem> <!-- Embedded Media -->
<SettingsToggleItem <SettingsToggleItem
:checked="getPreferences(userSettings, 'experimentalVirtualScroller')" :checked="getPreferences(userSettings, 'experimentalEmbeddedMedia')"
@click="togglePreferences('experimentalVirtualScroller')" @click="togglePreferences('experimentalEmbeddedMedia')"
> >
{{ $t('settings.preferences.virtual_scroll') }} {{ $t('settings.preferences.embedded_media') }}
<template #description> <template #description>
{{ $t('settings.preferences.virtual_scroll_description') }} {{ $t('settings.preferences.embedded_media_description') }}
</template> </template>
</SettingsToggleItem> </SettingsToggleItem>
<SettingsToggleItem <SettingsToggleItem
:checked="getPreferences(userSettings, 'experimentalGitHubCards')" :checked="getPreferences(userSettings, 'experimentalVirtualScroller')"
@click="togglePreferences('experimentalGitHubCards')" @click="togglePreferences('experimentalVirtualScroller')"
> >
{{ $t('settings.preferences.github_cards') }} {{ $t('settings.preferences.virtual_scroll') }}
<template #description> <template #description>
{{ $t('settings.preferences.github_cards_description') }} {{ $t('settings.preferences.virtual_scroll_description') }}
</template> </template>
</SettingsToggleItem> </SettingsToggleItem>
<SettingsToggleItem <SettingsToggleItem
:checked="getPreferences(userSettings, 'experimentalUserPicker')" :checked="getPreferences(userSettings, 'experimentalGitHubCards')"
@click="togglePreferences('experimentalUserPicker')" @click="togglePreferences('experimentalGitHubCards')"
> >
{{ $t('settings.preferences.user_picker') }} {{ $t('settings.preferences.github_cards') }}
<template #description> <template #description>
{{ $t('settings.preferences.user_picker_description') }} {{ $t('settings.preferences.github_cards_description') }}
</template> </template>
</SettingsToggleItem> </SettingsToggleItem>
<SettingsToggleItem
:checked="getPreferences(userSettings, 'experimentalUserPicker')"
@click="togglePreferences('experimentalUserPicker')"
>
{{ $t('settings.preferences.user_picker') }}
<template #description>
{{ $t('settings.preferences.user_picker_description') }}
</template>
</SettingsToggleItem>
</section>
</MainContent> </MainContent>
</template> </template>