@diagrammo/dgmo 0.10.1 → 0.10.2
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/dist/auto.cjs +1 -1
- package/dist/auto.js +1 -1
- package/dist/auto.mjs +1 -1
- package/package.json +2 -2
- package/docs/guide/chart-arc.md +0 -71
- package/docs/guide/chart-area.md +0 -73
- package/docs/guide/chart-bar-stacked.md +0 -61
- package/docs/guide/chart-bar.md +0 -62
- package/docs/guide/chart-boxes-and-lines.md +0 -243
- package/docs/guide/chart-c4.md +0 -298
- package/docs/guide/chart-chord.md +0 -43
- package/docs/guide/chart-class.md +0 -204
- package/docs/guide/chart-cycle.md +0 -156
- package/docs/guide/chart-doughnut.md +0 -38
- package/docs/guide/chart-er.md +0 -218
- package/docs/guide/chart-flowchart.md +0 -102
- package/docs/guide/chart-function.md +0 -56
- package/docs/guide/chart-funnel.md +0 -38
- package/docs/guide/chart-gantt.md +0 -368
- package/docs/guide/chart-heatmap.md +0 -41
- package/docs/guide/chart-infra.md +0 -694
- package/docs/guide/chart-journey-map.md +0 -179
- package/docs/guide/chart-kanban.md +0 -158
- package/docs/guide/chart-line.md +0 -79
- package/docs/guide/chart-mindmap.md +0 -198
- package/docs/guide/chart-multi-line.md +0 -84
- package/docs/guide/chart-org.md +0 -209
- package/docs/guide/chart-pie.md +0 -39
- package/docs/guide/chart-polar-area.md +0 -38
- package/docs/guide/chart-pyramid.md +0 -111
- package/docs/guide/chart-quadrant.md +0 -69
- package/docs/guide/chart-radar.md +0 -38
- package/docs/guide/chart-sankey.md +0 -103
- package/docs/guide/chart-scatter.md +0 -91
- package/docs/guide/chart-sequence.md +0 -354
- package/docs/guide/chart-sitemap.md +0 -265
- package/docs/guide/chart-slope.md +0 -56
- package/docs/guide/chart-state.md +0 -171
- package/docs/guide/chart-tech-radar.md +0 -219
- package/docs/guide/chart-timeline.md +0 -229
- package/docs/guide/chart-venn.md +0 -81
- package/docs/guide/chart-wireframe.md +0 -100
- package/docs/guide/chart-wordcloud.md +0 -66
- package/docs/guide/colors.md +0 -287
- package/docs/guide/how-dgmo-thinks.md +0 -277
- package/docs/guide/index.md +0 -63
- package/docs/guide/keyboard-shortcuts.md +0 -49
- package/docs/guide/registry.json +0 -58
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
# Sequence Diagram
|
|
2
|
-
|
|
3
|
-
```dgmo
|
|
4
|
-
sequence Treasure Hunt App
|
|
5
|
-
|
|
6
|
-
User -Search nearby loot-> WebApp
|
|
7
|
-
WebApp -GET /treasures?nearby-> TreasureAPI | c: Search
|
|
8
|
-
note
|
|
9
|
-
- check location
|
|
10
|
-
- use compass
|
|
11
|
-
- http://example.com
|
|
12
|
-
TreasureAPI -Find within 5nm-> MapDB | c: Search
|
|
13
|
-
MapDB -3 results-> TreasureAPI
|
|
14
|
-
TreasureAPI -locations-> WebApp
|
|
15
|
-
WebApp -Show treasure map-> User
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Notice that `User` renders as a stick figure, `OrderDB` as a cylinder, `WebApp` as a monitor, and `PaymentGateway` as a hexagon — all inferred automatically from the names. No declarations needed.
|
|
19
|
-
|
|
20
|
-
## Overview
|
|
21
|
-
|
|
22
|
-
The sequence diagram uses an **inference-driven** syntax. Just write messages between participants and Diagrammo automatically:
|
|
23
|
-
|
|
24
|
-
- **Creates participants** from their first mention — no declarations needed
|
|
25
|
-
- **Infers participant shapes** from naming conventions — `User` gets a stick figure, `OrderDB` gets a cylinder, `API` gets a rounded box
|
|
26
|
-
- **Tracks activation bars** from call stacks
|
|
27
|
-
|
|
28
|
-
No `end` keywords are needed — blocks are scoped by indentation.
|
|
29
|
-
|
|
30
|
-
## Syntax
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
sequence Diagram Title
|
|
34
|
-
no-activations
|
|
35
|
-
|
|
36
|
-
== Section Label ==
|
|
37
|
-
|
|
38
|
-
A -message-> B
|
|
39
|
-
A ~async message~> B
|
|
40
|
-
|
|
41
|
-
if condition
|
|
42
|
-
A -message-> B
|
|
43
|
-
else
|
|
44
|
-
A -alternative-> C
|
|
45
|
-
|
|
46
|
-
loop description
|
|
47
|
-
A -retry-> B
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Settings
|
|
51
|
-
|
|
52
|
-
| Key | Description | Default |
|
|
53
|
-
| ---------------- | --------------------------------------- | -------- |
|
|
54
|
-
| `chart` | `sequence` (inferred from `->` content) | Optional |
|
|
55
|
-
| `title` | Diagram title | None |
|
|
56
|
-
| `no-activations` | Hide activation bars (on by default) | off |
|
|
57
|
-
| `active-tag` | Tag group to activate on load | None |
|
|
58
|
-
| `collapse-notes` | Collapse notes by default | off |
|
|
59
|
-
|
|
60
|
-
## Participants
|
|
61
|
-
|
|
62
|
-
### Automatic Type Inference
|
|
63
|
-
|
|
64
|
-
Participants are created automatically when first mentioned in a message. Their shape is inferred from the name — just use descriptive names and Diagrammo does the rest:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
User -createOrder-> OrderService
|
|
68
|
-
OrderService -save-> OrderDB
|
|
69
|
-
OrderService -cache result-> Redis
|
|
70
|
-
OrderService ~publish event~> EventBus
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
This creates five participants, each with a different shape — no declarations needed.
|
|
74
|
-
|
|
75
|
-
The inference rules are checked in priority order (first match wins):
|
|
76
|
-
|
|
77
|
-
| Type | Shape | Naming Patterns |
|
|
78
|
-
| ------------ | ------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
79
|
-
| `actor` | Stick figure | `User`, `Customer`, `Client`, `Admin`, `Guest`, `Visitor`, `Operator` |
|
|
80
|
-
| `database` | Cylinder | Names ending in `DB`; `Database`, `Store`, `Storage`, `Repo`, `Postgres`, `MySQL`, `Mongo`, `Dynamo` |
|
|
81
|
-
| `cache` | Dashed cylinder | `Cache`, `Redis`, `Memcache` |
|
|
82
|
-
| `queue` | Horizontal cylinder | `Queue`, `Kafka`, `RabbitMQ`, `EventBus`, `SQS`, `SNS`, `PubSub`, `Topic`, `Stream` |
|
|
83
|
-
| `networking` | Hexagon | `Gateway`, `Proxy`, `CDN`, `LoadBalancer`, `Firewall`, `DNS`, `Ingress` |
|
|
84
|
-
| `frontend` | Monitor | `WebApp`, `Dashboard`, `MobileApp`, `Browser`, `CLI`, `Terminal` |
|
|
85
|
-
| `service` | Rounded rectangle | `Service`, `API`, `Lambda`, `Handler`, `Controller`, `Processor`, `Worker` |
|
|
86
|
-
| `external` | Dashed rectangle | `External`, `ThirdParty`, `Vendor` |
|
|
87
|
-
| `default` | Rectangle | Anything unrecognized |
|
|
88
|
-
|
|
89
|
-
Names like `Router`, `Scheduler`, `Controller`, `Handler`, `Worker`, etc. are treated as services (not actors), even though they end in `-er`.
|
|
90
|
-
|
|
91
|
-
### Explicit Declarations (Optional)
|
|
92
|
-
|
|
93
|
-
You only need explicit declarations when you want to **override** the inferred type, set a **display alias**, or control **position**:
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
// Override type when the name doesn't match conventions
|
|
97
|
-
Stripe is an external
|
|
98
|
-
|
|
99
|
-
// Set a display alias for a cleaner label
|
|
100
|
-
PaymentGW is a networking aka "Payment Gateway"
|
|
101
|
-
|
|
102
|
-
// Control left-to-right ordering
|
|
103
|
-
OrderDB position -1
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Participant Ordering
|
|
107
|
-
|
|
108
|
-
Participants are laid out left-to-right based on **first appearance in messages** — the first participant mentioned gets the leftmost column.
|
|
109
|
-
|
|
110
|
-
**Position values:**
|
|
111
|
-
- `0` = leftmost, `1` = second from left, etc.
|
|
112
|
-
- `-1` = rightmost, `-2` = second from right
|
|
113
|
-
- If two participants target the same slot, the later one shifts to the nearest free position
|
|
114
|
-
|
|
115
|
-
**Groups affect ordering:** members of the same group always stay adjacent (see [Groups](#groups) below). The group is placed where its first member would naturally appear.
|
|
116
|
-
|
|
117
|
-
**Priority (highest wins):**
|
|
118
|
-
1. Explicit `position N`
|
|
119
|
-
2. Group adjacency
|
|
120
|
-
3. First appearance in messages
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
// Example: force the database to the far right
|
|
124
|
-
sequence
|
|
125
|
-
User -placeOrder-> OrderService
|
|
126
|
-
OrderService -save-> OrderDB
|
|
127
|
-
OrderDB position -1
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Messages
|
|
131
|
-
|
|
132
|
-
### Call Arrows
|
|
133
|
-
|
|
134
|
-
A solid arrow from one participant to another:
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
User -login-> API
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### Return Arrows
|
|
141
|
-
|
|
142
|
-
Return arrows are generated automatically from the call stack. When A calls B, a dashed return arrow from B back to A appears once B's work is done:
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
User -login-> API
|
|
146
|
-
API -query-> UserDB
|
|
147
|
-
// Auto-return: UserDB → API (dashed)
|
|
148
|
-
// Auto-return: API → User (dashed)
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
### Async / Fire-and-Forget
|
|
152
|
-
|
|
153
|
-
No return arrow, no activation on the target — use the `~` arrow:
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
API ~sendWelcomeEmail~> EmailService
|
|
157
|
-
API ~logEvent~> LogService
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Self-Calls
|
|
161
|
-
|
|
162
|
-
A participant calling itself renders as a loopback arrow:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
OrderService -validate-> OrderService
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## Blocks
|
|
169
|
-
|
|
170
|
-
Blocks use **indentation** for scoping — no `end` keyword needed.
|
|
171
|
-
|
|
172
|
-
### If / Else
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
if user authenticated
|
|
176
|
-
API -getOrders-> OrderService
|
|
177
|
-
OrderService -query-> OrderDB
|
|
178
|
-
else
|
|
179
|
-
API -401 Unauthorized-> User
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Renders as a dashed frame with an `if` label and an optional `else` divider.
|
|
183
|
-
|
|
184
|
-
### Loop
|
|
185
|
-
|
|
186
|
-
```
|
|
187
|
-
loop retry up to 3 times
|
|
188
|
-
OrderService -request-> ExternalAPI
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Parallel
|
|
192
|
-
|
|
193
|
-
```
|
|
194
|
-
parallel send notifications
|
|
195
|
-
API ~email~> EmailService
|
|
196
|
-
API ~text~> SMSService
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Blocks can nest inside each other. Unindent to end a block.
|
|
200
|
-
|
|
201
|
-
## Notes
|
|
202
|
-
|
|
203
|
-
Add context between messages with `note`:
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
User -POST /login-> API
|
|
207
|
-
note Validates credentials against LDAP
|
|
208
|
-
API -query-> UserDB
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
The note appears between the two surrounding messages.
|
|
212
|
-
|
|
213
|
-
## Sections
|
|
214
|
-
|
|
215
|
-
Full-width horizontal dividers to organize phases:
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
== Authentication ==
|
|
219
|
-
|
|
220
|
-
User -login-> API
|
|
221
|
-
|
|
222
|
-
== Data Fetch ==
|
|
223
|
-
|
|
224
|
-
API -query-> OrderDB
|
|
225
|
-
|
|
226
|
-
== Response ==
|
|
227
|
-
|
|
228
|
-
API -results-> User
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
## Groups
|
|
232
|
-
|
|
233
|
-
Organize participants into labeled boxes in the header:
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
[Backend]
|
|
237
|
-
OrderService
|
|
238
|
-
PaymentService
|
|
239
|
-
OrderDB
|
|
240
|
-
|
|
241
|
-
[Frontend]
|
|
242
|
-
WebApp
|
|
243
|
-
MobileApp
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
- `[Name]` declares a named group
|
|
247
|
-
- Indented names belong to the group
|
|
248
|
-
- Grouped participants stay adjacent in the layout
|
|
249
|
-
- Groups can carry tag metadata: `[Backend | team: Product]`
|
|
250
|
-
|
|
251
|
-
## Activation Bars
|
|
252
|
-
|
|
253
|
-
Thin vertical rectangles on lifelines show when a participant has an active call. They are computed automatically from the call stack:
|
|
254
|
-
|
|
255
|
-
- Appear from call arrow to auto-generated return
|
|
256
|
-
- Nested calls show overlapping bars
|
|
257
|
-
- Self-calls show offset overlapping bars
|
|
258
|
-
- Disabled with `no-activations`
|
|
259
|
-
|
|
260
|
-
## Comments
|
|
261
|
-
|
|
262
|
-
```
|
|
263
|
-
// This is a comment
|
|
264
|
-
// Use // for all comments
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
Lines starting with `//` are ignored by the parser.
|
|
268
|
-
|
|
269
|
-
## Tags
|
|
270
|
-
|
|
271
|
-
Tags add color-coded metadata dimensions to sequence diagrams. Define a tag group, list its values with colors, then attach values to participants, messages, and groups with pipe metadata.
|
|
272
|
-
|
|
273
|
-
### Defining Tag Groups
|
|
274
|
-
|
|
275
|
-
```
|
|
276
|
-
tag Concern alias c
|
|
277
|
-
Caching(blue)
|
|
278
|
-
Auth(green)
|
|
279
|
-
BusinessLogic(purple) default
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
- `tag Name` declares a tag group; `alias x` adds a shorthand
|
|
283
|
-
- Each entry: `Value(color)` — named color for that value
|
|
284
|
-
- `default` on an entry applies it to untagged elements when the group is active
|
|
285
|
-
|
|
286
|
-
### Attaching Tags
|
|
287
|
-
|
|
288
|
-
Use `| key: value` after participant declarations, message lines, or group headers:
|
|
289
|
-
|
|
290
|
-
```
|
|
291
|
-
API is a service | concern: Caching, team: Platform
|
|
292
|
-
User -login-> API | concern: Auth
|
|
293
|
-
[Backend | concern: BusinessLogic]
|
|
294
|
-
OrderAPI
|
|
295
|
-
DB
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
- Multiple tags: `| key1: val1, key2: val2`
|
|
299
|
-
- Aliases work: `| c: Caching` (if `alias c` was declared)
|
|
300
|
-
|
|
301
|
-
### Tag Resolution
|
|
302
|
-
|
|
303
|
-
When a tag group is active, colors are resolved in priority order:
|
|
304
|
-
|
|
305
|
-
1. Explicit metadata on the element
|
|
306
|
-
2. Group propagation (participant inherits from its group)
|
|
307
|
-
3. Receiver inheritance (all incoming tagged messages agree on the same value)
|
|
308
|
-
4. `default` entry value
|
|
309
|
-
5. Neutral (no color)
|
|
310
|
-
|
|
311
|
-
### Legend
|
|
312
|
-
|
|
313
|
-
A legend is rendered automatically above participants when tag groups exist. The active group expands to show colored entry dots. In the desktop app, click a group pill to activate it — participants and messages recolor to show that dimension.
|
|
314
|
-
|
|
315
|
-
Set `active-tag GroupName` in settings to activate a group on load.
|
|
316
|
-
|
|
317
|
-
## Complete Example
|
|
318
|
-
|
|
319
|
-
```dgmo
|
|
320
|
-
sequence E-Commerce Checkout
|
|
321
|
-
|
|
322
|
-
tag Layer alias l
|
|
323
|
-
Frontend(teal)
|
|
324
|
-
Backend(blue)
|
|
325
|
-
Storage(purple)
|
|
326
|
-
|
|
327
|
-
[Backend]
|
|
328
|
-
OrderService
|
|
329
|
-
PaymentGateway
|
|
330
|
-
OrderDB
|
|
331
|
-
|
|
332
|
-
== Browse & Select ==
|
|
333
|
-
|
|
334
|
-
User -Add items to cart-> WebApp
|
|
335
|
-
WebApp -validateCart-> OrderService
|
|
336
|
-
|
|
337
|
-
== Payment ==
|
|
338
|
-
|
|
339
|
-
User -Submit payment-> WebApp
|
|
340
|
-
WebApp -createOrder-> OrderService
|
|
341
|
-
OrderService -charge(amount)-> PaymentGateway
|
|
342
|
-
|
|
343
|
-
if payment successful
|
|
344
|
-
OrderService -saveOrder-> OrderDB
|
|
345
|
-
OrderService ~sendReceipt~> EmailService
|
|
346
|
-
WebApp -Order confirmed-> User
|
|
347
|
-
else
|
|
348
|
-
WebApp -Payment declined-> User
|
|
349
|
-
|
|
350
|
-
== Cleanup ==
|
|
351
|
-
|
|
352
|
-
loop expire stale carts
|
|
353
|
-
OrderService -purgeExpired-> OrderDB
|
|
354
|
-
```
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
# Sitemap
|
|
2
|
-
|
|
3
|
-
```dgmo
|
|
4
|
-
sitemap The Salty Compass
|
|
5
|
-
|
|
6
|
-
tag Auth
|
|
7
|
-
Public(green)
|
|
8
|
-
Crew Only(blue)
|
|
9
|
-
|
|
10
|
-
Home | Auth: Public, description: Landing page with interactive demos
|
|
11
|
-
-shop-> Shop
|
|
12
|
-
-voyages-> Upcoming Voyages
|
|
13
|
-
-join crew-> Sign Up
|
|
14
|
-
-sign in-> Login
|
|
15
|
-
|
|
16
|
-
[Ship Store]
|
|
17
|
-
Shop | Auth: Public
|
|
18
|
-
-> Eye Patches
|
|
19
|
-
-> Flags & Banners
|
|
20
|
-
Eye Patches | Auth: Public
|
|
21
|
-
-add to chest-> Cart
|
|
22
|
-
Flags & Banners | Auth: Public
|
|
23
|
-
-add to chest-> Cart
|
|
24
|
-
Cart | Auth: Public
|
|
25
|
-
-checkout-> Checkout
|
|
26
|
-
Checkout | Auth: Crew Only
|
|
27
|
-
-done-> My Orders
|
|
28
|
-
|
|
29
|
-
[Voyages]
|
|
30
|
-
Upcoming Voyages | Auth: Public
|
|
31
|
-
-details-> Voyage Detail
|
|
32
|
-
Voyage Detail | Auth: Public
|
|
33
|
-
-enlist-> Sign Up
|
|
34
|
-
|
|
35
|
-
[Crew Quarters]
|
|
36
|
-
Login | Auth: Public
|
|
37
|
-
-welcome aboard-> Dashboard
|
|
38
|
-
-new pirate-> Sign Up
|
|
39
|
-
Sign Up | Auth: Public
|
|
40
|
-
-welcome aboard-> Dashboard
|
|
41
|
-
Dashboard | Auth: Crew Only
|
|
42
|
-
description Full overview of crew activity and orders
|
|
43
|
-
-> My Orders
|
|
44
|
-
My Orders | Auth: Crew Only
|
|
45
|
-
-reorder-> Shop
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Overview
|
|
49
|
-
|
|
50
|
-
Sitemap diagrams visualize website structure as a hierarchy of pages. Indentation defines the parent-child relationship between pages. Pages can be grouped into containers, connected with arrows, and annotated with metadata and color-coded tag groups.
|
|
51
|
-
|
|
52
|
-
## Syntax
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
sitemap Site Title
|
|
56
|
-
|
|
57
|
-
Page Name
|
|
58
|
-
Child Page
|
|
59
|
-
Grandchild Page
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Settings
|
|
63
|
-
|
|
64
|
-
| Key | Description | Default |
|
|
65
|
-
| -------------- | --------------------------------------------- | -------- |
|
|
66
|
-
| `chart` | Must be `sitemap` | — |
|
|
67
|
-
| `title` | Diagram title | None |
|
|
68
|
-
| `direction-tb` | Top-to-bottom layout (omit for left-to-right) | off (LR) |
|
|
69
|
-
| `hide` | Comma-separated metadata to hide | None |
|
|
70
|
-
|
|
71
|
-
## Pages
|
|
72
|
-
|
|
73
|
-
Each line of text creates a page node. Indentation creates child pages:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
Home
|
|
77
|
-
About
|
|
78
|
-
Products
|
|
79
|
-
Enterprise
|
|
80
|
-
Starter
|
|
81
|
-
Contact
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Groups (Containers)
|
|
85
|
-
|
|
86
|
-
Use `[Group Name]` to create a visual container that groups its children:
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
Home
|
|
90
|
-
[Product Section]
|
|
91
|
-
Products
|
|
92
|
-
Pricing
|
|
93
|
-
Demo
|
|
94
|
-
|
|
95
|
-
[Support Section]
|
|
96
|
-
Help Center
|
|
97
|
-
Documentation
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Containers render as labeled boxes. They can have their own metadata.
|
|
101
|
-
|
|
102
|
-
## Arrows
|
|
103
|
-
|
|
104
|
-
Add arrows between pages using `->` syntax indented under a page:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
Home
|
|
108
|
-
-> Products
|
|
109
|
-
-explore-> Blog
|
|
110
|
-
Products
|
|
111
|
-
Pricing
|
|
112
|
-
-upgrade(green)-> Enterprise
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
- `-> Target` — plain arrow
|
|
116
|
-
- `-label-> Target` — labeled arrow
|
|
117
|
-
- `-label(color)-> Target` — labeled and colored arrow
|
|
118
|
-
|
|
119
|
-
## Metadata
|
|
120
|
-
|
|
121
|
-
Add key-value pairs indented under a page:
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
Home
|
|
125
|
-
status: Live
|
|
126
|
-
owner: Marketing
|
|
127
|
-
|
|
128
|
-
Products
|
|
129
|
-
status: Draft
|
|
130
|
-
owner: Product Team
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Metadata renders as secondary text on the page card.
|
|
134
|
-
|
|
135
|
-
### Pipe Syntax
|
|
136
|
-
|
|
137
|
-
For concise entries, use `|` to put metadata on a single line:
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
Home | status: Live | owner: Marketing
|
|
141
|
-
Products | status: Draft | owner: Product Team
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
## Descriptions
|
|
145
|
-
|
|
146
|
-
Add a description to any page using the `description` keyword (indented) or pipe metadata:
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
// Pipe metadata form
|
|
150
|
-
Pricing | description: Compare plans and features
|
|
151
|
-
|
|
152
|
-
// Indented keyword form (colon optional)
|
|
153
|
-
Dashboard
|
|
154
|
-
description Full overview of crew activity and orders
|
|
155
|
-
My Orders
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
Descriptions render as secondary text on the page card. The indented form must come before child pages. Multiple `description` lines accumulate into a multi-line description.
|
|
159
|
-
|
|
160
|
-
## Node Colors
|
|
161
|
-
|
|
162
|
-
Add a color name in parentheses after a page or group name:
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
Home(blue)
|
|
166
|
-
[Admin Section(red)]
|
|
167
|
-
Dashboard
|
|
168
|
-
Settings
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## Tag Groups
|
|
172
|
-
|
|
173
|
-
Define color-coded tags for metadata values. Tag groups must appear before page content:
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
sitemap Company Site
|
|
177
|
-
|
|
178
|
-
tag Status
|
|
179
|
-
Live(green)
|
|
180
|
-
Draft(yellow)
|
|
181
|
-
Deprecated(red)
|
|
182
|
-
|
|
183
|
-
tag Owner
|
|
184
|
-
Marketing(blue)
|
|
185
|
-
Engineering(purple)
|
|
186
|
-
|
|
187
|
-
Home
|
|
188
|
-
status: Live
|
|
189
|
-
owner: Marketing
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
- `tag GroupName` starts a tag group
|
|
193
|
-
- When a tag group is active, pages are colored by their matching tag value
|
|
194
|
-
- Click a tag group pill to activate it; click the eye icon to toggle that metadata's visibility on cards
|
|
195
|
-
|
|
196
|
-
## Direction
|
|
197
|
-
|
|
198
|
-
The default layout is left-to-right. Add `direction-tb` to switch to top-to-bottom:
|
|
199
|
-
|
|
200
|
-
```
|
|
201
|
-
sitemap
|
|
202
|
-
direction-tb
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## Collapse / Expand
|
|
206
|
-
|
|
207
|
-
In the app, click a page or group that has children to focus it. Click again to collapse its subtree — a "+N" label shows how many nodes are hidden. Click once more to expand.
|
|
208
|
-
|
|
209
|
-
Keyboard: Tab to focus a node, Enter or Space to toggle.
|
|
210
|
-
|
|
211
|
-
## Comments
|
|
212
|
-
|
|
213
|
-
```
|
|
214
|
-
// This line is ignored by the parser
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Complete Example
|
|
218
|
-
|
|
219
|
-
```dgmo
|
|
220
|
-
sitemap The Salty Compass
|
|
221
|
-
|
|
222
|
-
tag Auth
|
|
223
|
-
Public(green)
|
|
224
|
-
Crew Only(blue)
|
|
225
|
-
|
|
226
|
-
tag Status
|
|
227
|
-
Live(cyan)
|
|
228
|
-
Coming Soon(yellow)
|
|
229
|
-
|
|
230
|
-
Home | Auth: Public | Status: Live
|
|
231
|
-
-shop-> Shop
|
|
232
|
-
-voyages-> Upcoming Voyages
|
|
233
|
-
-join crew-> Sign Up
|
|
234
|
-
-sign in-> Login
|
|
235
|
-
|
|
236
|
-
[Ship Store]
|
|
237
|
-
Shop | Auth: Public | Status: Live
|
|
238
|
-
-> Eye Patches
|
|
239
|
-
-> Flags & Banners
|
|
240
|
-
Eye Patches | Auth: Public | Status: Live
|
|
241
|
-
-add to chest-> Cart
|
|
242
|
-
Flags & Banners | Auth: Public | Status: Coming Soon
|
|
243
|
-
-add to chest-> Cart
|
|
244
|
-
Cart | Auth: Public | Status: Live
|
|
245
|
-
-checkout-> Checkout
|
|
246
|
-
Checkout | Auth: Crew Only | Status: Live
|
|
247
|
-
-done-> My Orders
|
|
248
|
-
|
|
249
|
-
[Voyages]
|
|
250
|
-
Upcoming Voyages | Auth: Public | Status: Live
|
|
251
|
-
-details-> Voyage Detail
|
|
252
|
-
Voyage Detail | Auth: Public | Status: Live
|
|
253
|
-
-enlist-> Sign Up
|
|
254
|
-
|
|
255
|
-
[Crew Quarters]
|
|
256
|
-
Login | Auth: Public | Status: Live
|
|
257
|
-
-welcome aboard-> Dashboard
|
|
258
|
-
-new pirate-> Sign Up
|
|
259
|
-
Sign Up | Auth: Public | Status: Live
|
|
260
|
-
-welcome aboard-> Dashboard
|
|
261
|
-
Dashboard | Auth: Crew Only | Status: Live
|
|
262
|
-
-> My Orders
|
|
263
|
-
My Orders | Auth: Crew Only | Status: Live
|
|
264
|
-
-reorder-> Shop
|
|
265
|
-
```
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Slope Chart
|
|
2
|
-
|
|
3
|
-
```dgmo
|
|
4
|
-
slope Pirate Fleet Strength: 1715 vs 1725
|
|
5
|
-
|
|
6
|
-
period 1715 1725
|
|
7
|
-
|
|
8
|
-
Blackbeard 40 4
|
|
9
|
-
Bartholomew Roberts 12 52
|
|
10
|
-
Charles Vane 20 2
|
|
11
|
-
Anne Bonny 8 15
|
|
12
|
-
Calico Jack 18 6
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Syntax
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
slope Chart Title
|
|
19
|
-
|
|
20
|
-
period Period1 Period2
|
|
21
|
-
|
|
22
|
-
Label value1 value2
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
For multi-token period labels, use an indented block:
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
period
|
|
29
|
-
Before COVID
|
|
30
|
-
After COVID
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Data Format
|
|
34
|
-
|
|
35
|
-
The `period` directive defines the period labels (minimum 2 required). Data rows are space-separated with no colons:
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
period 2020 2025
|
|
39
|
-
|
|
40
|
-
Product A 40 80
|
|
41
|
-
Product B 70 30
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Lines slope upward for increases and downward for decreases.
|
|
45
|
-
|
|
46
|
-
## Color Annotations
|
|
47
|
-
|
|
48
|
-
Add `(color)` after the label to set a custom color:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
Python (blue) 3 1 1
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Thousands Commas
|
|
55
|
-
|
|
56
|
-
Values can contain thousands commas: `Revenue 1,000 2,500`
|