@@ -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.
4390const 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