88 <link rel =" preconnect" href =" https://fonts.gstatic.com" crossorigin />
99 <link rel =" stylesheet" href =" https://fonts.googleapis.com/css2?family=Inter:wght@400;800&display=swap" />
1010 {{ includeFile template =" client/public/favicon.svg" output =" client/public/favicon.svg" }}
11+ {{ #if typescript }} {{ includeFile template =" client/public/ts.svg" output =" client/public/ts.svg" }} {{ else }} {{ includeFile template =" client/public/js.svg" output =" client/public/js.svg" }} {{ /if }}
12+ {{ #if react }} {{ includeFile template =" client/public/react.svg" output =" client/public/react.svg" }} {{ /if }}
13+ {{ #if svelte }} {{ includeFile template =" client/public/svelte.svg" output =" client/public/svelte.svg" }} {{ /if }}
14+ {{ #if persistSqlite }} {{ includeFile template =" client/public/sqlite.svg" output =" client/public/sqlite.svg" }} {{ /if }}
15+ {{ #if persistPglite }} {{ includeFile template =" client/public/pglite.svg" output =" client/public/pglite.svg" }} {{ /if }}
16+ {{ #if sync }} {{ includeFile template =" client/public/sync.svg" output =" client/public/sync.svg" }} {{ /if }}
1117 <link rel =" icon" type =" image/svg+xml" href =" /favicon.svg" />
1218 <title >
1319 TinyBase {{ #if (eq appType " chat" )}} Chat{{ else if (eq appType "drawing")}} Drawing{{ else if (eq appType "game")}} Game{{ else }} Todos{{ /if }}
6975
7076 #topBarInfo {
7177 position : relative ;
78+ display : flex ;
79+ align-items : center ;
80+ gap : 0.5rem ;
81+ }
82+
83+ #topBarTech {
84+ display : flex ;
85+ align-items : center ;
86+ gap : 0.375rem ;
87+ }
88+
89+ .topBarTechIcon {
90+ width : 1.25rem ;
91+ height : 1.25rem ;
92+ display : block ;
93+ flex-shrink : 0 ;
7294 }
7395
7496 #infoIcon {
155177 TinyBase {{ #if (eq appType " chat" )}} Chat{{ else if (eq appType "drawing")}} Drawing{{ else if (eq appType "game")}} Game{{ else }} Todos{{ /if }}
156178 </div >
157179 <div id =" topBarInfo" >
180+ <div id =" topBarTech" >
181+ {{ #if typescript }}
182+ <img src =" /ts.svg" class =" topBarTechIcon" title =" Written in TypeScript" />
183+ {{ else }}
184+ <img src =" /js.svg" class =" topBarTechIcon" title =" Written in JavaScript" />
185+ {{ /if }}
186+ {{ #if react }}
187+ <img src =" /react.svg" class =" topBarTechIcon" title =" Built with React" />
188+ {{ /if }}
189+ {{ #if svelte }}
190+ <img src =" /svelte.svg" class =" topBarTechIcon" title =" Built with Svelte" />
191+ {{ /if }}
192+ {{ #if persistSqlite }}
193+ <img src =" /sqlite.svg" class =" topBarTechIcon" title =" Persists data to SQLite" />
194+ {{ else if persistPglite}}
195+ <img src =" /pglite.svg" class =" topBarTechIcon" title =" Persists data to PGlite" />
196+ {{ /if }}
197+ {{ #if sync }}
198+ <img src =" /sync.svg" class =" topBarTechIcon" title =" Data synchronization enabled" />
199+ {{ /if }}
200+ </div >
158201 <div id =" infoIcon" >
159202 i
160203 <div id =" infoTooltip" >
165208 {{ else if (eq appType "drawing")}}
166209 A collaborative drawing canvas showcasing TinyBase's state synchronization.
167210 {{ else if (eq appType "game")}}
168- A tic-tac-toe game demonstrating turn-based logic and computed game state.
211+ A tic-tac-toe game demonstrating turn-based logic and computed game state using TinyBase .
169212 {{ /if }}
170- <br ><br >
171- Built with: {{ #if typescript }} TypeScript{{ #if schemas }} (using typed store schemas){{ /if }} {{ else }} JavaScript{{ /if }} {{ #if react }} and React{{ /if }} {{ #if svelte }} and Svelte{{ /if }} .{{ #if persist }}
172- <br ><br >
173- Persistence: {{ #if persistLocalStorage }} Local Storage{{ else if persistSqlite}} SQLite{{ else if persistPglite}} PGlite{{ /if }} .{{ /if }} {{ #if sync }}
174- <br ><br >
175- Sync: {{ #if (eq syncType " remote" )}} Remote{{ else if (eq syncType "node")}} Node.js Server{{ else if (eq syncType "durable-objects")}} Durable Objects{{ /if }} .{{ /if }}
176213 </div >
177214 </div >
178215 </div >
183220 <script type =" module" src =" /src/index.{{ entryExt }} " ></script >
184221</body >
185222
186- </html >
223+ </html >
0 commit comments