Files
DOSSIER-STANDALONE/src/panels/builtinPanels.tsx
T
karim 6ea15f56ca Dockbare Panel-Tabs nur als Symbol
Die Tab-Leiste zeigt je Panel nur noch ein Inline-SVG-Icon; der Titel
wandert in Tooltip (title) und aria-label. PanelDef bekommt ein optionales
icon-Feld, die sieben eingebauten Panels je ein schlichtes stroke-Icon
(currentColor, erbt die Tab-Farbe). Fehlt ein Icon (Plugin), fällt der Tab
auf den Titeltext zurück. Tabs sind jetzt kompakt und quadratisch; Klick-,
Drag- und Dock-Logik unverändert.
2026-07-03 23:42:39 +02:00

108 lines
3.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Registrierung der eingebauten Inhalts-Panels.
//
// Importiert man dieses Modul (Seiteneffekt), tragen sich die beiden
// dockbaren Kern-Panels in die Registry ein und tauchen damit in den Docks auf:
// • "drawing-levels" — Zeichnungsebenen (mit Darstellungsmodus).
// • "layers" — Ebenen (Kategorie-Baum, mit Darstellungsmodus).
//
// „Ressourcen" ist KEIN Dock-Panel mehr: der ResourceManager ist ein
// schwebendes Fenster (Overlay über allem), das die Oberleiste öffnet — siehe
// App.tsx. Es wird daher hier nicht (mehr) registriert.
//
// Reine Verdrahtung: jedes Panel liest seinen Zustand selbst über den
// Host-Context (usePanelHost), daher reicht render() ohne ctx-Auswertung.
//
// Bezeichner englisch, UI-Text/Kommentare deutsch (CONVENTIONS.md).
import { registerPanel } from "./registry";
import { DrawingLevelsPanel } from "./DrawingLevelsPanel";
import { LayersPanel } from "./LayersPanel";
import { ToolsPanel } from "./ToolsPanel";
import { AttributesPanel } from "./AttributesPanel";
import { ObjectInfoPanel } from "./ObjectInfoPanel";
import { SitePanel } from "./SitePanel";
import { RoomBalancePanel } from "./RoomBalancePanel";
import {
ToolsTabIcon,
AttributesTabIcon,
ObjectInfoTabIcon,
DrawingLevelsTabIcon,
LayersTabIcon,
SiteTabIcon,
RoomBalanceTabIcon,
} from "./PanelIcons";
/** IDs der eingebauten Dock-Panels (auch für defaultLayout/Filter nutzbar). */
export const BUILTIN_PANEL_IDS = {
tools: "tools",
drawingLevels: "drawing-levels",
layers: "layers",
attributes: "attributes",
objectInfo: "object-info",
site: "site",
roomBalance: "room-balance",
} as const;
// Werkzeug-Palette (Symbol + Name je Werkzeug, ArchiCAD/Vectorworks-Stil).
registerPanel({
id: BUILTIN_PANEL_IDS.tools,
title: "nav.tools",
icon: <ToolsTabIcon />,
hasDisplayMode: false,
render: () => <ToolsPanel />,
});
// Attribute-Palette (Stift/Füllung/Strichstärke der Auswahl, Vectorworks-Stil).
registerPanel({
id: BUILTIN_PANEL_IDS.attributes,
title: "nav.attributes",
icon: <AttributesTabIcon />,
hasDisplayMode: false,
render: () => <AttributesPanel />,
});
// Objekt-Info-Palette (Bezugspunkt-Würfel + X/Y, Maße B×H der Auswahl).
registerPanel({
id: BUILTIN_PANEL_IDS.objectInfo,
title: "nav.objectInfo",
icon: <ObjectInfoTabIcon />,
hasDisplayMode: false,
render: () => <ObjectInfoPanel />,
});
registerPanel({
id: BUILTIN_PANEL_IDS.drawingLevels,
// i18n-Key statt fertigem Text: TabStrip/PanelFrame lösen ihn über t() auf,
// damit der Titel der gewählten Sprache folgt.
title: "nav.drawingLevels",
icon: <DrawingLevelsTabIcon />,
hasDisplayMode: true,
render: () => <DrawingLevelsPanel />,
});
registerPanel({
id: BUILTIN_PANEL_IDS.layers,
title: "nav.layers",
icon: <LayersTabIcon />,
hasDisplayMode: true,
render: () => <LayersPanel />,
});
// Gelände-/Kontext-Palette (DXF-Import, Konturen-Liste, Gelände-Erzeugung).
registerPanel({
id: BUILTIN_PANEL_IDS.site,
title: "nav.site",
icon: <SiteTabIcon />,
hasDisplayMode: false,
render: () => <SitePanel />,
});
// Flächenbilanz (SIA 416) — Raumliste + Kategorie-Summen + CSV-Export.
registerPanel({
id: BUILTIN_PANEL_IDS.roomBalance,
title: "nav.roomBalance",
icon: <RoomBalanceTabIcon />,
hasDisplayMode: false,
render: () => <RoomBalancePanel />,
});