UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: дизайн и русификация God Mode

This commit is contained in:
DCCONSTRUCTIONS
2026-04-29 00:38:04 +03:00
parent 5d336039ba
commit 7f47b85c36
57 changed files with 1104 additions and 588 deletions
@@ -56,16 +56,16 @@ export function WorkspaceCreateForm() {
.then(async () => {
setToast({
type: TOAST_TYPE.SUCCESS,
title: "Success!",
message: "Workspace created successfully.",
title: "Готово",
message: "Воркспейс создан.",
});
router.push(`/workspace`);
})
.catch(() => {
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
message: "Workspace could not be created. Please try again.",
title: "Ошибка",
message: "Не удалось создать воркспейс. Попробуйте еще раз.",
});
});
} else setSlugError(true);
@@ -73,8 +73,8 @@ export function WorkspaceCreateForm() {
.catch(() => {
setToast({
type: TOAST_TYPE.ERROR,
title: "Error!",
message: "Some error occurred while creating workspace. Please try again.",
title: "Ошибка",
message: "При создании воркспейса произошла ошибка. Попробуйте еще раз.",
});
});
};
@@ -91,7 +91,7 @@ export function WorkspaceCreateForm() {
<div className="space-y-8">
<div className="grid-col grid w-full max-w-4xl grid-cols-1 items-start justify-between gap-x-10 gap-y-6 lg:grid-cols-2">
<div className="flex flex-col gap-1">
<h4 className="text-13 text-tertiary">Name your workspace</h4>
<h4 className="text-13 text-tertiary">Название воркспейса</h4>
<div className="flex flex-col gap-1">
<Controller
control={control}
@@ -113,8 +113,8 @@ export function WorkspaceCreateForm() {
}}
ref={ref}
hasError={Boolean(errors.name)}
placeholder="Something familiar and recognizable is always best."
className="w-full"
placeholder="Короткое понятное название"
className="nodedc-settings-input w-full"
/>
)}
/>
@@ -122,8 +122,8 @@ export function WorkspaceCreateForm() {
</div>
</div>
<div className="flex flex-col gap-1">
<h4 className="text-13 text-tertiary">Set your workspace&apos;s URL</h4>
<div className="flex w-full items-center gap-0.5 rounded-md border-[0.5px] border-subtle px-3">
<h4 className="text-13 text-tertiary">URL воркспейса</h4>
<div className="nodedc-settings-input flex w-full items-center gap-0.5 rounded-md border-[0.5px] border-subtle px-3">
<span className="text-13 whitespace-nowrap text-secondary">{workspaceBaseURL}</span>
<Controller
control={control}
@@ -149,29 +149,29 @@ export function WorkspaceCreateForm() {
)}
/>
</div>
{slugError && <p className="text-13 text-danger-primary">This URL is taken. Try something else.</p>}
{slugError && <p className="text-13 text-danger-primary">Этот URL уже занят. Выберите другой.</p>}
{invalidSlug && (
<p className="text-13 text-danger-primary">{`URLs can contain only ( - ), ( _ ) and alphanumeric characters.`}</p>
<p className="text-13 text-danger-primary">{`URL может содержать только латинские буквы, цифры, "-" и "_".`}</p>
)}
{errors.slug && <span className="text-11 text-danger-primary">{errors.slug.message}</span>}
</div>
<div className="flex flex-col gap-1">
<h4 className="text-13 text-tertiary">How many people will use this workspace?</h4>
<h4 className="text-13 text-tertiary">Сколько людей будет работать в воркспейсе?</h4>
<div className="w-full">
<Controller
name="organization_size"
control={control}
rules={{ required: "This is a required field." }}
rules={{ required: "Это обязательное поле." }}
render={({ field: { value, onChange } }) => (
<CustomSelect
value={value}
onChange={onChange}
label={
ORGANIZATION_SIZE.find((c) => c === value) ?? (
<span className="text-placeholder">Select a range</span>
<span className="text-placeholder">Выберите диапазон</span>
)
}
buttonClassName="!border-[0.5px] !border-subtle !shadow-none"
buttonClassName="nodedc-settings-select !border-[0.5px] !border-subtle !shadow-none"
input
>
{ORGANIZATION_SIZE.map((item) => (
@@ -196,10 +196,10 @@ export function WorkspaceCreateForm() {
disabled={!isValid}
loading={isSubmitting}
>
{isSubmitting ? "Creating workspace" : "Create workspace"}
{isSubmitting ? "Создание" : "Создать воркспейс"}
</Button>
<Link className={getButtonStyling("secondary", "lg")} href="/workspace">
Go back
Назад
</Link>
</div>
</div>
@@ -16,8 +16,8 @@ const WorkspaceCreatePage = observer(function WorkspaceCreatePage(_props: Route.
return (
<PageWrapper
header={{
title: "Create a new workspace on this instance.",
description: "You will need to invite users from Workspace Settings after you create this workspace.",
title: "Создать новый воркспейс",
description: "После создания пригласите пользователей в настройках рабочего пространства.",
}}
>
<WorkspaceCreateForm />
@@ -25,6 +25,6 @@ const WorkspaceCreatePage = observer(function WorkspaceCreatePage(_props: Route.
);
});
export const meta: Route.MetaFunction = () => [{ title: "Create Workspace - God Mode" }];
export const meta: Route.MetaFunction = () => [{ title: "Создание воркспейса - NODE.DC" }];
export default WorkspaceCreatePage;