austere-axi 0.3.0 → 0.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.md +41 -9
- package/dist/austere.js +2 -2
- package/dist/catalog.json +1 -1
- package/dist/chrome/chrome.css +1 -1
- package/dist/chrome/chrome.js +4 -4
- package/dist/cli.mjs +765 -296
- package/dist/packs/mermaid/catalog.json +2 -2
- package/dist/packs/mermaid/pack.js +1 -1
- package/dist/packs/shadcn/catalog.json +429 -0
- package/dist/packs/shadcn/pack.js +69 -0
- package/dist/prompt.md +5 -4
- package/dist/spec.json +1 -1
- package/package.json +19 -3
- package/skills/austere-setup/SKILL.md +3 -4
- package/types/catalog.d.ts +82 -0
- package/types/pack-kit.d.ts +46 -0
- package/types/pack.d.ts +104 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"pack": "@austere-axi/pack-mermaid",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"groups": [
|
|
6
6
|
{
|
|
7
7
|
"name": "Content",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
31
|
"api": 1,
|
|
32
|
-
"integrity": "sha384-
|
|
32
|
+
"integrity": "sha384-GpGRe0zuS3HGqdLLXFhR3BCOsY+8rsN2SPv0yaA3gNvcB69o4HJ4aF/01oUOP2u0",
|
|
33
33
|
"size": 5782,
|
|
34
34
|
"css": true,
|
|
35
35
|
"defs": {
|
|
@@ -22,4 +22,4 @@
|
|
|
22
22
|
font-size: 12.5px;
|
|
23
23
|
color: var(--austere-muted);
|
|
24
24
|
}
|
|
25
|
-
`;var s={components:[N],css:V};var $=l(w());(0,$.registerPack)({name:"@austere-axi/pack-mermaid",version:"0.
|
|
25
|
+
`;var s={components:[N],css:V};var $=l(w());(0,$.registerPack)({name:"@austere-axi/pack-mermaid",version:"0.4.0",api:1,components:[].concat(s&&s.components?s.components:s),css:s&&s.css});})();
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": 1,
|
|
3
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
4
|
+
"version": "0.4.0",
|
|
5
|
+
"groups": [
|
|
6
|
+
{
|
|
7
|
+
"name": "Data",
|
|
8
|
+
"notes": []
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Content",
|
|
12
|
+
"notes": []
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"components": [
|
|
16
|
+
{
|
|
17
|
+
"name": "Progress",
|
|
18
|
+
"group": "Data",
|
|
19
|
+
"signature": "Progress(value: number, label?: string, max?: number)",
|
|
20
|
+
"description": "Progress bar. value counts toward max (default 100); label names what is progressing. Shows a percentage.",
|
|
21
|
+
"tier": "extended",
|
|
22
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
23
|
+
"examples": [
|
|
24
|
+
"migration = Progress(64, \"Rows migrated\")"
|
|
25
|
+
],
|
|
26
|
+
"slots": [
|
|
27
|
+
"Card.children",
|
|
28
|
+
"TabItem.content",
|
|
29
|
+
"AccordionItem.content"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "Avatar",
|
|
34
|
+
"group": "Data",
|
|
35
|
+
"signature": "Avatar(name: string, src?: string, size?: \"md\" | \"lg\")",
|
|
36
|
+
"description": "Round avatar for a person. Shows the initials of name; src is an optional https image URL.",
|
|
37
|
+
"tier": "extended",
|
|
38
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
39
|
+
"examples": [
|
|
40
|
+
"owner = Avatar(\"Ada Lovelace\")"
|
|
41
|
+
],
|
|
42
|
+
"slots": [
|
|
43
|
+
"Card.children",
|
|
44
|
+
"TabItem.content",
|
|
45
|
+
"AccordionItem.content"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "AvatarGroup",
|
|
50
|
+
"group": "Data",
|
|
51
|
+
"signature": "AvatarGroup(avatars: Avatar[], max?: number)",
|
|
52
|
+
"description": "Overlapping Avatars, for reviewers or owners. max (default 4) shows the rest as +N.",
|
|
53
|
+
"tier": "extended",
|
|
54
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
55
|
+
"examples": [
|
|
56
|
+
"team = AvatarGroup([ada, grace, linus], 2)\nada = Avatar(\"Ada Lovelace\")\ngrace = Avatar(\"Grace Hopper\")\nlinus = Avatar(\"Linus Torvalds\")"
|
|
57
|
+
],
|
|
58
|
+
"slots": [
|
|
59
|
+
"Card.children",
|
|
60
|
+
"TabItem.content",
|
|
61
|
+
"AccordionItem.content"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "Tooltip",
|
|
66
|
+
"group": "Content",
|
|
67
|
+
"signature": "Tooltip(text: string, tip: string)",
|
|
68
|
+
"description": "Inline text with a short hint on hover or focus (a term and its definition). Keep tip to one line.",
|
|
69
|
+
"tier": "extended",
|
|
70
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
71
|
+
"examples": [
|
|
72
|
+
"term = Tooltip(\"idempotent\", \"Safe to run twice with the same result.\")"
|
|
73
|
+
],
|
|
74
|
+
"slots": [
|
|
75
|
+
"Card.children",
|
|
76
|
+
"TabItem.content",
|
|
77
|
+
"AccordionItem.content"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "HoverCard",
|
|
82
|
+
"group": "Content",
|
|
83
|
+
"signature": "HoverCard(text: string, title: string, body?: string)",
|
|
84
|
+
"description": "Inline text that shows a small card (title and a line or two of body) on hover or focus, e.g. a person or a service.",
|
|
85
|
+
"tier": "extended",
|
|
86
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
87
|
+
"examples": [
|
|
88
|
+
"svc = HoverCard(\"billing-api\", \"billing-api\", \"Owns invoices and refunds. On call: payments team.\")"
|
|
89
|
+
],
|
|
90
|
+
"slots": [
|
|
91
|
+
"Card.children",
|
|
92
|
+
"TabItem.content",
|
|
93
|
+
"AccordionItem.content"
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "Breadcrumb",
|
|
98
|
+
"group": "Content",
|
|
99
|
+
"signature": "Breadcrumb(items: BreadcrumbItem[])",
|
|
100
|
+
"description": "Path trail such as Repo / Package / File, from BreadcrumbItems. Each item is a click target.",
|
|
101
|
+
"tier": "extended",
|
|
102
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
103
|
+
"examples": [
|
|
104
|
+
"trail = Breadcrumb([repo, pkg, file])\nrepo = BreadcrumbItem(\"austere-axi\")\npkg = BreadcrumbItem(\"packs\")\nfile = BreadcrumbItem(\"shadcn\")"
|
|
105
|
+
],
|
|
106
|
+
"slots": [
|
|
107
|
+
"Card.children",
|
|
108
|
+
"TabItem.content",
|
|
109
|
+
"AccordionItem.content"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "BreadcrumbItem",
|
|
114
|
+
"group": "Content",
|
|
115
|
+
"signature": "BreadcrumbItem(label: string, href?: string)",
|
|
116
|
+
"description": "One step of a Breadcrumb. href is optional; the last item is the current page.",
|
|
117
|
+
"tier": "extended",
|
|
118
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
119
|
+
"examples": [],
|
|
120
|
+
"slots": null
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "Kbd",
|
|
124
|
+
"group": "Content",
|
|
125
|
+
"signature": "Kbd(keys: string)",
|
|
126
|
+
"description": "Keyboard shortcut. keys joins keys with \"+\", e.g. \"Ctrl+K\"; each key is drawn as a key cap.",
|
|
127
|
+
"tier": "extended",
|
|
128
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
129
|
+
"examples": [
|
|
130
|
+
"shortcut = Kbd(\"Ctrl+Shift+P\")"
|
|
131
|
+
],
|
|
132
|
+
"slots": [
|
|
133
|
+
"Card.children",
|
|
134
|
+
"TabItem.content",
|
|
135
|
+
"AccordionItem.content"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "Skeleton",
|
|
140
|
+
"group": "Content",
|
|
141
|
+
"signature": "Skeleton(lines?: number, shape?: \"lines\" | \"avatar\")",
|
|
142
|
+
"description": "Grey placeholder block for content not yet written or loaded (default 3 lines). shape avatar adds a round head.",
|
|
143
|
+
"tier": "extended",
|
|
144
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
145
|
+
"examples": [
|
|
146
|
+
"pending = Skeleton(3, \"avatar\")"
|
|
147
|
+
],
|
|
148
|
+
"slots": [
|
|
149
|
+
"Card.children",
|
|
150
|
+
"TabItem.content",
|
|
151
|
+
"AccordionItem.content"
|
|
152
|
+
]
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"name": "Calendar",
|
|
156
|
+
"group": "Data",
|
|
157
|
+
"signature": "Calendar(month: string, highlights?: string[])",
|
|
158
|
+
"description": "Read-only month grid (not a date picker). month is \"YYYY-MM\"; highlights lists \"YYYY-MM-DD\" or \"YYYY-MM-DD label\" entries to mark, e.g. a freeze or a release. Marked days are click targets.",
|
|
159
|
+
"tier": "extended",
|
|
160
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
161
|
+
"examples": [
|
|
162
|
+
"window = Calendar(\"2026-11\", [\"2026-11-04 Code freeze\", \"2026-11-12 Release\", \"2026-11-13\"])"
|
|
163
|
+
],
|
|
164
|
+
"slots": [
|
|
165
|
+
"Card.children",
|
|
166
|
+
"TabItem.content",
|
|
167
|
+
"AccordionItem.content"
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"name": "Timeline",
|
|
172
|
+
"group": "Content",
|
|
173
|
+
"signature": "Timeline(items: TimelineItem[])",
|
|
174
|
+
"description": "Vertical history or schedule of TimelineItems, oldest first. Each item is a click target.",
|
|
175
|
+
"tier": "extended",
|
|
176
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
177
|
+
"examples": [
|
|
178
|
+
"history = Timeline([found, fixed, rollout])\nfound = TimelineItem(\"Bug found\", \"Oct 28\", \"Retries double-charge on timeout.\")\nfixed = TimelineItem(\"Fix merged\", \"Oct 29\", \"Idempotency key added.\", \"current\")\nrollout = TimelineItem(\"Rollout\", \"Nov 3\", \"\", \"upcoming\")"
|
|
179
|
+
],
|
|
180
|
+
"slots": [
|
|
181
|
+
"Card.children",
|
|
182
|
+
"TabItem.content",
|
|
183
|
+
"AccordionItem.content"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"name": "TimelineItem",
|
|
188
|
+
"group": "Content",
|
|
189
|
+
"signature": "TimelineItem(title: string, date?: string, detail?: string, state?: \"done\" | \"current\" | \"upcoming\")",
|
|
190
|
+
"description": "One event in a Timeline. state: done (default), current or upcoming.",
|
|
191
|
+
"tier": "extended",
|
|
192
|
+
"pack": "@austere-axi/pack-shadcn",
|
|
193
|
+
"examples": [],
|
|
194
|
+
"slots": null
|
|
195
|
+
}
|
|
196
|
+
],
|
|
197
|
+
"api": 1,
|
|
198
|
+
"integrity": "sha384-CIYnYWZ/pwcwzMxA737O2dQSLE8ta7pk7PH4aMDoNOvM7KFwYz3n7ETeb/91s2pE",
|
|
199
|
+
"size": 16313,
|
|
200
|
+
"css": true,
|
|
201
|
+
"defs": {
|
|
202
|
+
"Progress": {
|
|
203
|
+
"type": "object",
|
|
204
|
+
"properties": {
|
|
205
|
+
"value": {
|
|
206
|
+
"type": "number"
|
|
207
|
+
},
|
|
208
|
+
"label": {
|
|
209
|
+
"type": "string"
|
|
210
|
+
},
|
|
211
|
+
"max": {
|
|
212
|
+
"type": "number"
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
"required": [
|
|
216
|
+
"value"
|
|
217
|
+
],
|
|
218
|
+
"additionalProperties": false,
|
|
219
|
+
"description": "Progress bar. value counts toward max (default 100); label names what is progressing. Shows a percentage."
|
|
220
|
+
},
|
|
221
|
+
"Avatar": {
|
|
222
|
+
"type": "object",
|
|
223
|
+
"properties": {
|
|
224
|
+
"name": {
|
|
225
|
+
"type": "string"
|
|
226
|
+
},
|
|
227
|
+
"src": {
|
|
228
|
+
"type": "string"
|
|
229
|
+
},
|
|
230
|
+
"size": {
|
|
231
|
+
"type": "string",
|
|
232
|
+
"enum": [
|
|
233
|
+
"md",
|
|
234
|
+
"lg"
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
"required": [
|
|
239
|
+
"name"
|
|
240
|
+
],
|
|
241
|
+
"additionalProperties": false,
|
|
242
|
+
"description": "Round avatar for a person. Shows the initials of name; src is an optional https image URL."
|
|
243
|
+
},
|
|
244
|
+
"AvatarGroup": {
|
|
245
|
+
"type": "object",
|
|
246
|
+
"properties": {
|
|
247
|
+
"avatars": {
|
|
248
|
+
"type": "array",
|
|
249
|
+
"items": {
|
|
250
|
+
"$ref": "#/$defs/Avatar"
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
"max": {
|
|
254
|
+
"type": "integer",
|
|
255
|
+
"minimum": -9007199254740991,
|
|
256
|
+
"maximum": 9007199254740991
|
|
257
|
+
}
|
|
258
|
+
},
|
|
259
|
+
"required": [
|
|
260
|
+
"avatars"
|
|
261
|
+
],
|
|
262
|
+
"additionalProperties": false,
|
|
263
|
+
"description": "Overlapping Avatars, for reviewers or owners. max (default 4) shows the rest as +N."
|
|
264
|
+
},
|
|
265
|
+
"Tooltip": {
|
|
266
|
+
"type": "object",
|
|
267
|
+
"properties": {
|
|
268
|
+
"text": {
|
|
269
|
+
"type": "string"
|
|
270
|
+
},
|
|
271
|
+
"tip": {
|
|
272
|
+
"type": "string"
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
"required": [
|
|
276
|
+
"text",
|
|
277
|
+
"tip"
|
|
278
|
+
],
|
|
279
|
+
"additionalProperties": false,
|
|
280
|
+
"description": "Inline text with a short hint on hover or focus (a term and its definition). Keep tip to one line."
|
|
281
|
+
},
|
|
282
|
+
"HoverCard": {
|
|
283
|
+
"type": "object",
|
|
284
|
+
"properties": {
|
|
285
|
+
"text": {
|
|
286
|
+
"type": "string"
|
|
287
|
+
},
|
|
288
|
+
"title": {
|
|
289
|
+
"type": "string"
|
|
290
|
+
},
|
|
291
|
+
"body": {
|
|
292
|
+
"type": "string"
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
"required": [
|
|
296
|
+
"text",
|
|
297
|
+
"title"
|
|
298
|
+
],
|
|
299
|
+
"additionalProperties": false,
|
|
300
|
+
"description": "Inline text that shows a small card (title and a line or two of body) on hover or focus, e.g. a person or a service."
|
|
301
|
+
},
|
|
302
|
+
"Breadcrumb": {
|
|
303
|
+
"type": "object",
|
|
304
|
+
"properties": {
|
|
305
|
+
"items": {
|
|
306
|
+
"type": "array",
|
|
307
|
+
"items": {
|
|
308
|
+
"$ref": "#/$defs/BreadcrumbItem"
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"required": [
|
|
313
|
+
"items"
|
|
314
|
+
],
|
|
315
|
+
"additionalProperties": false,
|
|
316
|
+
"description": "Path trail such as Repo / Package / File, from BreadcrumbItems. Each item is a click target."
|
|
317
|
+
},
|
|
318
|
+
"BreadcrumbItem": {
|
|
319
|
+
"type": "object",
|
|
320
|
+
"properties": {
|
|
321
|
+
"label": {
|
|
322
|
+
"type": "string"
|
|
323
|
+
},
|
|
324
|
+
"href": {
|
|
325
|
+
"type": "string"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"required": [
|
|
329
|
+
"label"
|
|
330
|
+
],
|
|
331
|
+
"additionalProperties": false,
|
|
332
|
+
"description": "One step of a Breadcrumb. href is optional; the last item is the current page."
|
|
333
|
+
},
|
|
334
|
+
"Kbd": {
|
|
335
|
+
"type": "object",
|
|
336
|
+
"properties": {
|
|
337
|
+
"keys": {
|
|
338
|
+
"type": "string"
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
"required": [
|
|
342
|
+
"keys"
|
|
343
|
+
],
|
|
344
|
+
"additionalProperties": false,
|
|
345
|
+
"description": "Keyboard shortcut. keys joins keys with \"+\", e.g. \"Ctrl+K\"; each key is drawn as a key cap."
|
|
346
|
+
},
|
|
347
|
+
"Skeleton": {
|
|
348
|
+
"type": "object",
|
|
349
|
+
"properties": {
|
|
350
|
+
"lines": {
|
|
351
|
+
"type": "integer",
|
|
352
|
+
"minimum": -9007199254740991,
|
|
353
|
+
"maximum": 9007199254740991
|
|
354
|
+
},
|
|
355
|
+
"shape": {
|
|
356
|
+
"type": "string",
|
|
357
|
+
"enum": [
|
|
358
|
+
"lines",
|
|
359
|
+
"avatar"
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
"additionalProperties": false,
|
|
364
|
+
"description": "Grey placeholder block for content not yet written or loaded (default 3 lines). shape avatar adds a round head."
|
|
365
|
+
},
|
|
366
|
+
"Calendar": {
|
|
367
|
+
"type": "object",
|
|
368
|
+
"properties": {
|
|
369
|
+
"month": {
|
|
370
|
+
"type": "string"
|
|
371
|
+
},
|
|
372
|
+
"highlights": {
|
|
373
|
+
"type": "array",
|
|
374
|
+
"items": {
|
|
375
|
+
"type": "string"
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
},
|
|
379
|
+
"required": [
|
|
380
|
+
"month"
|
|
381
|
+
],
|
|
382
|
+
"additionalProperties": false,
|
|
383
|
+
"description": "Read-only month grid (not a date picker). month is \"YYYY-MM\"; highlights lists \"YYYY-MM-DD\" or \"YYYY-MM-DD label\" entries to mark, e.g. a freeze or a release. Marked days are click targets."
|
|
384
|
+
},
|
|
385
|
+
"Timeline": {
|
|
386
|
+
"type": "object",
|
|
387
|
+
"properties": {
|
|
388
|
+
"items": {
|
|
389
|
+
"type": "array",
|
|
390
|
+
"items": {
|
|
391
|
+
"$ref": "#/$defs/TimelineItem"
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
"required": [
|
|
396
|
+
"items"
|
|
397
|
+
],
|
|
398
|
+
"additionalProperties": false,
|
|
399
|
+
"description": "Vertical history or schedule of TimelineItems, oldest first. Each item is a click target."
|
|
400
|
+
},
|
|
401
|
+
"TimelineItem": {
|
|
402
|
+
"type": "object",
|
|
403
|
+
"properties": {
|
|
404
|
+
"title": {
|
|
405
|
+
"type": "string"
|
|
406
|
+
},
|
|
407
|
+
"date": {
|
|
408
|
+
"type": "string"
|
|
409
|
+
},
|
|
410
|
+
"detail": {
|
|
411
|
+
"type": "string"
|
|
412
|
+
},
|
|
413
|
+
"state": {
|
|
414
|
+
"type": "string",
|
|
415
|
+
"enum": [
|
|
416
|
+
"done",
|
|
417
|
+
"current",
|
|
418
|
+
"upcoming"
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
"required": [
|
|
423
|
+
"title"
|
|
424
|
+
],
|
|
425
|
+
"additionalProperties": false,
|
|
426
|
+
"description": "One event in a Timeline. state: done (default), current or upcoming."
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
(()=>{var fe=Object.create;var U=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var be=Object.getOwnPropertyNames;var ve=Object.getPrototypeOf,we=Object.prototype.hasOwnProperty;var A=(e,a)=>()=>{try{return a||e((a={exports:{}}).exports,a),a.exports}catch(t){throw a=0,t}};var ye=(e,a,t,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of be(a))!we.call(e,s)&&s!==t&&U(e,s,{get:()=>a[s],enumerable:!(o=xe(a,s))||o.enumerable});return e};var r=(e,a,t)=>(t=e!=null?fe(ve(e)):{},ye(a||!e||!e.__esModule?U(t,"default",{value:e,enumerable:!0}):t,e));var c=A((Ke,O)=>{var G=globalThis.__austereHost;if(!G)throw new Error("this austere-axi component pack needs the austere-axi runtime on the page");O.exports=G.React});var u=A((Ue,L)=>{var F=globalThis.__austereHost;if(!F)throw new Error("this austere-axi component pack needs the austere-axi runtime on the page");L.exports=F.zod});var l=A((Ge,q)=>{var W=globalThis.__austereHost;if(!W)throw new Error("this austere-axi component pack needs the austere-axi runtime on the page");q.exports=W.pack});var i=A((Oe,J)=>{var Z=globalThis.__austereHost;if(!Z)throw new Error("this austere-axi component pack needs the austere-axi runtime on the page");J.exports=Z.jsxRuntime});var Fe=r(c()),C=r(u()),Q=r(l()),f=r(i());function ke({props:e}){let a=Number(e.max)>0?Number(e.max):100,t=Math.min(a,Math.max(0,Number(e.value)||0)),o=Math.round(t/a*100);return(0,f.jsxs)("div",{className:"sh-progress",children:[(0,f.jsxs)("div",{className:"sh-progress-head",children:[(0,f.jsx)("span",{children:e.label}),(0,f.jsxs)("span",{className:"sh-muted",children:[o,"%"]})]}),(0,f.jsx)("div",{className:"sh-progress-bar",role:"progressbar","aria-valuemin":0,"aria-valuemax":a,"aria-valuenow":t,children:(0,f.jsx)("div",{className:"sh-progress-fill",style:{width:`${o}%`}})})]})}var X=(0,Q.austereComponent)({name:"Progress",group:"Data",tier:"extended",props:C.z.object({value:C.z.number(),label:C.z.string().optional(),max:C.z.number().optional()}),description:"Progress bar. value counts toward max (default 100); label names what is progressing. Shows a percentage.",renderer:ke,example:'migration = Progress(64, "Rows migrated")'});var qe=r(c()),x=r(u()),B=r(l()),h=r(i()),Ne=e=>String(e||"?").trim().split(/\s+/).slice(0,2).map(a=>a[0]).join("").toUpperCase()||"?",Ce=e=>typeof e=="string"&&/^(https:\/\/|data:image\/)/i.test(e)?e:"";function ee({name:e,src:a,size:t}){let o=Ce(a);return(0,h.jsx)("span",{className:`sh-avatar sh-avatar-${t==="lg"?"lg":"md"}`,title:e,"data-austere-part":e||void 0,children:o?(0,h.jsx)("img",{src:o,alt:e||""}):(0,h.jsx)("span",{"aria-hidden":"true",children:Ne(e)})})}function Te({props:e}){return(0,h.jsx)(ee,{name:e.name,src:e.src,size:e.size})}var M=(0,B.austereComponent)({name:"Avatar",group:"Data",tier:"extended",props:x.z.object({name:x.z.string(),src:x.z.string().optional(),size:x.z.enum(["md","lg"]).optional()}),description:"Round avatar for a person. Shows the initials of name; src is an optional https image URL.",renderer:Te,example:'owner = Avatar("Ada Lovelace")'});function Ae({props:e}){let a=(Array.isArray(e.avatars)?e.avatars:[]).filter(n=>n&&n.props),t=Number.isInteger(e.max)&&e.max>0?e.max:4,o=a.slice(0,t),s=a.length-o.length;return(0,h.jsxs)("span",{className:"sh-avatar-group",children:[o.map((n,I)=>(0,h.jsx)(ee,{name:n.props.name,src:n.props.src,size:n.props.size},I)),s>0?(0,h.jsxs)("span",{className:"sh-avatar sh-avatar-md sh-avatar-more",children:["+",s]}):null]})}var ae=(0,B.austereComponent)({name:"AvatarGroup",group:"Data",tier:"extended",props:x.z.object({avatars:x.z.array(M.definition.ref),max:x.z.number().int().optional()}),description:"Overlapping Avatars, for reviewers or owners. max (default 4) shows the rest as +N.",renderer:Ae,example:`team = AvatarGroup([ada, grace, linus], 2)
|
|
2
|
+
ada = Avatar("Ada Lovelace")
|
|
3
|
+
grace = Avatar("Grace Hopper")
|
|
4
|
+
linus = Avatar("Linus Torvalds")`});var Qe=r(c()),b=r(u()),D=r(l()),d=r(i());function ze({props:e}){return(0,d.jsxs)("span",{className:"sh-pop sh-tooltip",tabIndex:0,children:[(0,d.jsx)("span",{className:"sh-pop-trigger",children:e.text}),(0,d.jsx)("span",{className:"sh-pop-card",role:"tooltip",children:e.tip})]})}var re=(0,D.austereComponent)({name:"Tooltip",group:"Content",tier:"extended",props:b.z.object({text:b.z.string(),tip:b.z.string()}),description:"Inline text with a short hint on hover or focus (a term and its definition). Keep tip to one line.",renderer:ze,example:'term = Tooltip("idempotent", "Safe to run twice with the same result.")'});function Ie({props:e}){return(0,d.jsxs)("span",{className:"sh-pop sh-hovercard",tabIndex:0,children:[(0,d.jsx)("span",{className:"sh-pop-trigger",children:e.text}),(0,d.jsxs)("span",{className:"sh-pop-card sh-card",role:"tooltip",children:[(0,d.jsx)("strong",{children:e.title}),e.body?(0,d.jsx)("span",{className:"sh-muted",children:e.body}):null]})]})}var te=(0,D.austereComponent)({name:"HoverCard",group:"Content",tier:"extended",props:b.z.object({text:b.z.string(),title:b.z.string(),body:b.z.string().optional()}),description:"Inline text that shows a small card (title and a line or two of body) on hover or focus, e.g. a person or a service.",renderer:Ie,example:'svc = HoverCard("billing-api", "billing-api", "Owns invoices and refunds. On call: payments team.")'});var aa=r(c()),k=r(u()),Y=r(l()),v=r(i()),Se=()=>null,Re=e=>typeof e=="string"&&/^(https?:\/\/|\/|#)/i.test(e)?e:"";function Be({props:e}){let a=(Array.isArray(e.items)?e.items:[]).filter(t=>t&&t.props);return(0,v.jsx)("nav",{className:"sh-breadcrumb","aria-label":"Breadcrumb",children:(0,v.jsx)("ol",{children:a.map((t,o)=>{let s=o===a.length-1,n=Re(t.props.href);return(0,v.jsxs)("li",{"data-austere-part":t.props.label,children:[n&&!s?(0,v.jsx)("a",{href:n,children:t.props.label}):(0,v.jsx)("span",{"aria-current":s?"page":void 0,children:t.props.label}),s?null:(0,v.jsx)("span",{className:"sh-crumb-sep","aria-hidden":"true",children:"/"})]},o)})})})}var H=(0,Y.austereComponent)({name:"BreadcrumbItem",group:"Content",tier:"extended",props:k.z.object({label:k.z.string(),href:k.z.string().optional()}),description:"One step of a Breadcrumb. href is optional; the last item is the current page.",renderer:Se,slots:null,tagged:!1}),oe=(0,Y.austereComponent)({name:"Breadcrumb",group:"Content",tier:"extended",props:k.z.object({items:k.z.array(H.definition.ref)}),description:"Path trail such as Repo / Package / File, from BreadcrumbItems. Each item is a click target.",renderer:Be,example:`trail = Breadcrumb([repo, pkg, file])
|
|
5
|
+
repo = BreadcrumbItem("austere-axi")
|
|
6
|
+
pkg = BreadcrumbItem("packs")
|
|
7
|
+
file = BreadcrumbItem("shadcn")`});var oa=r(c()),V=r(u()),se=r(l()),j=r(i());function Me({props:e}){let a=String(e.keys??"").split("+").map(t=>t.trim()).filter(Boolean);return(0,j.jsx)("span",{className:"sh-kbd-group",children:a.map((t,o)=>(0,j.jsx)("kbd",{className:"sh-kbd",children:t},o))})}var ne=(0,se.austereComponent)({name:"Kbd",group:"Content",tier:"extended",props:V.z.object({keys:V.z.string()}),description:'Keyboard shortcut. keys joins keys with "+", e.g. "Ctrl+K"; each key is drawn as a key cap.',renderer:Me,example:'shortcut = Kbd("Ctrl+Shift+P")'});var ia=r(c()),z=r(u()),ie=r(l()),N=r(i());function De({props:e}){let a=Math.min(12,Math.max(1,Number.isInteger(e.lines)?e.lines:3));return(0,N.jsxs)("div",{className:"sh-skeleton","aria-hidden":"true",children:[e.shape==="avatar"?(0,N.jsx)("span",{className:"sh-skel sh-skel-avatar"}):null,(0,N.jsx)("div",{className:"sh-skeleton-lines",children:Array.from({length:a},(t,o)=>(0,N.jsx)("span",{className:"sh-skel",style:{width:o===a-1&&a>1?"60%":"100%"}},o))})]})}var pe=(0,ie.austereComponent)({name:"Skeleton",group:"Content",tier:"extended",props:z.z.object({lines:z.z.number().int().optional(),shape:z.z.enum(["lines","avatar"]).optional()}),description:"Grey placeholder block for content not yet written or loaded (default 3 lines). shape avatar adds a round head.",renderer:De,example:'pending = Skeleton(3, "avatar")'});var da=r(c()),T=r(u()),le=r(l()),g=r(i()),Ye=/^(\d{4})-(\d{2})-(\d{2})(?:\s+(.*))?$/,He=["Mo","Tu","We","Th","Fr","Sa","Su"];function Ve(e,a,t){let o=new Map;for(let s of Array.isArray(t)?t:[]){let n=Ye.exec(String(s).trim());n&&Number(n[1])===e&&Number(n[2])===a&&o.set(Number(n[3]),(n[4]||"").trim())}return o}function je({props:e}){let a=/^(\d{4})-(\d{2})/.exec(String(e.month??"")),t=a?Number(a[1]):NaN,o=a?Number(a[2]):NaN;if(!(o>=1&&o<=12))return(0,g.jsx)("div",{className:"austere-render-error",children:'Calendar needs a month like "2026-11".'});let s=new Date(Date.UTC(t,o-1,1)),n=new Date(Date.UTC(t,o,0)).getUTCDate(),I=(s.getUTCDay()+6)%7,$=Ve(t,o,e.highlights),E=s.toLocaleString("en-US",{month:"long",year:"numeric",timeZone:"UTC"}),ge=[...Array(I).fill(null),...Array.from({length:n},(p,S)=>S+1)];return(0,g.jsxs)("div",{className:"sh-calendar",children:[(0,g.jsx)("div",{className:"sh-calendar-title",children:E}),(0,g.jsxs)("div",{className:"sh-calendar-grid",children:[He.map(p=>(0,g.jsx)("span",{className:"sh-calendar-dow",children:p},p)),ge.map((p,S)=>{if(p===null)return(0,g.jsx)("span",{},`b${S}`);let K=$.has(p),R=$.get(p);return(0,g.jsx)("span",{className:`sh-calendar-day${K?" is-marked":""}`,title:R||void 0,"data-austere-part":K?`${E.split(" ")[0]} ${p}${R?`: ${R}`:""}`:void 0,children:p},p)})]})]})}var de=(0,le.austereComponent)({name:"Calendar",group:"Data",tier:"extended",props:T.z.object({month:T.z.string(),highlights:T.z.array(T.z.string()).optional()}),description:'Read-only month grid (not a date picker). month is "YYYY-MM"; highlights lists "YYYY-MM-DD" or "YYYY-MM-DD label" entries to mark, e.g. a freeze or a release. Marked days are click targets.',renderer:je,example:'window = Calendar("2026-11", ["2026-11-04 Code freeze", "2026-11-12 Release", "2026-11-13"])'});var ua=r(c()),w=r(u()),P=r(l()),m=r(i()),Pe=()=>null,me=["done","current","upcoming"];function _e({props:e}){let a=(Array.isArray(e.items)?e.items:[]).filter(t=>t&&t.props);return(0,m.jsx)("ol",{className:"sh-timeline",children:a.map((t,o)=>{let s=t.props,n=me.includes(s.state)?s.state:"done";return(0,m.jsxs)("li",{className:`sh-timeline-item is-${n}`,"data-austere-part":s.title,children:[(0,m.jsx)("span",{className:"sh-timeline-dot","aria-hidden":"true"}),(0,m.jsxs)("div",{className:"sh-timeline-body",children:[(0,m.jsxs)("div",{className:"sh-timeline-head",children:[(0,m.jsx)("strong",{children:s.title}),s.date?(0,m.jsx)("span",{className:"sh-muted",children:s.date}):null]}),s.detail?(0,m.jsx)("div",{className:"sh-muted",children:s.detail}):null]})]},o)})})}var _=(0,P.austereComponent)({name:"TimelineItem",group:"Content",tier:"extended",props:w.z.object({title:w.z.string(),date:w.z.string().optional(),detail:w.z.string().optional(),state:w.z.enum(me).optional()}),description:"One event in a Timeline. state: done (default), current or upcoming.",renderer:Pe,slots:null,tagged:!1}),ce=(0,P.austereComponent)({name:"Timeline",group:"Content",tier:"extended",props:w.z.object({items:w.z.array(_.definition.ref)}),description:"Vertical history or schedule of TimelineItems, oldest first. Each item is a click target.",renderer:_e,example:`history = Timeline([found, fixed, rollout])
|
|
8
|
+
found = TimelineItem("Bug found", "Oct 28", "Retries double-charge on timeout.")
|
|
9
|
+
fixed = TimelineItem("Fix merged", "Oct 29", "Idempotency key added.", "current")
|
|
10
|
+
rollout = TimelineItem("Rollout", "Nov 3", "", "upcoming")`});var ue=`.sh-muted { color: var(--austere-muted); }
|
|
11
|
+
|
|
12
|
+
/* Progress */
|
|
13
|
+
.sh-progress { width: 100%; }
|
|
14
|
+
.sh-progress-head { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; margin-bottom: 6px; }
|
|
15
|
+
.sh-progress-bar { height: 8px; border-radius: 999px; background: var(--austere-surface-2); overflow: hidden; }
|
|
16
|
+
.sh-progress-fill { height: 100%; border-radius: 999px; background: var(--austere-accent); }
|
|
17
|
+
|
|
18
|
+
/* Avatar */
|
|
19
|
+
.sh-avatar { display: inline-flex; align-items: center; justify-content: center; flex: none; overflow: hidden; border-radius: 50%; background: var(--austere-surface-2); border: 1px solid var(--austere-line); color: var(--austere-text); font-size: 12px; font-weight: 600; }
|
|
20
|
+
.sh-avatar-md { width: 32px; height: 32px; }
|
|
21
|
+
.sh-avatar-lg { width: 44px; height: 44px; font-size: 15px; }
|
|
22
|
+
.sh-avatar img { width: 100%; height: 100%; object-fit: cover; }
|
|
23
|
+
.sh-avatar-group { display: inline-flex; }
|
|
24
|
+
.sh-avatar-group .sh-avatar + .sh-avatar { margin-left: -6px; }
|
|
25
|
+
.sh-avatar-group .sh-avatar { box-shadow: 0 0 0 2px var(--austere-surface); }
|
|
26
|
+
.sh-avatar-more { color: var(--austere-muted); }
|
|
27
|
+
|
|
28
|
+
/* Tooltip and HoverCard */
|
|
29
|
+
.sh-pop { position: relative; display: inline-block; outline: none; }
|
|
30
|
+
.sh-pop-trigger { border-bottom: 1px dotted var(--austere-muted); cursor: help; }
|
|
31
|
+
.sh-pop-card { position: absolute; left: 0; bottom: calc(100% + 6px); z-index: 20; display: none; width: max-content; max-width: min(280px, 80vw); padding: 6px 10px; border-radius: 6px; border: 1px solid var(--austere-line); background: var(--austere-surface-2); color: var(--austere-text); font-size: 12.5px; line-height: 1.4; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4); white-space: normal; overflow-wrap: anywhere; }
|
|
32
|
+
.sh-pop:hover .sh-pop-card, .sh-pop:focus .sh-pop-card { display: block; }
|
|
33
|
+
.sh-pop:hover .sh-pop-card.sh-card, .sh-pop:focus .sh-pop-card.sh-card { display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; }
|
|
34
|
+
|
|
35
|
+
/* Breadcrumb */
|
|
36
|
+
.sh-breadcrumb ol { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0; padding: 0; list-style: none; font-size: 13px; color: var(--austere-muted); }
|
|
37
|
+
.sh-breadcrumb li { display: inline-flex; gap: 6px; overflow-wrap: anywhere; }
|
|
38
|
+
.sh-breadcrumb a { color: inherit; text-decoration: none; }
|
|
39
|
+
.sh-breadcrumb a:hover { color: var(--austere-text); }
|
|
40
|
+
.sh-breadcrumb [aria-current] { color: var(--austere-text); }
|
|
41
|
+
|
|
42
|
+
/* Kbd */
|
|
43
|
+
.sh-kbd-group { display: inline-flex; gap: 4px; }
|
|
44
|
+
.sh-kbd { padding: 1px 6px; border-radius: 5px; border: 1px solid var(--austere-line); border-bottom-width: 2px; background: var(--austere-surface-2); color: var(--austere-text); font: 600 11.5px ui-monospace, SFMono-Regular, Menlo, monospace; }
|
|
45
|
+
|
|
46
|
+
/* Skeleton */
|
|
47
|
+
.sh-skeleton { display: flex; align-items: center; gap: 12px; width: 100%; }
|
|
48
|
+
.sh-skeleton-lines { display: flex; flex-direction: column; gap: 8px; flex: 1; min-width: 0; }
|
|
49
|
+
.sh-skel { display: block; height: 12px; border-radius: 6px; background: var(--austere-surface-2); }
|
|
50
|
+
.sh-skel-avatar { width: 40px; height: 40px; border-radius: 50%; flex: none; }
|
|
51
|
+
|
|
52
|
+
/* Calendar */
|
|
53
|
+
.sh-calendar { display: inline-block; max-width: 100%; padding: 12px; border: 1px solid var(--austere-line); border-radius: 10px; background: var(--austere-surface); }
|
|
54
|
+
.sh-calendar-title { margin-bottom: 8px; font-weight: 600; font-size: 14px; }
|
|
55
|
+
.sh-calendar-grid { display: grid; grid-template-columns: repeat(7, 34px); gap: 2px; text-align: center; font-size: 12.5px; }
|
|
56
|
+
.sh-calendar-dow { color: var(--austere-muted); font-size: 11px; padding-bottom: 4px; }
|
|
57
|
+
.sh-calendar-day { line-height: 32px; border-radius: 6px; color: var(--austere-muted); }
|
|
58
|
+
.sh-calendar-day.is-marked { background: var(--austere-accent-bg); color: var(--austere-accent); border: 1px solid var(--austere-accent); font-weight: 600; line-height: 30px; }
|
|
59
|
+
|
|
60
|
+
/* Timeline */
|
|
61
|
+
.sh-timeline { list-style: none; margin: 0; padding: 0; }
|
|
62
|
+
.sh-timeline-item { position: relative; display: flex; gap: 12px; padding-bottom: 16px; }
|
|
63
|
+
.sh-timeline-item:not(:last-child)::before { content: ""; position: absolute; left: 5px; top: 14px; bottom: 0; width: 1px; background: var(--austere-line); }
|
|
64
|
+
.sh-timeline-dot { flex: none; width: 11px; height: 11px; margin-top: 4px; border-radius: 50%; background: var(--austere-queued); }
|
|
65
|
+
.sh-timeline-item.is-current .sh-timeline-dot { background: var(--austere-accent); box-shadow: 0 0 0 3px var(--austere-accent-bg); }
|
|
66
|
+
.sh-timeline-item.is-upcoming .sh-timeline-dot { background: transparent; border: 1px solid var(--austere-muted); }
|
|
67
|
+
.sh-timeline-body { min-width: 0; font-size: 13.5px; overflow-wrap: anywhere; }
|
|
68
|
+
.sh-timeline-head { display: flex; flex-wrap: wrap; gap: 4px 12px; }
|
|
69
|
+
`;var y={components:[X,M,ae,re,te,oe,H,ne,pe,de,ce,_],css:ue};var he=r(l());(0,he.registerPack)({name:"@austere-axi/pack-shadcn",version:"0.4.0",api:1,components:[].concat(y&&y.components?y.components:y),css:y&&y.css});})();
|
package/dist/prompt.md
CHANGED
|
@@ -19,14 +19,14 @@ Props marked `$binding<type>` accept a `$variable` reference for two-way binding
|
|
|
19
19
|
|
|
20
20
|
### Layout
|
|
21
21
|
Stack(children: any[], direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Flex container. direction: "row"|"column" (default "column"). gap: "none"|"xs"|"s"|"m"|"l"|"xl"|"2xl" (default "m"). align: "start"|"center"|"end"|"stretch"|"baseline". justify: "start"|"center"|"end"|"between"|"around"|"evenly".
|
|
22
|
-
Card(children: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Tabs | Stack | Architecture | Diff | FileTree | Mermaid)[], variant?: "card" | "sunk" | "clear", direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Styled container. variant: "card" (default, elevated) | "sunk" (recessed) | "clear" (transparent). Always full width. Accepts all Stack flex params (default: direction "column"). Cards flex to share space in row/wrap layouts.
|
|
22
|
+
Card(children: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Tabs | Stack | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[], variant?: "card" | "sunk" | "clear", direction?: "row" | "column", gap?: "none" | "xs" | "s" | "m" | "l" | "xl" | "2xl", align?: "start" | "center" | "end" | "stretch" | "baseline", justify?: "start" | "center" | "end" | "between" | "around" | "evenly", wrap?: boolean) — Styled container. variant: "card" (default, elevated) | "sunk" (recessed) | "clear" (transparent). Always full width. Accepts all Stack flex params (default: direction "column"). Cards flex to share space in row/wrap layouts.
|
|
23
23
|
CardHeader(title?: string, subtitle?: string) — Header with optional title and subtitle
|
|
24
24
|
InlineHeader(heading: string, description?: string) — Compact section heading with an optional one-line description, for use inside cards.
|
|
25
25
|
Separator(orientation?: "horizontal" | "vertical", decorative?: boolean) — Visual divider between content sections
|
|
26
26
|
Tabs(items: TabItem[]) — Tabbed container
|
|
27
|
-
TabItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid)[]) — value is unique id, trigger is tab label, content is array of components
|
|
27
|
+
TabItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[]) — value is unique id, trigger is tab label, content is array of components
|
|
28
28
|
Accordion(items: AccordionItem[]) — Collapsible sections
|
|
29
|
-
AccordionItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid)[]) — value is unique id, trigger is section title
|
|
29
|
+
AccordionItem(value: string, trigger: string, content: (TextContent | MarkDownRenderer | CardHeader | Callout | CodeBlock | Image | Separator | HorizontalBarChart | PieChart | ScatterChart | AreaChart | BarChart | LineChart | Table | TagBlock | Form | Buttons | Steps | InlineHeader | EntityList | EditableTable | OverviewCardBlock | Architecture | Diff | FileTree | Mermaid | Progress | Avatar | AvatarGroup | Tooltip | HoverCard | Breadcrumb | Kbd | Skeleton | Calendar | Timeline)[]) — value is unique id, trigger is section title
|
|
30
30
|
Steps(items: StepsItem[]) — Step-by-step guide
|
|
31
31
|
StepsItem(title: string, details: string) — title and details text for one step
|
|
32
32
|
- A page is root = Stack([...sections], "column", "l"). Each section is a Card([CardHeader(title, subtitle), ...content]).
|
|
@@ -53,6 +53,7 @@ Mermaid(source: string, caption?: string) — Diagram from Mermaid source (flowc
|
|
|
53
53
|
- lanes: for systems split by owner, repo or tier. Groups are the columns, left to right as listed; put every node in one, in reading order (plain groups for a heading without a frame). About 4 columns fit a laptop; wider ones scroll (check warns). Phones get the lanes stacked as bands. Pin row only to put boxes side by side or line them up.
|
|
54
54
|
- Diff for code changes: show the hunks that matter, not whole files. Hunk counts are recomputed, so only start lines matter.
|
|
55
55
|
- Mermaid for sequences, state machines, ER, gantt and quick flowcharts.
|
|
56
|
+
- Also in Content (`austere-axi components show <Name>` for the signature): Tooltip, HoverCard, Breadcrumb, BreadcrumbItem, Kbd, Skeleton, Timeline, TimelineItem.
|
|
56
57
|
|
|
57
58
|
### Data
|
|
58
59
|
Table(columns: Col[]) — Data table — column-oriented. Each Col holds its own data array.
|
|
@@ -69,7 +70,7 @@ FileTree(entries: string[]) — File tree, one path per entry, optionally prefix
|
|
|
69
70
|
- EntityList for key/value facts; OverviewCardBlock + OverviewCardItem + MetricIndicatorInline for a KPI row.
|
|
70
71
|
- EditableTable when the reviewer should correct or fill in values; edits arrive with the next @ToAssistant from its Form.
|
|
71
72
|
- Icon names are lucide kebab-case (circle-check, triangle-alert, git-branch).
|
|
72
|
-
- Also in Data (`austere-axi components show <Name>` for the signature): EditableTable, TagBlock, IconText, BoldText.
|
|
73
|
+
- Also in Data (`austere-axi components show <Name>` for the signature): EditableTable, TagBlock, IconText, BoldText, Progress, Avatar, AvatarGroup, Calendar.
|
|
73
74
|
|
|
74
75
|
### Charts
|
|
75
76
|
BarChart(labels: string[], series: Series[], variant?: "grouped" | "stacked", xLabel?: string, yLabel?: string, height?: number) — Vertical bars; use for comparing values across categories with one or more series
|