From 5b882bc3d9b13a86e6c26111ef5ded687ea3a2fc Mon Sep 17 00:00:00 2001 From: Codex Date: Mon, 7 Sep 2026 13:43:23 +0300 Subject: [PATCH] Support centered SettingsCard result messages --- apps/catalog/src/CatalogApp.tsx | 1 + docs/COMPONENTS.md | 5 +++++ packages/ui-core/styles.css | 15 +++++++++++++++ packages/ui-react/src/Settings.tsx | 7 ++++--- registry/components.json | 1 + 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/apps/catalog/src/CatalogApp.tsx b/apps/catalog/src/CatalogApp.tsx index 85d347f..e9ceeab 100644 --- a/apps/catalog/src/CatalogApp.tsx +++ b/apps/catalog/src/CatalogApp.tsx @@ -1425,6 +1425,7 @@ export function CatalogApp() {
  • } title="Подготовка камеры" metadata="Проверка потоков" progress={{label:"Подготовка камеры",value:0.8}} aria-busy="true" actions={} />
  • +
    diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index 3bcbd58..23f27b7 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -246,6 +246,11 @@ setup-команды, сохранение, API и права принадлеж `SettingsCard` фиксирует нейтральную структуру админской группы: eyebrow/title/description/actions/body. `Switch` покрывает компактное включение/видимость внутри таких групп. Данные секции, сохранение и права остаются в consumer. +Для компактных сообщений о результате и пустых состояний `SettingsCard align="center"` +центрирует содержимое по горизонтали и вертикали. Пустой body не создаёт +асимметричный нижний отступ. Обычные группы настроек сохраняют `align="start"`; +вариант не задаёт высоту и не меняет токены темы. + ## AdminNavigationPanel Левая выезжающая панель Hub/Launcher. Библиотека владеет оболочкой `352 px`, радиусом `21.6 px`, внутренними отступами, full-bleed context/navigation pills, круглыми icon surfaces и анимацией появления. Приложение передаёт workspace/company, маршруты, active id и footer identity. diff --git a/packages/ui-core/styles.css b/packages/ui-core/styles.css index 46b4ea7..869d011 100644 --- a/packages/ui-core/styles.css +++ b/packages/ui-core/styles.css @@ -608,6 +608,21 @@ textarea.nodedc-field__control { gap: 0.8rem; } +.nodedc-settings-card[data-align="center"] { + align-content: center; + text-align: center; +} + +.nodedc-settings-card[data-align="center"] > .nodedc-settings-card__head { + flex-direction: column; + align-items: center; + justify-content: center; +} + +.nodedc-settings-card[data-align="center"] > .nodedc-settings-card__body { + justify-items: center; +} + .nodedc-switch { display: inline-flex; width: max-content; diff --git a/packages/ui-react/src/Settings.tsx b/packages/ui-react/src/Settings.tsx index 7db9f56..54aa13f 100644 --- a/packages/ui-react/src/Settings.tsx +++ b/packages/ui-react/src/Settings.tsx @@ -6,11 +6,12 @@ export interface SettingsCardProps extends Omit, "ti title: ReactNode; description?: ReactNode; actions?: ReactNode; + align?: "start" | "center"; } -export function SettingsCard({ eyebrow, title, description, actions, children, className, ...props }: SettingsCardProps) { +export function SettingsCard({ eyebrow, title, description, actions, children, align = "start", className, ...props }: SettingsCardProps) { return ( -
    +
    {eyebrow ? {eyebrow} : null} @@ -19,7 +20,7 @@ export function SettingsCard({ eyebrow, title, description, actions, children, c
    {actions ?
    {actions}
    : null}
    -
    {children}
    + {align === "center" && (children === undefined || children === null || children === false) ? null :
    {children}
    }
    ); } diff --git a/registry/components.json b/registry/components.json index b29c2f5..7761647 100644 --- a/registry/components.json +++ b/registry/components.json @@ -445,6 +445,7 @@ "summary": "Neutral administration group with title metadata, actions, content and a compact binary switch.", "rules": [ "The card owns grouping geometry but not product form schemas.", + "Use align=center for compact result or empty messages: center the content on both axes and omit an empty body. The default start layout remains unchanged.", "Section and empty-state titles use the compact md token; descriptions use sm. Page/window title sizes and browser heading defaults are forbidden inside cards.", "Use Switch for compact visibility/enable states; use Checker for the Engine inspector treatment." ]