-
Notifications
You must be signed in to change notification settings - Fork 0
feat: webinar app #181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: webinar app #181
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| export default defineAppConfig({ | ||
| ui: { | ||
| button: { | ||
| slots: { | ||
| base: 'font-semibold', | ||
| }, | ||
| variants: { | ||
| size: { | ||
| xl: { | ||
| base: 'px-4 py-3 font-semibold', | ||
| }, | ||
| }, | ||
| variant: { | ||
| gradient: 'text-white bg-linear-to-br from-secondary-400 to-secondary-500 hover:opacity-90 disabled:from-neutral-300 disabled:to-neutral-400 aria-disabled:from-neutral-300 aria-disabled:to-neutral-400 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary', | ||
| }, | ||
| color: { | ||
| secondary: '!text-white disabled:!bg-inverted/25', | ||
| }, | ||
| }, | ||
| }, | ||
| tabs: { | ||
| variants: { | ||
| variant: { | ||
| pill: { | ||
| trigger: 'data-[state=active]:!text-white', | ||
| }, | ||
| gradient: { | ||
| list: 'bg-elevated rounded-lg', | ||
| trigger: 'data-[state=active]:bg-linear-to-br from-lime-300 to-lime-500 data-[state=active]:text-neutral-950 flex-1 w-full', | ||
| indicator: 'rounded-md shadow-xs', | ||
| }, | ||
| }, | ||
| }, | ||
| }, | ||
| modal: { | ||
| slots: { | ||
| content: 'divide-y-0', | ||
| header: 'pb-0 min-h-12', | ||
| title: 'text-lg/5 font-semibold', | ||
| }, | ||
| }, | ||
| navigationMenu: { | ||
| slots: { | ||
| link: 'text-sm', | ||
| }, | ||
| }, | ||
| toast: { | ||
| slots: { | ||
| title: 'text-lg/6', | ||
| description: 'leading-4', | ||
| icon: 'shrink-0 size-7', | ||
| }, | ||
| }, | ||
| card: { | ||
| slots: { | ||
| body: 'p-4 sm:p-4', | ||
| }, | ||
| }, | ||
| }, | ||
| }) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| <template> | ||
| <UApp | ||
| :locale="locales[locale]" | ||
| class="min-h-svh" | ||
| > | ||
| <NuxtLoadingIndicator :color="false" class="bg-primary h-[2px]" /> | ||
| <NuxtPage /> | ||
| </UApp> | ||
| </template> | ||
|
|
||
| <script setup lang="ts"> | ||
| import * as locales from '@nuxt/ui/locale' | ||
|
|
||
| const { locale } = useI18n() | ||
|
|
||
| const lang = computed(() => locales[locale.value].code) | ||
| const dir = computed(() => locales[locale.value].dir) | ||
|
|
||
| useHead({ | ||
| htmlAttrs: { | ||
| lang, | ||
| dir, | ||
| }, | ||
| }) | ||
| </script> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| h1, h2, h3, h4, h5, h6 { | ||
| font-family: var(--font-headers); | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| <template> | ||
| <img | ||
| src="/sushi-main-logo.png" | ||
| alt="" | ||
| class="mx-auto h-20 w-auto motion-preset-pop" | ||
| > | ||
| </template> | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| <template> | ||
| <div class="bg-[#ffed00]"> | ||
| <UCarousel | ||
| v-slot="{ item }" | ||
| loop | ||
| :auto-scroll="{ | ||
| speed: 1, | ||
| }" | ||
| :items="items" | ||
| :ui="{ | ||
| item: 'shrink-0 basis-full md:basis-1/3 min-w-120 h-full min-h-16 flex flex-row gap-4 items-center justify-around', | ||
| }" | ||
| > | ||
| <h4 class="text-2xl font-black uppercase"> | ||
| {{ item }} | ||
| </h4> | ||
|
|
||
| <img | ||
| src="/sushi-heart.svg" | ||
| alt="" | ||
| class="w-10 h-auto opacity-15" | ||
| > | ||
| </UCarousel> | ||
| </div> | ||
| </template> | ||
|
|
||
| <script setup lang="ts"> | ||
| const items = [ | ||
| 'Вебинар Суши Love 2025', | ||
| 'Будем делиться опытом', | ||
| 'Как избежать ошибок', | ||
| 'На 100% бесплатно', | ||
| ] | ||
| </script> |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,28 @@ | ||||||||||||||||||||
| <template> | ||||||||||||||||||||
| <div class="flex flex-col max-w-sm mx-auto mt-32 text-center items-center"> | ||||||||||||||||||||
| <h1 class="text-4xl font-bold mb-4"> | ||||||||||||||||||||
| {{ $t('error.title') }} {{ error?.statusCode }} | ||||||||||||||||||||
| </h1> | ||||||||||||||||||||
| <p>{{ error?.statusMessage }}</p> | ||||||||||||||||||||
|
|
||||||||||||||||||||
|
Comment on lines
+3
to
+7
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Missing i18n keys; add safe fallback for statusMessage error.title and common.to-home aren’t defined in ru-RU.json. Also guard empty statusMessage. - <h1 class="text-4xl font-bold mb-4">
- {{ $t('error.title') }} {{ error?.statusCode }}
- </h1>
- <p>{{ error?.statusMessage }}</p>
+ <h1 class="text-4xl font-bold mb-4">
+ {{ $t('error.title') }} {{ error?.statusCode }}
+ </h1>
+ <p v-if="error?.statusMessage">{{ error.statusMessage }}</p>
+ <p v-else>{{ $t('error.common') }}</p>📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||
| <UButton | ||||||||||||||||||||
| variant="solid" | ||||||||||||||||||||
| size="xl" | ||||||||||||||||||||
| class="mt-12 w-full justify-center" | ||||||||||||||||||||
| @click="handleError" | ||||||||||||||||||||
| > | ||||||||||||||||||||
| {{ $t('common.to-home') }} | ||||||||||||||||||||
| </UButton> | ||||||||||||||||||||
| </div> | ||||||||||||||||||||
|
coderabbitai[bot] marked this conversation as resolved.
|
||||||||||||||||||||
| </template> | ||||||||||||||||||||
|
|
||||||||||||||||||||
| <script setup lang="ts"> | ||||||||||||||||||||
| const { error } = defineProps<{ error: { | ||||||||||||||||||||
| statusCode: number | ||||||||||||||||||||
| statusMessage?: string | ||||||||||||||||||||
| } }>() | ||||||||||||||||||||
|
|
||||||||||||||||||||
| function handleError() { | ||||||||||||||||||||
| clearError({ redirect: '/' }) | ||||||||||||||||||||
| } | ||||||||||||||||||||
| </script> | ||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,126 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||
| <template> | ||||||||||||||||||||||||||||||||||||||||||||||||
| <div class="mt-10"> | ||||||||||||||||||||||||||||||||||||||||||||||||
| <HeaderLogo /> | ||||||||||||||||||||||||||||||||||||||||||||||||
| </div> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| <UPageHero | ||||||||||||||||||||||||||||||||||||||||||||||||
| orientation="horizontal" | ||||||||||||||||||||||||||||||||||||||||||||||||
| title="Мечтаете о своем заведении? Готовый алгоритм действий для новичков" | ||||||||||||||||||||||||||||||||||||||||||||||||
| description="Бесплатный вебинар: «Как открыть ресторан, кофейню или суши-бар с нуля и избежать ошибок». Получите пошаговую инструкцию и ответы на все вопросы, от поиска помещения до первого заработка." | ||||||||||||||||||||||||||||||||||||||||||||||||
| headline="Поторопись!" | ||||||||||||||||||||||||||||||||||||||||||||||||
| :links="links" | ||||||||||||||||||||||||||||||||||||||||||||||||
| :ui="{ | ||||||||||||||||||||||||||||||||||||||||||||||||
| headline: 'py-2 px-4 w-fit bg-secondary text-white rounded-lg motion-preset-seesaw', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }" | ||||||||||||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||||||||||||
| <video | ||||||||||||||||||||||||||||||||||||||||||||||||
| controls | ||||||||||||||||||||||||||||||||||||||||||||||||
| class="max-h-160 w-auto mx-auto rounded-xl" | ||||||||||||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||||||||||||
| <source src="https://storage.yandexcloud.net/sushi-love-test/telegram/files/BAACAgIAAxkBAAOFaMwda7U9ddiws5ZJ4oIbaeSlw0YAAvWDAAJt32BKU94XDWZ9cCg2BA.mp4" type="video/mp4"> | ||||||||||||||||||||||||||||||||||||||||||||||||
| Ваш браузер не поддерживает видео | ||||||||||||||||||||||||||||||||||||||||||||||||
| </video> | ||||||||||||||||||||||||||||||||||||||||||||||||
| </UPageHero> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| <InfiniteTitlesDivider /> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| <UPageSection | ||||||||||||||||||||||||||||||||||||||||||||||||
| title="Для кого этот вебинар?" | ||||||||||||||||||||||||||||||||||||||||||||||||
| description="Этот вебинар идеально подойдет для вас, если вы:" | ||||||||||||||||||||||||||||||||||||||||||||||||
| orientation="horizontal" | ||||||||||||||||||||||||||||||||||||||||||||||||
| :reverse="true" | ||||||||||||||||||||||||||||||||||||||||||||||||
| :features="firstSectionItems" | ||||||||||||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||||||||||||
| Тут фото? | ||||||||||||||||||||||||||||||||||||||||||||||||
| </UPageSection> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| <UPageSection | ||||||||||||||||||||||||||||||||||||||||||||||||
| title="Что вы узнаете на вебинаре?" | ||||||||||||||||||||||||||||||||||||||||||||||||
| description="За 1,5 часа вы получите готовый план действий" | ||||||||||||||||||||||||||||||||||||||||||||||||
| orientation="horizontal" | ||||||||||||||||||||||||||||||||||||||||||||||||
| :features="secondSectionItems" | ||||||||||||||||||||||||||||||||||||||||||||||||
| > | ||||||||||||||||||||||||||||||||||||||||||||||||
| Тут фото? | ||||||||||||||||||||||||||||||||||||||||||||||||
| </UPageSection> | ||||||||||||||||||||||||||||||||||||||||||||||||
| </template> | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| <script setup lang="ts"> | ||||||||||||||||||||||||||||||||||||||||||||||||
| import type { PageFeatureProps } from '@nuxt/ui' | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| const links = ref([ | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| label: 'Записаться', | ||||||||||||||||||||||||||||||||||||||||||||||||
| to: 'https://t.me/SLFranchiseBot', | ||||||||||||||||||||||||||||||||||||||||||||||||
| target: '_blank', | ||||||||||||||||||||||||||||||||||||||||||||||||
| trailingIcon: 'i-lucide-arrow-right', | ||||||||||||||||||||||||||||||||||||||||||||||||
| ui: { | ||||||||||||||||||||||||||||||||||||||||||||||||
| base: 'px-6 text-xl', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ]) | ||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+50
to
+60
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. External link opens in new tab without rel=noopener — fix reverse tabnabbing and simplify reactivity. Add rel to external Apply this diff: -const links = ref([
+const links = [
{
label: 'Записаться',
to: 'https://t.me/SLFranchiseBot',
target: '_blank',
+ rel: 'noopener noreferrer',
trailingIcon: 'i-lucide-arrow-right',
ui: {
base: 'px-6 text-xl',
},
},
-])
+]📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| const firstSectionItems: PageFeatureProps[] = [ | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Мечтаете открыть свое заведение', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-store', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Ищете бизнес с быстрой окупаемостью', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-piggy-bank', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Не знаете, с чего начать и сколько денег нужно', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-chart-pie', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Боитесь не справиться с конкуренцией и привлечением гостей', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-users', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Не понимаете, как контролировать закупки, себестоимость и воровство на кухне', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-hand-coins', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| const secondSectionItems: PageFeatureProps[] = [ | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Актуальность рынка', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Данные исследований за 2025 год', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-pie-chart', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Выбор и проверка помещения', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Как избежать ошибок и не взять «проблемное» место', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-home', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Юридические вопросы', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Какие документы нужны и как их правильно оформить', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-file-text', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Ремонт и оборудование', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Как не переплатить подрядчикам и где искать недорогое оборудование', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-hammer', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Подбор и обучение персонала', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Где найти поваров и как их обучить стандартам', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-users', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Запуск рекламы', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'И привлечение первых гостей', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-megaphone', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Финансовый расчет', | ||||||||||||||||||||||||||||||||||||||||||||||||
| description: 'Разбор инвестиций, ежемесячных расходов и планируемой прибыли', | ||||||||||||||||||||||||||||||||||||||||||||||||
| icon: 'i-lucide-chart-line', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||
| ] | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||
| useHead({ | ||||||||||||||||||||||||||||||||||||||||||||||||
| title: 'Вебинар', | ||||||||||||||||||||||||||||||||||||||||||||||||
| }) | ||||||||||||||||||||||||||||||||||||||||||||||||
| </script> | ||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,27 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "name": "Русский", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "short-name": "Рус", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "common": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "color-mode": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "title": "Тема", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "select": "Выберите тему интерфейса", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "system": "Системная", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "light": "Светлая", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "dark": "Темная", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "switch": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "system": "Переключиться на системную тему", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "light": "Переключиться на светлый режим", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "dark": "Переключиться на темный режим" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "to-home": "На главную" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "error": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "common": "Неверное значение", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "not-selected": "Не выбрано", | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "length": { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "invalid": "Недопустимое количество символов" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| "file-size-or-type": "Недопустимый размер или тип файла" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+19
to
+26
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix typos/diacritics; add missing keys (error.title, common.to-home) Current text uses decomposed “й” (“й”) and is misspelled; also missing required keys referenced in templates. "error": {
+ "title": "Ошибка",
"common": "Неверное значение",
"not-selected": "Не выбрано",
"length": {
"invalid": "Недопустимое количество символов"
},
- "file-size-or-type": "Недопустимый размер или тип файла"
+ "file-size-or-type": "Недопустимый размер или тип файла"
}Also add a button label: "common": {
"color-mode": {
"title": "Тема",
"select": "Выберите тему интерфейса",
"system": "Системная",
"light": "Светлая",
"dark": "Темная",
"switch": {
"system": "Переключиться на системную тему",
"light": "Переключиться на светлый режим",
"dark": "Переключиться на темный режим"
}
- }
+ },
+ "to-home": "На главную"
},📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Logo needs accessible alt text; consider linking to home
Empty alt hides a meaningful image from screen readers; header logos should be descriptive. Also, wrapping with NuxtLink improves UX.
📝 Committable suggestion
🤖 Prompt for AI Agents