hd-garden 0.13.3 → 0.14.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/.agents/skills/garden-compose/SKILL.md +24 -0
- package/.agents/skills/garden-compose/references/colors.md +11 -0
- package/.agents/skills/garden-compose/references/composition-patterns.md +162 -0
- package/.agents/skills/garden-compose/references/examples.md +55 -0
- package/.agents/skills/garden-compose/references/frames.md +7 -0
- package/.agents/skills/garden-compose/references/layout-recipes.md +84 -0
- package/.agents/skills/garden-compose/references/rendering-model.md +120 -0
- package/.agents/skills/garden-compose/references/static-play.md +19 -0
- package/.agents/skills/garden-compose/references/visual-selection.md +38 -0
- package/.agents/skills/garden-compose/references/workflow.md +27 -0
- package/.agents/skills/garden-compose/scripts/_cli.mjs +12 -0
- package/.agents/skills/garden-compose/scripts/apply.mjs +2 -0
- package/.agents/skills/garden-compose/scripts/check.mjs +2 -0
- package/.agents/skills/garden-compose/scripts/prompt.mjs +2 -0
- package/.agents/skills/garden-compose/scripts/scan.mjs +2 -0
- package/.agents/skills/garden-post-review/SKILL.md +5 -16
- package/Makefile +12 -3
- package/README.en.md +10 -5
- package/README.md +10 -5
- package/app/admin/preview/[...path]/page.tsx +4 -16
- package/app/api/admin/ui/blocks/route.ts +1 -1
- package/app/components/AdminUiPanels.tsx +6 -3
- package/app/components/GardenContentGuide.tsx +7 -8
- package/app/components/MarkdownArticle.tsx +2 -0
- package/app/components/UiStudio.tsx +29 -32
- package/app/components/garden/AuthorRich.tsx +5 -0
- package/app/components/garden/ComposePreview.tsx +9 -0
- package/app/components/garden/GardenBlock.tsx +12 -10
- package/app/components/garden/GardenFile.tsx +1 -1
- package/app/components/garden/blocks.tsx +9 -197
- package/app/components/garden/file-icons.tsx +1 -1
- package/app/components/garden/patterns.tsx +7 -65
- package/app/lib/rehype-garden-blocks.mjs +30 -0
- package/app/lib/remark-garden.mjs +0 -4
- package/app/lib/ui-model.ts +8 -9
- package/app/styles/a2.css +17 -1
- package/bin/garden.mjs +34 -35
- package/docs/handbook/ai-writing.md +19 -22
- package/docs/handbook/components/compose.md +16 -7
- package/docs/handbook/components/image.md +1 -1
- package/docs/handbook/components/link-card.md +2 -2
- package/docs/handbook/components.md +5 -213
- package/docs/handbook/deploy.md +11 -0
- package/docs/handbook/en/ai-writing.md +17 -20
- package/docs/handbook/en/components/compose.md +15 -6
- package/docs/handbook/en/components/image.md +1 -1
- package/docs/handbook/en/components/link-card.md +2 -2
- package/docs/handbook/en/components.md +7 -215
- package/docs/handbook/en/deploy.md +11 -0
- package/docs/handbook/en/index.md +29 -53
- package/docs/handbook/en/reference/compose.md +77 -148
- package/docs/handbook/en/reference.md +6 -22
- package/docs/handbook/en/start.md +1 -1
- package/docs/handbook/en/workflow.md +21 -17
- package/docs/handbook/en/writing.md +3 -3
- package/docs/handbook/index.md +26 -47
- package/docs/handbook/reference/compose.md +79 -148
- package/docs/handbook/reference.md +6 -22
- package/docs/handbook/start.md +1 -1
- package/docs/handbook/workflow.md +21 -17
- package/docs/handbook/writing.md +3 -3
- package/editors/dist/typora/main.js +324 -330
- package/editors/dist/typora/style.css +4299 -11
- package/editors/dist/vscode/garden-ui-0.14.2.vsix +0 -0
- package/eslint.config.mjs +3 -0
- package/package.json +5 -3
- package/public/images/compose-resources/resource-015b41eb0f32.svg +1 -0
- package/public/images/compose-resources/resource-ecee6b47f015.svg +1 -0
- package/public/images/compose-resources/resource-fd51121b5e8c.svg +1 -0
- package/scripts/build-content.mjs +40 -131
- package/scripts/build-ui-preview.mjs +7 -5
- package/scripts/check-post.mjs +10 -106
- package/scripts/check-site.mjs +80 -0
- package/scripts/compose-style-reference.mjs +22 -0
- package/scripts/editor-preview-css.mjs +14 -0
- package/scripts/file-preview.mjs +1 -1
- package/scripts/file-sizes.mjs +7 -7
- package/scripts/generated-cache.mjs +36 -0
- package/scripts/handbook-facts.mjs +10 -3
- package/scripts/image-sizes.mjs +6 -12
- package/scripts/link-assets.mjs +35 -10
- package/scripts/managed-skills.mjs +56 -0
- package/scripts/pack-editors.mjs +12 -1
- package/scripts/prepare-pages-output.mjs +1 -1
- package/scripts/site-guide.mjs +19 -0
- package/scripts/sync-editor-version.mjs +28 -0
- package/scripts/ui-cli.mjs +26 -33
- package/templates/garden-blocks.md +4 -180
- package/templates/garden-snippets.plist +2 -183
- package/templates/site/AGENTS.en.md +89 -0
- package/templates/site/AGENTS.md +72 -0
- package/templates/site/Makefile +12 -3
- package/templates/site/Makefile.en +12 -3
- package/templates/site/README.en.md +6 -1
- package/templates/site/README.md +6 -1
- package/templates/skills-en/garden-compose/SKILL.md +24 -0
- package/templates/skills-en/garden-post-review/SKILL.md +5 -16
- package/templates/workflows/pages.en.yml +11 -0
- package/templates/workflows/pages.yml +11 -0
- package/ui/compose/compose.css +54 -14
- package/ui/compose/contracts.mjs +16 -0
- package/ui/compose/dil.mjs +109 -48
- package/ui/compose/distribution.mjs +7 -0
- package/ui/compose/features.mjs +90 -0
- package/ui/compose/icons.mjs +8 -0
- package/ui/compose/index.mjs +2 -0
- package/ui/compose/inspect.mjs +11 -0
- package/ui/compose/markup.mjs +80 -23
- package/ui/compose/preview.mjs +13 -0
- package/ui/compose/prompt-catalog.mjs +15 -3
- package/ui/compose/render.mjs +46 -11
- package/ui/compose/scenes.mjs +10 -0
- package/ui/core/apply.mjs +12 -45
- package/ui/core/catalog.mjs +22 -32
- package/ui/core/cli-locale.mjs +8 -18
- package/ui/core/color.mjs +34 -0
- package/ui/core/compile.mjs +1 -8
- package/ui/core/demos.mjs +138 -108
- package/ui/core/fence.mjs +14 -70
- package/ui/core/fix-prompt.mjs +1 -3
- package/ui/core/garden-fence.mjs +3 -63
- package/ui/core/index.mjs +3 -5
- package/ui/core/parse.mjs +22 -8
- package/ui/core/scan.mjs +31 -43
- package/ui/core/starters.mjs +3 -3
- package/ui/core/static.mjs +36 -6
- package/ui/core/transform.mjs +64 -149
- package/ui/core/validate.mjs +20 -9
- package/ui/garden/article-content.mjs +98 -0
- package/ui/garden/catalog.mjs +21 -427
- package/ui/garden/check.mjs +18 -60
- package/ui/garden/file-block.mjs +1 -1
- package/ui/garden/file-paths.mjs +8 -6
- package/ui/garden/parse.mjs +19 -182
- package/ui/garden/relations.mjs +1 -1
- package/ui/garden/snippets.mjs +12 -153
- package/ui/garden/source-icon.mjs +17 -9
- package/ui/garden/word-count.mjs +16 -85
- package/ui/index.mjs +1 -5
- package/ui/preview/dist/garden-ui.css +4300 -11
- package/ui/preview/dist/garden-ui.esm.js +446 -418
- package/ui/preview/dist/garden-ui.iife.js +446 -418
- package/ui/preview/index.tsx +31 -98
- package/ui/preview/site-config.ts +4 -0
- package/ui/prompt/build.mjs +1 -4
- package/ui/prompt/recipes/code-walkthrough.md +17 -12
- package/ui/prompt/recipes/compare.md +14 -10
- package/ui/prompt/recipes/compose.md +3 -3
- package/ui/prompt/recipes/converter.md +17 -14
- package/ui/prompt/recipes/data-chart.md +9 -8
- package/ui/prompt/recipes/inspect-grid.md +9 -8
- package/ui/prompt/recipes/param-bench.md +17 -12
- package/ui/prompt/recipes/plan.md +4 -3
- package/ui/prompt/recipes/stepper.md +18 -16
- package/ui/prompt/recipes/trace.md +20 -18
- package/ui/prompt/rules.md +26 -133
- package/ui/prompt/studio.md +3 -18
- package/ui/react/CatalogPage.tsx +19 -21
- package/ui/react/recipes.ts +3 -3
- package/ui/react/runtime.tsx +23 -2
- package/ui/react/ui.css +17 -11
- package/vite.config.ts +16 -3
- package/.agents/skills/garden-interactive-chart/SKILL.md +0 -84
- package/.agents/skills/garden-interactive-chart/references/shell.html +0 -49
- package/.agents/skills/garden-interactive-chart/references/style.md +0 -61
- package/.agents/skills/garden-ui/SKILL.md +0 -125
- package/app/components/UiBlock.tsx +0 -23
- package/app/components/WidgetChart.tsx +0 -224
- package/app/lib/generated-content.ts +0 -385
- package/docs/handbook/components/card.md +0 -67
- package/docs/handbook/components/chart.md +0 -38
- package/docs/handbook/components/choice.md +0 -42
- package/docs/handbook/components/compare.md +0 -53
- package/docs/handbook/components/file.md +0 -29
- package/docs/handbook/components/html.md +0 -49
- package/docs/handbook/components/interactive.md +0 -48
- package/docs/handbook/components/list.md +0 -65
- package/docs/handbook/components/relations.md +0 -95
- package/docs/handbook/components/stat.md +0 -39
- package/docs/handbook/components/timeline.md +0 -37
- package/docs/handbook/en/components/card.md +0 -67
- package/docs/handbook/en/components/chart.md +0 -38
- package/docs/handbook/en/components/choice.md +0 -42
- package/docs/handbook/en/components/compare.md +0 -53
- package/docs/handbook/en/components/file.md +0 -29
- package/docs/handbook/en/components/html.md +0 -49
- package/docs/handbook/en/components/interactive.md +0 -44
- package/docs/handbook/en/components/list.md +0 -65
- package/docs/handbook/en/components/relations.md +0 -95
- package/docs/handbook/en/components/stat.md +0 -39
- package/docs/handbook/en/components/timeline.md +0 -37
- package/docs/handbook/en/reference/card.md +0 -85
- package/docs/handbook/en/reference/chart.md +0 -68
- package/docs/handbook/en/reference/choice.md +0 -69
- package/docs/handbook/en/reference/compare.md +0 -59
- package/docs/handbook/en/reference/file.md +0 -50
- package/docs/handbook/en/reference/html.md +0 -62
- package/docs/handbook/en/reference/interactive.md +0 -71
- package/docs/handbook/en/reference/list.md +0 -72
- package/docs/handbook/en/reference/relations.md +0 -113
- package/docs/handbook/en/reference/stat.md +0 -60
- package/docs/handbook/en/reference/timeline.md +0 -56
- package/docs/handbook/reference/card.md +0 -85
- package/docs/handbook/reference/chart.md +0 -68
- package/docs/handbook/reference/choice.md +0 -69
- package/docs/handbook/reference/compare.md +0 -59
- package/docs/handbook/reference/file.md +0 -50
- package/docs/handbook/reference/html.md +0 -62
- package/docs/handbook/reference/interactive.md +0 -71
- package/docs/handbook/reference/list.md +0 -72
- package/docs/handbook/reference/relations.md +0 -113
- package/docs/handbook/reference/stat.md +0 -60
- package/docs/handbook/reference/timeline.md +0 -56
- package/editors/dist/vscode/garden-ui-0.1.1.vsix +0 -0
- package/templates/skills-en/garden-interactive-chart/SKILL.md +0 -84
- package/templates/skills-en/garden-interactive-chart/references/shell.html +0 -49
- package/templates/skills-en/garden-interactive-chart/references/style.md +0 -61
- package/templates/skills-en/garden-ui/SKILL.md +0 -125
|
@@ -1,221 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Components
|
|
3
|
-
navTitle:
|
|
4
|
-
description:
|
|
2
|
+
title: Components
|
|
3
|
+
navTitle: Components
|
|
4
|
+
description: Components
|
|
5
5
|
section: components
|
|
6
6
|
order: 30
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Use one `garden compose` fence for article layouts, rich content, semantic scenes and interactive explanations. Select components inside that entry; use ordinary Markdown when it already communicates the idea.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
meta: Documentation · sqlite.org
|
|
15
|
-
description: Appends changes sequentially to a write-ahead log while readers continue reading the original database pages, reducing read-write contention.
|
|
16
|
-
points:
|
|
17
|
-
- Writes append to the end of the `-wal` file instead of overwriting database pages in place on commit.
|
|
18
|
-
- Readers record the current end-of-log mark to see a consistent snapshot without blocking concurrent writers.
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## [Key Figures · stat](/garden/en/components/stat)
|
|
22
|
-
|
|
23
|
-
```garden stat
|
|
24
|
-
items:
|
|
25
|
-
- label: Reading Column
|
|
26
|
-
value: "740"
|
|
27
|
-
unit: px
|
|
28
|
-
caption: Default prose column width
|
|
29
|
-
- label: Wide Figure Limit
|
|
30
|
-
value: "1040"
|
|
31
|
-
unit: px
|
|
32
|
-
caption: Extends up to 150px on each side
|
|
33
|
-
- label: Wide Table Limit
|
|
34
|
-
value: "1340"
|
|
35
|
-
unit: px
|
|
36
|
-
caption: Extends up to 300px on each side
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## [Side-by-Side Comparison · compare](/garden/en/components/compare)
|
|
40
|
-
|
|
41
|
-
```garden compare
|
|
42
|
-
items:
|
|
43
|
-
- title: Describe the change in one sentence
|
|
44
|
-
text: Idea block under full code; the AI writes the diff.
|
|
45
|
-
- title: Write the diff by hand
|
|
46
|
-
text: Place a diff block right below the full code block.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## [Step Timeline · timeline](/garden/en/components/timeline)
|
|
50
|
-
|
|
51
|
-
```garden timeline
|
|
52
|
-
items:
|
|
53
|
-
- date: Step 1
|
|
54
|
-
title: Sync Content and Assets
|
|
55
|
-
text: Validate Front Matter, copy attachments, and build the search index and RSS feed.
|
|
56
|
-
- date: Step 2
|
|
57
|
-
title: Build Static Site Output
|
|
58
|
-
text: Prerender every route into the static output directory.
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## [Bar Chart · chart](/garden/en/components/chart)
|
|
62
|
-
|
|
63
|
-
```garden chart
|
|
64
|
-
title: Max Width by Layout Zone
|
|
65
|
-
xLabel: Layout Zone
|
|
66
|
-
yLabel: Max Width
|
|
67
|
-
unit: px
|
|
68
|
-
data:
|
|
69
|
-
- x: Prose Column
|
|
70
|
-
y: 740
|
|
71
|
-
- x: Wide Figure Zone
|
|
72
|
-
y: 1040
|
|
73
|
-
- x: Wide Table Zone
|
|
74
|
-
y: 1340
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## [Explanation diagram · compose](/garden/en/components/compose)
|
|
78
|
-
|
|
79
|
-
```garden compose
|
|
80
|
-
<intent>
|
|
81
|
-
The top row is delivery order: Understand, Design, Ship. The bottom row is the decision loop to emphasize: Hypothesize, Cheap test, Iterate or stop. The top row is background. The bottom row is the point.
|
|
82
|
-
</intent>
|
|
83
|
-
<row align="center">
|
|
84
|
-
<title align="center">Understand</title>
|
|
85
|
-
<arrow dir="right"/>
|
|
86
|
-
<title align="center">Design</title>
|
|
87
|
-
<arrow dir="right"/>
|
|
88
|
-
<title align="center">Ship</title>
|
|
89
|
-
</row>
|
|
90
|
-
<divider/>
|
|
91
|
-
<row align="center">
|
|
92
|
-
<pill tone="muted">Hypothesize</pill>
|
|
93
|
-
<arrow dir="right"/>
|
|
94
|
-
<pill tone="muted">Cheap test</pill>
|
|
95
|
-
<arrow dir="right"/>
|
|
96
|
-
<pill tone="muted">Iterate or stop</pill>
|
|
97
|
-
</row>
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
## [Embedded Web Snippet · html](/garden/en/components/html)
|
|
101
|
-
|
|
102
|
-
```garden html
|
|
103
|
-
title: Character Count Widget
|
|
104
|
-
code: |
|
|
105
|
-
<!doctype html>
|
|
106
|
-
<html lang="en">
|
|
107
|
-
<head>
|
|
108
|
-
<meta charset="utf-8" />
|
|
109
|
-
<style>
|
|
110
|
-
body { margin: 0; padding: 16px 18px; font: 14px/1.6 system-ui, sans-serif; color: #1b1a18; background: #faf9f5; }
|
|
111
|
-
input { width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid #d5d1c8; border-radius: 6px; font: inherit; background: #fff; color: #1b1a18; }
|
|
112
|
-
.meta { margin-top: 10px; color: #6e6b64; font-variant-numeric: tabular-nums; }
|
|
113
|
-
strong { color: #1b1a18; }
|
|
114
|
-
</style>
|
|
115
|
-
</head>
|
|
116
|
-
<body>
|
|
117
|
-
<input id="txt" value="Keep your posts in a Git repository and push to deploy." aria-label="Sample text input" />
|
|
118
|
-
<div class="meta">Characters: <strong id="count">55</strong></div>
|
|
119
|
-
<script>
|
|
120
|
-
const input = document.getElementById("txt");
|
|
121
|
-
const count = document.getElementById("count");
|
|
122
|
-
input.addEventListener("input", () => { count.textContent = String(input.value.length); });
|
|
123
|
-
</script>
|
|
124
|
-
</body>
|
|
125
|
-
</html>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## [Interactive Formula & Parameters · interactive](/garden/en/components/interactive)
|
|
129
|
-
|
|
130
|
-
```garden compose #overview-reading
|
|
131
|
-
caption: "Example: estimate reading time from word count and reading speed."
|
|
132
|
-
---
|
|
133
|
-
<State words={6000} speed={400} />
|
|
134
|
-
<Let minutes={round(words / speed)} />
|
|
135
|
-
|
|
136
|
-
<Slider bind="words" label="Word count" min={1000} max={20000} step={500} unit="words" />
|
|
137
|
-
<Slider bind="speed" label="Reading speed" min={200} max={800} step={50} unit="wpm" />
|
|
138
|
-
|
|
139
|
-
<Stat label="Estimated reading time" value={minutes} unit="min" />
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
## [File Download & Preview · file](/garden/en/components/file)
|
|
143
|
-
|
|
144
|
-
```garden file
|
|
145
|
-
src: ./components/file/checklist.md
|
|
146
|
-
title: Pre-publish Checklist
|
|
147
|
-
note: Click Preview to read inline or Download to save the file
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## [Relationship diagram · relations](/garden/en/components/relations)
|
|
151
|
-
|
|
152
|
-
```garden relations
|
|
153
|
-
items:
|
|
154
|
-
- title: Pick
|
|
155
|
-
text: Choose this month's book
|
|
156
|
-
- title: Read
|
|
157
|
-
text: Finish the agreed chapters each week
|
|
158
|
-
- title: Talk
|
|
159
|
-
text: Meet and share views
|
|
160
|
-
- title: Review
|
|
161
|
-
text: Note what to change next time
|
|
162
|
-
links:
|
|
163
|
-
- from: 1
|
|
164
|
-
to: 2
|
|
165
|
-
- from: 2
|
|
166
|
-
to: 3
|
|
167
|
-
- from: 3
|
|
168
|
-
to: 4
|
|
169
|
-
- from: 4
|
|
170
|
-
to: 1
|
|
171
|
-
- from: 3
|
|
172
|
-
to: 1
|
|
173
|
-
style: dashed
|
|
174
|
-
label: shapes the pick
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
## [Icon List · list](/garden/en/components/list)
|
|
178
|
-
|
|
179
|
-
```garden list
|
|
180
|
-
items:
|
|
181
|
-
- icon: search
|
|
182
|
-
text: Searches for this month's title
|
|
183
|
-
- icon: eye
|
|
184
|
-
text: Reads 3 reviews
|
|
185
|
-
- icon: heart
|
|
186
|
-
text: Saves the event page
|
|
187
|
-
- icon: chat
|
|
188
|
-
text: Asks in the group chat whether listening only is fine
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## [Choice Cards · choice](/garden/en/components/choice)
|
|
192
|
-
|
|
193
|
-
```garden choice
|
|
194
|
-
title: Where should we meet next month?
|
|
195
|
-
items:
|
|
196
|
-
- icon: idea
|
|
197
|
-
value: $6 each
|
|
198
|
-
text: Corner café, one drink included
|
|
199
|
-
label: Prefer the atmosphere
|
|
200
|
-
reply: Café it is. We will book the long table by the window.
|
|
201
|
-
- icon: book
|
|
202
|
-
value: Free
|
|
203
|
-
text: Library meeting room, booking needed
|
|
204
|
-
label: Prefer the quiet
|
|
205
|
-
reply: Library it is. We will book the room at the start of the month.
|
|
206
|
-
none:
|
|
207
|
-
label: Neither / not sure
|
|
208
|
-
reply: No problem. We will share a few more venues in the group chat.
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## [Link card · {card}](/garden/en/components/link-card)
|
|
212
|
-
|
|
213
|
-
[Supported KaTeX functions](https://katex.org/docs/supported.html){card}
|
|
214
|
-
|
|
215
|
-
## [Source chip · {source}](/garden/en/components/source)
|
|
216
|
-
|
|
217
|
-
Cited from Wikipedia [wikipedia.org](https://en.wikipedia.org/wiki/Book_discussion_club){source}
|
|
218
|
-
|
|
219
|
-
## [Local image](/garden/en/components/image)
|
|
220
|
-
|
|
221
|
-

|
|
11
|
+
- [Compose](/garden/en/components/compose)
|
|
12
|
+
- [Compose reference](/garden/en/reference/compose)
|
|
13
|
+
- [Icons](/garden/en/reference/compose-icons)
|
|
@@ -38,6 +38,17 @@ jobs:
|
|
|
38
38
|
steps:
|
|
39
39
|
- uses: actions/checkout@v7
|
|
40
40
|
|
|
41
|
+
- name: Restore generated Garden caches
|
|
42
|
+
uses: actions/cache@v4
|
|
43
|
+
with:
|
|
44
|
+
path: |
|
|
45
|
+
.garden/image-sizes.json
|
|
46
|
+
.garden/link-assets.json
|
|
47
|
+
public/link-assets
|
|
48
|
+
key: ${{ runner.os }}-garden-generated-v1-${{ github.ref_name }}-${{ github.run_id }}
|
|
49
|
+
restore-keys: |
|
|
50
|
+
${{ runner.os }}-garden-generated-v1-${{ github.ref_name }}-
|
|
51
|
+
|
|
41
52
|
- uses: actions/setup-node@v7
|
|
42
53
|
with:
|
|
43
54
|
node-version: 22
|
|
@@ -18,14 +18,14 @@ Drop an unnamed `garden` fence where the interactive block should go and state w
|
|
|
18
18
|
````markdown
|
|
19
19
|
## Writing Pace
|
|
20
20
|
|
|
21
|
-
```garden
|
|
21
|
+
```garden compose
|
|
22
22
|
Let the reader drag daily word count and writing days per week to see how many weeks an 8,000-word article takes.
|
|
23
23
|
```
|
|
24
24
|
````
|
|
25
25
|
|
|
26
26
|
### 2. The Agent Scans and Writes Back the Component
|
|
27
27
|
|
|
28
|
-
Tell the Agent to compile `content/posts/writing-pace.md`. Following the `garden-
|
|
28
|
+
Tell the Agent to compile `content/posts/writing-pace.md`. Following the `garden-compose` skill in the repository, the Agent first runs `npx garden ui scan` to read the line number, original wording, and hash:
|
|
29
29
|
|
|
30
30
|
```console
|
|
31
31
|
$ npx garden ui scan content/posts/writing-pace.md
|
|
@@ -34,7 +34,7 @@ $ npx garden ui scan content/posts/writing-pace.md
|
|
|
34
34
|
"draft": false,
|
|
35
35
|
"blocks": [
|
|
36
36
|
{
|
|
37
|
-
"lang": "garden-
|
|
37
|
+
"lang": "garden-compose",
|
|
38
38
|
"status": "uncompiled",
|
|
39
39
|
"startLine": 9,
|
|
40
40
|
"intentHash": "8866427a",
|
|
@@ -52,54 +52,42 @@ $ npx garden ui apply content/posts/writing-pace.md --intent-hash 8866427a --fil
|
|
|
52
52
|
{"ok":true,"file":"content/posts/writing-pace.md","kind":"garden","line":9}
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
### 3. The Pre-commit Hook Checks and
|
|
55
|
+
### 3. The Pre-commit Hook Checks and Points to the Project Skill
|
|
56
56
|
|
|
57
|
-
On the first `garden sync` or `garden dev` run, Garden writes `exec npx --no-install garden ui check --staged --quiet` to `.git/hooks/pre-commit`. If the author commits before step 2, the hook blocks the commit and
|
|
57
|
+
On the first `garden sync` or `garden dev` run, Garden writes `exec npx --no-install garden ui check --staged --quiet` to `.git/hooks/pre-commit`. If the author commits before step 2, the hook blocks the commit and shows diagnostics and a short project-skill instruction:
|
|
58
58
|
|
|
59
59
|
```console
|
|
60
60
|
$ git commit -m "Writing pace"
|
|
61
|
-
content/posts/writing-pace.md:9 -
|
|
62
|
-
|
|
63
|
-
──────────────────────── Fix prompt for AI ────────────────────────
|
|
64
|
-
Handle the Garden post blocks listed below: compile uncompiled ideas, and fix interactive blocks that have errors.
|
|
65
|
-
|
|
66
|
-
Rules:
|
|
67
|
-
- First run npx garden ui prompt and read the component catalog and rules; if the repo has the garden-ui skill, follow its flow.
|
|
68
|
-
- Change only the listed blocks. Write them back with npx garden ui apply <post> --id <id> (use --intent-hash for ideas without an id). Do not edit the post by hand.
|
|
69
|
-
- Keep the author's meaning. When done, run npx garden ui check <post> until it passes.
|
|
70
|
-
- If you cannot access this repository, reply with only the finished fence for each block.
|
|
71
|
-
|
|
72
|
-
1. content/posts/writing-pace.md, lines 9–11, intent-hash: 8866427a
|
|
73
|
-
- garden-idea: this idea is not compiled yet; compile it into garden compose or another garden component (or put the sentence back into the prose).
|
|
74
|
-
|
|
75
|
-
Current fence:
|
|
76
|
-
|
|
77
|
-
```garden
|
|
78
|
-
Let the reader drag daily word count and writing days per week to see how many weeks an 8,000-word article takes.
|
|
79
|
-
```
|
|
80
|
-
────────────────────────────────────────────────────────────
|
|
81
|
-
Wrote .garden/ui-fix-prompt.md. To commit anyway, run git commit --no-verify.
|
|
61
|
+
content/posts/writing-pace.md:9 - compose-uncompiled uncompiled compose idea remaining
|
|
62
|
+
Use garden-compose skill (.agents/skills/garden-compose/SKILL.md), fix the failing blocks, then recheck.
|
|
82
63
|
```
|
|
83
64
|
|
|
84
|
-
The
|
|
65
|
+
The terminal shows diagnostics and a short instruction to load the project `garden-compose` skill. No file, clipboard copy, source dump, or catalog export is produced by default. After repair, the hook exits silently with code `0`.
|
|
85
66
|
|
|
86
67
|
### 4. The Rendered Result
|
|
87
68
|
|
|
88
69
|
The `garden compose` fence written back in step 2 renders directly on the article page as an interactive calculator:
|
|
89
70
|
|
|
90
71
|
```garden compose #writing-pace
|
|
91
|
-
caption: Writing a few hundred extra words each day finishes sooner than adding
|
|
92
|
-
|
|
93
|
-
|
|
72
|
+
caption: Writing a few hundred extra words each day finishes sooner than adding
|
|
73
|
+
another writing day per week.
|
|
74
|
+
intent: >
|
|
75
|
+
Let the reader drag daily word count and writing days per week to see how many
|
|
76
|
+
weeks an 8,000-word article takes.
|
|
94
77
|
---
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
78
|
+
{@body const [daily, setDaily] = DIL.useState(500)}
|
|
79
|
+
{@body const [days, setDays] = DIL.useState(3)}
|
|
80
|
+
{@body const weekly = daily * days}
|
|
81
|
+
{@body const weeks = ceil(8000 / weekly)}
|
|
82
|
+
|
|
83
|
+
|
|
98
84
|
|
|
99
|
-
<Slider bind="daily" label="Words per day" min={200} max={2000} step={100} unit="words" />
|
|
100
|
-
<Slider bind="days" label="Days per week" min={1} max={7} step={1} unit="days" />
|
|
101
85
|
|
|
102
|
-
<
|
|
86
|
+
<slider bind="daily" label="Words per day" min={200} max={2000} step={100} unit="words" />
|
|
87
|
+
<slider bind="days" label="Days per week" min={1} max={7} step={1} unit="days" />
|
|
88
|
+
|
|
89
|
+
<stat label="Weeks to finish 8,000 words" value={weeks} unit="weeks" hint="Rounded up to full weeks" />
|
|
90
|
+
|
|
103
91
|
```
|
|
104
92
|
|
|
105
93
|
> [!IMPORTANT] Humans and Agents Share the Same Tools
|
|
@@ -153,25 +141,13 @@ pages:
|
|
|
153
141
|
|
|
154
142
|
## Structured Components in Markdown
|
|
155
143
|
|
|
156
|
-
Use
|
|
157
|
-
|
|
158
|
-
```garden
|
|
159
|
-
|
|
160
|
-
- label: Reading Column
|
|
161
|
-
value: "740"
|
|
162
|
-
unit: px
|
|
163
|
-
caption: Default width for paragraphs, code blocks, and lists
|
|
164
|
-
- label: Wide Figure Zone
|
|
165
|
-
value: "1040"
|
|
166
|
-
unit: px
|
|
167
|
-
caption: Screenshots display at half their pixel width and expand up to this limit above ~2000px
|
|
168
|
-
- label: Wide Table Zone
|
|
169
|
-
value: "1340"
|
|
170
|
-
unit: px
|
|
171
|
-
caption: Maximum width for wide multi-column tables expanding symmetrically on desktop
|
|
144
|
+
Use `garden compose` to combine metrics, comparisons, timelines, or plots. Here is a metric scene:
|
|
145
|
+
|
|
146
|
+
```garden compose
|
|
147
|
+
<stack><metric label="Reading Column" value="740" unit="px" caption="Default width for paragraphs, code blocks, and lists"></metric><metric label="Wide Figure Zone" value="1040" unit="px" caption="Screenshots display at half their pixel width and expand up to this limit above ~2000px"></metric><metric label="Wide Table Zone" value="1340" unit="px" caption="Maximum width for wide multi-column tables expanding symmetrically on desktop"></metric></stack>
|
|
172
148
|
```
|
|
173
149
|
|
|
174
|
-
The component pages
|
|
150
|
+
The component pages use `garden compose` as the single Garden author entry, alongside link cards, source chips, and local images. Combine content, layout, and interactions inside [compose](/garden/en/components/compose). See [Components Overview](/garden/en/components) for the live examples.
|
|
175
151
|
|
|
176
152
|
<h2 id="garden-admin-title">From Init to Daily Writing</h2>
|
|
177
153
|
|
|
@@ -1,182 +1,111 @@
|
|
|
1
1
|
---
|
|
2
|
-
title:
|
|
2
|
+
title: Compose reference
|
|
3
3
|
navTitle: compose
|
|
4
|
-
description:
|
|
4
|
+
description: One author entry, executable rendering contracts and verification.
|
|
5
5
|
section: reference
|
|
6
6
|
order: 6
|
|
7
7
|
badge: compose
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
## One entry, component selection inside it
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
Use `garden compose`. Select by the reader's task, not by another fence name:
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
| Need | Compose structure |
|
|
15
|
+
| :--- | :--- |
|
|
16
|
+
| Reference material and takeaways | `resources/resource`, nested `point`, `reference` |
|
|
17
|
+
| Key results | `metric` with label, value, unit, caption, paragraphs and references |
|
|
18
|
+
| Time or stages | `timeline/event` |
|
|
19
|
+
| Alternatives and verdicts | `compare/item` |
|
|
20
|
+
| Icon-led editorial paragraphs | `icon-list/entry` or a small `icon` beside one shared text container |
|
|
21
|
+
| Download and preview | `files/file` or one `file src="…"` |
|
|
22
|
+
| Connected concepts | `relations/entity/edge`, stable ids; 3–6 entities |
|
|
23
|
+
| Rich selectable cards and replies | `choices/choice-option`, optional `none` option |
|
|
24
|
+
| Discrete bars and exact values | `plot/datum`; expandable data table |
|
|
25
|
+
| Parameter-dependent results | Play declarations, controls, `chart/bar/line`, `pie`, `table` |
|
|
26
|
+
| Article text and useful HTML | `markdown` and `html` content islands |
|
|
27
|
+
| Independent executable illustration | Play `sandbox` with literal html/css/js; isolated offline iframe |
|
|
15
28
|
|
|
16
|
-
|
|
29
|
+
The authoritative, demand-loaded catalog is `npx garden ui schema`: actual semantic fields, Play props/defaults/child contracts, icon names, safe HTML tags/attributes/CSS properties. `npx garden ui prompt` adds working recipes. `styleReference` also extracts current font/layout declarations, selectors, responsive conditions and source order from the installed stylesheets; it reports source defaults, not universal computed values. These are generated from the validators and actual styles; do not maintain a second exhaustive tag list. Static layout normalization is not a universal HTML/CSS API: inspect the normalized tree and output because some unsupported static layout attributes are ignored. Semantic unknown fields fail validation.
|
|
17
30
|
|
|
18
|
-
|
|
31
|
+
See the executable [Compose active-hours chart](/garden/en/components/compose#ui-compose-chart-active-hours).
|
|
19
32
|
|
|
20
|
-
|
|
21
|
-
| :--- | :--- |
|
|
22
|
-
| `padding` / `gap` | `0`–`4` (4px × n) |
|
|
23
|
-
| `background` | `surface` `surface-secondary` `surface-accent` `surface-tip` `surface-muted` `transparent` |
|
|
24
|
-
| `radius` | `none` `sm` `md` `lg` `xl` `full` |
|
|
25
|
-
| `border` | `subtle` `strong`/`true` `none`/`false` |
|
|
26
|
-
| `size` | `sm` `md` `lg` `xl` |
|
|
27
|
-
| `tone` | `plain` `accent` `tip` `muted` (and callout `note`/`warn`) |
|
|
28
|
-
| `align` | `start` `center` `end` `stretch` |
|
|
29
|
-
| `justify` (row) | `start` `center` `end` `between` `around` |
|
|
30
|
-
| `wrap` (row) | `wrap` `nowrap` |
|
|
33
|
+
## Relationships → hierarchy → layout → style → actual output
|
|
31
34
|
|
|
32
|
-
|
|
35
|
+
First identify what belongs together. A heading and all its paragraphs must share a container. Next choose columns and proportions, then alignments and typography. Only then add surfaces and decorative details.
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
A static `row` wraps by default. Its direct text/title/stack/card children share available width (`flex: 1 1 0`), whereas an icon is content-sized. A heading placed directly in that row is a sibling column, not the heading of a paragraph below the row. `align="center"` on a row changes more than vertical placement: theme rules also center text. A centered stack propagates text alignment. For an editorial list use explicit start alignment on children of a shared right-hand group; do not center each title independently.
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
| :--- | :--- |
|
|
38
|
-
| `frame` | `card` (default) `band` `pill` `text` — or sugar tags `<band>` / `<pill>` |
|
|
39
|
-
| `padding` `gap` `radius` `border` `background` `size` `align` `tone` `id` `mark` | shared tokens; `mark="shield"` draws a shield glyph |
|
|
39
|
+
Direct `row > stack` has 12px top padding in the current theme. A `group` is a width:100%, min-width:0 vertical container that shrinks beside the fixed icon and reads gap without that contextual padding; use it when icon and heading must begin on the same top line. Explicit `align="start"` survives normalization and emits data-align.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Nested paragraphs need separate `text` leaves or an article content island. Two unrelated top-level leaves do not establish a shared right column. Put a full-width divider **between rows**, not inside the right text container, if the rule must span the icon column too. `divider` and `separator` are real primitives, not text lines.
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
```garden compose
|
|
44
|
+
<figure frame="none">
|
|
45
|
+
<row wrap="nowrap" align="start" gap="4">
|
|
46
|
+
<icon name="book-open" size="xl"/>
|
|
47
|
+
<group gap="2">
|
|
48
|
+
<title align="start">Test heading — not article content</title>
|
|
49
|
+
<text align="start">Explicit test paragraph: the heading and this body share the same right column. Keep the author's complete text; do not shrink or summarize it to fit.</text>
|
|
50
|
+
<text align="start">A second independent test paragraph stays in that column.</text>
|
|
51
|
+
</group>
|
|
52
|
+
</row>
|
|
53
|
+
<divider/>
|
|
54
|
+
<row wrap="nowrap" align="start" gap="4">
|
|
55
|
+
<icon name="users" size="xl"/>
|
|
56
|
+
<group gap="2">
|
|
57
|
+
<title align="start">Second test heading</title>
|
|
58
|
+
<text align="start">Another test body, aligned with its heading rather than spanning the icon column.</text>
|
|
59
|
+
</group>
|
|
60
|
+
</row>
|
|
61
|
+
</figure>
|
|
62
|
+
```
|
|
49
63
|
|
|
50
|
-
|
|
64
|
+
For a native editorial list the same relationship is expressed with `icon-list` containing `entry icon="…" title="…"`, and multiple `text` children per entry. Native paragraph children are lowered to text strings: their nested text size/alignment/layout properties are not carried into the native scene. Use a generic layout with text size controls for such precision; do not assume identical nested styling contracts. Native scenes preserve the app's keyboard/selection/detail/file-preview behavior when rendered by the Garden article host. A standalone static export is a readable fallback, not an identical interactive host.
|
|
51
65
|
|
|
52
|
-
|
|
53
|
-
| :--- | :--- |
|
|
54
|
-
| `size` `align` | shared |
|
|
55
|
-
| `tone` | `text`: `plain` `muted` `accent` `tip`. `caption` forces muted. |
|
|
66
|
+
## Typography and complete-theme context
|
|
56
67
|
|
|
57
|
-
|
|
68
|
+
Default body text inherits the **actual article's** family, size and line height. There is no universal pixel baseline. This includes ordinary static text, list bodies and native readable prose; changing the article typography configuration must propagate. Semantic headings, graph labels, values, captions and controls intentionally retain their hierarchy.
|
|
58
69
|
|
|
59
|
-
|
|
|
70
|
+
| Element/context | Actual source rule / intentional variation |
|
|
60
71
|
| :--- | :--- |
|
|
61
|
-
| `
|
|
62
|
-
|
|
|
63
|
-
|
|
|
72
|
+
| Static `text` and `title` | Inherit body size; title weight 600, line height 1.4. `size="sm"` .875em; `lg` 1.125em; `xl` 1.25em. `md` keeps the baseline. |
|
|
73
|
+
| Static outer figure title/caption | Source defaults 18px/14px, not ordinary body; actual cascade still matters. |
|
|
74
|
+
| Static inline caption | Own semantic style; `sm` 11px, `lg` 16px. Not a body substitute. |
|
|
75
|
+
| Native icon-list entry title/body | Title weight 600; body inherits article. Group heading uses `--fs-small`. |
|
|
76
|
+
| Native choice value | 22px; narrow rule 20px. Option body inherits article. |
|
|
77
|
+
| Native relation ring | Compact/context-dependent labels and line clamps; detail prose inherits article. Do not treat a ring label as a long paragraph. |
|
|
78
|
+
| Play components | Query schema defaults and complete theme. Their controls/KPI/graph semantics are not globally changed to body size. |
|
|
64
79
|
|
|
65
|
-
|
|
80
|
+
Use explicit variation only for a meaningful hierarchy. Never shrink body text globally to fit a screenshot or discard facts to avoid wrapping. Inspect actual computed styles with globals → tokens → article theme → shell in the real order, on desktop and narrow widths; base component CSS alone does not prove the final result.
|
|
66
81
|
|
|
67
|
-
|
|
82
|
+
## Markdown, safe HTML, and execution
|
|
68
83
|
|
|
69
|
-
|
|
84
|
+
`text`, `title` and captions are inline contexts: `**bold**`, `_emphasis_`, backticks, `[links](https://example.com)`, `~~strike~~` and safe inline HTML such as `<u>underline</u>`. `<u>` is HTML, not standard Markdown.
|
|
70
85
|
|
|
71
|
-
|
|
72
|
-
<row gap={2}><box padding={2} radius="md" border="subtle"><title size="sm">A</title></box><box padding={2} radius="md" background="surface-accent"><title size="sm">B</title></box></row>
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
| Tag | Purpose |
|
|
76
|
-
| :--- | :--- |
|
|
77
|
-
| `box` | Generic container; padding / gap / background / radius |
|
|
78
|
-
| `card` | Alias of box as a card face |
|
|
79
|
-
| `stack` | Vertical stack |
|
|
80
|
-
| `row` | Horizontal row |
|
|
81
|
-
| `columns` | Multi-column row (wrap by default) |
|
|
82
|
-
| `grid` | Equal grid; cols 1–6 |
|
|
83
|
-
| `grid-item` | Grid cell; span columns |
|
|
84
|
-
| `group` | Semantic group |
|
|
85
|
-
| `field` | Form-field group |
|
|
86
|
-
| `header` | Header region |
|
|
87
|
-
| `footer` | Footer region |
|
|
88
|
-
| `figure` | Figure region |
|
|
89
|
-
| `prose` | Prose region |
|
|
90
|
-
| `divider` | Divider (self-closing) |
|
|
91
|
-
| `separator` | Alias of divider |
|
|
92
|
-
| `spacer` | Empty spacer |
|
|
93
|
-
| `band` | Full-width band (box frame=band) |
|
|
94
|
-
| `pill` | Pill (box frame=pill) |
|
|
95
|
-
|
|
96
|
-
### Text
|
|
86
|
+
Use `markdown` or `html` islands for full paragraphs, lists, headings, blockquotes, code blocks, tables, images, details/summary and other allowlisted article content. The islands share the article Markdown/GFM and safe-HTML renderer; they are not arbitrary component trees. Static text outside islands is a lightweight layout shorthand, **not** the whole article block grammar. Play islands are literal content, not interpolated expressions. Keep state and expressions in Play component nodes outside them.
|
|
97
87
|
|
|
98
88
|
```garden compose
|
|
99
|
-
<
|
|
100
|
-
|
|
89
|
+
<figure frame="none">
|
|
90
|
+
<markdown>
|
|
91
|
+
### Explicit test content
|
|
101
92
|
|
|
102
|
-
|
|
103
|
-
| :--- | :--- |
|
|
104
|
-
| `title` | Short title |
|
|
105
|
-
| `text` | Body text |
|
|
106
|
-
| `caption` | Caption (muted by default) |
|
|
107
|
-
| `label` | Control label |
|
|
108
|
-
| `badge` | Pill badge |
|
|
109
|
-
| `kpi` | Metric (self-closing) |
|
|
110
|
-
| `stat` | Alias of kpi |
|
|
111
|
-
| `icon` | Named stroke icon (self-closing) |
|
|
112
|
-
| `callout` | Callout strip |
|
|
113
|
-
| `kbd` | Keyboard keycap |
|
|
114
|
-
| `link` | Inline link |
|
|
115
|
-
| `intent` | Author intent (not drawn) |
|
|
116
|
-
|
|
117
|
-
### Controls
|
|
93
|
+
**Bold**, _emphasis_, `code`, [link](https://example.com), ~~strike~~ and <u>underline</u>.
|
|
118
94
|
|
|
119
|
-
|
|
120
|
-
|
|
95
|
+
- A full Markdown list
|
|
96
|
+
- Another test item
|
|
97
|
+
|
|
98
|
+
<details><summary>Safe HTML details</summary><p>Useful article HTML can coexist with Markdown.</p></details>
|
|
99
|
+
</markdown>
|
|
100
|
+
</figure>
|
|
121
101
|
```
|
|
122
102
|
|
|
123
|
-
|
|
124
|
-
| :--- | :--- |
|
|
125
|
-
| `button` | Button snapshot |
|
|
126
|
-
| `slider` | Slider snapshot / play |
|
|
127
|
-
| `progress` | Progress bar |
|
|
128
|
-
| `meter` | Meter bar |
|
|
129
|
-
| `checkbox` | Checkbox snapshot |
|
|
130
|
-
| `radio` | Radio snapshot |
|
|
131
|
-
| `toggle` | Toggle snapshot |
|
|
132
|
-
| `switch` | Alias of toggle |
|
|
133
|
-
| `input` | Text input snapshot |
|
|
134
|
-
| `textarea` | Textarea snapshot |
|
|
135
|
-
| `select` | Select snapshot |
|
|
136
|
-
| `tabs` | Tabs container |
|
|
137
|
-
| `tab` | One tab |
|
|
138
|
-
| `list` | List |
|
|
139
|
-
| `list-item` | List item |
|
|
140
|
-
| `table` | Table |
|
|
141
|
-
| `thead` | Table head |
|
|
142
|
-
| `tbody` | Table body |
|
|
143
|
-
| `tr` | Table row |
|
|
144
|
-
| `th` | Header cell |
|
|
145
|
-
| `td` | Data cell |
|
|
146
|
-
| `image` | Image |
|
|
147
|
-
| `avatar` | Avatar placeholder |
|
|
148
|
-
| `empty` | Empty state |
|
|
149
|
-
| `option` | Segment option snapshot |
|
|
150
|
-
|
|
151
|
-
### Connectors
|
|
103
|
+
Safe HTML supports allowlisted local `style` properties, including useful layout and typography; inspect the generated schema for the actual set. Unsupported tags/properties, events, unsafe URLs, executable scripts and network CSS functions report diagnostics. Do not expand the article allowlist into arbitrary execution. An intentional executable demo uses `sandbox` inside the **same Compose entry**, with literal html/css/js and no parent origin access. Sandbox layout is its own document, not inherited article prose.
|
|
152
104
|
|
|
153
|
-
|
|
154
|
-
<stack align="center" gap={1}><pill>Start</pill><arrow dir="down"/><band tone="accent" align="center"><title size="sm">Hub</title></band></stack>
|
|
155
|
-
```
|
|
105
|
+
## Verification levels
|
|
156
106
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
| `lanes` | Swimlanes |
|
|
163
|
-
| `actor` | Lane actor |
|
|
164
|
-
| `message` | Lane message |
|
|
165
|
-
| `steps` | Steps container |
|
|
166
|
-
| `step` | One step |
|
|
167
|
-
| `note` | Step note |
|
|
168
|
-
| `compare` | Compare cards |
|
|
169
|
-
| `item` | Compare item |
|
|
170
|
-
| `code` | Code snapshot |
|
|
171
|
-
| `pre` | Preformatted text |
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
## Chart examples
|
|
175
|
-
|
|
176
|
-
Play-level chart samples (static eight bars, fusion weight slider) live on [Diagrams · compose](/garden/en/components/compose#ui-compose-chart-active-hours).
|
|
177
|
-
|
|
178
|
-
## Limits
|
|
179
|
-
|
|
180
|
-
- Nesting ~10 levels / ~220 nodes.
|
|
181
|
-
- Uncompiled prose-only fences report `compose-uncompiled`.
|
|
182
|
-
- Play path (`{@body}`, `{#if}`, …) is documented in the repo `docs/compose-dil.md`; static fences render default-state snapshots for control tags.
|
|
107
|
+
1. Run `npx garden ui check <file>` (and `npx garden check <file>` for real file paths). Preserve original text/resources and inspect diagnostics.
|
|
108
|
+
2. Parse/render the actual scene; confirm accepted properties survive normalization and meaningful content appears.
|
|
109
|
+
3. Inspect the complete-theme render: icon rail fixed, heading and **all** paragraphs share the same right edge/left edge, no centered headings or full-width body beneath a detached icon row, dividers outside rows, no unintended cards/arrows, no horizontal overflow.
|
|
110
|
+
4. Check desktop and narrow screenshots plus geometry/computed styles; exercise choices, relations, file previews, state updates and sandbox behavior when used.
|
|
111
|
+
5. A hand-authored passing scene proves engine capability, not that an independent model reliably produces it from a short prompt. Report those claims separately.
|