Files
Ivan Fontosh 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
2026-04-19 20:11:24 +08:00

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>
);
}