This commit is contained in:
@@ -1,57 +1,60 @@
|
||||
<template>
|
||||
<div class="q-pa-md w100 flex justify-between">
|
||||
<div class="flex column q-mx-lg justify-center">
|
||||
<div class="w100 flex justify-between bg-grey-11 text-caption q-pa-md q-gutter-md">
|
||||
<div class="flex column col-12 col-sm">
|
||||
<base-logo class="text-body1 q-pb-sm"/>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-map-marker-outline" color="brand" class="q-pr-sm"/>
|
||||
<span>{{ $t('footer__contacts_location') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-phone-outline" color="brand" class="q-pr-sm" />
|
||||
<span>+7 (926) 339-04-25</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-email-outline" color="brand" class="q-pr-sm"/>
|
||||
<a
|
||||
href="mailto:a-mart@ya.ru"
|
||||
style="text-decoration: none; color: inherit"
|
||||
>
|
||||
a-mart@ya.ru
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex column col-12 col-sm">
|
||||
<span class="text-body1 text-bold">
|
||||
{{ $t('footer__docs') }}
|
||||
</span>
|
||||
<div
|
||||
v-for="item in Docs"
|
||||
:key="item.id"
|
||||
class="text-caption"
|
||||
>
|
||||
<a
|
||||
:href="item.href"
|
||||
target="_blank"
|
||||
style="text-decoration: none; color: inherit"
|
||||
class="text-h6"
|
||||
style="text-decoration: underline; color: inherit"
|
||||
>
|
||||
{{ $t(item.name) }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex column q-mx-lg">
|
||||
<div class="text-h6 bold">
|
||||
{{ $t('footer__contacts_ip') }}
|
||||
</div>
|
||||
<div class="text-caption">
|
||||
{{ $t('footer__contacts_ip_detail') }}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-map-marker-outline" color="brand" class="q-pr-sm"/>
|
||||
<span>{{ $t('footer__contacts_location') }}</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-phone-outline" color="brand" class="q-pr-sm" />
|
||||
<span>+7 (926) 339-04-25</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<q-icon name="mdi-email-outline" color="brand" class="q-pr-sm"/>
|
||||
<a
|
||||
href="mailto:a-mart@ya.ru"
|
||||
style="text-decoration: none; color: inherit"
|
||||
>
|
||||
a-mart@ya.ru
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="flex column col-12 col-sm">
|
||||
<div class="text-grey">
|
||||
{{ $t('footer__description_user_data') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
const Docs = [
|
||||
{ id: 1, name: 'footer__doc_terms_of_use', href: '' },
|
||||
{ id: 2, name: 'footer__doc_privacy_policy', href: '' }
|
||||
]
|
||||
import BaseLogo from 'components/BaseLogo.vue';
|
||||
const Docs = [
|
||||
{ id: 1, name: 'footer__doc_terms_of_use', href: '/terms-of-use' },
|
||||
{ id: 2, name: 'footer__doc_privacy_policy', href: '/privacy-policy' }
|
||||
]
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
</div>
|
||||
<div class="text-h4 text-brand">
|
||||
{{ $t('banner__slogan_body') }}
|
||||
<span class="text-no-wrap">
|
||||
<q-icon dense name="telegram" style="color: #27a7e7"/>
|
||||
<span style="color: #27a7e7">Telegram</span>
|
||||
<span class="text-no-wrap" color="primary">
|
||||
<q-icon dense name="telegram"/>
|
||||
<span>Telegram</span>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
47
src/components/MarkdownViewver.vue
Normal file
47
src/components/MarkdownViewver.vue
Normal file
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<q-markdown
|
||||
:src="markdownContent"
|
||||
no-heading-anchor-links
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
locale: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
documentName: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
// Импорт всех Markdown-файлов как raw-строк
|
||||
const mdFiles = import.meta.glob('assets/docs/*.md', {
|
||||
query: '?raw',
|
||||
import: 'default',
|
||||
eager: true
|
||||
})
|
||||
|
||||
const markdownContent = computed(() => {
|
||||
const baseLang = props.locale.split('-')[0].toLowerCase()
|
||||
|
||||
// Формируем имена файлов
|
||||
const localizedFileName = `${props.documentName}_${baseLang}.md`
|
||||
const fallbackFileName = `${props.documentName}_en.md`
|
||||
|
||||
// Находим пути к файлам
|
||||
const filePaths = Object.keys(mdFiles)
|
||||
const localizedPath = filePaths.find(path => path.endsWith(localizedFileName))
|
||||
const fallbackPath = filePaths.find(path => path.endsWith(fallbackFileName))
|
||||
|
||||
// Возвращаем контент в порядке приоритета
|
||||
if (localizedPath) return mdFiles[localizedPath]
|
||||
if (fallbackPath) return mdFiles[fallbackPath]
|
||||
|
||||
return `# Document load error\n> Missing files for ${props.documentName}`
|
||||
})
|
||||
</script>
|
||||
Reference in New Issue
Block a user