Ribbon: TopBar-Ansichtssteuerung in Ansichten-Tab gemergt; TopBar auf schmale globale Leiste reduziert

This commit is contained in:
2026-07-05 17:57:17 +02:00
parent 10a27e2eb7
commit 824988af3f
5 changed files with 206 additions and 223 deletions
+13 -2
View File
@@ -12,6 +12,7 @@
// Bezeichner englisch, UI-Text/Kommentare deutsch (CONVENTIONS.md).
import { useState } from "react";
import type { ReactNode } from "react";
import { t } from "../../i18n";
import { ToolIcon } from "../../panels/ToolsPanel";
import { getTool } from "../../tools/tools";
@@ -32,6 +33,13 @@ export interface RibbonBarProps {
onSelectTool: (id: ToolId) => void;
/** Engine-Befehl starten (Ändern-Gruppe u. a.). */
onRunCommand: (name: string) => void;
/**
* Reicher Inhalt des „Ansichten"-Tabs (aus der TopBar gemergte Ansichts-/Zoom-/
* Darstellungs-Steuerung, `ViewRibbonTab`). Von App geliefert, damit dessen
* Setter/State dort bleiben — analog dazu, wie die TopBar das Layout-Menü als
* Node bekommt. Fehlt er, zeigt der Tab den Leer-Hinweis.
*/
viewsContent?: ReactNode;
}
/** Ein einzelner Ribbon-Button (Werkzeug ODER Befehl). */
@@ -104,9 +112,12 @@ export function RibbonBar(props: RibbonBarProps) {
))}
</div>
{/* Gruppen des aktiven Tabs */}
{/* Gruppen des aktiven Tabs. Der „Ansichten"-Tab trägt reichen Custom-
Inhalt (ViewRibbonTab) statt der datengetriebenen Item-Gruppen. */}
<div className="ribbon-body">
{current.groups.length === 0 ? (
{current.id === "views" && props.viewsContent ? (
props.viewsContent
) : current.groups.length === 0 ? (
<div className="ribbon-empty">{t("ribbon.empty")}</div>
) : (
current.groups.map((g) => (
+9 -8
View File
@@ -41,9 +41,10 @@ const t = (id: ToolId): RibbonItem => ({ kind: "tool", id });
const c = (name: string): RibbonItem => ({ kind: "command", name });
/**
* Die Ribbon-Tabs. Phase 1 füllt 2D (Zeichnen + Ändern) und BIM (Bauteile) mit
* den vorhandenen Werkzeugen/Befehlen; 3D und Ansichten bleiben vorerst leer
* (Platzhalter, in einer späteren Phase gefüllt — siehe Plan-Doc).
* Die Ribbon-Tabs (Reihenfolge 2D·3D·BIM·Ansichten). 2D (Zeichnen + Ändern) und
* BIM (Bauteile) sind datengetrieben aus Werkzeugen/Befehlen; „Ansichten" trägt
* reichen Custom-Inhalt (aus der TopBar gemergt, siehe `ViewRibbonTab` — die
* Registry lässt seine `groups` leer). 3D ist vorerst leer (spätere Phase).
*/
export const RIBBON_TABS: RibbonTab[] = [
{
@@ -74,6 +75,11 @@ export const RIBBON_TABS: RibbonTab[] = [
},
],
},
{
id: "3d",
labelKey: "ribbon.tab.3d",
groups: [],
},
{
id: "bim",
labelKey: "ribbon.tab.bim",
@@ -91,11 +97,6 @@ export const RIBBON_TABS: RibbonTab[] = [
},
],
},
{
id: "3d",
labelKey: "ribbon.tab.3d",
groups: [],
},
{
id: "views",
labelKey: "ribbon.tab.views",