Try the code you write, then switch flavors. The same roles carry through every sample, from syntax to the lines you add and remove.
Previewing Paper. Your language stays selected when you change flavors.
theme.ts
1// A quiet ground. Color with a job.2typeTheme={name:string;contrast:number};34exportfunctionchooseTheme(light:boolean):Theme{5constname=light?"paper":"night";67return{8name,9contrast:4.5,10};11}1213constactive=chooseTheme(false);14console.log(active.name);
theme.py
1# A quiet ground. Color with a job.2fromdataclassesimportdataclass34@dataclass5classTheme:6name:str7contrast:float=4.58910defchoose_theme(light:bool)->Theme:11name="paper"iflightelse"night"12returnTheme(name,contrast=4.5)1314active=choose_theme(False)15print(active.name)
theme.rs
1// A quiet ground. Color with a job.2structTheme{3name:String,4contrast:f64,5}67fnchoose_theme(light:bool)->Theme{8letname=iflight{"paper"}else{"night"};9Theme{name:name.to_string(),contrast:4.5}10}1112fnmain(){13letactive=choose_theme(false);14println!("{}",active.name);15}
theme.html / theme.css
1<mainclass="workspace"data-theme="night">2<h1>Color with a job.</h1>3<p>A quiet ground for your next idea.</p>4<ahref="/ports/">Find your app</a>5</main>67/* The same roles, on the web. */8.workspace{9background:var(--lc-bg);10color:var(--lc-fg);11padding:24px;12}1314.workspacea{color:var(--lc-link);}