forked from Mirrors/elk
727d05915f
* fix: rtl arrows on settings page * fix: border on settings page for RTL languages * fix: RTL fixes for logo, search box and logout icon * fix: RTL layout bugs in conversations * chore: remove rtl setting icon * improve arabic locale * add new entries to arabic locale * chore: include number format * fix: RTL layout on several pages * fix: RTL layout of account header and sign in modal * fix: always display account handle in LTR * fix: move character counter in publish widget to left side for RTL * fix: remove border-ss-none unocss rule * fix: many RTL fixes * fix: RTL fixes for many pages * fix: use viewer's direction in all content * chore: use new arabic plural rules * chore: flip arrow on main content header * chore: fix StatusPoll and show_new_items for zh-TW * chore: StatusPoll tooltip on bottom * chore: add `en` variants to i18n conf * chore: update entry to use new plural rule * fix: automatic content direction for status * fix: direction for account handle * fix: direction of polls Co-authored-by: userquin <userquin@gmail.com> Co-authored-by: Jean-Paul Khawam <jeanpaulkhawam@protonmail.com> Co-authored-by: Daniel Roe <daniel@roe.dev>
64 lines
1.5 KiB
Vue
64 lines
1.5 KiB
Vue
<script lang="ts" setup>
|
|
const props = defineProps<{
|
|
text?: string
|
|
description?: string
|
|
icon?: string
|
|
to: string | Record<string, string>
|
|
command?: boolean
|
|
}>()
|
|
|
|
const router = useRouter()
|
|
|
|
useCommand({
|
|
scope: 'Settings',
|
|
|
|
name: () => props.text ?? (typeof props.to === 'string' ? props.to as string : props.to.name),
|
|
description: () => props.description,
|
|
icon: () => props.icon || '',
|
|
visible: () => props.command,
|
|
|
|
onActivate() {
|
|
router.push(props.to)
|
|
},
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<NuxtLink
|
|
:to="to"
|
|
exact-active-class="text-primary"
|
|
block w-full group focus:outline-none
|
|
@click="$scrollToTop"
|
|
>
|
|
<div
|
|
w-full flex w-fit px5 py3 md:gap2 gap4 items-center
|
|
transition-250 group-hover:bg-active
|
|
group-focus-visible:ring="2 current"
|
|
>
|
|
<div flex-1 flex items-center md:gap2 gap4>
|
|
<div
|
|
flex items-center justify-center flex-shrink-0
|
|
:class="$slots.description ? 'w-12 h-12' : ''"
|
|
>
|
|
<slot name="icon">
|
|
<div v-if="icon" :class="icon" md:text-size-inherit text-xl />
|
|
</slot>
|
|
</div>
|
|
<div space-y-1>
|
|
<p>
|
|
<slot>
|
|
<span>{{ text }}</span>
|
|
</slot>
|
|
</p>
|
|
<p v-if="$slots.description" text-sm text-secondary>
|
|
<slot name="description">
|
|
{{ description }}
|
|
</slot>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div i-ri:arrow-right-s-line text-xl text-secondary-light class="rtl-flip" />
|
|
</div>
|
|
</NuxtLink>
|
|
</template>
|