@@ -10,6 +10,7 @@ type Slide = {
1010 bullets ?: string [ ] ;
1111 footnote ?: string ;
1212 image ?: string ;
13+ imageClass ?: string ;
1314 code ?: string ;
1415 variant ?: "title" | "demo" | "default" ;
1516} ;
@@ -66,10 +67,9 @@ const slides: Slide[] = [
6667 title : "Step 1: Spec lookup" ,
6768 bullets : [
6869 "The contract address is matched against the veryclear.eth ENS registry" ,
69- "Each entry maps a contract to a compiled spec (e.g. ERC20, UniswapV2)" ,
70- "The registry is on-chain, verifiable by anyone" ,
7170 ] ,
7271 image : "/slides/ens.png" ,
72+ imageClass : "mt-6 h-16" ,
7373 } ,
7474 {
7575 label : "How It Works" ,
@@ -120,11 +120,12 @@ const slides: Slide[] = [
120120 label : "How It Works" ,
121121 title : "Step 7: Hardware verification" ,
122122 bullets : [
123- "The proof + verification key + intent text are sent to the Ledger Nano S+ " ,
124- "The Ledger displays the intent, user confirms with physical buttons " ,
125- "On approve: 4-pairing Groth16 check on ARM Cortex-M35P secure element " ,
123+ "The proof, verification key and template are sent to the Ledger" ,
124+ "The Ledger verifies the template is the correct interpretation of the calldata " ,
125+ "It fills the holes with the actual values and displays the result for user confirmation " ,
126126 ] ,
127- footnote : "The browser generates, the hardware verifies. Zero trust required." ,
127+ footnote :
128+ "The browser generates, the hardware verifies. Zero trust required." ,
128129 } ,
129130
130131 // ── Closing ──
@@ -141,23 +142,29 @@ function highlightCode(line: string): React.ReactNode {
141142 if ( line . trim ( ) === "" ) return "\u00A0" ;
142143 // Simple Lean-like syntax highlighting
143144 return line
144- . replace (
145- / \b ( i n t e n t | w h e n | o t h e r w i s e | e m i t | w h e r e ) \b / g,
146- '<kw>$1</kw>'
147- )
148- . replace (
149- / \b ( a d d r e s s | u i n t 2 5 6 | b o o l ) \b / g,
150- '<ty>$1</ty>'
151- )
152- . replace (
153- / " ( [ ^ " ] * ) " / g,
154- '<str>"$1"</str>'
155- )
145+ . replace ( / \b ( i n t e n t | w h e n | o t h e r w i s e | e m i t | w h e r e ) \b / g, "<kw>$1</kw>" )
146+ . replace ( / \b ( a d d r e s s | u i n t 2 5 6 | b o o l ) \b / g, "<ty>$1</ty>" )
147+ . replace ( / " ( [ ^ " ] * ) " / g, '<str>"$1"</str>' )
156148 . split ( / ( < k w > .* ?< \/ k w > | < t y > .* ?< \/ t y > | < s t r > .* ?< \/ s t r > ) / )
157149 . map ( ( part , i ) => {
158- if ( part . startsWith ( '<kw>' ) ) return < span key = { i } className = "text-[#907aa9]" > { part . slice ( 4 , - 5 ) } </ span > ;
159- if ( part . startsWith ( '<ty>' ) ) return < span key = { i } className = "text-[#ea9d34]" > { part . slice ( 4 , - 5 ) } </ span > ;
160- if ( part . startsWith ( '<str>' ) ) return < span key = { i } className = "text-[#56949f]" > { part . slice ( 5 , - 6 ) } </ span > ;
150+ if ( part . startsWith ( "<kw>" ) )
151+ return (
152+ < span key = { i } className = "text-[#907aa9]" >
153+ { part . slice ( 4 , - 5 ) }
154+ </ span >
155+ ) ;
156+ if ( part . startsWith ( "<ty>" ) )
157+ return (
158+ < span key = { i } className = "text-[#ea9d34]" >
159+ { part . slice ( 4 , - 5 ) }
160+ </ span >
161+ ) ;
162+ if ( part . startsWith ( "<str>" ) )
163+ return (
164+ < span key = { i } className = "text-[#56949f]" >
165+ { part . slice ( 5 , - 6 ) }
166+ </ span >
167+ ) ;
161168 return part ;
162169 } ) ;
163170}
@@ -190,15 +197,13 @@ function SlideView({ slide }: { slide: Slide }) {
190197 < img
191198 src = { slide . image }
192199 alt = ""
193- className = "mt-8 max-h-[40vh] rounded-lg"
200+ className = { slide . imageClass ?? "mt-8 max-h-[40vh] rounded-lg" }
194201 />
195202 ) }
196203 { slide . code && (
197204 < pre className = "mt-8 bg-[#faf4ed] rounded-lg px-6 py-5 text-[15px] leading-[1.7] font-mono max-w-2xl overflow-x-auto" >
198205 { slide . code . split ( "\n" ) . map ( ( line , i ) => (
199- < div key = { i } >
200- { highlightCode ( line ) }
201- </ div >
206+ < div key = { i } > { highlightCode ( line ) } </ div >
202207 ) ) }
203208 </ pre >
204209 ) }
@@ -261,7 +266,9 @@ export default function SlidesPage() {
261266 < div
262267 key = { i }
263268 className = { `h-1.5 w-1.5 rounded-full transition-opacity ${
264- i === current ? "bg-foreground opacity-60" : "bg-foreground opacity-15"
269+ i === current
270+ ? "bg-foreground opacity-60"
271+ : "bg-foreground opacity-15"
265272 } `}
266273 />
267274 ) ) }
0 commit comments