@motion-proto/live-tokens 0.94.3 → 0.96.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/.claude/skills/live-tokens-create-page/SKILL.md +7 -3
- package/CHANGELOG.md +115 -0
- package/README.md +6 -6
- package/dist-plugin/{chunk-7XSUHJUH.js → chunk-4J6JPSVS.js} +53 -2
- package/dist-plugin/{chunk-W5VQV32K.js → chunk-GYRULB2X.js} +1 -1
- package/dist-plugin/{chunk-ONYAIXCZ.js → chunk-QQASYPW7.js} +32 -9
- package/dist-plugin/index.cjs +598 -17
- package/dist-plugin/index.d.cts +9 -1
- package/dist-plugin/index.d.ts +9 -1
- package/dist-plugin/index.js +513 -6
- package/dist-plugin/migrateData/index.cjs +32 -9
- package/dist-plugin/migrateData/index.js +2 -2
- package/dist-plugin/setColors/index.cjs +32 -22
- package/dist-plugin/setColors/index.js +2 -15
- package/dist-plugin/setGeometry/index.cjs +32 -9
- package/dist-plugin/setGeometry/index.js +1 -1
- package/dist-plugin/tokensCssMigrations/index.cjs +53 -2
- package/dist-plugin/tokensCssMigrations/index.d.cts +9 -2
- package/dist-plugin/tokensCssMigrations/index.d.ts +9 -2
- package/dist-plugin/tokensCssMigrations/index.js +1 -1
- package/package.json +8 -3
- package/src/demo/Demo.svelte +39 -5
- package/src/demo/DemoBar.svelte +23 -5
- package/src/demo/FloatingTokenTags.css +33 -4
- package/src/demo/FloatingTokenTags.svelte +81 -68
- package/src/demo/Section.svelte +1 -7
- package/src/demo/SourceLinks.svelte +5 -4
- package/src/demo/TestingLoops.svelte +167 -35
- package/src/demo/evalResults.ts +7 -7
- package/src/demo/sections/SectionClaude.svelte +20 -13
- package/src/demo/sections/SectionFooter.svelte +4 -5
- package/src/demo/sections/SectionGetStarted.svelte +5 -6
- package/src/demo/sections/SectionHero.svelte +43 -23
- package/src/demo/sections/SectionKit.svelte +141 -45
- package/src/demo/sections/SectionLayers.svelte +3 -3
- package/src/demo/sections/SectionOffering.svelte +8 -23
- package/src/editor/bootstrap.ts +12 -6
- package/src/editor/component-editor/ImageEditor.svelte +1 -1
- package/src/editor/component-editor/ImageLightboxEditor.svelte +3 -4
- package/src/editor/component-editor/registration.ts +36 -0
- package/src/editor/component-editor/registry.ts +5 -12
- package/src/editor/component-editor/scaffolding/ShadowBackdrop.svelte +11 -2
- package/src/editor/component-editor/scaffolding/StateBlock.svelte +7 -0
- package/src/editor/component-editor/scaffolding/TokenLayout.svelte +1 -2
- package/src/editor/component-editor/scaffolding/VariantGroup.svelte +17 -2
- package/src/editor/core/store/editorPersistence.ts +6 -1
- package/src/editor/core/store/editorRenderer.ts +1 -4
- package/src/editor/core/store/editorStore.ts +5 -9
- package/src/editor/core/store/editorTypes.ts +2 -2
- package/src/editor/core/themes/migrations/2026-10-15-responsive-columns.ts +40 -0
- package/src/editor/core/themes/migrations/index.ts +2 -0
- package/src/editor/core/themes/slices/columns.ts +112 -42
- package/src/editor/docs/Docs.svelte +25 -22
- package/src/editor/docs/chapters.ts +1 -0
- package/src/editor/docs/content/editing-tokens.md +5 -3
- package/src/editor/docs/content/production-css.md +116 -0
- package/src/editor/docs/content/themes-workflow.md +2 -0
- package/src/editor/docs/content.generated.ts +3 -2
- package/src/editor/index.ts +2 -1
- package/src/editor/overlay/LiveEditorOverlay.svelte +67 -19
- package/src/editor/overlay/LiveTokensRouter.svelte +8 -4
- package/src/editor/pages/Editor.svelte +15 -1
- package/src/editor/pages/EditorShell.svelte +312 -99
- package/src/editor/skill-atlas/SkillAtlas.svelte +111 -24
- package/src/editor/skill-atlas/TreeCanvas.svelte +14 -0
- package/src/editor/skill-atlas/skillSources.generated.ts +1 -1
- package/src/editor/skill-atlas/trees/create-page.ts +24 -24
- package/src/editor/skill-atlas/wireLayout.ts +62 -0
- package/src/editor/ui/BezierCurveEditor.svelte +3 -0
- package/src/editor/ui/FontStackEditor.svelte +2 -2
- package/src/editor/ui/PaletteEditor.svelte +64 -6
- package/src/editor/ui/UIPaletteSelector.svelte +2 -0
- package/src/editor/ui/colors/ColorsTab.svelte +5 -2
- package/src/editor/ui/palette/OverridesPanel.svelte +1 -0
- package/src/editor/ui/palette/ScaleCurveEditor.svelte +127 -18
- package/src/editor/ui/sections/ColumnsSection.svelte +79 -49
- package/src/editor/ui/sections/ShadowsSection.svelte +14 -0
- package/src/editor/ui/sections/WashesSection.svelte +11 -0
- package/src/editor/ui/sketch/SketchTab.svelte +1 -1
- package/src/live-tokens/data/colors-and-type/autumn.json +1 -4
- package/src/live-tokens/data/colors-and-type/default.json +1 -4
- package/src/live-tokens/data/colors-and-type/halloween.json +1 -4
- package/src/live-tokens/data/colors-and-type/midnight-study.json +1 -4
- package/src/live-tokens/data/colors-and-type/ocean.json +1 -4
- package/src/live-tokens/data/colors-and-type/royal-velvet.json +1 -4
- package/src/live-tokens/data/colors-and-type/sketchy.json +1 -4
- package/src/live-tokens/data/colors-and-type/spring-meadow.json +1 -4
- package/src/live-tokens/data/colors-and-type/sunset.json +1 -4
- package/src/live-tokens/data/themes/autumn.json +1 -4
- package/src/live-tokens/data/themes/halloween.json +1 -4
- package/src/live-tokens/data/themes/midnight-study.json +1 -4
- package/src/live-tokens/data/themes/ocean.json +1 -4
- package/src/live-tokens/data/themes/royal-velvet.json +1 -4
- package/src/live-tokens/data/themes/sketchy.json +1 -4
- package/src/live-tokens/data/themes/spring-meadow.json +1 -4
- package/src/live-tokens/data/themes/sunset.json +1 -4
- package/src/live-tokens/data/tokens.generated.css +1 -4
- package/src/system/components/ImageLightbox.svelte +9 -2
- package/src/system/components/SectionDivider.svelte +4 -0
- package/src/system/styles/tokens.css +30 -4
- package/template/src/main.ts +2 -2
- package/template/src/pages/Home.svelte +11 -8
- package/template/vite.config.ts +7 -3
- package/src/system/assets/offering.webp +0 -0
- /package/dist-plugin/{chunk-O6GQ6GBH.js → chunk-A4TBP4MM.js} +0 -0
|
@@ -30,6 +30,13 @@
|
|
|
30
30
|
if (id) document.getElementById(id)?.scrollIntoView({ block: 'start' });
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
+
function armName(arm: { skills: boolean; lookup: boolean }) {
|
|
34
|
+
if (arm.skills && arm.lookup) return 'Skills and lookup';
|
|
35
|
+
if (arm.skills) return 'Skills only';
|
|
36
|
+
if (arm.lookup) return 'Lookup only';
|
|
37
|
+
return 'Neither';
|
|
38
|
+
}
|
|
39
|
+
|
|
33
40
|
function jump(event: MouseEvent, id: string) {
|
|
34
41
|
event.preventDefault();
|
|
35
42
|
contentsOpen = false;
|
|
@@ -68,7 +75,7 @@
|
|
|
68
75
|
<h2 id="skills-title">LiveTokens skills</h2>
|
|
69
76
|
<div class="text-columns skills-overview">
|
|
70
77
|
<div>
|
|
71
|
-
<p>The CLI checks verify that skill output uses the design system and works correctly in the browser. They cover token use, component behavior, and page layout. Skills make design decisions and the
|
|
78
|
+
<p>The CLI checks verify that skill output uses the design system and works correctly in the browser. They cover token use, component behavior, and page layout. Skills make design decisions and the checker verifies the code.</p>
|
|
72
79
|
<p>The package includes eight skills, and one setup command copies them into your project.</p>
|
|
73
80
|
</div>
|
|
74
81
|
<ul class="skill-stack">
|
|
@@ -114,12 +121,11 @@
|
|
|
114
121
|
<div class="figure-stage">
|
|
115
122
|
<!-- svelte-ignore a11y_no_noninteractive_tabindex (Keyboard users need to scroll the diagram.) -->
|
|
116
123
|
<div class="figure-scroll" role="region" aria-label="Figure 1" tabindex="0">
|
|
124
|
+
<div class="dg-stack">
|
|
117
125
|
<svg class="dg" viewBox="20 12 1160 866" role="img" aria-label="The skill builds a page or component and runs the checks. The CLI checker checks the code, makes the routine repairs, tests the result, and reports the findings. The skill repairs each finding and runs the checks again until every check passes.">
|
|
118
126
|
<rect class="lane-checker" x="20" y="12" width="1160" height="866" rx="8" />
|
|
119
127
|
<path class="lane-skill" d="M28,12 H600 V878 H28 A8,8 0 0 1 20,870 V20 A8,8 0 0 1 28,12 Z" />
|
|
120
128
|
<path class="lane-shade" d="M600,12 H1172 A8,8 0 0 1 1180,20 V870 A8,8 0 0 1 1172,878 H600 Z" />
|
|
121
|
-
<text class="lane-title" x="80" y="52">Claude Skill</text>
|
|
122
|
-
<text class="lane-title" x="660" y="52">CLI checker</text>
|
|
123
129
|
<path class="flow" d="M540,148 L876,148 Q890,148 890,162 L890,225" />
|
|
124
130
|
<path class="flow" d="M890,320 L890,353" />
|
|
125
131
|
<path class="flow" d="M890,448 L890,481" />
|
|
@@ -128,33 +134,38 @@
|
|
|
128
134
|
<path class="flow" d="M890,728 L890,781" />
|
|
129
135
|
<path class="back" d="M310,640 L310,290 Q310,276 324,276 L653,276" />
|
|
130
136
|
<rect class="box-lead" x="80" y="104" width="460" height="88" rx="4" />
|
|
137
|
+
<rect class="box" x="660" y="232" width="460" height="88" rx="4" />
|
|
138
|
+
<rect class="box" x="660" y="360" width="460" height="88" rx="4" />
|
|
139
|
+
<rect class="box" x="660" y="488" width="460" height="112" rx="4" />
|
|
140
|
+
<rect class="box" x="660" y="640" width="460" height="88" rx="4" />
|
|
141
|
+
<rect class="box" x="80" y="640" width="460" height="88" rx="4" />
|
|
142
|
+
<rect class="box-lead" x="660" y="788" width="460" height="72" rx="4" />
|
|
143
|
+
</svg>
|
|
144
|
+
<svg class="dg dg-text" viewBox="20 12 1160 866" aria-hidden="true">
|
|
145
|
+
<text class="lane-title" x="80" y="52">Claude Skill</text>
|
|
146
|
+
<text class="lane-title" x="660" y="52">CLI checker</text>
|
|
131
147
|
<text class="t" x="101.3" y="138">Build a page or component</text>
|
|
132
148
|
<text class="s" x="101.3" y="166">from the catalogue and design tokens</text>
|
|
133
|
-
<rect class="box" x="660" y="232" width="460" height="88" rx="4" />
|
|
134
149
|
<text class="t" x="681.3" y="266">Check the code</text>
|
|
135
150
|
<text class="tag" x="1098.7" y="266" text-anchor="end">Static check</text>
|
|
136
151
|
<text class="s" x="681.3" y="294">design tokens, components, and props</text>
|
|
137
|
-
<rect class="box" x="660" y="360" width="460" height="88" rx="4" />
|
|
138
152
|
<text class="t" x="681.3" y="394">Make the routine repairs</text>
|
|
139
153
|
<text class="s" x="681.3" y="422">fixes with one right answer</text>
|
|
140
|
-
<rect class="box" x="660" y="488" width="460" height="112" rx="4" />
|
|
141
154
|
<text class="t" x="681.3" y="522">Test the result</text>
|
|
142
155
|
<text class="tag" x="1098.7" y="522" text-anchor="end">Vitest · Playwright</text>
|
|
143
156
|
<text class="s" x="681.3" y="550">Test component interactions, rendering, and themes.</text>
|
|
144
157
|
<text class="s" x="681.3" y="574">Check page layout, contrast, and typography.</text>
|
|
145
|
-
<rect class="box" x="660" y="640" width="460" height="88" rx="4" />
|
|
146
158
|
<text class="t" x="681.3" y="674">Report the findings</text>
|
|
147
159
|
<text class="s" x="681.3" y="702">each with guidance for its repair</text>
|
|
148
|
-
<rect class="box" x="80" y="640" width="460" height="88" rx="4" />
|
|
149
160
|
<text class="t" x="101.3" y="674">Repair each finding</text>
|
|
150
161
|
<text class="s" x="101.3" y="702">make the choice or write the code</text>
|
|
151
|
-
<rect class="box-lead" x="660" y="788" width="460" height="72" rx="4" />
|
|
152
162
|
<text class="t" x="890" y="830" text-anchor="middle">Every check passes</text>
|
|
153
163
|
<text class="lbl" x="715" y="136" text-anchor="middle">run the checks</text>
|
|
154
164
|
<text class="lbl" x="600" y="672" text-anchor="middle">findings</text>
|
|
155
165
|
<text class="lbl" x="906" y="759">none remain</text>
|
|
156
166
|
<text class="rule" x="479" y="262" text-anchor="middle">check again</text>
|
|
157
167
|
</svg>
|
|
168
|
+
</div>
|
|
158
169
|
</div>
|
|
159
170
|
</div>
|
|
160
171
|
</figure>
|
|
@@ -172,12 +183,11 @@
|
|
|
172
183
|
<div class="figure-stage">
|
|
173
184
|
<!-- svelte-ignore a11y_no_noninteractive_tabindex (Keyboard users need to scroll the diagram.) -->
|
|
174
185
|
<div class="figure-scroll" role="region" aria-label="Figure 2" tabindex="0">
|
|
186
|
+
<div class="dg-stack">
|
|
175
187
|
<svg class="dg" viewBox="20 12 1160 916" role="img" aria-label="Read the project, plan the sections, and choose components. When no component fits, create one and check it until every check passes, and it joins the catalogue. Assemble the page and check it. Repair each finding until every check passes, then review the page.">
|
|
176
188
|
<rect class="lane-checker" x="20" y="12" width="1160" height="916" rx="8" />
|
|
177
189
|
<path class="lane-skill" d="M28,12 H600 V928 H28 A8,8 0 0 1 20,920 V20 A8,8 0 0 1 28,12 Z" />
|
|
178
190
|
<path class="lane-shade" d="M600,12 H1172 A8,8 0 0 1 1180,20 V920 A8,8 0 0 1 1172,928 H600 Z" />
|
|
179
|
-
<text class="lane-title" x="80" y="52">Page</text>
|
|
180
|
-
<text class="lane-title" x="660" y="52">New component</text>
|
|
181
191
|
<path class="flow" d="M310,192 L310,225" />
|
|
182
192
|
<path class="flow" d="M310,320 L310,353" />
|
|
183
193
|
<path class="flow" d="M310,448 L310,545" />
|
|
@@ -187,25 +197,29 @@
|
|
|
187
197
|
<path class="back" d="M540,724 L556,724 Q570,724 570,710 L570,629 Q570,620 561,620 L547,620" />
|
|
188
198
|
<path class="flow" d="M310,768 L310,813" />
|
|
189
199
|
<rect class="box-lead" x="80" y="104" width="460" height="88" rx="4" />
|
|
200
|
+
<rect class="box" x="80" y="232" width="460" height="88" rx="4" />
|
|
201
|
+
<rect class="box" x="80" y="360" width="460" height="88" rx="4" />
|
|
202
|
+
<rect class="box" x="660" y="360" width="460" height="112" rx="4" />
|
|
203
|
+
<rect class="box" x="80" y="552" width="460" height="88" rx="4" />
|
|
204
|
+
<rect class="box" x="80" y="680" width="460" height="88" rx="4" />
|
|
205
|
+
<rect class="box-lead" x="80" y="820" width="460" height="88" rx="4" />
|
|
206
|
+
</svg>
|
|
207
|
+
<svg class="dg dg-text" viewBox="20 12 1160 916" aria-hidden="true">
|
|
208
|
+
<text class="lane-title" x="80" y="52">Page</text>
|
|
209
|
+
<text class="lane-title" x="660" y="52">New component</text>
|
|
190
210
|
<text class="t" x="101.3" y="138">Read the project</text>
|
|
191
211
|
<text class="s" x="101.3" y="166">routes, grid, and the component catalogue</text>
|
|
192
|
-
<rect class="box" x="80" y="232" width="460" height="88" rx="4" />
|
|
193
212
|
<text class="t" x="101.3" y="266">Plan the sections</text>
|
|
194
213
|
<text class="s" x="101.3" y="294">one section per purpose</text>
|
|
195
|
-
<rect class="box" x="80" y="360" width="460" height="88" rx="4" />
|
|
196
214
|
<text class="t" x="101.3" y="394">Choose components</text>
|
|
197
215
|
<text class="s" x="101.3" y="422">from the catalogue first</text>
|
|
198
|
-
<rect class="box" x="660" y="360" width="460" height="112" rx="4" />
|
|
199
216
|
<text class="t" x="681.3" y="394">Create the component</text>
|
|
200
217
|
<text class="s" x="681.3" y="422">check it and repair it</text>
|
|
201
218
|
<text class="s" x="681.3" y="446">until every check passes</text>
|
|
202
|
-
<rect class="box" x="80" y="552" width="460" height="88" rx="4" />
|
|
203
219
|
<text class="t" x="101.3" y="586">Assemble the page</text>
|
|
204
220
|
<text class="s" x="101.3" y="614">components, tokens, and text styles</text>
|
|
205
|
-
<rect class="box" x="80" y="680" width="460" height="88" rx="4" />
|
|
206
221
|
<text class="t" x="101.3" y="714">Check the page</text>
|
|
207
222
|
<text class="s" x="101.3" y="742">review the code and test it in the browser</text>
|
|
208
|
-
<rect class="box-lead" x="80" y="820" width="460" height="88" rx="4" />
|
|
209
223
|
<text class="t" x="101.3" y="854">Review the page</text>
|
|
210
224
|
<text class="s" x="101.3" y="882">read it the way a visitor would</text>
|
|
211
225
|
<text class="lbl" x="326" y="499">a shipped component fits</text>
|
|
@@ -214,6 +228,7 @@
|
|
|
214
228
|
<text class="rule" x="584" y="677">repair</text>
|
|
215
229
|
<text class="lbl" x="326" y="793">every check passes</text>
|
|
216
230
|
</svg>
|
|
231
|
+
</div>
|
|
217
232
|
</div>
|
|
218
233
|
</div>
|
|
219
234
|
</figure>
|
|
@@ -356,29 +371,27 @@
|
|
|
356
371
|
<section class="chapter" id="measured-value" aria-labelledby="measured-value-title">
|
|
357
372
|
<div class="chapter-body">
|
|
358
373
|
<h2 id="measured-value-title">Measured value</h2>
|
|
359
|
-
<p>An eval asked an agent to choose a component for {result.requirements} requirements. It ran in four arms of {result.runsPerArm} runs each: with and without the skills, and with and without the
|
|
374
|
+
<p>An eval asked an agent to choose a component for {result.requirements} requirements. It ran in four arms of {result.runsPerArm} runs each: with and without the skills, and with and without the lookup, the <code>live-tokens components</code> command that lists each component with its entry and props. The arms chose the same components, with one miss among 144 answers, and differ in turns, time, and cost.</p>
|
|
360
375
|
<div class="eval-results">
|
|
361
376
|
<Table>
|
|
362
377
|
<table aria-label="Eval arms">
|
|
363
378
|
<thead>
|
|
364
379
|
<tr>
|
|
365
|
-
<th scope="col">
|
|
366
|
-
<th scope="col">
|
|
367
|
-
<th scope="col">Requirements right</th>
|
|
380
|
+
<th scope="col">Arm</th>
|
|
381
|
+
<th scope="col">Accuracy</th>
|
|
368
382
|
<th scope="col">Turns</th>
|
|
369
383
|
<th scope="col">Seconds</th>
|
|
370
384
|
<th scope="col">Cost</th>
|
|
371
385
|
</tr>
|
|
372
386
|
</thead>
|
|
373
387
|
<tbody>
|
|
374
|
-
{#each result.arms as arm (`${arm.skills}-${arm.
|
|
388
|
+
{#each result.arms as arm (`${arm.skills}-${arm.lookup}`)}
|
|
375
389
|
<tr>
|
|
376
|
-
<td>{arm
|
|
377
|
-
<td>{arm.
|
|
378
|
-
<td>{arm.
|
|
379
|
-
<td>{arm.
|
|
380
|
-
<td>{arm.
|
|
381
|
-
<td>{arm.cost}</td>
|
|
390
|
+
<td>{armName(arm)}</td>
|
|
391
|
+
<td data-label="Accuracy">{arm.rowsRight}</td>
|
|
392
|
+
<td data-label="Turns">{arm.turns}</td>
|
|
393
|
+
<td data-label="Seconds">{arm.seconds}</td>
|
|
394
|
+
<td data-label="Cost">{arm.cost}</td>
|
|
382
395
|
</tr>
|
|
383
396
|
{/each}
|
|
384
397
|
</tbody>
|
|
@@ -386,10 +399,10 @@
|
|
|
386
399
|
</Table>
|
|
387
400
|
</div>
|
|
388
401
|
<ul class="eval-summary">
|
|
389
|
-
<li><strong>Turns:</strong> the skill saves turns only through the
|
|
390
|
-
<li><strong>Time and cost:</strong> the skills and the
|
|
402
|
+
<li><strong>Turns:</strong> the skill saves turns only through the lookup. Without the lookup, the skill arm takes as many turns as the agent with neither.</li>
|
|
403
|
+
<li><strong>Time and cost:</strong> the skills and the lookup each save time on their own, and together the run costs less than half as much as with neither.</li>
|
|
391
404
|
<li><strong>Accuracy:</strong> every arm scores about the same. The choices come from the entries in the component files.</li>
|
|
392
|
-
<li><strong>Change since 2026-09-20:</strong> in that run, no agent without the skills found the
|
|
405
|
+
<li><strong>Change since 2026-09-20:</strong> in that run, no agent without the skills found the lookup; this time 2 of 3 did, so that arm varies from run to run.</li>
|
|
393
406
|
</ul>
|
|
394
407
|
<div class="text-columns">
|
|
395
408
|
<div>
|
|
@@ -456,9 +469,11 @@
|
|
|
456
469
|
display: grid;
|
|
457
470
|
grid-template-columns: repeat(var(--columns-count), minmax(var(--space-0), 1fr));
|
|
458
471
|
column-gap: var(--columns-gutter);
|
|
472
|
+
box-sizing: content-box;
|
|
459
473
|
max-width: var(--columns-max-width);
|
|
460
474
|
margin-inline: auto;
|
|
461
|
-
padding: var(--space-48) var(--space-
|
|
475
|
+
padding-block: var(--space-48) var(--space-64);
|
|
476
|
+
padding-inline: var(--columns-margin);
|
|
462
477
|
color: var(--text-primary);
|
|
463
478
|
}
|
|
464
479
|
|
|
@@ -664,6 +679,16 @@
|
|
|
664
679
|
width: auto;
|
|
665
680
|
}
|
|
666
681
|
|
|
682
|
+
/* The panel's stage padding sized for a figure makes a one-line toggle a tall slab. */
|
|
683
|
+
.contents {
|
|
684
|
+
--panel-stage-padding: var(--space-4);
|
|
685
|
+
--panel-stage-inline-padding: var(--space-8);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.contents :global(.panel) {
|
|
689
|
+
justify-content: flex-start;
|
|
690
|
+
}
|
|
691
|
+
|
|
667
692
|
.contents-body {
|
|
668
693
|
width: 100%;
|
|
669
694
|
min-width: var(--space-0);
|
|
@@ -775,6 +800,24 @@
|
|
|
775
800
|
overflow-x: auto;
|
|
776
801
|
}
|
|
777
802
|
|
|
803
|
+
/* A phone frame scrolls the diagram, and the default overlay bar is too thin
|
|
804
|
+
to signal it. The standard scrollbar-width has no length value, and setting
|
|
805
|
+
it would disable these pseudo-elements in Chromium. */
|
|
806
|
+
.figure-scroll::-webkit-scrollbar {
|
|
807
|
+
height: var(--space-32);
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
.figure-scroll::-webkit-scrollbar-track {
|
|
811
|
+
background: var(--surface-neutral-low);
|
|
812
|
+
border-radius: var(--radius-full);
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
.figure-scroll::-webkit-scrollbar-thumb {
|
|
816
|
+
background: var(--surface-neutral-higher);
|
|
817
|
+
border: var(--border-width-1) solid var(--border-neutral);
|
|
818
|
+
border-radius: var(--radius-full);
|
|
819
|
+
}
|
|
820
|
+
|
|
778
821
|
/* Inside the figure's subgrid, so 1 / 7 lines up with the text column. */
|
|
779
822
|
figcaption {
|
|
780
823
|
grid-column: 1 / 7;
|
|
@@ -797,6 +840,21 @@
|
|
|
797
840
|
color: var(--text-primary);
|
|
798
841
|
}
|
|
799
842
|
|
|
843
|
+
/* Sketch mode filters every inline svg as artwork, which smears type. The
|
|
844
|
+
text gets its own svg over the shapes, so the boxes stay drawn and the
|
|
845
|
+
labels crisp. */
|
|
846
|
+
.dg-stack {
|
|
847
|
+
display: grid;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
.dg-stack > .dg {
|
|
851
|
+
grid-area: 1 / 1;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
.dg-text {
|
|
855
|
+
--sketch-icon-off: none;
|
|
856
|
+
}
|
|
857
|
+
|
|
800
858
|
.dg :global(.lane-checker) {
|
|
801
859
|
fill: none;
|
|
802
860
|
stroke: var(--border-neutral-subtle);
|
|
@@ -950,10 +1008,16 @@
|
|
|
950
1008
|
display: block;
|
|
951
1009
|
}
|
|
952
1010
|
|
|
1011
|
+
/* The top leaves room for the fixed editor toolbar above the back link. */
|
|
953
1012
|
.loops {
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
1013
|
+
padding-block: var(--space-64) var(--space-48);
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
/* Both outrank the 1023px block's `.chapter-body > *`, so without this
|
|
1017
|
+
they keep the 2 / -2 inset the rest of the chapter drops. */
|
|
1018
|
+
.chapter-body > h1,
|
|
1019
|
+
.chapter-body > .eval-results {
|
|
1020
|
+
grid-column: 1 / -1;
|
|
957
1021
|
}
|
|
958
1022
|
|
|
959
1023
|
h1 {
|
|
@@ -972,5 +1036,73 @@
|
|
|
972
1036
|
padding-block: var(--space-32);
|
|
973
1037
|
}
|
|
974
1038
|
|
|
1039
|
+
/* A phone leaves too little width for side-by-side columns, so each row stacks into a card. */
|
|
1040
|
+
:is(.rule-group, .eval-results) :global(.table-wrapper :is(table, tbody, tr, td)) {
|
|
1041
|
+
display: block;
|
|
1042
|
+
min-width: var(--space-0);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
:is(.rule-group, .eval-results) :global(.table-wrapper thead) {
|
|
1046
|
+
display: none;
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
/* The row's first cell takes the table's header style and captions the card. */
|
|
1050
|
+
:is(.rule-group, .eval-results) :global(.table-wrapper td:first-child) {
|
|
1051
|
+
border-right: none;
|
|
1052
|
+
border-bottom: var(--table-default-header-hairline-width) solid var(--table-default-header-hairline-color);
|
|
1053
|
+
background: var(--table-default-header-surface);
|
|
1054
|
+
color: var(--table-default-header-text);
|
|
1055
|
+
font-family: var(--table-default-header-font-family);
|
|
1056
|
+
font-size: var(--table-default-header-font-size);
|
|
1057
|
+
font-weight: var(--table-default-header-font-weight);
|
|
1058
|
+
line-height: var(--table-default-header-line-height);
|
|
1059
|
+
/* Half again as tall as a body row, so each card's caption marks a break between rules. */
|
|
1060
|
+
padding-top: calc(var(--table-default-cell-padding-top, var(--table-default-cell-padding)) * 1.5 + 0.25lh);
|
|
1061
|
+
padding-bottom: calc(var(--table-default-cell-padding-bottom, var(--table-default-cell-padding)) * 1.5 + 0.25lh);
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.rule-group :global(.table-wrapper td:last-child) {
|
|
1065
|
+
padding-bottom: calc(var(--table-default-cell-padding-bottom, var(--table-default-cell-padding)) + 0.5lh);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
.eval-results :global(.table-wrapper tr:not(:last-child) td:last-child) {
|
|
1069
|
+
border-bottom: var(--table-default-header-hairline-width) solid var(--table-default-header-hairline-color);
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
/* Each rule stands as its own box: the wrapper hands its chrome to every row.
|
|
1073
|
+
Visible overflow keeps the wrapper's scroll box from clipping each row's shadow. */
|
|
1074
|
+
.rule-group :global(.table-wrapper) {
|
|
1075
|
+
overflow: visible;
|
|
1076
|
+
background: none;
|
|
1077
|
+
border: none;
|
|
1078
|
+
border-radius: var(--radius-none);
|
|
1079
|
+
box-shadow: none;
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
.rule-group :global(.table-wrapper tbody) {
|
|
1083
|
+
display: grid;
|
|
1084
|
+
gap: var(--space-12);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.rule-group :global(.table-wrapper tr) {
|
|
1088
|
+
overflow: hidden;
|
|
1089
|
+
background: var(--table-default-surface);
|
|
1090
|
+
border: var(--table-default-border-width) solid var(--table-default-border);
|
|
1091
|
+
border-radius: var(--table-default-radius);
|
|
1092
|
+
box-shadow: var(--table-default-shadow);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
/* The hidden header row named these columns, so each value carries its own label. */
|
|
1096
|
+
.eval-results :global(.table-wrapper td[data-label]) {
|
|
1097
|
+
display: grid;
|
|
1098
|
+
grid-template-columns: minmax(var(--space-0), 2fr) minmax(var(--space-0), 3fr);
|
|
1099
|
+
column-gap: var(--space-12);
|
|
1100
|
+
border-right: none;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
.eval-results :global(.table-wrapper td[data-label]::before) {
|
|
1104
|
+
content: attr(data-label);
|
|
1105
|
+
font-weight: var(--table-default-header-font-weight);
|
|
1106
|
+
}
|
|
975
1107
|
}
|
|
976
1108
|
</style>
|
package/src/demo/evalResults.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/** One arm of an eval: the same case run with or without the skills, and with or without the
|
|
1
|
+
/** One arm of an eval: the same case run with or without the skills, and with or without the lookup command. */
|
|
2
2
|
export interface EvalArm {
|
|
3
3
|
skills: boolean;
|
|
4
|
-
|
|
4
|
+
lookup: boolean;
|
|
5
5
|
rowsRight: string;
|
|
6
6
|
turns: string;
|
|
7
7
|
seconds: string;
|
|
@@ -28,7 +28,7 @@ export const pickComponentEval: EvalResult = {
|
|
|
28
28
|
arms: [
|
|
29
29
|
{
|
|
30
30
|
skills: true,
|
|
31
|
-
|
|
31
|
+
lookup: true,
|
|
32
32
|
rowsRight: '12 of 12 in all 3 runs',
|
|
33
33
|
turns: '9 to 10',
|
|
34
34
|
seconds: '46 to 76',
|
|
@@ -36,15 +36,15 @@ export const pickComponentEval: EvalResult = {
|
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
skills: false,
|
|
39
|
-
|
|
40
|
-
rowsRight: '12 of 12 in all 3 runs; 2 of 3 found the
|
|
39
|
+
lookup: true,
|
|
40
|
+
rowsRight: '12 of 12 in all 3 runs; 2 of 3 found the lookup on their own',
|
|
41
41
|
turns: '15 to 17',
|
|
42
42
|
seconds: '65 to 102',
|
|
43
43
|
cost: '$0.63 to $0.74',
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
skills: true,
|
|
47
|
-
|
|
47
|
+
lookup: false,
|
|
48
48
|
rowsRight: '12 of 12 in all 3 runs',
|
|
49
49
|
turns: '14 to 20',
|
|
50
50
|
seconds: '66 to 84',
|
|
@@ -52,7 +52,7 @@ export const pickComponentEval: EvalResult = {
|
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
skills: false,
|
|
55
|
-
|
|
55
|
+
lookup: false,
|
|
56
56
|
rowsRight: '11 of 12 in one run, which missed requirement 12',
|
|
57
57
|
turns: '17 to 20',
|
|
58
58
|
seconds: '113 to 169',
|
|
@@ -66,28 +66,26 @@
|
|
|
66
66
|
.claude {
|
|
67
67
|
grid-column: 1 / -1;
|
|
68
68
|
display: grid;
|
|
69
|
-
grid-template-columns:
|
|
70
|
-
column-gap: var(--columns-gutter);
|
|
69
|
+
grid-template-columns: subgrid;
|
|
71
70
|
row-gap: var(--space-8);
|
|
72
71
|
align-items: start;
|
|
73
|
-
margin-bottom: var(--space-96);
|
|
74
72
|
}
|
|
75
73
|
|
|
76
74
|
.claude :global(.section-divider) {
|
|
77
|
-
grid-column:
|
|
75
|
+
grid-column: var(--kit-content);
|
|
78
76
|
}
|
|
79
77
|
|
|
80
|
-
/* Panel sits on page columns 2
|
|
78
|
+
/* Panel sits on page columns 2 to 5; the copy starts on column 6, hard
|
|
81
79
|
against the panel's right edge. */
|
|
82
80
|
.panel-col {
|
|
83
|
-
grid-column: 2 /
|
|
81
|
+
grid-column: 2 / 6;
|
|
84
82
|
grid-row: 2;
|
|
85
83
|
align-self: start;
|
|
86
84
|
margin-top: var(--space-16);
|
|
87
85
|
}
|
|
88
86
|
|
|
89
87
|
.copy {
|
|
90
|
-
grid-column:
|
|
88
|
+
grid-column: 6 / -2;
|
|
91
89
|
grid-row: 2;
|
|
92
90
|
align-self: start;
|
|
93
91
|
display: flex;
|
|
@@ -98,7 +96,7 @@
|
|
|
98
96
|
|
|
99
97
|
.intro {
|
|
100
98
|
font-family: var(--font-sans);
|
|
101
|
-
font-size: var(--font-size
|
|
99
|
+
font-size: var(--body-xl-font-size);
|
|
102
100
|
line-height: var(--line-height-tighter);
|
|
103
101
|
font-weight: var(--font-weight-semibold);
|
|
104
102
|
color: var(--text-primary);
|
|
@@ -114,7 +112,7 @@
|
|
|
114
112
|
.install-caption {
|
|
115
113
|
margin: 0;
|
|
116
114
|
font-family: var(--font-sans);
|
|
117
|
-
font-size: var(--font-size
|
|
115
|
+
font-size: var(--body-md-font-size);
|
|
118
116
|
line-height: var(--line-height-normal);
|
|
119
117
|
color: var(--text-secondary);
|
|
120
118
|
}
|
|
@@ -171,17 +169,16 @@
|
|
|
171
169
|
|
|
172
170
|
.skill-name {
|
|
173
171
|
font-family: var(--font-sans);
|
|
174
|
-
font-size: var(--font-size
|
|
172
|
+
font-size: var(--heading-md-font-size);
|
|
175
173
|
font-weight: var(--font-weight-medium);
|
|
176
174
|
line-height: var(--line-height-normal);
|
|
177
175
|
color: var(--text-primary);
|
|
178
176
|
}
|
|
179
177
|
|
|
180
|
-
@media (max-width:
|
|
181
|
-
.claude :global(.section-divider),
|
|
178
|
+
@media (max-width: 1200px) {
|
|
182
179
|
.panel-col,
|
|
183
180
|
.copy {
|
|
184
|
-
grid-column:
|
|
181
|
+
grid-column: var(--kit-content);
|
|
185
182
|
}
|
|
186
183
|
|
|
187
184
|
.panel-col,
|
|
@@ -189,4 +186,14 @@
|
|
|
189
186
|
grid-row: auto;
|
|
190
187
|
}
|
|
191
188
|
}
|
|
189
|
+
|
|
190
|
+
@media (max-width: 600px) {
|
|
191
|
+
.atlas {
|
|
192
|
+
align-items: stretch;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.atlas-actions {
|
|
196
|
+
flex-direction: column;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
192
199
|
</style>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
<style>
|
|
18
18
|
.provenance {
|
|
19
|
-
grid-column:
|
|
19
|
+
grid-column: var(--kit-content);
|
|
20
20
|
padding-top: var(--space-24);
|
|
21
21
|
border-top: var(--border-width-2) solid var(--border-neutral);
|
|
22
22
|
display: flex;
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
.license {
|
|
35
35
|
margin: 0;
|
|
36
36
|
font-family: var(--font-sans);
|
|
37
|
-
font-size: var(--font-size
|
|
37
|
+
font-size: var(--body-lg-font-size);
|
|
38
38
|
color: var(--text-secondary);
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -52,13 +52,12 @@
|
|
|
52
52
|
.copyright {
|
|
53
53
|
margin: 0;
|
|
54
54
|
font-family: var(--font-sans);
|
|
55
|
-
font-size: var(--font-size
|
|
55
|
+
font-size: var(--body-md-font-size);
|
|
56
56
|
color: var(--text-secondary);
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
@media (max-width:
|
|
59
|
+
@media (max-width: 1200px) {
|
|
60
60
|
.provenance {
|
|
61
|
-
grid-column: 1 / -1;
|
|
62
61
|
flex-direction: column;
|
|
63
62
|
align-items: flex-start;
|
|
64
63
|
gap: var(--space-24);
|
|
@@ -34,12 +34,11 @@ npm run dev`;
|
|
|
34
34
|
.get-started {
|
|
35
35
|
grid-column: 1 / -1;
|
|
36
36
|
display: grid;
|
|
37
|
-
grid-template-columns:
|
|
38
|
-
column-gap: var(--columns-gutter);
|
|
37
|
+
grid-template-columns: subgrid;
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
.gs-panel {
|
|
42
|
-
grid-column:
|
|
41
|
+
grid-column: var(--kit-content);
|
|
43
42
|
/* The .kit grid can stretch this section's row past its content (min-height:
|
|
44
43
|
100vh on a short page); keep the panel sized to its content regardless. */
|
|
45
44
|
align-self: start;
|
|
@@ -68,7 +67,7 @@ npm run dev`;
|
|
|
68
67
|
|
|
69
68
|
.intro {
|
|
70
69
|
font-family: var(--font-sans);
|
|
71
|
-
font-size: var(--font-size
|
|
70
|
+
font-size: var(--body-xl-font-size);
|
|
72
71
|
line-height: var(--line-height-tighter);
|
|
73
72
|
font-weight: var(--font-weight-semibold);
|
|
74
73
|
color: var(--text-primary);
|
|
@@ -91,9 +90,9 @@ npm run dev`;
|
|
|
91
90
|
overflow-y: hidden;
|
|
92
91
|
}
|
|
93
92
|
|
|
94
|
-
@media (max-width:
|
|
93
|
+
@media (max-width: 1200px) {
|
|
95
94
|
.columns {
|
|
96
|
-
grid-template-columns: 1fr;
|
|
95
|
+
grid-template-columns: minmax(0, 1fr);
|
|
97
96
|
align-items: stretch;
|
|
98
97
|
}
|
|
99
98
|
}
|