2fa20da94d
- Main: license service, IPC, router; закрытие окон; yauzl закрытие zip (EMFILE), zipRead тест - Editor: стабильный projectState без мигания, логотип и меню, строки UI, LayoutShell overlay - Control: ластик для всех типов эффектов, затухание/нарастание музыки при смене сцены - Сборка: vite, build/dev scripts, obfuscate-main и build-env скрипты с тестами; package.json Made-with: Cursor
27 lines
846 B
TypeScript
27 lines
846 B
TypeScript
import React from 'react';
|
|
|
|
import styles from './LayoutShell.module.css';
|
|
|
|
type Props = {
|
|
topBar: React.ReactNode;
|
|
left: React.ReactNode;
|
|
center: React.ReactNode;
|
|
right: React.ReactNode;
|
|
/** Блокировка основной области (под хедером), например без лицензии. */
|
|
bodyOverlay?: React.ReactNode;
|
|
};
|
|
|
|
export function LayoutShell({ topBar, left, center, right, bodyOverlay }: Props) {
|
|
return (
|
|
<div className={styles.root}>
|
|
<div className={styles.topBar}>{topBar}</div>
|
|
<div className={styles.body}>
|
|
{bodyOverlay ? <div className={styles.bodyOverlay}>{bodyOverlay}</div> : null}
|
|
<div className={styles.col}>{left}</div>
|
|
<div className={styles.col}>{center}</div>
|
|
<div className={styles.col}>{right}</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|