diff --git a/apps/internal-ui/src/features/help-center/HelpCenterApp.tsx b/apps/internal-ui/src/features/help-center/HelpCenterApp.tsx
index 549c3aa..9fe3ba4 100644
--- a/apps/internal-ui/src/features/help-center/HelpCenterApp.tsx
+++ b/apps/internal-ui/src/features/help-center/HelpCenterApp.tsx
@@ -64,7 +64,7 @@ export function HelpCenterApp() {
);
}
if (!manifest || !themeReady) {
- return ;
+ return ;
}
return route.articleSlug
?
diff --git a/apps/internal-ui/src/features/help-center/HelpLayout.tsx b/apps/internal-ui/src/features/help-center/HelpLayout.tsx
index 57532bb..333fc88 100644
--- a/apps/internal-ui/src/features/help-center/HelpLayout.tsx
+++ b/apps/internal-ui/src/features/help-center/HelpLayout.tsx
@@ -42,11 +42,17 @@ export function HelpLayout({
{children}
{portal.webWidgetKey && }
diff --git a/apps/internal-ui/src/features/help-center/styles-layout.css b/apps/internal-ui/src/features/help-center/styles-layout.css
index 8d2a4b1..eb4aabe 100644
--- a/apps/internal-ui/src/features/help-center/styles-layout.css
+++ b/apps/internal-ui/src/features/help-center/styles-layout.css
@@ -153,17 +153,37 @@ html.help-center-document body {
}
.help-footer {
- display: flex;
+ display: grid;
width: min(1024px, calc(100% - 48px));
margin: 80px auto 0;
padding: 34px 0 42px;
- align-items: center;
- justify-content: space-between;
+ gap: 18px;
border-top: 1px solid var(--help-line-soft);
color: var(--help-text-muted);
font-size: 14px;
}
+.help-footer-row {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.help-footer-powered {
+ font-size: 12px;
+ opacity: 0.8;
+}
+
+.help-footer-powered a {
+ color: inherit;
+ text-decoration: underline;
+ text-underline-offset: 2px;
+}
+
+.help-footer-powered a:hover {
+ color: var(--help-ink);
+}
+
.help-footer-brand {
gap: 9px;
font-size: 16px;
@@ -256,8 +276,7 @@ html.help-center-document body {
color: var(--help-text-muted);
}
-.help-fatal,
-.help-boot-loading {
+.help-fatal {
display: grid;
min-height: 100vh;
place-content: center;
diff --git a/apps/internal-ui/src/features/help-center/styles-responsive.css b/apps/internal-ui/src/features/help-center/styles-responsive.css
index 383a975..b1ce20a 100644
--- a/apps/internal-ui/src/features/help-center/styles-responsive.css
+++ b/apps/internal-ui/src/features/help-center/styles-responsive.css
@@ -115,10 +115,14 @@
}
.help-footer {
+ gap: 14px;
+ margin-top: 54px;
+ }
+
+ .help-footer-row {
display: grid;
justify-content: start;
gap: 12px;
- margin-top: 54px;
}
.help-support-launcher {
diff --git a/apps/internal-ui/src/i18n/en.ts b/apps/internal-ui/src/i18n/en.ts
index c1cc0e6..e2c8c05 100644
--- a/apps/internal-ui/src/i18n/en.ts
+++ b/apps/internal-ui/src/i18n/en.ts
@@ -905,6 +905,7 @@ export const en: Record = {
"portals.invalid_yaml": "Invalid YAML",
"portals.ip_of_installation": "{value} · this installation's IP",
"portals.knowledge_base_support": "Knowledge base and support",
+ "portals.powered_by": "Powered by",
"portals.language": "Language",
"portals.language_2": "Language:",
"portals.language_3": "LANGUAGE",
diff --git a/apps/internal-ui/src/i18n/ru.ts b/apps/internal-ui/src/i18n/ru.ts
index 64ae37f..b161a57 100644
--- a/apps/internal-ui/src/i18n/ru.ts
+++ b/apps/internal-ui/src/i18n/ru.ts
@@ -906,6 +906,7 @@ export const ru = {
"portals.invalid_yaml": "Невалидный YAML",
"portals.ip_of_installation": "{value} · IP этой установки",
"portals.knowledge_base_support": "База знаний и поддержка",
+ "portals.powered_by": "Работает на",
"portals.language": "Язык",
"portals.language_2": "Язык:",
"portals.language_3": "ЯЗЫК",
diff --git a/apps/internal-ui/src/layout/styles.css b/apps/internal-ui/src/layout/styles.css
index 9d25db4..e7487e2 100644
--- a/apps/internal-ui/src/layout/styles.css
+++ b/apps/internal-ui/src/layout/styles.css
@@ -266,8 +266,7 @@
.hub-brand-mark.has-logo {
overflow: hidden;
color: inherit;
- background: var(--surface-card);
- border: 1px solid var(--n-7);
+ background: transparent;
}
.hub-brand-mark img {
diff --git a/apps/internal-ui/src/main.tsx b/apps/internal-ui/src/main.tsx
index e584dde..eeadb93 100644
--- a/apps/internal-ui/src/main.tsx
+++ b/apps/internal-ui/src/main.tsx
@@ -29,10 +29,10 @@ function SurfaceApp() {
}, [surface]);
if (surface === "loading") {
- return ;
+ return ;
}
return surface === "help"
- ? }>
+ ? }>
: ;
}
diff --git a/apps/internal-ui/src/shared/state.css b/apps/internal-ui/src/shared/state.css
index 3e1f3ea..c244080 100644
--- a/apps/internal-ui/src/shared/state.css
+++ b/apps/internal-ui/src/shared/state.css
@@ -15,3 +15,17 @@
color: var(--n-3);
font-size: 13px;
}
+
+/* Загрузчик портала до прихода манифеста и темы. Живёт в общем CSS, а не в
+ чанке портала: чанк грузится лениво, и первый кадр иначе рисуется без
+ стилей. Фиксированный слой на весь экран — центр не зависит от отступов
+ и высоты документа. */
+.help-boot-loading {
+ position: fixed;
+ inset: 0;
+ display: grid;
+ place-items: center;
+ margin: 0;
+ background: var(--help-bg, var(--surface-page));
+ color: var(--help-ink, var(--text-body));
+}
diff --git a/apps/internal-ui/src/shared/ui.tsx b/apps/internal-ui/src/shared/ui.tsx
index 9854aba..18fbde0 100644
--- a/apps/internal-ui/src/shared/ui.tsx
+++ b/apps/internal-ui/src/shared/ui.tsx
@@ -108,7 +108,7 @@ export function LoadingState({ variant = "page" }: { variant?: "page" | "inline"
}
export function LoadingScreen() {
- return
;
+ return ;
}
export function ErrorScreen({ retry }: { retry: () => void }) {