velxio/frontend/src/components/editor/EditorMenuBar.css

86 lines
1.5 KiB
CSS
Raw Normal View History

feat(editor): menus File/Edit en la cabecera y editor sin nav de marketing La queja: demasiados botones en una sola fila, y en pantallas pequenas se solapan — medido, no impresion: a 1024px Code/Both/Circuit pisaban a Compile/Run/Stop por 9-20px y Add pisaba el chat por 29px, con el idioma y el usuario cortados fuera del viewport. Tres piezas: 1. En el editor, el nav de marketing (Home/Docs/Pricing/...) sobra: ya estas dentro, y cuesta exactamente el ancho que le falta a la toolbar. AppHeader gana la variante editorMenu — mismo mecanismo que ya usa la build de escritorio (VITE_DESKTOP) — que oculta el nav y pinta un menu File/Edit junto al logo. El logo sigue llevando a inicio; idioma, autoguardado, Share y usuario se quedan. 2. File/Edit al estilo escritorio: lo que se usa cada minuto sigue siendo boton; lo que se usa unas veces por sesion va al menu. File: nuevo workspace, nuevo fichero, abrir, guardar, importar, exportar, BOM, imagen del esquema. Edit: undo/redo (con su estado real del historial), centrar vista, zoom. Las acciones viven en cierres de cuatro componentes distintos, asi que hay un registro id->handler (lib/editorCommands, mismo patron de seam que registerProExamples o registerBoardBuiltins): cada dueno registra al montar y el menu invoca por id; un item sin dueno montado se pinta deshabilitado, que ademas es la verdad. El registro sobrevive al remontaje StrictMode (el cleanup viejo no borra al sucesor) y tiene test de eso. 3. La toolbar adelgaza: fuera Undo/Redo (Ctrl+Z/Y siguen), fuera los botones inline de Import/Export y sus gemelos responsivos del More (~70px recuperados); el More queda solo con los extras pro (firmware, GitHub, share, grabacion). El CSS responsivo de los botones retirados se va con ellos. Suite en verde (2300) y build del overlay verificado desde este arbol.
2026-07-30 21:26:36 +07:00
/* EditorMenuBar — File / Edit dropdowns in the editor header.
Visual language borrowed from the toolbar's overflow menu
(tb-overflow-menu) so the two read as one system. */
.editor-menubar {
display: flex;
align-items: center;
gap: 2px;
margin-left: 14px;
}
.emb-root {
position: relative;
}
.emb-trigger {
background: transparent;
border: none;
color: #c5cad3;
font: 400 13px system-ui, sans-serif;
padding: 4px 10px;
border-radius: 4px;
cursor: pointer;
}
.emb-trigger:hover,
.emb-trigger-open {
background: #2f3542;
color: #fff;
}
.emb-menu {
position: absolute;
top: calc(100% + 4px);
left: 0;
min-width: 230px;
background: #252526;
border: 1px solid #3c3c3c;
border-radius: 6px;
padding: 4px;
z-index: 9500; /* above the toolbar and the canvas, below modals (10000) */
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
}
.emb-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
width: 100%;
background: transparent;
border: none;
color: #d6dae2;
font: 400 13px system-ui, sans-serif;
padding: 6px 10px;
border-radius: 4px;
cursor: pointer;
text-align: left;
white-space: nowrap;
}
.emb-item:hover:not(:disabled) {
background: #0e639c;
color: #fff;
}
.emb-item:disabled {
opacity: 0.4;
cursor: default;
}
.emb-shortcut {
color: #8b93a1;
font-size: 11px;
}
.emb-item:hover:not(:disabled) .emb-shortcut {
color: #cfe3f5;
}
.emb-separator {
height: 1px;
background: #3c3c3c;
margin: 4px 6px;
}