Skip to content

Commit db7293c

Browse files
kateebonnerclaude
andcommitted
style(amicode): starter chips — lemon icon tile, neutral body (Kate)
Full-lemon chips read as too much. The brand moment shrinks to a 20px lemon tile leading each chip: bg-accent fill, 1px icon-accent edge (dark hairline on light, invisible on dark), and a per-action stroke glyph in ink — pulse trace, target, restart arc, bolt, question, play. One icon family (24-grid, 1.75px round strokes, SVG only), per the ui-ux-pro icon rules. The chip body returns to neutral layer-02 + text-base. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent f4748fb commit db7293c

1 file changed

Lines changed: 62 additions & 7 deletions

File tree

‎packages/ui/src/amicode/getting-started.tsx‎

Lines changed: 62 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,79 @@ import { AmicodeTagline } from "./tagline"
1313
// The set spans the lifetime: onboard (first run routes any chip into the
1414
// overture) → design with memory/recommendations → warm-start from the pulse
1515
// bank → go fast with Veloce.
16-
export const AMICODE_STARTERS: readonly { label: string; prompt: string }[] = [
16+
// Each starter carries a stroke-icon path (24-grid, one family: 1.75px round
17+
// strokes) suggesting its action — rendered on a small lemon tile so the chip
18+
// reads branded without the whole component going yellow (Kate).
19+
export const AMICODE_STARTERS: readonly { label: string; prompt: string; icon: string }[] = [
1720
{
1821
label: "Design a pulse — walk me through it",
1922
prompt: "walk me through designing a pulse",
23+
icon: "M2 12h4l3-7 4 14 3-7h6", // a pulse trace
2024
},
2125
{
2226
label: "Optimize an X gate on my transmon",
2327
prompt: "optimize an X gate on my transmon — use what you know from my history",
28+
icon: "M12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16M12 10.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3", // a target
2429
},
2530
// NOTE(spec B): the static "Resume my pulse design" chip was replaced by the
2631
// conditional resumeName-driven chip below — Resume renders only when a
2732
// problem workspace actually exists (no empty chrome).
2833
{
2934
label: "Warm-start from my pulse bank",
3035
prompt: "warm-start a new solve from my pulse bank",
36+
icon: "M20 12a8 8 0 1 1-2.3-5.7M20 3v4h-4", // restart arc
3137
},
3238
{
3339
label: "Go fast with Veloce",
3440
prompt: "turn on Veloce — auto-accept your high-confidence recommendations, and still confirm before any solve",
41+
icon: "M13 3 5 14h5l-1 7 8-11h-5l1-7Z", // a bolt
3542
},
3643
{
3744
label: "What can Amico do?",
3845
prompt: "what can Amico do?",
46+
icon: "M9.3 9.3a2.8 2.8 0 1 1 3.9 2.6c-.9.4-1.2.9-1.2 1.9M12 17.2v.1", // a question
3947
},
4048
]
4149

50+
// Resume is play-shaped.
51+
const RESUME_ICON = "M8 5.5v13l10.5-6.5Z"
52+
53+
// The one place the chip carries the brand: a small lemon tile (fill + 1px
54+
// icon-accent edge — dark hairline on light, invisible on dark) holding the
55+
// action glyph in ink. SVG only, never emoji; 12px glyph on a 20px tile.
56+
const GLYPH_TILE: Record<string, string> = {
57+
display: "inline-flex",
58+
"align-items": "center",
59+
"justify-content": "center",
60+
width: "20px",
61+
height: "20px",
62+
"box-sizing": "border-box",
63+
"flex-shrink": "0",
64+
"border-radius": "5px",
65+
background: "var(--v2-background-bg-accent, #FFF676)",
66+
border: "1px solid var(--v2-icon-icon-accent)",
67+
color: "#000",
68+
}
69+
70+
function StarterGlyph(props: { d: string }) {
71+
return (
72+
<span style={GLYPH_TILE} aria-hidden="true">
73+
<svg
74+
viewBox="0 0 24 24"
75+
width="12"
76+
height="12"
77+
fill="none"
78+
stroke="currentColor"
79+
stroke-width="1.75"
80+
stroke-linecap="round"
81+
stroke-linejoin="round"
82+
>
83+
<path d={props.d} />
84+
</svg>
85+
</span>
86+
)
87+
}
88+
4289
// The three-beat arc of a pulse-design session, from setup to hardware.
4390
const STEPS = ["① Define your system and problem", "② Optimize and iterate", "③ Execute and tune on hardware"]
4491

@@ -108,16 +155,20 @@ export function AmicodeGettingStarted(props: {
108155
data-slot="amicode-gs-starter"
109156
onClick={() => props.onStart(starter.prompt)}
110157
style={{
158+
display: "inline-flex",
159+
"align-items": "center",
160+
gap: "7px",
111161
border: "1px solid var(--v2-icon-icon-accent)",
112162
"border-radius": "6px",
113-
background: "var(--v2-background-bg-accent, #FFF676)",
114-
color: "#000",
115-
padding: "4px 12px",
163+
background: "var(--v2-background-bg-layer-02)",
164+
color: "var(--v2-text-text-base)",
165+
padding: "4px 12px 4px 5px",
116166
"font-size": "12px",
117167
"line-height": "16px",
118168
cursor: "pointer",
119169
}}
120170
>
171+
<StarterGlyph d={starter.icon} />
121172
{starter.label}
122173
</button>
123174
)}
@@ -128,16 +179,20 @@ export function AmicodeGettingStarted(props: {
128179
data-slot="amicode-gs-resume"
129180
onClick={() => props.onResume?.()}
130181
style={{
182+
display: "inline-flex",
183+
"align-items": "center",
184+
gap: "7px",
131185
border: "1px solid var(--v2-icon-icon-accent)",
132186
"border-radius": "6px",
133-
background: "var(--v2-background-bg-accent, #FFF676)",
134-
color: "#000",
135-
padding: "4px 12px",
187+
background: "var(--v2-background-bg-layer-02)",
188+
color: "var(--v2-text-text-base)",
189+
padding: "4px 12px 4px 5px",
136190
"font-size": "12px",
137191
"line-height": "16px",
138192
cursor: "pointer",
139193
}}
140194
>
195+
<StarterGlyph d={RESUME_ICON} />
141196
Resume “{props.resumeName}”
142197
</button>
143198
)}

0 commit comments

Comments
 (0)