@thebuoyant-tsdev/mui-ts-library 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.de.md CHANGED
@@ -11,14 +11,15 @@ Eine typsichere React-Komponentenbibliothek auf Basis von **TypeScript** und **M
11
11
  | Komponente | Beschreibung | Docs |
12
12
  |---|---|---|
13
13
  | [`ConfirmDialog`](#confirmdialog) | Deklarativer Async-Bestätigungs-Dialog — `await confirm({ title, severity })` von überall in der App. Unterstützt Countdown-Auto-Confirm und `Enter` = Bestätigen. | [Vollständiges Manual →](user-manuals/ConfirmDialog.de.md) |
14
- | [`GanttChart`](#ganttchart) | Projekt-Timeline mit hierarchischen Aufgaben, Meilensteinen, Drag & Drop, Ctrl+Scroll-Zoom, Heute-Chip und integrierten CRUD-Dialogen | [Vollständiges Manual →](user-manuals/GanttChart.de.md) |
14
+ | [`GanttChart`](#ganttchart) | Projekt-Timeline mit hierarchischen Aufgaben, Meilensteinen, Drag & Drop, Ctrl / Cmd ⌘+Scroll-Zoom, Heute-Chip und integrierten CRUD-Dialogen | [Vollständiges Manual →](user-manuals/GanttChart.de.md) |
15
15
  | [`TagSelection`](#tagselection) | Multi-Tag-Auswahlfeld mit Autocomplete, freier Tag-Erstellung, Overflow-Chips und MUI-Theme-Farben | [Vollständiges Manual →](user-manuals/TagSelection.de.md) |
16
16
  | [`PasswordStrengthMeter`](#passwordstrengthmeter) | Passwort-Eingabe mit animiertem Stärke-Meter, segmentierter Balkenanzeige, eigenen Anforderungen und Anforderungsliste | [Vollständiges Manual →](user-manuals/PasswordStrengthMeter.de.md) |
17
17
  | [`RichTextEditor`](#richtexteditor) | WYSIWYG-Editor (TipTap v3) mit Toolbar, Link-Dialog, Textfarbe, Hervorhebung, Wörter-Zähler, Vollbild-Modus, Markdown-Einfügen, Tabellen-Bearbeitung, Bild-Embed und Emoji-Picker | [Vollständiges Manual →](user-manuals/RichTextEditor.de.md) |
18
18
  | [`SqlEditor`](#sqleditor) | SQL-Code-Editor (CodeMirror 6) mit Syntax-Highlighting, Multi-Dialekt, Autocomplete, Linting und `Cmd+Enter`-Ausführen-Shortcut | [Vollständiges Manual →](user-manuals/SqlEditor.de.md) |
19
19
  | [`JsonEditor`](#jsoneditor) | JSON-Code-Editor (CodeMirror 6) mit Echtzeit-Validierung, Format- und Komprimieren-Schaltfläche sowie optionaler Minimap | [Vollständiges Manual →](user-manuals/JsonEditor.de.md) |
20
- | [`SunburstChart`](#sunburstchart) | D3 v7 hierarchisches Chart — konzentrische Ringe, Ctrl+Click-Zoom, Donut-Modus, eigene Farben, MUI-Theme-Integration. Erste der D3-Chart-Familie. | [Vollständiges Manual →](user-manuals/SunburstChart.de.md) |
20
+ | [`SunburstChart`](#sunburstchart) | D3 v7 hierarchisches Chart — konzentrische Ringe, Ctrl / Cmd ⌘+Click Drill-Down, Ctrl / Cmd ⌘+Scroll Zoom, Donut-Modus, eigene Farben, MUI-Theme-Integration. Erste der D3-Chart-Familie. | [Vollständiges Manual →](user-manuals/SunburstChart.de.md) |
21
21
  | [`ChordChart`](#chordchart) | D3 v7 Fluss-Chart — Arc-Gruppen verbunden durch Bänder, Hover-Highlight, gerichtet/ungerichtet, MUI-Theme-Integration | [Vollständiges Manual →](user-manuals/ChordChart.de.md) |
22
+ | [`RadialTreeChart`](#radialtreedchart) | D3 v7 radialer Baum — Knoten auf konzentrischen Ringen, MUI-Icons, Ctrl / Cmd ⌘+Click Drill-Down, Ctrl / Cmd ⌘+Scroll Zoom, MUI-Theme-Integration | [Vollständiges Manual →](user-manuals/RadialTreeChart.de.md) |
22
23
 
23
24
  ---
24
25
 
@@ -76,7 +77,7 @@ if (ok) handleDelete();
76
77
 
77
78
  ### GanttChart
78
79
 
79
- Interaktive Projekt-Timeline für Planung und Aufgaben-Tracking. Einsetzbar in Projektmanagement-Dashboards, Sprint-Planern und Ressourcenansichten — mit Drag & Drop, Größenänderung, Ctrl+Scroll-Zoom, Meilensteinen, Abhängigkeiten und Heute-Chip.
80
+ Interaktive Projekt-Timeline für Planung und Aufgaben-Tracking. Einsetzbar in Projektmanagement-Dashboards, Sprint-Planern und Ressourcenansichten — mit Drag & Drop, Größenänderung, Ctrl / Cmd ⌘+Scroll-Zoom, Meilensteinen, Abhängigkeiten und Heute-Chip.
80
81
 
81
82
  ```tsx
82
83
  import { GanttChart } from '@thebuoyant-tsdev/mui-ts-library';
@@ -213,7 +214,7 @@ const data: SunburstChartData = {
213
214
  />
214
215
  ```
215
216
 
216
- **Zoom:** `Ctrl+Click` → Drill-down · `Ctrl+Doppelklick` → Zoom out · `Escape` → Reset
217
+ **Zoom:** `Ctrl+Click` → Drill-down · `Ctrl / Cmd ⌘+Doppelklick` → Zoom out · `Escape` → Reset
217
218
 
218
219
  → [Vollständige Dokumentation](user-manuals/SunburstChart.de.md)
219
220
 
@@ -245,6 +246,40 @@ const data: ChordChartData[] = [
245
246
 
246
247
  ---
247
248
 
249
+ ### RadialTreeChart
250
+
251
+ Hierarchische Daten als radialer Baum — Knoten auf konzentrischen Ringen, verbunden durch geschwungene Links. Ideal für Org-Charts, Skill-Taxonomien und Abhängigkeitsbäume. `Ctrl / Cmd ⌘+Click` bohrt in Teilbäume, `Ctrl / Cmd ⌘+Scroll` zoomt.
252
+
253
+ ```tsx
254
+ import { RadialTreeChart } from '@thebuoyant-tsdev/mui-ts-library';
255
+ import type { RadialTreeChartData } from '@thebuoyant-tsdev/mui-ts-library';
256
+
257
+ const data: RadialTreeChartData = {
258
+ id: 'ceo', name: 'CEO', subname: 'Führung',
259
+ children: [
260
+ { id: 'cto', name: 'CTO', subname: 'Technologie',
261
+ children: [
262
+ { id: 'fe', name: 'Frontend Lead' },
263
+ { id: 'be', name: 'Backend Lead' },
264
+ ]},
265
+ { id: 'cpo', name: 'CPO', subname: 'Produkt' },
266
+ ],
267
+ };
268
+
269
+ <RadialTreeChart
270
+ data={data}
271
+ size={600}
272
+ drillable // Ctrl / Cmd ⌘+Click zum Drill-in, DblClick zurück
273
+ zoomable // Ctrl / Cmd ⌘+Scroll zum Zoomen
274
+ showNodePopover
275
+ onNodeClick={(info) => console.log(info.name, info.depth)}
276
+ />
277
+ ```
278
+
279
+ → [Vollständige Dokumentation](user-manuals/RadialTreeChart.de.md)
280
+
281
+ ---
282
+
248
283
  ## TypeScript
249
284
 
250
285
  Alle Typen und Defaults werden direkt exportiert — kein separates `@types/...`-Paket nötig.
@@ -277,6 +312,9 @@ import type {
277
312
 
278
313
  // ChordChart
279
314
  ChordChartData, ChordGroupInfo, ChordInfo, ChordSortBy,
315
+
316
+ // RadialTreeChart
317
+ RadialTreeChartData, RadialTreeNodeInfo, RadialTreeNodeIconSpec, RadialTreeSortBy,
280
318
  } from '@thebuoyant-tsdev/mui-ts-library';
281
319
  ```
282
320
 
package/README.md CHANGED
@@ -11,14 +11,15 @@ A type-safe React component library built on **TypeScript** and **MUI (Material
11
11
  | Component | Description | Docs |
12
12
  |---|---|---|
13
13
  | [`ConfirmDialog`](#confirmdialog) | Declarative async confirmation dialog — `await confirm({ title, severity })` from anywhere in the app. Supports countdown auto-confirm and `Enter` = confirm shortcut. | [Full Manual →](user-manuals/ConfirmDialog.md) |
14
- | [`GanttChart`](#ganttchart) | Project timeline with hierarchical tasks, milestones, drag & drop, Ctrl+Scroll zoom, today chip, and built-in CRUD dialogs | [Full Manual →](user-manuals/GanttChart.md) |
14
+ | [`GanttChart`](#ganttchart) | Project timeline with hierarchical tasks, milestones, drag & drop, Ctrl / Cmd ⌘+Scroll zoom, today chip, and built-in CRUD dialogs | [Full Manual →](user-manuals/GanttChart.md) |
15
15
  | [`TagSelection`](#tagselection) | Multi-tag selector with autocomplete, free tag creation, overflow chips, and MUI theme colors | [Full Manual →](user-manuals/TagSelection.md) |
16
16
  | [`PasswordStrengthMeter`](#passwordstrengthmeter) | Password input with animated strength meter, segmented bar, custom requirements, and requirements checklist | [Full Manual →](user-manuals/PasswordStrengthMeter.md) |
17
17
  | [`RichTextEditor`](#richtexteditor) | WYSIWYG editor (TipTap v3) with toolbar, link dialog, text color, highlight, word count, fullscreen mode, Markdown paste, table editing, image embed, and emoji picker | [Full Manual →](user-manuals/RichTextEditor.md) |
18
18
  | [`SqlEditor`](#sqleditor) | SQL code editor (CodeMirror 6) with syntax highlighting, multi-dialect, autocomplete, linting, and `Cmd+Enter` execute shortcut | [Full Manual →](user-manuals/SqlEditor.md) |
19
19
  | [`JsonEditor`](#jsoneditor) | JSON code editor (CodeMirror 6) with real-time validation, Format, Compact buttons, and optional minimap | [Full Manual →](user-manuals/JsonEditor.md) |
20
- | [`SunburstChart`](#sunburstchart) | D3 v7 hierarchical chart — concentric rings, Ctrl+Click zoom, donut mode, custom colors, MUI theme integration. First of the D3 Charts family. | [Full Manual →](user-manuals/SunburstChart.md) |
20
+ | [`SunburstChart`](#sunburstchart) | D3 v7 hierarchical chart — concentric rings, Ctrl / Cmd ⌘+Click drill-down, Ctrl / Cmd ⌘+Scroll zoom, donut mode, MUI theme integration | [Full Manual →](user-manuals/SunburstChart.md) |
21
21
  | [`ChordChart`](#chordchart) | D3 v7 flow chart — arc groups connected by ribbons, hover highlight, directed/undirected, MUI theme integration | [Full Manual →](user-manuals/ChordChart.md) |
22
+ | [`RadialTreeChart`](#radialtreedchart) | D3 v7 radial tree — hierarchical nodes on concentric rings, MUI icons, Ctrl / Cmd ⌘+Click drill-down, Ctrl / Cmd ⌘+Scroll zoom, MUI theme integration | [Full Manual →](user-manuals/RadialTreeChart.md) |
22
23
 
23
24
  ---
24
25
 
@@ -76,7 +77,7 @@ if (ok) handleDelete();
76
77
 
77
78
  ### GanttChart
78
79
 
79
- An interactive project timeline for planning and tracking tasks. Use it in project management dashboards, sprint planners, or resource views where teams need to see schedules, milestones, dependencies, and progress at a glance — with drag & drop, resize, and Ctrl+Scroll zoom built in.
80
+ An interactive project timeline for planning and tracking tasks. Use it in project management dashboards, sprint planners, or resource views where teams need to see schedules, milestones, dependencies, and progress at a glance — with drag & drop, resize, and Ctrl / Cmd ⌘+Scroll zoom built in.
80
81
 
81
82
  ```tsx
82
83
  import { GanttChart } from '@thebuoyant-tsdev/mui-ts-library';
@@ -189,7 +190,7 @@ import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
189
190
 
190
191
  ### SunburstChart
191
192
 
192
- Hierarchical data visualization as concentric rings — root at the center, each depth level forms one ring. Perfect for budget breakdowns, org charts, file system usage, and any data that is both hierarchical and proportional. Ctrl+Click to drill down into any segment.
193
+ Hierarchical data visualization as concentric rings — root at the center, each depth level forms one ring. Perfect for budget breakdowns, org charts, file system usage, and any data that is both hierarchical and proportional. `Ctrl / Cmd ⌘+Click` to drill down, `Ctrl / Cmd ⌘+Scroll` to zoom.
193
194
 
194
195
  ```tsx
195
196
  import { SunburstChart } from '@thebuoyant-tsdev/mui-ts-library';
@@ -213,7 +214,7 @@ const data: SunburstChartData = {
213
214
  />
214
215
  ```
215
216
 
216
- **Zoom:** `Ctrl+Click` drill down · `Ctrl+Double-click` zoom out · `Escape` → reset
217
+ **Drill-down:** `Ctrl+Click` / `Cmd ⌘+Click` · **Zoom out:** `Ctrl+DblClick` / `Cmd ⌘+DblClick` · **Reset:** `Escape`
217
218
 
218
219
  → [Full documentation](user-manuals/SunburstChart.md)
219
220
 
@@ -245,6 +246,40 @@ const data: ChordChartData[] = [
245
246
 
246
247
  ---
247
248
 
249
+ ### RadialTreeChart
250
+
251
+ Hierarchical data as a radial tree — nodes on concentric rings connected by curved links. Use `RadialTreeChart` for org charts, skill taxonomies, dependency trees, or any hierarchy where you want both structure and spatial layout. Hover for a tooltip, click for a popover with node details. `Ctrl / Cmd ⌘+Click` drills into subtrees, `Ctrl / Cmd ⌘+Scroll` zooms.
252
+
253
+ ```tsx
254
+ import { RadialTreeChart } from '@thebuoyant-tsdev/mui-ts-library';
255
+ import type { RadialTreeChartData } from '@thebuoyant-tsdev/mui-ts-library';
256
+
257
+ const data: RadialTreeChartData = {
258
+ id: 'ceo', name: 'CEO', subname: 'Leadership',
259
+ children: [
260
+ { id: 'cto', name: 'CTO', subname: 'Technology',
261
+ children: [
262
+ { id: 'fe', name: 'Frontend Lead' },
263
+ { id: 'be', name: 'Backend Lead' },
264
+ ]},
265
+ { id: 'cpo', name: 'CPO', subname: 'Product' },
266
+ ],
267
+ };
268
+
269
+ <RadialTreeChart
270
+ data={data}
271
+ size={600}
272
+ drillable // Ctrl / Cmd ⌘+Click to drill in, DblClick to go back
273
+ zoomable // Ctrl / Cmd ⌘+Scroll to zoom
274
+ showNodePopover
275
+ onNodeClick={(info) => console.log(info.name, info.depth)}
276
+ />
277
+ ```
278
+
279
+ → [Full documentation](user-manuals/RadialTreeChart.md)
280
+
281
+ ---
282
+
248
283
  ## TypeScript
249
284
 
250
285
  All types and defaults are exported directly — no separate `@types/...` package needed.
@@ -277,6 +312,9 @@ import type {
277
312
 
278
313
  // ChordChart
279
314
  ChordChartData, ChordGroupInfo, ChordInfo, ChordSortBy,
315
+
316
+ // RadialTreeChart
317
+ RadialTreeChartData, RadialTreeNodeInfo, RadialTreeNodeIconSpec, RadialTreeSortBy,
280
318
  } from '@thebuoyant-tsdev/mui-ts-library';
281
319
  ```
282
320
 
@@ -0,0 +1,5 @@
1
+ import { type RadialTreeChartProps } from "./RadialTreeChart.types";
2
+ export declare function RadialTreeChart({ data, size, autoFit, sortBy, showLabels, showIcons, chartColors, rootNodeRadius, branchNodeRadius, leafNodeRadius, linkColor, linkStrokeOpacity, linkStrokeWidth, labelFontSize, labelColor, separationSibling, separationCousin, zoomable, drillable, onFocusChange, showNodePopover, renderNodePopoverContent, onNodeClick, disabled, translation, }: RadialTreeChartProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare namespace RadialTreeChart {
4
+ var displayName: string;
5
+ }
@@ -0,0 +1,88 @@
1
+ export type RadialTreeSortBy = 'name' | 'value';
2
+ export type RadialTreeChartData = {
3
+ id: string;
4
+ name: string;
5
+ /** Subtitle shown below the name in the built-in node popover */
6
+ subname?: string;
7
+ value?: number;
8
+ /** Custom field A — shown in the built-in node popover */
9
+ specialValueA?: string | number;
10
+ /** Custom field B — shown in the built-in node popover */
11
+ specialValueB?: string | number;
12
+ children?: RadialTreeChartData[];
13
+ };
14
+ /** Clean payload passed to `onNodeClick` — no D3 or Fluent UI types exposed */
15
+ export type RadialTreeNodeInfo = {
16
+ id: string;
17
+ name: string;
18
+ subname: string | null;
19
+ value: number | null;
20
+ specialValueA: string | number | null;
21
+ specialValueB: string | number | null;
22
+ depth: number;
23
+ /** Breadcrumb from root to this node */
24
+ path: string[];
25
+ childrenCount: number;
26
+ data: RadialTreeChartData;
27
+ };
28
+ export type RadialTreeChartTranslation = {
29
+ /** Shown when data is empty */
30
+ noData: string;
31
+ /** Label for specialValueA in the built-in node popover */
32
+ specialValueA?: string;
33
+ /** Label for specialValueB in the built-in node popover */
34
+ specialValueB?: string;
35
+ };
36
+ export declare const DEFAULT_RADIAL_TREE_CHART_TRANSLATION: RadialTreeChartTranslation;
37
+ export type RadialTreeChartProps = {
38
+ /** Root node of the hierarchy */
39
+ data: RadialTreeChartData;
40
+ /** Width and height of the SVG in pixels (default: 600) */
41
+ size?: number;
42
+ /** Auto-fit viewBox to the rendered content (default: true) */
43
+ autoFit?: boolean;
44
+ /** Sort child nodes alphabetically ('name') or by value ('value') — default: 'name' */
45
+ sortBy?: RadialTreeSortBy;
46
+ /** Show node name labels (default: true) */
47
+ showLabels?: boolean;
48
+ /** Per-depth node colors — falls back to MUI theme palette when omitted */
49
+ chartColors?: string[];
50
+ /** Root node circle radius in px (default: 22) */
51
+ rootNodeRadius?: number;
52
+ /** Branch node circle radius in px (default: 16) */
53
+ branchNodeRadius?: number;
54
+ /** Leaf node circle radius in px (default: 11) */
55
+ leafNodeRadius?: number;
56
+ /** Link line color — defaults to `theme.palette.text.secondary` */
57
+ linkColor?: string;
58
+ /** Link line opacity — 0 to 1 (default: 1) */
59
+ linkStrokeOpacity?: number;
60
+ /** Link line width in px (default: 1.5) */
61
+ linkStrokeWidth?: number;
62
+ /** Label font size in px (default: 12) */
63
+ labelFontSize?: number;
64
+ /** Label text color — defaults to `theme.palette.text.primary` */
65
+ labelColor?: string;
66
+ /** Separation factor between sibling nodes (default: 1) */
67
+ separationSibling?: number;
68
+ /** Separation factor between cousin nodes (default: 2) */
69
+ separationCousin?: number;
70
+ /** Show white icons (folder/person) inside the node circles (default: true) */
71
+ showIcons?: boolean;
72
+ /** Show a built-in MUI Popover with node details on click (default: false) */
73
+ showNodePopover?: boolean;
74
+ /** Render custom content inside the built-in node popover */
75
+ renderNodePopoverContent?: (info: RadialTreeNodeInfo) => React.ReactNode;
76
+ /** Fired on every node click */
77
+ onNodeClick?: (info: RadialTreeNodeInfo, event: React.MouseEvent<SVGGElement>) => void;
78
+ /** Enable Ctrl+Scroll zoom — Ctrl+Wheel zooms in/out, Escape resets (default: false) */
79
+ zoomable?: boolean;
80
+ /** Enable Ctrl+Click drill-down into subtrees, Ctrl+DblClick zoom out (default: false) */
81
+ drillable?: boolean;
82
+ /** Fired when drill-down focus changes — null when reset to root */
83
+ onFocusChange?: (focusedNode: RadialTreeNodeInfo | null) => void;
84
+ /** Disables all interactions (default: false) */
85
+ disabled?: boolean;
86
+ /** Override translation strings */
87
+ translation?: Partial<RadialTreeChartTranslation>;
88
+ };
@@ -1,5 +1,5 @@
1
1
  import { type SunburstChartProps } from "./SunburstChart.types";
2
- export declare function SunburstChart({ data, size, showSegmentLabels, innerRadius, sortBy, chartColors, showRootLabel, onSegmentClick, onZoomChange, valueDecimalCount, valueDecimalSeparator, valueThousandsSeparator, disabled, }: SunburstChartProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function SunburstChart({ data, size, showSegmentLabels, innerRadius, sortBy, chartColors, showRootLabel, onSegmentClick, onZoomChange, valueDecimalCount, valueDecimalSeparator, valueThousandsSeparator, zoomable, disabled, }: SunburstChartProps): import("react/jsx-runtime").JSX.Element;
3
3
  export declare namespace SunburstChart {
4
4
  var displayName: string;
5
5
  }
@@ -58,6 +58,8 @@ export type SunburstChartProps = {
58
58
  valueDecimalSeparator?: string;
59
59
  /** Thousands separator for values (default: ',') */
60
60
  valueThousandsSeparator?: string;
61
+ /** Enable Ctrl+Scroll zoom — content outside `size` is clipped (default: false) */
62
+ zoomable?: boolean;
61
63
  /** Disables all interactions (default: false) */
62
64
  disabled?: boolean;
63
65
  /** Override any translation string */