-
Templates
-
Choose one of the available templates to create your project
+
+
{{ t('templates.title') }}
+
{{ t('templates.description') }}
@@ -27,8 +30,8 @@ useHead({
}
}
-:global(html.dark){
- .top{
+:global(html.dark) {
+ .top {
& > p {
color: var(--zinc-300);
}
diff --git a/src/shared/lib/i18n/index.ts b/src/shared/lib/i18n/index.ts
new file mode 100644
index 0000000..10f3da2
--- /dev/null
+++ b/src/shared/lib/i18n/index.ts
@@ -0,0 +1,37 @@
+import { createI18n } from 'vue-i18n';
+import { useCookies } from '@vueuse/integrations/useCookies';
+import enLocale from './locales/en-US';
+import ruLocale from './locales/ru-RU';
+import zhLocale from './locales/zh-CN';
+
+type MessageSchema = typeof enLocale;
+
+const messages = {
+ 'en-US': {
+ ...enLocale
+ },
+ 'ru-RU': {
+ ...ruLocale
+ },
+ 'zh-CN': {
+ ...zhLocale
+ }
+};
+const cookies = useCookies();
+
+const getCurrentLocale = () => {
+ const cookieLanguage = cookies.get('i18n');
+ if (cookieLanguage) {
+ return cookieLanguage;
+ }
+
+ return 'en-US';
+};
+
+const i18n = createI18n<[MessageSchema], 'en-US' | 'ru-RU' | 'zh-CN'>({
+ legacy: false,
+ locale: getCurrentLocale(),
+ messages: messages
+});
+
+export default i18n;
diff --git a/src/shared/lib/i18n/locales/en-US.ts b/src/shared/lib/i18n/locales/en-US.ts
new file mode 100644
index 0000000..418f03b
--- /dev/null
+++ b/src/shared/lib/i18n/locales/en-US.ts
@@ -0,0 +1,79 @@
+export default {
+ sidebar: {
+ badge: 'free',
+ input: 'Search',
+ section: 'workspace',
+ boards: 'Boards',
+ templates: 'Templates',
+ members: 'Members',
+ settings: 'Settings',
+ plan: 'Upgrade your plan'
+ },
+ header: {
+ upgrade: 'Upgrade "Pro"',
+ collaboration: 'Invite members',
+ name: 'Test Workspace'
+ },
+ boards: {
+ title: 'Boards in this team',
+ description: 'All your active boards are located here, which you can switch to and work on',
+ create: 'Create new board',
+ filter: {
+ input: 'Filter boards...',
+ popularity: 'By popularity',
+ tooltips: {
+ first_sort: 'Sort boards by popularity',
+ second_sort: 'Show recent boards'
+ }
+ },
+ card: {
+ date_updated: 'Updated'
+ },
+ chart: {
+ title_boards: 'Сreated boards',
+ description_boards: 'Create, share, work, and then analyze your activity on Jenda',
+ title_tasks: 'Your tasks',
+ description_tasks: 'Solve and complete the tasks you started'
+ }
+ },
+ templates: {
+ title: 'Templates',
+ description: 'Choose one of the available templates to create your project',
+ user: 'creator',
+ items: [
+ {
+ title: 'Base Kanban',
+ tag: 'Recommended',
+ description: 'Create a basic project with "Base Kanban" template',
+ date: 'June 12, 2024'
+ },
+ {
+ title: 'Roadmap',
+ tag: 'New',
+ description: 'Create a project based on our "Roadmap" template',
+ date: 'June 18, 2024'
+ },
+ {
+ title: 'Web Development',
+ tag: 'New',
+ description: 'Create a basic project with "Web Development" template',
+ date: 'July 16, 2024'
+ }
+ ]
+ },
+ sheet: {
+ title: 'Create board',
+ description: 'The new board will allow you to create tasks for solving them.',
+ form: {
+ name: {
+ label: 'Board name',
+ placeholder: 'e.g. "Jenda"'
+ },
+ description: {
+ label: 'Board description',
+ placeholder: 'e.g. development board for our company'
+ },
+ submit: 'Create board'
+ }
+ }
+};
diff --git a/src/shared/lib/i18n/locales/ru-RU.ts b/src/shared/lib/i18n/locales/ru-RU.ts
new file mode 100644
index 0000000..e1a8fe3
--- /dev/null
+++ b/src/shared/lib/i18n/locales/ru-RU.ts
@@ -0,0 +1,79 @@
+export default {
+ sidebar: {
+ badge: 'free',
+ input: 'Поиск',
+ section: 'рабочее пространство',
+ boards: 'Доски',
+ templates: 'Шаблоны',
+ members: 'Участники',
+ settings: 'Настройки',
+ plan: 'Обновите свой план'
+ },
+ header: {
+ upgrade: 'Обновите до "Pro"',
+ collaboration: 'Пригласить участников',
+ name: 'Тестовое рабочее пространство'
+ },
+ boards: {
+ title: 'Доски в этой команде',
+ description: 'Все ваши активные доски находятся здесь, вы можете переключаться и работать с ними',
+ create: 'Создать новую доску',
+ filter: {
+ input: 'Найти доску...',
+ popularity: 'По популярности',
+ tooltips: {
+ first_sort: 'Сортировать доски по популярности',
+ second_sort: 'Последние доски'
+ }
+ },
+ card: {
+ date_updated: 'Обновлено'
+ },
+ chart: {
+ title_boards: 'Созданные доски',
+ description_boards: 'Создавайте, делитесь, а затем анализируйте свою активность на Jenda',
+ title_tasks: 'Ваши задачи',
+ description_tasks: 'Решайте и завершайте начатые задачи'
+ }
+ },
+ templates: {
+ title: 'Шаблоны',
+ description: 'Выберите один из доступных шаблонов, чтобы создать ваш проект',
+ user: 'создатель',
+ items: [
+ {
+ title: 'Базовый шаблон',
+ tag: 'Рекомендуемый',
+ description: 'Создайте базовый проект с помощью шаблона "Базовый шаблон"',
+ date: '12 июня 2024'
+ },
+ {
+ title: 'Дорожная карта',
+ tag: 'Новый',
+ description: 'Создайте проект на основе нашего шаблона "Дорожная карта"',
+ date: '18 июня 2024'
+ },
+ {
+ title: 'Веб-разработка',
+ tag: 'Новый',
+ description: 'Создайте базовый проект с помощью шаблона "Веб-разработка"',
+ date: '16 июля 2024'
+ }
+ ]
+ },
+ sheet: {
+ title: 'Создать доску',
+ description: 'Новая доска позволит вам создавать задачи для их решения.',
+ form: {
+ name: {
+ label: 'Название доски',
+ placeholder: 'например, "Jenda"'
+ },
+ description: {
+ label: 'Описание доски',
+ placeholder: 'например, доска для разработки нашей компании'
+ },
+ submit: 'Создать доску'
+ }
+ }
+};
diff --git a/src/shared/lib/i18n/locales/zh-CN.ts b/src/shared/lib/i18n/locales/zh-CN.ts
new file mode 100644
index 0000000..5a798af
--- /dev/null
+++ b/src/shared/lib/i18n/locales/zh-CN.ts
@@ -0,0 +1,79 @@
+export default {
+ sidebar: {
+ badge: '免费',
+ input: '搜索',
+ section: '工作区',
+ boards: '看板',
+ templates: '模板',
+ members: '成员',
+ settings: '设置',
+ plan: '升级你的计划'
+ },
+ header: {
+ upgrade: '升级到“专业版”',
+ collaboration: '邀请成员',
+ name: '测试工作区'
+ },
+ boards: {
+ title: '此团队的看板',
+ description: '所有活动中的看板都在这里,你可以切换并进行操作',
+ create: '创建新看板',
+ filter: {
+ input: '筛选看板...',
+ popularity: '按热门排序',
+ tooltips: {
+ first_sort: '按热门排序看板',
+ second_sort: '显示最近的看板'
+ }
+ },
+ card: {
+ date_updated: '更新时间'
+ },
+ chart: {
+ title_boards: '创建的看板',
+ description_boards: '在 Jenda 上创建、分享、工作,然后分析你的活动',
+ title_tasks: '你的任务',
+ description_tasks: '解决并完成你开始的任务'
+ }
+ },
+ templates: {
+ title: '模板',
+ description: '选择一个可用模板来创建您的项目',
+ user: '创建者',
+ items: [
+ {
+ title: '基础看板',
+ tag: '推荐',
+ description: '使用 "基础看板" 模板创建一个基本项目',
+ date: '2024年6月12日'
+ },
+ {
+ title: '路线图',
+ tag: '新',
+ description: '基于我们的 "路线图" 模板创建一个项目',
+ date: '2024年6月18日'
+ },
+ {
+ title: '网页开发',
+ tag: '新',
+ description: '使用 "网页开发" 模板创建一个基本项目',
+ date: '2024年7月16日'
+ }
+ ]
+ },
+ sheet: {
+ title: '创建看板',
+ description: '新看板将允许你创建任务以进行解决。',
+ form: {
+ name: {
+ label: '看板名称',
+ placeholder: '例如 “Jenda”'
+ },
+ description: {
+ label: '看板描述',
+ placeholder: '例如 我们公司的开发看板'
+ },
+ submit: '创建看板'
+ }
+ }
+};
diff --git a/src/shared/ui/input/UiInput.vue b/src/shared/ui/input/UiInput.vue
index 7a22f58..6a38155 100644
--- a/src/shared/ui/input/UiInput.vue
+++ b/src/shared/ui/input/UiInput.vue
@@ -70,7 +70,7 @@ const emit = defineEmits(['update:modelValue']);
background-color: rgba(var(--zinc-rgb-700), 0.8);
&::placeholder {
- color: var(--zinc-200);
+ color: var(--zinc-300);
}
}
}
diff --git a/src/shared/ui/select/UiSelect.stories.ts b/src/shared/ui/select/UiSelect.stories.ts
index c3c130a..27049c4 100644
--- a/src/shared/ui/select/UiSelect.stories.ts
+++ b/src/shared/ui/select/UiSelect.stories.ts
@@ -1,12 +1,15 @@
import type { Meta, StoryFn } from '@storybook/vue3';
import UiSelect from './UiSelect.vue';
+import type { Options } from './types';
export default {
title: 'UiSelect',
component: UiSelect,
args: {
- options: ['English', 'Русский', '简体中文'],
- modelValue: 'English'
+ options: [
+ { name: 'Option 1', value: '1' },
+ { name: 'Option 2', value: '2' }
+ ] as Options[]
}
} as Meta
;
diff --git a/src/shared/ui/select/UiSelect.vue b/src/shared/ui/select/UiSelect.vue
index f3fcafc..1785298 100644
--- a/src/shared/ui/select/UiSelect.vue
+++ b/src/shared/ui/select/UiSelect.vue
@@ -7,7 +7,7 @@ import { Check, ChevronsUpDown } from 'lucide-vue-next';
const props = withDefaults(
defineProps<{
modelValue?: null | string;
- options: Options;
+ options: Options[];
}>(),
{
modelValue: null
@@ -39,17 +39,17 @@ const selected = ref(props.modelValue);
-
+
-
{{ option }}
+
{{ option.name }}
diff --git a/src/shared/ui/select/types.ts b/src/shared/ui/select/types.ts
index c1b0574..8967f17 100644
--- a/src/shared/ui/select/types.ts
+++ b/src/shared/ui/select/types.ts
@@ -1 +1,4 @@
-export type Options = Array