@thebuoyant-tsdev/mui-ts-library 2.2.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 +109 -13
- package/README.md +109 -13
- package/dist/components/chord-chart/ChordChart.d.ts +5 -0
- package/dist/components/chord-chart/ChordChart.types.d.ts +80 -0
- package/dist/components/radial-tree-chart/RadialTreeChart.d.ts +5 -0
- package/dist/components/radial-tree-chart/RadialTreeChart.types.d.ts +88 -0
- package/dist/components/sunburst-chart/SunburstChart.d.ts +1 -1
- package/dist/components/sunburst-chart/SunburstChart.types.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1699 -987
- package/package.json +1 -1
package/README.de.md
CHANGED
|
@@ -11,13 +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
|
|
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
|
|
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
|
+
| [`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) |
|
|
21
23
|
|
|
22
24
|
---
|
|
23
25
|
|
|
@@ -53,6 +55,8 @@ Die App wie gewohnt in MUI's `ThemeProvider` einschließen. `ConfirmDialog` ben
|
|
|
53
55
|
|
|
54
56
|
### ConfirmDialog
|
|
55
57
|
|
|
58
|
+
Ersetzt jedes manuelle `open/setOpen`-State-Muster durch einen einzigen `await confirm(...)`-Aufruf. Eliminiert Boilerplate bei Lösch-Bestätigungen, destruktiven Aktionen und allen Flows, die vor dem Fortfahren eine Nutzerzustimmung benötigen — mit optionalem Countdown-Auto-Confirm und Enter = Bestätigen.
|
|
59
|
+
|
|
56
60
|
```tsx
|
|
57
61
|
import { ConfirmDialogProvider, useConfirm } from '@thebuoyant-tsdev/mui-ts-library';
|
|
58
62
|
|
|
@@ -73,6 +77,8 @@ if (ok) handleDelete();
|
|
|
73
77
|
|
|
74
78
|
### GanttChart
|
|
75
79
|
|
|
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.
|
|
81
|
+
|
|
76
82
|
```tsx
|
|
77
83
|
import { GanttChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
78
84
|
import type { GanttTask } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -91,6 +97,8 @@ const tasks: GanttTask[] = [
|
|
|
91
97
|
|
|
92
98
|
### TagSelection
|
|
93
99
|
|
|
100
|
+
Multi-Select-Eingabe mit Autocomplete für Tag- und Label-Verwaltung. Ideal für Filter-UIs, Content-Tagging, Skill-Auswahl und alle Szenarien, in denen Nutzer aus einer vordefinierten Liste wählen oder neue Einträge erstellen sollen.
|
|
101
|
+
|
|
94
102
|
```tsx
|
|
95
103
|
import { TagSelection } from '@thebuoyant-tsdev/mui-ts-library';
|
|
96
104
|
import type { TagSelectionItem } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -109,6 +117,8 @@ const tags: TagSelectionItem[] = [
|
|
|
109
117
|
|
|
110
118
|
### PasswordStrengthMeter
|
|
111
119
|
|
|
120
|
+
Passwort-Eingabe mit Echtzeit-Stärke-Feedback. Konzipiert für Registrierungs- und Passwort-Änderungs-Flows, bei denen Nutzer zu sicheren Passwörtern geführt werden sollen — mit animiertem Stärke-Meter, segmentierten Balken und einer Live-Anforderungs-Checkliste.
|
|
121
|
+
|
|
112
122
|
```tsx
|
|
113
123
|
import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
114
124
|
|
|
@@ -125,6 +135,8 @@ import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
125
135
|
|
|
126
136
|
### RichTextEditor
|
|
127
137
|
|
|
138
|
+
Vollständiger WYSIWYG-Editor für formatierte Langtexte. Ideal für CMS-Felder, E-Mail-Templates, Kommentarbereiche und alle Eingaben, die mehr als ein einfaches `<textarea>` benötigen — mit Toolbar, Tabellen, Bild-Embed, Emoji-Picker, Vollbild und Markdown-Einfügen.
|
|
139
|
+
|
|
128
140
|
```tsx
|
|
129
141
|
import { RichTextEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
130
142
|
|
|
@@ -140,6 +152,8 @@ import { RichTextEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
140
152
|
|
|
141
153
|
### SqlEditor
|
|
142
154
|
|
|
155
|
+
SQL-Code-Editor mit Syntax-Highlighting, dialektbewusstem Autocomplete und Inline-Linting. Konzipiert für Developer-Tools, Datenbank-Clients und Admin-Panels — mit `Cmd+Enter`-Shortcut, Multi-Dialekt-Support (MySQL, PostgreSQL, SQLite, MSSQL) und Schema-basiertem Autocomplete.
|
|
156
|
+
|
|
143
157
|
```tsx
|
|
144
158
|
import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
145
159
|
|
|
@@ -157,6 +171,8 @@ import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
157
171
|
|
|
158
172
|
### JsonEditor
|
|
159
173
|
|
|
174
|
+
JSON-Code-Editor mit Echtzeit-Validierung, Formatierung und optionaler Minimap. Ideal für Konfigurations-Panels, API-Explorer und Developer-Tools — mit sofortigen Fehler-Markierungen, Format- und Komprimieren-Buttons sowie Cursorpositionsanzeige.
|
|
175
|
+
|
|
160
176
|
```tsx
|
|
161
177
|
import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
162
178
|
|
|
@@ -174,6 +190,8 @@ import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
174
190
|
|
|
175
191
|
### SunburstChart
|
|
176
192
|
|
|
193
|
+
Hierarchische Datenvisualisierung als konzentrische Ringe — Wurzel im Zentrum, jede Tiefenebene bildet einen Ring. Perfekt für Budget-Aufschlüsselungen, Org-Charts, Dateisystemgrößen und alle Daten, die sowohl hierarchisch als auch proportional sind. Ctrl+Click zum Drill-down in ein Segment.
|
|
194
|
+
|
|
177
195
|
```tsx
|
|
178
196
|
import { SunburstChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
179
197
|
import type { SunburstChartData } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -196,31 +214,109 @@ const data: SunburstChartData = {
|
|
|
196
214
|
/>
|
|
197
215
|
```
|
|
198
216
|
|
|
199
|
-
**Zoom:** `Ctrl+Click` → Drill-down · `Ctrl
|
|
217
|
+
**Zoom:** `Ctrl+Click` → Drill-down · `Ctrl / Cmd ⌘+Doppelklick` → Zoom out · `Escape` → Reset
|
|
200
218
|
|
|
201
219
|
→ [Vollständige Dokumentation](user-manuals/SunburstChart.de.md)
|
|
202
220
|
|
|
203
221
|
---
|
|
204
222
|
|
|
223
|
+
### ChordChart
|
|
224
|
+
|
|
225
|
+
Fluss- und Beziehungsvisualisierung zwischen benannten Gruppen als Kreisdiagramm. Ideal für Abhängigkeitskarten, Migrationsflüsse, Handelsbeziehungen und alle Quelle→Ziel-Daten mit numerischem Gewicht. Hover über eine Gruppe hebt deren Verbindungen hervor, Klick löst Callbacks aus.
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { ChordChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
229
|
+
import type { ChordChartData } from '@thebuoyant-tsdev/mui-ts-library';
|
|
230
|
+
|
|
231
|
+
const data: ChordChartData[] = [
|
|
232
|
+
{ source: 'Frontend', target: 'Backend', value: 45 },
|
|
233
|
+
{ source: 'Backend', target: 'Frontend', value: 20 },
|
|
234
|
+
{ source: 'Backend', target: 'DevOps', value: 35 },
|
|
235
|
+
];
|
|
236
|
+
|
|
237
|
+
<ChordChart
|
|
238
|
+
data={data}
|
|
239
|
+
size={500}
|
|
240
|
+
onGroupClick={(info) => console.log(info.name, info.valueOut)}
|
|
241
|
+
onChordClick={(info) => console.log(info.source.name, '→', info.target.name)}
|
|
242
|
+
/>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
→ [Vollständige Dokumentation](user-manuals/ChordChart.de.md)
|
|
246
|
+
|
|
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
|
+
|
|
205
283
|
## TypeScript
|
|
206
284
|
|
|
207
285
|
Alle Typen und Defaults werden direkt exportiert — kein separates `@types/...`-Paket nötig.
|
|
208
286
|
|
|
209
287
|
```tsx
|
|
210
288
|
import type {
|
|
211
|
-
|
|
212
|
-
ConfirmDialogOptions,
|
|
213
|
-
JsonEditorHighlightColors,
|
|
214
|
-
SqlEditorProps,
|
|
215
|
-
RichTextEditorTranslation,
|
|
216
|
-
} from '@thebuoyant-tsdev/mui-ts-library';
|
|
217
|
-
```
|
|
289
|
+
// ConfirmDialog
|
|
290
|
+
ConfirmDialogOptions, ConfirmDialogSeverity,
|
|
218
291
|
|
|
219
|
-
|
|
292
|
+
// GanttChart
|
|
293
|
+
GanttTask, GanttTranslations, GanttTheme, GanttToolbarConfig,
|
|
294
|
+
|
|
295
|
+
// TagSelection
|
|
296
|
+
TagSelectionItem,
|
|
297
|
+
|
|
298
|
+
// PasswordStrengthMeter
|
|
299
|
+
CustomRequirement, StrengthResult,
|
|
220
300
|
|
|
221
|
-
|
|
301
|
+
// RichTextEditor
|
|
302
|
+
RichTextEditorToolbarConfig, RichTextEditorTranslation,
|
|
222
303
|
|
|
223
|
-
|
|
304
|
+
// SqlEditor
|
|
305
|
+
SqlEditorDialect, SqlEditorTranslation, SqlEditorToolbarConfig,
|
|
306
|
+
|
|
307
|
+
// JsonEditor
|
|
308
|
+
JsonEditorHighlightColors, JsonEditorTranslation, JsonEditorToolbarConfig,
|
|
309
|
+
|
|
310
|
+
// SunburstChart
|
|
311
|
+
SunburstChartData, SunburstSegmentInfo, SunburstZoomInfo,
|
|
312
|
+
|
|
313
|
+
// ChordChart
|
|
314
|
+
ChordChartData, ChordGroupInfo, ChordInfo, ChordSortBy,
|
|
315
|
+
|
|
316
|
+
// RadialTreeChart
|
|
317
|
+
RadialTreeChartData, RadialTreeNodeInfo, RadialTreeNodeIconSpec, RadialTreeSortBy,
|
|
318
|
+
} from '@thebuoyant-tsdev/mui-ts-library';
|
|
319
|
+
```
|
|
224
320
|
|
|
225
321
|
---
|
|
226
322
|
|
package/README.md
CHANGED
|
@@ -11,13 +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
|
|
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
|
|
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
|
+
| [`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) |
|
|
21
23
|
|
|
22
24
|
---
|
|
23
25
|
|
|
@@ -53,6 +55,8 @@ Wrap your app in MUI's `ThemeProvider` as usual. `ConfirmDialog` additionally re
|
|
|
53
55
|
|
|
54
56
|
### ConfirmDialog
|
|
55
57
|
|
|
58
|
+
Replace every manual `open/setOpen` state pattern with a single `await confirm(...)` call. Eliminates boilerplate from delete confirmations, destructive actions, and any flow that needs user approval before proceeding — with optional countdown auto-confirm and `Enter` = confirm shortcut.
|
|
59
|
+
|
|
56
60
|
```tsx
|
|
57
61
|
import { ConfirmDialogProvider, useConfirm } from '@thebuoyant-tsdev/mui-ts-library';
|
|
58
62
|
|
|
@@ -73,6 +77,8 @@ if (ok) handleDelete();
|
|
|
73
77
|
|
|
74
78
|
### GanttChart
|
|
75
79
|
|
|
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.
|
|
81
|
+
|
|
76
82
|
```tsx
|
|
77
83
|
import { GanttChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
78
84
|
import type { GanttTask } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -91,6 +97,8 @@ const tasks: GanttTask[] = [
|
|
|
91
97
|
|
|
92
98
|
### TagSelection
|
|
93
99
|
|
|
100
|
+
Multi-select input with autocomplete for tag and label management. Best suited for filter UIs, content tagging, skill selection, and any scenario where users pick from a predefined list or create new items on the fly.
|
|
101
|
+
|
|
94
102
|
```tsx
|
|
95
103
|
import { TagSelection } from '@thebuoyant-tsdev/mui-ts-library';
|
|
96
104
|
import type { TagSelectionItem } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -109,6 +117,8 @@ const tags: TagSelectionItem[] = [
|
|
|
109
117
|
|
|
110
118
|
### PasswordStrengthMeter
|
|
111
119
|
|
|
120
|
+
Password input with real-time strength feedback. Designed for registration flows and password-change screens where you want to guide users toward secure passwords with an animated strength bar, segmented segments, and a live requirements checklist.
|
|
121
|
+
|
|
112
122
|
```tsx
|
|
113
123
|
import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
114
124
|
|
|
@@ -125,6 +135,8 @@ import { PasswordStrengthMeter } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
125
135
|
|
|
126
136
|
### RichTextEditor
|
|
127
137
|
|
|
138
|
+
Full-featured WYSIWYG editor for long-form formatted content. Best for CMS fields, email templates, comment boxes, and any input that needs more than a plain `<textarea>` — with toolbar, tables, image embed, emoji picker, fullscreen, and Markdown paste support.
|
|
139
|
+
|
|
128
140
|
```tsx
|
|
129
141
|
import { RichTextEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
130
142
|
|
|
@@ -140,6 +152,8 @@ import { RichTextEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
140
152
|
|
|
141
153
|
### SqlEditor
|
|
142
154
|
|
|
155
|
+
SQL code editor with syntax highlighting, dialect-aware autocomplete, and inline linting. Designed for developer tools, database clients, and admin panels where users write and execute SQL queries — with `Cmd+Enter` shortcut, multi-dialect support (MySQL, PostgreSQL, SQLite, MSSQL), and schema-based autocomplete.
|
|
156
|
+
|
|
143
157
|
```tsx
|
|
144
158
|
import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
145
159
|
|
|
@@ -157,6 +171,8 @@ import { SqlEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
157
171
|
|
|
158
172
|
### JsonEditor
|
|
159
173
|
|
|
174
|
+
JSON code editor with real-time validation, formatting, and an optional minimap. Ideal for configuration panels, API explorers, and developer tools where users need to view, edit, paste, or validate JSON — with instant error markers, Format and Compact buttons, and cursor-position display.
|
|
175
|
+
|
|
160
176
|
```tsx
|
|
161
177
|
import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
162
178
|
|
|
@@ -174,6 +190,8 @@ import { JsonEditor } from '@thebuoyant-tsdev/mui-ts-library';
|
|
|
174
190
|
|
|
175
191
|
### SunburstChart
|
|
176
192
|
|
|
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.
|
|
194
|
+
|
|
177
195
|
```tsx
|
|
178
196
|
import { SunburstChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
179
197
|
import type { SunburstChartData } from '@thebuoyant-tsdev/mui-ts-library';
|
|
@@ -196,31 +214,109 @@ const data: SunburstChartData = {
|
|
|
196
214
|
/>
|
|
197
215
|
```
|
|
198
216
|
|
|
199
|
-
**
|
|
217
|
+
**Drill-down:** `Ctrl+Click` / `Cmd ⌘+Click` · **Zoom out:** `Ctrl+DblClick` / `Cmd ⌘+DblClick` · **Reset:** `Escape`
|
|
200
218
|
|
|
201
219
|
→ [Full documentation](user-manuals/SunburstChart.md)
|
|
202
220
|
|
|
203
221
|
---
|
|
204
222
|
|
|
223
|
+
### ChordChart
|
|
224
|
+
|
|
225
|
+
Flow and relationship visualization between named groups as a circular diagram. Ideal for dependency maps, migration flows, trade relationships, and any source→target data with a numeric weight. Hover any group to highlight its connections, click to trigger callbacks.
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
import { ChordChart } from '@thebuoyant-tsdev/mui-ts-library';
|
|
229
|
+
import type { ChordChartData } from '@thebuoyant-tsdev/mui-ts-library';
|
|
230
|
+
|
|
231
|
+
const data: ChordChartData[] = [
|
|
232
|
+
{ source: 'Frontend', target: 'Backend', value: 45 },
|
|
233
|
+
{ source: 'Backend', target: 'Frontend', value: 20 },
|
|
234
|
+
{ source: 'Backend', target: 'DevOps', value: 35 },
|
|
235
|
+
];
|
|
236
|
+
|
|
237
|
+
<ChordChart
|
|
238
|
+
data={data}
|
|
239
|
+
size={500}
|
|
240
|
+
onGroupClick={(info) => console.log(info.name, info.valueOut)}
|
|
241
|
+
onChordClick={(info) => console.log(info.source.name, '→', info.target.name)}
|
|
242
|
+
/>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
→ [Full documentation](user-manuals/ChordChart.md)
|
|
246
|
+
|
|
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
|
+
|
|
205
283
|
## TypeScript
|
|
206
284
|
|
|
207
285
|
All types and defaults are exported directly — no separate `@types/...` package needed.
|
|
208
286
|
|
|
209
287
|
```tsx
|
|
210
288
|
import type {
|
|
211
|
-
|
|
212
|
-
ConfirmDialogOptions,
|
|
213
|
-
JsonEditorHighlightColors,
|
|
214
|
-
SqlEditorProps,
|
|
215
|
-
RichTextEditorTranslation,
|
|
216
|
-
} from '@thebuoyant-tsdev/mui-ts-library';
|
|
217
|
-
```
|
|
289
|
+
// ConfirmDialog
|
|
290
|
+
ConfirmDialogOptions, ConfirmDialogSeverity,
|
|
218
291
|
|
|
219
|
-
|
|
292
|
+
// GanttChart
|
|
293
|
+
GanttTask, GanttTranslations, GanttTheme, GanttToolbarConfig,
|
|
294
|
+
|
|
295
|
+
// TagSelection
|
|
296
|
+
TagSelectionItem,
|
|
297
|
+
|
|
298
|
+
// PasswordStrengthMeter
|
|
299
|
+
CustomRequirement, StrengthResult,
|
|
220
300
|
|
|
221
|
-
|
|
301
|
+
// RichTextEditor
|
|
302
|
+
RichTextEditorToolbarConfig, RichTextEditorTranslation,
|
|
222
303
|
|
|
223
|
-
|
|
304
|
+
// SqlEditor
|
|
305
|
+
SqlEditorDialect, SqlEditorTranslation, SqlEditorToolbarConfig,
|
|
306
|
+
|
|
307
|
+
// JsonEditor
|
|
308
|
+
JsonEditorHighlightColors, JsonEditorTranslation, JsonEditorToolbarConfig,
|
|
309
|
+
|
|
310
|
+
// SunburstChart
|
|
311
|
+
SunburstChartData, SunburstSegmentInfo, SunburstZoomInfo,
|
|
312
|
+
|
|
313
|
+
// ChordChart
|
|
314
|
+
ChordChartData, ChordGroupInfo, ChordInfo, ChordSortBy,
|
|
315
|
+
|
|
316
|
+
// RadialTreeChart
|
|
317
|
+
RadialTreeChartData, RadialTreeNodeInfo, RadialTreeNodeIconSpec, RadialTreeSortBy,
|
|
318
|
+
} from '@thebuoyant-tsdev/mui-ts-library';
|
|
319
|
+
```
|
|
224
320
|
|
|
225
321
|
---
|
|
226
322
|
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ChordChartProps } from "./ChordChart.types";
|
|
2
|
+
export declare function ChordChart({ data, size, innerRadius, ringThickness, padAngle, ribbonPadAngle, sortSubgroups, sortChords, chartColors, showGroupLabels, labelOffset, ribbonOpacity, ribbonBlendMode, directed, valueDecimalCount, valueDecimalSeparator, valueThousandsSeparator, onGroupClick, onChordClick, disabled, }: ChordChartProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare namespace ChordChart {
|
|
4
|
+
var displayName: string;
|
|
5
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export type ChordSortBy = 'ascending' | 'descending' | 'none';
|
|
2
|
+
/** A single directed or undirected flow between two named groups */
|
|
3
|
+
export type ChordChartData = {
|
|
4
|
+
source: string;
|
|
5
|
+
target: string;
|
|
6
|
+
value: number;
|
|
7
|
+
};
|
|
8
|
+
/** Callback payload for a click on a group arc */
|
|
9
|
+
export type ChordGroupInfo = {
|
|
10
|
+
/** Group name */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Zero-based index in the sorted names array */
|
|
13
|
+
index: number;
|
|
14
|
+
/** Total outgoing flow from this group */
|
|
15
|
+
valueOut: number;
|
|
16
|
+
/** Total incoming flow into this group */
|
|
17
|
+
valueIn: number;
|
|
18
|
+
};
|
|
19
|
+
/** Callback payload for a click on a ribbon (chord) */
|
|
20
|
+
export type ChordInfo = {
|
|
21
|
+
source: {
|
|
22
|
+
name: string;
|
|
23
|
+
index: number;
|
|
24
|
+
value: number;
|
|
25
|
+
};
|
|
26
|
+
target: {
|
|
27
|
+
name: string;
|
|
28
|
+
index: number;
|
|
29
|
+
value: number;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type ChordChartTranslation = {
|
|
33
|
+
/** Shown when data is empty */
|
|
34
|
+
noData: string;
|
|
35
|
+
};
|
|
36
|
+
export declare const DEFAULT_CHORD_CHART_TRANSLATION: ChordChartTranslation;
|
|
37
|
+
export type ChordChartProps = {
|
|
38
|
+
/** Array of directed or undirected flows — `{ source, target, value }` */
|
|
39
|
+
data: ChordChartData[];
|
|
40
|
+
/** Width and height of the SVG in pixels (default: 500) */
|
|
41
|
+
size?: number;
|
|
42
|
+
/** Inner radius of the arc ring in px — auto-computed when omitted */
|
|
43
|
+
innerRadius?: number;
|
|
44
|
+
/** Thickness of the arc ring in px (default: 20) */
|
|
45
|
+
ringThickness?: number;
|
|
46
|
+
/** Padding angle between arc groups in radians (auto-computed when omitted) */
|
|
47
|
+
padAngle?: number;
|
|
48
|
+
/** Padding angle inside ribbons in radians (auto-computed when omitted) */
|
|
49
|
+
ribbonPadAngle?: number;
|
|
50
|
+
/** Sort order for subgroups within each arc (default: 'descending') */
|
|
51
|
+
sortSubgroups?: ChordSortBy;
|
|
52
|
+
/** Sort order for ribbons (default: 'descending') */
|
|
53
|
+
sortChords?: ChordSortBy;
|
|
54
|
+
/** Custom color palette — falls back to MUI theme palette when omitted */
|
|
55
|
+
chartColors?: string[];
|
|
56
|
+
/** Show group name labels outside the arc ring (default: true) */
|
|
57
|
+
showGroupLabels?: boolean;
|
|
58
|
+
/** Gap between arc outer edge and label text in px (default: 6) */
|
|
59
|
+
labelOffset?: number;
|
|
60
|
+
/** Opacity of ribbons — 0 to 1 (default: 0.75) */
|
|
61
|
+
ribbonOpacity?: number;
|
|
62
|
+
/** CSS mix-blend-mode for ribbons (default: 'multiply') */
|
|
63
|
+
ribbonBlendMode?: React.CSSProperties['mixBlendMode'];
|
|
64
|
+
/** When true, ribbons are directional arrows (default: true) */
|
|
65
|
+
directed?: boolean;
|
|
66
|
+
/** Decimal places for values in tooltip (default: 0) */
|
|
67
|
+
valueDecimalCount?: number;
|
|
68
|
+
/** Decimal separator (default: '.') */
|
|
69
|
+
valueDecimalSeparator?: string;
|
|
70
|
+
/** Thousands separator (default: ',') */
|
|
71
|
+
valueThousandsSeparator?: string;
|
|
72
|
+
/** Fired on click of a group arc */
|
|
73
|
+
onGroupClick?: (info: ChordGroupInfo, event: React.MouseEvent<SVGGElement>) => void;
|
|
74
|
+
/** Fired on click of a ribbon */
|
|
75
|
+
onChordClick?: (info: ChordInfo, event: React.MouseEvent<SVGPathElement>) => void;
|
|
76
|
+
/** Disables all interactions (default: false) */
|
|
77
|
+
disabled?: boolean;
|
|
78
|
+
/** Override translation strings */
|
|
79
|
+
translation?: Partial<ChordChartTranslation>;
|
|
80
|
+
};
|
|
@@ -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 */
|