Add KYC translations, AI button, improve chat, swap homepage sections
Some checks failed
Build Docker Image / build (push) Has been cancelled

- Add missing kycOverview.list translations (en + ru)
- Add AI assistant button to navigation (left of globe)
- Improve AI chat layout: fixed textarea at bottom, full width
- Swap homepage sections: How it works before Who it's for
This commit is contained in:
Ruslan Bakiev
2026-01-08 13:58:09 +07:00
parent 34c7404a42
commit 6b2208f0ae
5 changed files with 65 additions and 36 deletions

View File

@@ -21,8 +21,13 @@
</NuxtLink> </NuxtLink>
</nav> </nav>
<!-- Right: Globe + Team + User --> <!-- Right: AI + Globe + Team + User -->
<div class="flex items-center gap-2 ml-auto"> <div class="flex items-center gap-2 ml-auto">
<!-- AI Assistant button -->
<NuxtLink :to="localePath('/clientarea/ai')" class="btn btn-ghost btn-circle">
<Icon name="lucide:bot" size="20" />
</NuxtLink>
<!-- Globe (language/currency) dropdown --> <!-- Globe (language/currency) dropdown -->
<div class="dropdown dropdown-end"> <div class="dropdown dropdown-end">
<button tabindex="0" class="btn btn-ghost btn-circle"> <button tabindex="0" class="btn btn-ghost btn-circle">

View File

@@ -1,7 +1,7 @@
<template> <template>
<div class="flex flex-col h-[calc(100vh-4rem)]"> <div class="flex flex-col h-[calc(100vh-8rem)]">
<!-- Chat messages area --> <!-- Chat messages area -->
<div ref="chatContainer" class="flex-1 overflow-y-auto p-4 space-y-3"> <div ref="chatContainer" class="flex-1 overflow-y-auto p-4 pb-24 space-y-3">
<div <div
v-for="(message, idx) in chat" v-for="(message, idx) in chat"
:key="idx" :key="idx"
@@ -9,7 +9,7 @@
:class="message.role === 'user' ? 'justify-end' : 'justify-start'" :class="message.role === 'user' ? 'justify-end' : 'justify-start'"
> >
<div <div
class="max-w-[80%] lg:max-w-[60%] rounded-2xl px-4 py-3 shadow-sm" class="max-w-[80%] lg:max-w-[70%] rounded-2xl px-4 py-3 shadow-sm"
:class="message.role === 'user' ? 'bg-primary text-primary-content' : 'bg-base-100 text-base-content'" :class="message.role === 'user' ? 'bg-primary text-primary-content' : 'bg-base-100 text-base-content'"
> >
<Text weight="semibold" class="mb-1"> <Text weight="semibold" class="mb-1">
@@ -25,9 +25,9 @@
</div> </div>
</div> </div>
<!-- Input area pinned to bottom --> <!-- Input area fixed to bottom -->
<div class="border-t border-base-300 bg-base-100 p-4"> <div class="fixed bottom-0 left-0 right-0 border-t border-base-300 bg-base-100 p-4 z-30">
<form class="flex items-end gap-3 max-w-4xl mx-auto" @submit.prevent="handleSend"> <form class="flex items-end gap-3 px-4 lg:px-6" @submit.prevent="handleSend">
<div class="flex-1"> <div class="flex-1">
<Textarea <Textarea
v-model="input" v-model="input"

View File

@@ -1,5 +1,36 @@
<template> <template>
<Stack gap="12"> <Stack gap="12">
<!-- How it works -->
<Section variant="plain">
<Stack gap="6" align="center">
<Heading :level="2">{{ $t('howto.title') }}</Heading>
<Grid :cols="1" :md="3" :gap="6">
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary">🔍</IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step1.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step1.description') }}</Text>
</Stack>
</Card>
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary">🤝</IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step2.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step2.description') }}</Text>
</Stack>
</Card>
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary"></IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step3.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step3.description') }}</Text>
</Stack>
</Card>
</Grid>
</Stack>
</Section>
<!-- Who it's for -->
<Section variant="plain"> <Section variant="plain">
<Stack gap="8" align="center"> <Stack gap="8" align="center">
<Heading :level="2">{{ $t('roles.title') }}</Heading> <Heading :level="2">{{ $t('roles.title') }}</Heading>
@@ -53,35 +84,6 @@
</Grid> </Grid>
</Stack> </Stack>
</Section> </Section>
<Section variant="plain">
<Stack gap="6" align="center">
<Heading :level="2">{{ $t('howto.title') }}</Heading>
<Grid :cols="1" :md="3" :gap="6">
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary">🔍</IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step1.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step1.description') }}</Text>
</Stack>
</Card>
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary">🤝</IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step2.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step2.description') }}</Text>
</Stack>
</Card>
<Card padding="lg">
<Stack gap="3" align="center">
<IconCircle tone="primary"></IconCircle>
<Heading :level="3" weight="semibold">{{ $t('howto.step3.title') }}</Heading>
<Text tone="muted" align="center">{{ $t('howto.step3.description') }}</Text>
</Stack>
</Card>
</Grid>
</Stack>
</Section>
</Stack> </Stack>
</template> </template>

View File

@@ -3,6 +3,17 @@
"header": { "header": {
"title": "KYC verification" "title": "KYC verification"
}, },
"list": {
"title": "My applications",
"unnamed": "Unnamed company",
"submitted": "Submitted",
"inn": "INN",
"status": {
"approved": "Approved",
"rejected": "Rejected",
"pending": "Pending"
}
},
"errors": { "errors": {
"title": "Error", "title": "Error",
"retry": "Retry", "retry": "Retry",

View File

@@ -3,6 +3,17 @@
"header": { "header": {
"title": "Верификация KYC" "title": "Верификация KYC"
}, },
"list": {
"title": "Мои заявки",
"unnamed": "Без названия",
"submitted": "Подано",
"inn": "ИНН",
"status": {
"approved": "Одобрено",
"rejected": "Отклонено",
"pending": "На рассмотрении"
}
},
"errors": { "errors": {
"title": "Ошибка", "title": "Ошибка",
"retry": "Повторить", "retry": "Повторить",