@@ -55,13 +55,64 @@ pub fn view() -> Element(a) {
5555
5656pub fn my_stuff ( ) {
5757 component . text_page ( "My Stuff" , [
58- html . h2 ( [ attribute . class ( "text-2xl font-bold leading-tight" ) ] , [
58+ html . h2 ( [ attribute . class ( "text-2xl font-bold leading-tight my-2 " ) ] , [
5959 element . text ( "Links" ) ,
6060 ] ) ,
6161 html . p ( [ ] , list . map ( footer . socials , social ) ) ,
62+ html . h2 ( [ attribute . class ( "text-2xl font-bold leading-tight my-2" ) ] , [
63+ element . text ( "Talks" ) ,
64+ ] ) ,
65+ html . p ( [ ] , list . flat_map ( talks , talk ) ) ,
6266 ] )
6367}
6468
69+ const talks = [
70+ Talk (
71+ description : "Six to Sixteen: A Child's Programming Journey (Upcoming)" ,
72+ url : "https://2025.ffconf.org/surya" ,
73+ date : "14 November, 2025" ,
74+ conference : "FFConf 2025" ,
75+ location : "Duke of York's Cinema, Brighton" ,
76+ ) ,
77+ Talk (
78+ description : "Gleam core team panel (Upcoming)" ,
79+ url : "https://gleamgathering.com/#speakers" ,
80+ date : "21 February, 2026" ,
81+ conference : "Gleam Gathering" ,
82+ location : "Origin Workspace, Bristol" ,
83+ ) ,
84+ ]
85+
86+ type Talk {
87+ Talk (
88+ description : String ,
89+ url : String ,
90+ date : String ,
91+ conference : String ,
92+ location : String ,
93+ )
94+ }
95+
96+ fn talk ( talk : Talk ) -> List ( Element ( a) ) {
97+ [
98+ html . a (
99+ [
100+ attribute . href ( talk . url ) ,
101+ attribute . target ( "_blank" ) ,
102+ attribute . class ( "font-bold hover:underline text-xl" ) ,
103+ ] ,
104+ [
105+ element . text ( talk . description ) ,
106+ ] ,
107+ ) ,
108+ html . br ( [ ] ) ,
109+ element . text (
110+ talk . date <> " - " <> talk . conference <> " - " <> talk . location ,
111+ ) ,
112+ html . br ( [ ] ) ,
113+ ]
114+ }
115+
65116fn social ( social : footer . Social ) -> Element ( a) {
66117 html . a ( [ attribute . href ( social . url ) , attribute . target ( "_blank" ) ] , [
67118 html . img ( [
0 commit comments