codebay 0.0.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.mochi/import-css/index-0nwv3654.css +18 -0
  2. package/.mochi/import-css/index-xndx4980.css +54 -0
  3. package/.mochi/manifest.json +1612 -0
  4. package/.mochi/server-island.js +1 -0
  5. package/.mochi/svelte-client/HydratableIsland-wrq79y0w.js +1 -0
  6. package/.mochi/svelte-client/_hydrate-AppShell_2rtnxn6pgp2rh-7xgbmxxg.js +2 -0
  7. package/.mochi/svelte-client/_hydrate-AvatarsView_257s9yq1wwr4f-3cnbjpz2.js +13 -0
  8. package/.mochi/svelte-client/_hydrate-InstanceView_2ma45l9bybfhl-2ntmdm3e.js +1 -0
  9. package/.mochi/svelte-client/_hydrate-SettingsView_8hmarwmf8onq-t08spym1.js +23 -0
  10. package/.mochi/svelte-client/chunk-04qv4w6w.js +2 -0
  11. package/.mochi/svelte-client/chunk-5jnepvzx.js +2 -0
  12. package/.mochi/svelte-client/chunk-hcztrd75.js +1 -0
  13. package/.mochi/svelte-client/chunk-qxwt25hn.js +4 -0
  14. package/.mochi/svelte-client/chunk-sjmcgh7f.js +2 -0
  15. package/.mochi/svelte-client/chunk-tr67wtwn.js +2 -0
  16. package/.mochi/svelte-compile/App-f0q5n4rk.server.js +1168 -0
  17. package/.mochi/svelte-compile/Avatars-p8gfef7x.server.js +332 -0
  18. package/.mochi/svelte-compile/ClientStats-z3tn9ad6.server.js +99 -0
  19. package/.mochi/svelte-compile/DefaultError-wh77vebf.server.js +52 -0
  20. package/.mochi/svelte-compile/Instance-atjwsczx.server.js +356 -0
  21. package/.mochi/svelte-compile/Settings-q88xw6h8.server.js +1173 -0
  22. package/.mochi/svelte-compile/chunk-4kwy539a.js +14 -0
  23. package/.mochi/svelte-compile/chunk-9bjk7yx6.js +81 -0
  24. package/.mochi/svelte-compile/chunk-btmcxhqy.js +58 -0
  25. package/.mochi/svelte-compile/chunk-sxqys3nw.js +1668 -0
  26. package/.mochi/svelte-compile/chunk-v6796ga4.js +3295 -0
  27. package/.mochi/svelte-compile/chunk-we0ggtws.js +34 -0
  28. package/.mochi/svelte-css/AppBar-3bxinv4pabv8l.css +1 -0
  29. package/.mochi/svelte-css/AppShell-36mpg5smnbmuw.css +1 -0
  30. package/.mochi/svelte-css/Avatar-24th63awm9mna.css +1 -0
  31. package/.mochi/svelte-css/AvatarEditor-1ryrs1md5g36y.css +1 -0
  32. package/.mochi/svelte-css/AvatarsView-3hq37u4dgtljn.css +1 -0
  33. package/.mochi/svelte-css/BackLink-2wlu0eovz9j86.css +1 -0
  34. package/.mochi/svelte-css/BranchBox-1yqu1q2mgnjwz.css +1 -0
  35. package/.mochi/svelte-css/Brand-1la7zw5uhcbl4.css +1 -0
  36. package/.mochi/svelte-css/Button-2vtbrzb5kgu25.css +1 -0
  37. package/.mochi/svelte-css/CheckmarkIcon-3qlazj2oc50jc.css +1 -0
  38. package/.mochi/svelte-css/ClientStats-19qzckq40p2q9.css +1 -0
  39. package/.mochi/svelte-css/CoinButton-1rej3sh3tkjud.css +1 -0
  40. package/.mochi/svelte-css/CredMenu-9hwgeptp7crb.css +1 -0
  41. package/.mochi/svelte-css/DashboardView-1cy4xpqhja9sx.css +1 -0
  42. package/.mochi/svelte-css/DefaultError-2b0daamydxgb2.css +1 -0
  43. package/.mochi/svelte-css/ErrorIcon-2x0tzsqxskw28.css +1 -0
  44. package/.mochi/svelte-css/FolderBrowser-1x428zb3f2kti.css +1 -0
  45. package/.mochi/svelte-css/HealthBox-er2her0jukwl.css +1 -0
  46. package/.mochi/svelte-css/IdeBar-2qoqi2ya9zdn3.css +1 -0
  47. package/.mochi/svelte-css/IdeLoader-26rlko8e00j3g.css +1 -0
  48. package/.mochi/svelte-css/InstanceCard-16f77aysm7lgp.css +1 -0
  49. package/.mochi/svelte-css/InstanceView-wq85bxtusont.css +1 -0
  50. package/.mochi/svelte-css/LoaderIcon-soq5wt3p05ye.css +1 -0
  51. package/.mochi/svelte-css/PortsBox-1t25b5yg7jva3.css +1 -0
  52. package/.mochi/svelte-css/SettingsCog-jftyadvo64qo.css +1 -0
  53. package/.mochi/svelte-css/SettingsView-1nfdwnm16cpp2.css +1 -0
  54. package/.mochi/svelte-css/Skeleton-8k69usiju43h.css +1 -0
  55. package/.mochi/svelte-css/StatusBadge-3mq0j7z6aq4j.css +1 -0
  56. package/.mochi/svelte-css/ThemePicker-1ir8jyocm8mvi.css +1 -0
  57. package/.mochi/svelte-css/ToastBar-3havgkmtofntq.css +1 -0
  58. package/.mochi/svelte-css/ToastIcon-2z5wrkc95khg0.css +1 -0
  59. package/.mochi/svelte-css/ToastMessage-2jfwb2og2lfa8.css +1 -0
  60. package/.mochi/svelte-css/ToastWrapper-1fbnym10rm2nv.css +1 -0
  61. package/.mochi/svelte-css/Toaster-kk60j193854n.css +1 -0
  62. package/.mochi/svelte-css/TopBar-2q87li6yt8ids.css +1 -0
  63. package/LICENSE +21 -0
  64. package/README.md +34 -3
  65. package/bin/codebay.ts +22 -0
  66. package/migrations/0001_init.sql +20 -0
  67. package/migrations/0002_port_forwards.sql +9 -0
  68. package/migrations/0003_options.sql +4 -0
  69. package/migrations/0004_instance_image.sql +1 -0
  70. package/package.json +87 -9
  71. package/public/sounds/done.wav +0 -0
  72. package/public/sounds/waiting.wav +0 -0
  73. package/src/__fixtures__/HelloWorld.svelte +4 -0
  74. package/src/additional-svelte-typings.d.ts +1 -0
  75. package/src/api.ts +61 -0
  76. package/src/avatars/anchor.ts +17 -0
  77. package/src/avatars/bear.ts +17 -0
  78. package/src/avatars/bee.ts +17 -0
  79. package/src/avatars/bob-marley.ts +17 -0
  80. package/src/avatars/car.ts +17 -0
  81. package/src/avatars/carpathians.ts +17 -0
  82. package/src/avatars/cat-body.ts +17 -0
  83. package/src/avatars/cat-sits.ts +17 -0
  84. package/src/avatars/cat.ts +17 -0
  85. package/src/avatars/celtic-cross.ts +17 -0
  86. package/src/avatars/cherry.ts +17 -0
  87. package/src/avatars/cotton.ts +17 -0
  88. package/src/avatars/crab.ts +17 -0
  89. package/src/avatars/crown.ts +17 -0
  90. package/src/avatars/diamond.ts +17 -0
  91. package/src/avatars/dog.ts +17 -0
  92. package/src/avatars/elephant.ts +17 -0
  93. package/src/avatars/fish.ts +17 -0
  94. package/src/avatars/fleur-de-lis.ts +17 -0
  95. package/src/avatars/flower.ts +17 -0
  96. package/src/avatars/fox.ts +17 -0
  97. package/src/avatars/frog.ts +17 -0
  98. package/src/avatars/ghost.ts +17 -0
  99. package/src/avatars/giraffe.ts +17 -0
  100. package/src/avatars/glasses.ts +17 -0
  101. package/src/avatars/heart.ts +17 -0
  102. package/src/avatars/index.ts +128 -0
  103. package/src/avatars/invader.ts +17 -0
  104. package/src/avatars/kangaroo.ts +17 -0
  105. package/src/avatars/key.ts +17 -0
  106. package/src/avatars/lightning.ts +17 -0
  107. package/src/avatars/mushroom.ts +17 -0
  108. package/src/avatars/name-prompts.ts +30 -0
  109. package/src/avatars/octopus.ts +17 -0
  110. package/src/avatars/owl.ts +17 -0
  111. package/src/avatars/penguin.ts +17 -0
  112. package/src/avatars/planet.ts +17 -0
  113. package/src/avatars/rabbit.ts +17 -0
  114. package/src/avatars/rat.ts +17 -0
  115. package/src/avatars/robot.ts +17 -0
  116. package/src/avatars/rocket.ts +17 -0
  117. package/src/avatars/sea.ts +17 -0
  118. package/src/avatars/serialize.ts +65 -0
  119. package/src/avatars/skull.ts +17 -0
  120. package/src/avatars/snail.ts +17 -0
  121. package/src/avatars/snake.ts +17 -0
  122. package/src/avatars/snakegame.ts +17 -0
  123. package/src/avatars/star.ts +17 -0
  124. package/src/avatars/svelte.ts +17 -0
  125. package/src/avatars/target.ts +17 -0
  126. package/src/avatars/tree.ts +17 -0
  127. package/src/avatars/types.ts +24 -0
  128. package/src/avatars/ukraine.ts +17 -0
  129. package/src/avatars/whale.ts +17 -0
  130. package/src/avatars/wheat.ts +17 -0
  131. package/src/avatars/yinyan.ts +17 -0
  132. package/src/components/AppBar.svelte +35 -0
  133. package/src/components/AppShell.svelte +302 -0
  134. package/src/components/Avatar.svelte +235 -0
  135. package/src/components/AvatarEditor.svelte +297 -0
  136. package/src/components/AvatarsView.svelte +115 -0
  137. package/src/components/BranchBox.svelte +32 -0
  138. package/src/components/Brand.svelte +41 -0
  139. package/src/components/Button.svelte +161 -0
  140. package/src/components/CoinButton.svelte +121 -0
  141. package/src/components/CredMenu.svelte +171 -0
  142. package/src/components/DashboardView.svelte +198 -0
  143. package/src/components/FolderBrowser.svelte +635 -0
  144. package/src/components/HealthBox.svelte +161 -0
  145. package/src/components/IdeBar.svelte +186 -0
  146. package/src/components/IdeLoader.svelte +135 -0
  147. package/src/components/InstanceCard.svelte +220 -0
  148. package/src/components/InstanceView.svelte +567 -0
  149. package/src/components/PortsBox.svelte +74 -0
  150. package/src/components/SettingsCog.svelte +22 -0
  151. package/src/components/SettingsView.svelte +1494 -0
  152. package/src/components/Skeleton.svelte +43 -0
  153. package/src/components/StatusBadge.svelte +54 -0
  154. package/src/components/ThemePicker.svelte +77 -0
  155. package/src/components/TopBar.svelte +64 -0
  156. package/src/components/UiShowcase.svelte +578 -0
  157. package/src/components/ui-showcase/ComponentDemo.svelte +85 -0
  158. package/src/container-injections/attention-hooks.ts +117 -0
  159. package/src/container-injections/claude-aliases.ts +43 -0
  160. package/src/container-injections/claude-code-credentials.ts +145 -0
  161. package/src/container-injections/claude-code-custom.ts +125 -0
  162. package/src/container-injections/claude-no-coauthor.ts +35 -0
  163. package/src/container-injections/claude-skip-permissions.ts +38 -0
  164. package/src/container-injections/claude-statusline.ts +109 -0
  165. package/src/container-injections/git-identity.ts +63 -0
  166. package/src/container-injections/git-safe-directory.ts +18 -0
  167. package/src/container-injections/github-credentials.ts +162 -0
  168. package/src/container-injections/host-env-vars.ts +108 -0
  169. package/src/container-injections/tmux.ts +67 -0
  170. package/src/fontsource.d.ts +3 -0
  171. package/src/index.ts +81 -0
  172. package/src/lib/auth.server.ts +95 -0
  173. package/src/lib/bridge.server.ts +34 -0
  174. package/src/lib/config.server.ts +140 -0
  175. package/src/lib/crypto.server.ts +12 -0
  176. package/src/lib/db.server.ts +196 -0
  177. package/src/lib/devcontainer.server.ts +511 -0
  178. package/src/lib/docker-client.server.ts +61 -0
  179. package/src/lib/docker.server.ts +139 -0
  180. package/src/lib/exec.server.ts +92 -0
  181. package/src/lib/git.server.ts +68 -0
  182. package/src/lib/health.server.ts +105 -0
  183. package/src/lib/injections.server.ts +72 -0
  184. package/src/lib/instances.server.ts +552 -0
  185. package/src/lib/links.ts +9 -0
  186. package/src/lib/picker.server.ts +46 -0
  187. package/src/lib/ports.server.ts +9 -0
  188. package/src/lib/proxy.server.ts +170 -0
  189. package/src/lib/repo-url.ts +60 -0
  190. package/src/lib/spawn.server.ts +14 -0
  191. package/src/lib/theme.server.ts +22 -0
  192. package/src/live.ts +50 -0
  193. package/src/pages/App.svelte +14 -0
  194. package/src/pages/Avatars.svelte +9 -0
  195. package/src/pages/Instance.svelte +9 -0
  196. package/src/pages/Settings.svelte +76 -0
  197. package/src/pages/UI.svelte +10 -0
  198. package/src/routes.ts +444 -0
  199. package/src/settings.ts +14 -0
  200. package/src/shell.html +100 -0
  201. package/src/sound.ts +69 -0
  202. package/src/theme.ts +24 -0
  203. package/src/types.ts +79 -0
  204. package/svelte.config.js +5 -0
@@ -0,0 +1,1668 @@
1
+ // @bun
2
+ import {
3
+ Icon
4
+ } from "./chunk-v6796ga4.js";
5
+
6
+ // src/avatars/anchor.ts
7
+ var art = {
8
+ name: "anchor",
9
+ pixels: [
10
+ "...##...",
11
+ "..#..#..",
12
+ "..#..#..",
13
+ ".######.",
14
+ "...##...",
15
+ "#..##..#",
16
+ "########",
17
+ ".######."
18
+ ]
19
+ };
20
+ var anchor_default = art;
21
+
22
+ // src/avatars/bear.ts
23
+ var art2 = {
24
+ name: "bear",
25
+ pixels: [
26
+ "##....##",
27
+ "###..###",
28
+ "########",
29
+ "##.##.##",
30
+ "########",
31
+ "########",
32
+ "###..###",
33
+ ".######."
34
+ ]
35
+ };
36
+ var bear_default = art2;
37
+
38
+ // src/avatars/bee.ts
39
+ var art3 = {
40
+ name: "bee",
41
+ pixels: [
42
+ ".#....#.",
43
+ "##.##.##",
44
+ "#.####.#",
45
+ ".######.",
46
+ ".######.",
47
+ "........",
48
+ ".######.",
49
+ "..####.."
50
+ ]
51
+ };
52
+ var bee_default = art3;
53
+
54
+ // src/avatars/bob-marley.ts
55
+ var art4 = {
56
+ name: "bob-marley",
57
+ pixels: [
58
+ "..####..",
59
+ ".######.",
60
+ "##....##",
61
+ "#.#..#.#",
62
+ "#......#",
63
+ "##.##.##",
64
+ "#.####.#",
65
+ "#..##..#"
66
+ ]
67
+ };
68
+ var bob_marley_default = art4;
69
+
70
+ // src/avatars/car.ts
71
+ var art5 = {
72
+ name: "car",
73
+ pixels: [
74
+ "........",
75
+ "..####..",
76
+ "..#..#..",
77
+ "..#..#..",
78
+ "########",
79
+ "########",
80
+ "########",
81
+ ".##..##."
82
+ ]
83
+ };
84
+ var car_default = art5;
85
+
86
+ // src/avatars/carpathians.ts
87
+ var art6 = {
88
+ name: "carpathians",
89
+ pixels: [
90
+ "........",
91
+ ".#......",
92
+ "......##",
93
+ ".....###",
94
+ "#...####",
95
+ "##.#####",
96
+ "###.####",
97
+ "####.###"
98
+ ]
99
+ };
100
+ var carpathians_default = art6;
101
+
102
+ // src/avatars/cat.ts
103
+ var art7 = {
104
+ name: "cat",
105
+ pixels: [
106
+ "##....##",
107
+ "##....##",
108
+ "########",
109
+ "##.##.##",
110
+ "########",
111
+ "#.####.#",
112
+ "########",
113
+ ".####.##"
114
+ ]
115
+ };
116
+ var cat_default = art7;
117
+
118
+ // src/avatars/cat-body.ts
119
+ var art8 = {
120
+ name: "cat-body",
121
+ pixels: [
122
+ "....##..",
123
+ "#.#..###",
124
+ "###....#",
125
+ "###..###",
126
+ "########",
127
+ "########",
128
+ "#.#..#.#",
129
+ "#.#..#.#"
130
+ ]
131
+ };
132
+ var cat_body_default = art8;
133
+
134
+ // src/avatars/cat-sits.ts
135
+ var art9 = {
136
+ name: "cat-sits",
137
+ pixels: [
138
+ "..#..#..",
139
+ "..####..",
140
+ "..####..",
141
+ ".####...",
142
+ "####..##",
143
+ "####.#.#",
144
+ "####...#",
145
+ ".######."
146
+ ]
147
+ };
148
+ var cat_sits_default = art9;
149
+
150
+ // src/avatars/celtic-cross.ts
151
+ var art10 = {
152
+ name: "celtic-cross",
153
+ pixels: [
154
+ "...##...",
155
+ ".#.##.#.",
156
+ "...##...",
157
+ "########",
158
+ "########",
159
+ "...##...",
160
+ ".#.##.#.",
161
+ "...##..."
162
+ ]
163
+ };
164
+ var celtic_cross_default = art10;
165
+
166
+ // src/avatars/cherry.ts
167
+ var art11 = {
168
+ name: "cherry",
169
+ pixels: [
170
+ "......##",
171
+ "....###.",
172
+ "...##.#.",
173
+ "..#..#..",
174
+ ".##.##..",
175
+ "#.###.#.",
176
+ "#.###.#.",
177
+ ".###.#.."
178
+ ]
179
+ };
180
+ var cherry_default = art11;
181
+
182
+ // src/avatars/cotton.ts
183
+ var art12 = {
184
+ name: "cotton",
185
+ pixels: [
186
+ "....##..",
187
+ "....##..",
188
+ ".##.....",
189
+ ".##..##.",
190
+ "...#.##.",
191
+ "....#...",
192
+ "...#....",
193
+ "...#...."
194
+ ]
195
+ };
196
+ var cotton_default = art12;
197
+
198
+ // src/avatars/crab.ts
199
+ var art13 = {
200
+ name: "crab",
201
+ pixels: [
202
+ ".#....#.",
203
+ "##....##",
204
+ "##.##.##",
205
+ ".######.",
206
+ "########",
207
+ "##.##.##",
208
+ "##....##",
209
+ ".#....#."
210
+ ]
211
+ };
212
+ var crab_default = art13;
213
+
214
+ // src/avatars/crown.ts
215
+ var art14 = {
216
+ name: "crown",
217
+ pixels: [
218
+ "#......#",
219
+ "#..##..#",
220
+ "##.##.##",
221
+ "##.##.##",
222
+ "########",
223
+ "#.#.#.#.",
224
+ "########",
225
+ "########"
226
+ ]
227
+ };
228
+ var crown_default = art14;
229
+
230
+ // src/avatars/diamond.ts
231
+ var art15 = {
232
+ name: "diamond",
233
+ pixels: [
234
+ ".######.",
235
+ "#.#..#.#",
236
+ "########",
237
+ "##.##.##",
238
+ ".#.##.#.",
239
+ ".##..##.",
240
+ "..####..",
241
+ "...##..."
242
+ ]
243
+ };
244
+ var diamond_default = art15;
245
+
246
+ // src/avatars/dog.ts
247
+ var art16 = {
248
+ name: "dog",
249
+ pixels: [
250
+ "##....##",
251
+ "##.##.##",
252
+ "########",
253
+ "###..###",
254
+ "########",
255
+ "########",
256
+ "##.##.##",
257
+ ".######."
258
+ ]
259
+ };
260
+ var dog_default = art16;
261
+
262
+ // src/avatars/elephant.ts
263
+ var art17 = {
264
+ name: "elephant",
265
+ pixels: [
266
+ "...###..",
267
+ ".#####..",
268
+ "####.#..",
269
+ "######..",
270
+ "######.#",
271
+ "##.##.#.",
272
+ "##.##...",
273
+ "##.##..."
274
+ ]
275
+ };
276
+ var elephant_default = art17;
277
+
278
+ // src/avatars/fish.ts
279
+ var art18 = {
280
+ name: "fish",
281
+ pixels: [
282
+ "......#.",
283
+ ".###.##.",
284
+ "#####.##",
285
+ "#.#####.",
286
+ "#.#####.",
287
+ "#####.##",
288
+ ".###.##.",
289
+ "......#."
290
+ ]
291
+ };
292
+ var fish_default = art18;
293
+
294
+ // src/avatars/fleur-de-lis.ts
295
+ var art19 = {
296
+ name: "fleur-de-lis",
297
+ pixels: [
298
+ "...##...",
299
+ "...#....",
300
+ ".###.##.",
301
+ "#.##...#",
302
+ "...##...",
303
+ ".#.##.#.",
304
+ ".######.",
305
+ "...##..."
306
+ ]
307
+ };
308
+ var fleur_de_lis_default = art19;
309
+
310
+ // src/avatars/flower.ts
311
+ var art20 = {
312
+ name: "flower",
313
+ pixels: [
314
+ "..#..#..",
315
+ ".###.##.",
316
+ "########",
317
+ ".######.",
318
+ "..####..",
319
+ "...##...",
320
+ "..##.##.",
321
+ "...##..."
322
+ ]
323
+ };
324
+ var flower_default = art20;
325
+
326
+ // src/avatars/fox.ts
327
+ var art21 = {
328
+ name: "fox",
329
+ pixels: [
330
+ "##....##",
331
+ "##....##",
332
+ "########",
333
+ "###..###",
334
+ "########",
335
+ "########",
336
+ ".######.",
337
+ "..####.."
338
+ ]
339
+ };
340
+ var fox_default = art21;
341
+
342
+ // src/avatars/frog.ts
343
+ var art22 = {
344
+ name: "frog",
345
+ pixels: [
346
+ ".#....#.",
347
+ "###..###",
348
+ "########",
349
+ "########",
350
+ "########",
351
+ "########",
352
+ ".######.",
353
+ "..####.."
354
+ ]
355
+ };
356
+ var frog_default = art22;
357
+
358
+ // src/avatars/ghost.ts
359
+ var art23 = {
360
+ name: "ghost",
361
+ pixels: [
362
+ "..####..",
363
+ ".######.",
364
+ "##.##.##",
365
+ "##.##.##",
366
+ "########",
367
+ "########",
368
+ "########",
369
+ "#.##.##."
370
+ ]
371
+ };
372
+ var ghost_default = art23;
373
+
374
+ // src/avatars/giraffe.ts
375
+ var art24 = {
376
+ name: "giraffe",
377
+ pixels: [
378
+ "....#.#.",
379
+ "....####",
380
+ "....#...",
381
+ "....#...",
382
+ "....#...",
383
+ "....#...",
384
+ "#####...",
385
+ "##.##..."
386
+ ]
387
+ };
388
+ var giraffe_default = art24;
389
+
390
+ // src/avatars/glasses.ts
391
+ var art25 = {
392
+ name: "glasses",
393
+ pixels: [
394
+ "##..##..",
395
+ "#.#.##.#",
396
+ ".#######",
397
+ "........",
398
+ ".##..##.",
399
+ ".##..##.",
400
+ "#..##..#",
401
+ "########"
402
+ ]
403
+ };
404
+ var glasses_default = art25;
405
+
406
+ // src/avatars/heart.ts
407
+ var art26 = {
408
+ name: "heart",
409
+ pixels: [
410
+ ".##..##.",
411
+ "########",
412
+ "########",
413
+ "########",
414
+ ".######.",
415
+ "..####..",
416
+ "...##...",
417
+ "........"
418
+ ]
419
+ };
420
+ var heart_default = art26;
421
+
422
+ // src/avatars/invader.ts
423
+ var art27 = {
424
+ name: "invader",
425
+ pixels: [
426
+ "#......#",
427
+ ".#....#.",
428
+ "########",
429
+ "##.##.##",
430
+ "########",
431
+ "..####..",
432
+ ".##..##.",
433
+ "#.#..#.#"
434
+ ]
435
+ };
436
+ var invader_default = art27;
437
+
438
+ // src/avatars/kangaroo.ts
439
+ var art28 = {
440
+ name: "kangaroo",
441
+ pixels: [
442
+ "..#.#...",
443
+ "..###...",
444
+ ".####...",
445
+ "...##...",
446
+ "..#####.",
447
+ "...####.",
448
+ "...##.#.",
449
+ "..###..#"
450
+ ]
451
+ };
452
+ var kangaroo_default = art28;
453
+
454
+ // src/avatars/key.ts
455
+ var art29 = {
456
+ name: "key",
457
+ pixels: [
458
+ ".####...",
459
+ "##..##..",
460
+ "##..##..",
461
+ "##..##..",
462
+ ".####...",
463
+ "..##....",
464
+ "..####..",
465
+ "..##.##."
466
+ ]
467
+ };
468
+ var key_default = art29;
469
+
470
+ // src/avatars/lightning.ts
471
+ var art30 = {
472
+ name: "lightning",
473
+ pixels: [
474
+ "...#####",
475
+ "..####..",
476
+ ".####...",
477
+ ".#######",
478
+ "..######",
479
+ "...#####",
480
+ "..####..",
481
+ ".###...."
482
+ ]
483
+ };
484
+ var lightning_default = art30;
485
+
486
+ // src/avatars/mushroom.ts
487
+ var art31 = {
488
+ name: "mushroom",
489
+ pixels: [
490
+ "..####..",
491
+ ".######.",
492
+ "########",
493
+ "########",
494
+ "########",
495
+ "..####..",
496
+ "..####..",
497
+ ".######."
498
+ ]
499
+ };
500
+ var mushroom_default = art31;
501
+
502
+ // src/avatars/octopus.ts
503
+ var art32 = {
504
+ name: "octopus",
505
+ pixels: [
506
+ "..####..",
507
+ ".######.",
508
+ "###..###",
509
+ "########",
510
+ "########",
511
+ "########",
512
+ ".######.",
513
+ "#.#.#.#."
514
+ ]
515
+ };
516
+ var octopus_default = art32;
517
+
518
+ // src/avatars/owl.ts
519
+ var art33 = {
520
+ name: "owl",
521
+ pixels: [
522
+ "#......#",
523
+ "##....##",
524
+ ".######.",
525
+ ".#.##.#.",
526
+ ".#.##.#.",
527
+ ".######.",
528
+ ".######.",
529
+ "..#..#.."
530
+ ]
531
+ };
532
+ var owl_default = art33;
533
+
534
+ // src/avatars/penguin.ts
535
+ var art34 = {
536
+ name: "penguin",
537
+ pixels: [
538
+ "..####..",
539
+ ".######.",
540
+ ".##..##.",
541
+ ".#.##.#.",
542
+ "##...##.",
543
+ "##...##.",
544
+ "#######.",
545
+ ".#....#."
546
+ ]
547
+ };
548
+ var penguin_default = art34;
549
+
550
+ // src/avatars/planet.ts
551
+ var art35 = {
552
+ name: "planet",
553
+ pixels: [
554
+ "...###..",
555
+ "..#####.",
556
+ "#.#####.",
557
+ ".#######",
558
+ "..#####.",
559
+ "..####..",
560
+ ".###....",
561
+ "........"
562
+ ]
563
+ };
564
+ var planet_default = art35;
565
+
566
+ // src/avatars/rabbit.ts
567
+ var art36 = {
568
+ name: "rabbit",
569
+ pixels: [
570
+ ".#....#.",
571
+ ".##..##.",
572
+ ".##..##.",
573
+ "..####..",
574
+ ".######.",
575
+ "###..###",
576
+ "#..##..#",
577
+ ".######."
578
+ ]
579
+ };
580
+ var rabbit_default = art36;
581
+
582
+ // src/avatars/rat.ts
583
+ var art37 = {
584
+ name: "rat",
585
+ pixels: [
586
+ "...#.#..",
587
+ "...#####",
588
+ "...#.#..",
589
+ "..###...",
590
+ ".####.#.",
591
+ "#####..#",
592
+ "####..#.",
593
+ ".#####.."
594
+ ]
595
+ };
596
+ var rat_default = art37;
597
+
598
+ // src/avatars/robot.ts
599
+ var art38 = {
600
+ name: "robot",
601
+ pixels: [
602
+ "...##...",
603
+ "...#....",
604
+ ".######.",
605
+ "#.####.#",
606
+ "#..##..#",
607
+ ".######.",
608
+ ".#####..",
609
+ ".######."
610
+ ]
611
+ };
612
+ var robot_default = art38;
613
+
614
+ // src/avatars/rocket.ts
615
+ var art39 = {
616
+ name: "rocket",
617
+ pixels: [
618
+ "...##...",
619
+ "..####..",
620
+ "..#..#..",
621
+ "..####..",
622
+ ".######.",
623
+ "##.##.##",
624
+ "..#..#..",
625
+ "...##..."
626
+ ]
627
+ };
628
+ var rocket_default = art39;
629
+
630
+ // src/avatars/sea.ts
631
+ var art40 = {
632
+ name: "sea",
633
+ pixels: [
634
+ "#.#.....",
635
+ ".#..#.#.",
636
+ ".....#..",
637
+ "...#....",
638
+ "........",
639
+ "########",
640
+ ".##..###",
641
+ "##.###.."
642
+ ]
643
+ };
644
+ var sea_default = art40;
645
+
646
+ // src/avatars/skull.ts
647
+ var art41 = {
648
+ name: "skull",
649
+ pixels: [
650
+ ".######.",
651
+ "########",
652
+ "#.####.#",
653
+ "#.#..#.#",
654
+ "########",
655
+ "##.##.##",
656
+ ".#.##.#.",
657
+ ".##.##.."
658
+ ]
659
+ };
660
+ var skull_default = art41;
661
+
662
+ // src/avatars/snail.ts
663
+ var art42 = {
664
+ name: "snail",
665
+ pixels: [
666
+ ".####..#",
667
+ "#....#.#",
668
+ "#.##.#.#",
669
+ "#.#..#.#",
670
+ "#....##.",
671
+ "#...#.#.",
672
+ "######.#",
673
+ ".######."
674
+ ]
675
+ };
676
+ var snail_default = art42;
677
+
678
+ // src/avatars/snake.ts
679
+ var art43 = {
680
+ name: "snake",
681
+ pixels: [
682
+ "...###..",
683
+ ".###..#.",
684
+ "#.#..#..",
685
+ "##..#..#",
686
+ "...#..#.",
687
+ "..#...##",
688
+ ".#.....#",
689
+ ".######."
690
+ ]
691
+ };
692
+ var snake_default = art43;
693
+
694
+ // src/avatars/snakegame.ts
695
+ var art44 = {
696
+ name: "snakegame",
697
+ pixels: [
698
+ "########",
699
+ "#......#",
700
+ "#.##...#",
701
+ "#.#..#.#",
702
+ "#.##...#",
703
+ "#..##..#",
704
+ "#......#",
705
+ "########"
706
+ ]
707
+ };
708
+ var snakegame_default = art44;
709
+
710
+ // src/avatars/star.ts
711
+ var art45 = {
712
+ name: "star",
713
+ pixels: [
714
+ "...##...",
715
+ "...##...",
716
+ "########",
717
+ ".######.",
718
+ ".######.",
719
+ ".##..##.",
720
+ "##....##",
721
+ "#......#"
722
+ ]
723
+ };
724
+ var star_default = art45;
725
+
726
+ // src/avatars/svelte.ts
727
+ var art46 = {
728
+ name: "svelte",
729
+ pixels: [
730
+ "..#####.",
731
+ ".###..#.",
732
+ "##...#..",
733
+ "########",
734
+ "########",
735
+ "..#...##",
736
+ ".#..###.",
737
+ ".####..."
738
+ ]
739
+ };
740
+ var svelte_default = art46;
741
+
742
+ // src/avatars/target.ts
743
+ var art47 = {
744
+ name: "target",
745
+ pixels: [
746
+ "..####..",
747
+ ".#....#.",
748
+ "#......#",
749
+ "#..##..#",
750
+ "#..##..#",
751
+ "#......#",
752
+ ".#....#.",
753
+ "..####.."
754
+ ]
755
+ };
756
+ var target_default = art47;
757
+
758
+ // src/avatars/tree.ts
759
+ var art48 = {
760
+ name: "tree",
761
+ pixels: [
762
+ "...##...",
763
+ "..####..",
764
+ ".######.",
765
+ "..####..",
766
+ ".######.",
767
+ "########",
768
+ "...##...",
769
+ "...##..."
770
+ ]
771
+ };
772
+ var tree_default = art48;
773
+
774
+ // src/avatars/ukraine.ts
775
+ var art49 = {
776
+ name: "ukraine",
777
+ pixels: [
778
+ "...##...",
779
+ "#..##..#",
780
+ "##.##.##",
781
+ "#..##..#",
782
+ "##.##.##",
783
+ "#..##..#",
784
+ "########",
785
+ "...##..."
786
+ ]
787
+ };
788
+ var ukraine_default = art49;
789
+
790
+ // src/avatars/whale.ts
791
+ var art50 = {
792
+ name: "whale",
793
+ pixels: [
794
+ "....#...",
795
+ "...###..",
796
+ "..####.#",
797
+ ".#.####.",
798
+ "######.#",
799
+ ".#####..",
800
+ "..####..",
801
+ "...##..."
802
+ ]
803
+ };
804
+ var whale_default = art50;
805
+
806
+ // src/avatars/wheat.ts
807
+ var art51 = {
808
+ name: "wheat",
809
+ pixels: [
810
+ "........",
811
+ "....#.#.",
812
+ "...#.#..",
813
+ "..#.#.#.",
814
+ "..##.#..",
815
+ "..###...",
816
+ ".#......",
817
+ "#......."
818
+ ]
819
+ };
820
+ var wheat_default = art51;
821
+
822
+ // src/avatars/yinyan.ts
823
+ var art52 = {
824
+ name: "yinyan",
825
+ pixels: [
826
+ ".......#",
827
+ ".##...##",
828
+ ".##..###",
829
+ "....####",
830
+ "...#####",
831
+ "..###..#",
832
+ ".####..#",
833
+ "########"
834
+ ]
835
+ };
836
+ var yinyan_default = art52;
837
+
838
+ // src/avatars/types.ts
839
+ var OFF = 0;
840
+ var ON = 1;
841
+ var ROWS = 8;
842
+ var COLS = 8;
843
+ function decode(art53) {
844
+ const cells = [];
845
+ for (const row of art53.pixels) {
846
+ for (const ch of row) {
847
+ cells.push(ch === "#" ? ON : OFF);
848
+ }
849
+ }
850
+ return cells;
851
+ }
852
+
853
+ // src/avatars/index.ts
854
+ var avatars = [
855
+ anchor_default,
856
+ bear_default,
857
+ bee_default,
858
+ bob_marley_default,
859
+ car_default,
860
+ carpathians_default,
861
+ cat_default,
862
+ cat_body_default,
863
+ cat_sits_default,
864
+ celtic_cross_default,
865
+ cherry_default,
866
+ cotton_default,
867
+ crab_default,
868
+ crown_default,
869
+ diamond_default,
870
+ dog_default,
871
+ elephant_default,
872
+ fish_default,
873
+ fleur_de_lis_default,
874
+ flower_default,
875
+ fox_default,
876
+ frog_default,
877
+ ghost_default,
878
+ giraffe_default,
879
+ glasses_default,
880
+ heart_default,
881
+ invader_default,
882
+ kangaroo_default,
883
+ key_default,
884
+ lightning_default,
885
+ mushroom_default,
886
+ octopus_default,
887
+ owl_default,
888
+ penguin_default,
889
+ planet_default,
890
+ rabbit_default,
891
+ rat_default,
892
+ robot_default,
893
+ rocket_default,
894
+ sea_default,
895
+ skull_default,
896
+ snail_default,
897
+ snake_default,
898
+ snakegame_default,
899
+ star_default,
900
+ svelte_default,
901
+ target_default,
902
+ tree_default,
903
+ ukraine_default,
904
+ whale_default,
905
+ wheat_default,
906
+ yinyan_default
907
+ ];
908
+ function fnv1a(s) {
909
+ let h = 2166136261;
910
+ for (let i = 0;i < s.length; i++) {
911
+ h ^= s.charCodeAt(i);
912
+ h = Math.imul(h, 16777619);
913
+ }
914
+ return h >>> 0;
915
+ }
916
+ function pickAvatar(id) {
917
+ return avatars[fnv1a(id) % avatars.length];
918
+ }
919
+
920
+ // src/components/Avatar.svelte
921
+ import"svelte/internal/flags/async";
922
+ import * as $ from "svelte/internal/server";
923
+ function Avatar($$renderer, $$props) {
924
+ $$renderer.component(($$renderer2) => {
925
+ let { id = "", name, scale = 6, art: art53, interactive = false } = $$props;
926
+ let pressed = false;
927
+ let ghosting = false;
928
+ let bx = "50%";
929
+ let by = "50%";
930
+ let spin = 0;
931
+ let hue = 0;
932
+ let ghostTimer;
933
+ function aim(e) {
934
+ const rect = e.currentTarget.getBoundingClientRect();
935
+ const px = (e.clientX - rect.left) / rect.width;
936
+ const py = (e.clientY - rect.top) / rect.height;
937
+ bx = px * 100 + "%";
938
+ by = py * 100 + "%";
939
+ hue = (px * 360 + py * 140) % 360;
940
+ spin = (py * 300 - px * 120 + 360) % 360;
941
+ }
942
+ function onpointerdown(e) {
943
+ if (!interactive)
944
+ return;
945
+ e.currentTarget.setPointerCapture?.(e.pointerId);
946
+ aim(e);
947
+ clearTimeout(ghostTimer);
948
+ ghosting = false;
949
+ pressed = true;
950
+ }
951
+ function onpointermove(e) {
952
+ if (pressed)
953
+ aim(e);
954
+ }
955
+ function release() {
956
+ if (!pressed)
957
+ return;
958
+ pressed = false;
959
+ ghosting = true;
960
+ clearTimeout(ghostTimer);
961
+ ghostTimer = setTimeout(() => ghosting = false, 250);
962
+ }
963
+ const s = $.derived(() => Math.max(1, Math.round(scale)));
964
+ const gap = $.derived(() => s() >= 2 ? 0.5 : 0);
965
+ const cells = $.derived(() => decode(art53 ?? pickAvatar(id)));
966
+ const grid = $.derived(() => Array.from({ length: 100 }, (_, i) => {
967
+ const r = Math.floor(i / 10);
968
+ const c = i % 10;
969
+ const inner = r >= 1 && r <= 8 && c >= 1 && c <= 8;
970
+ return inner ? cells()[(r - 1) * 8 + (c - 1)] : 0;
971
+ }));
972
+ $$renderer2.push(`<span${$.attr_class("avatar svelte-1pre9qb", undefined, {
973
+ interactive,
974
+ pressed,
975
+ ghosting
976
+ })} role="img"${$.attr("aria-label", name)}${$.attr("title", name)}${$.attr_style(`width:${$.stringify(10 * s())}px;height:${$.stringify(10 * s())}px;--gap:${$.stringify(gap())}px;--bx:${$.stringify(bx)};--by:${$.stringify(by)};--spin:${$.stringify(spin)}deg;--hue:${$.stringify(hue)}deg`)}><!--[-->`);
977
+ const each_array = $.ensure_array_like(grid());
978
+ for (let i = 0, $$length = each_array.length;i < $$length; i++) {
979
+ let cell = each_array[i];
980
+ $$renderer2.push(`<span${$.attr_class("px svelte-1pre9qb", undefined, { on: cell === 1 })}></span>`);
981
+ }
982
+ $$renderer2.push(`<!--]--> `);
983
+ if (interactive) {
984
+ $$renderer2.push("<!--[0-->");
985
+ $$renderer2.push(`<span class="invert svelte-1pre9qb" aria-hidden="true"></span> <span class="bloom svelte-1pre9qb" aria-hidden="true"></span>`);
986
+ } else {
987
+ $$renderer2.push("<!--[-1-->");
988
+ }
989
+ $$renderer2.push(`<!--]--></span>`);
990
+ });
991
+ }
992
+
993
+ // src/components/Button.svelte
994
+ import"svelte/internal/flags/async";
995
+ import * as $2 from "svelte/internal/server";
996
+ function Button($$renderer, $$props) {
997
+ let {
998
+ variant = "default",
999
+ size = "md",
1000
+ ghost = false,
1001
+ icon,
1002
+ iconSize,
1003
+ href,
1004
+ disabled = false,
1005
+ onclick,
1006
+ children,
1007
+ $$slots,
1008
+ $$events,
1009
+ ...rest
1010
+ } = $$props;
1011
+ const Icon2 = $2.derived(() => icon);
1012
+ const resolvedIconSize = $2.derived(() => iconSize ?? (size === "lg" ? 18 : size === "sm" ? 13 : 15));
1013
+ if (href) {
1014
+ $$renderer.push("<!--[0-->");
1015
+ $$renderer.push(`<a${$2.attributes({
1016
+ class: `btn ${$2.stringify(variant)} ${$2.stringify(size)}`,
1017
+ href: disabled ? undefined : href,
1018
+ "aria-disabled": disabled || undefined,
1019
+ tabindex: disabled ? -1 : undefined,
1020
+ ...rest
1021
+ }, "svelte-1klcfz0", { ghost })}>`);
1022
+ if (Icon2()) {
1023
+ $$renderer.push("<!--[0-->");
1024
+ if (Icon2()) {
1025
+ $$renderer.push("<!--[-->");
1026
+ Icon2()($$renderer, { size: resolvedIconSize() });
1027
+ $$renderer.push("<!--]-->");
1028
+ } else {
1029
+ $$renderer.push("<!--[!-->");
1030
+ $$renderer.push("<!--]-->");
1031
+ }
1032
+ } else {
1033
+ $$renderer.push("<!--[-1-->");
1034
+ }
1035
+ $$renderer.push(`<!--]--> `);
1036
+ children?.($$renderer);
1037
+ $$renderer.push(`<!----></a>`);
1038
+ } else {
1039
+ $$renderer.push("<!--[-1-->");
1040
+ $$renderer.push(`<button${$2.attributes({
1041
+ class: `btn ${$2.stringify(variant)} ${$2.stringify(size)}`,
1042
+ disabled,
1043
+ ...rest
1044
+ }, "svelte-1klcfz0", { ghost })}>`);
1045
+ if (Icon2()) {
1046
+ $$renderer.push("<!--[0-->");
1047
+ if (Icon2()) {
1048
+ $$renderer.push("<!--[-->");
1049
+ Icon2()($$renderer, { size: resolvedIconSize() });
1050
+ $$renderer.push("<!--]-->");
1051
+ } else {
1052
+ $$renderer.push("<!--[!-->");
1053
+ $$renderer.push("<!--]-->");
1054
+ }
1055
+ } else {
1056
+ $$renderer.push("<!--[-1-->");
1057
+ }
1058
+ $$renderer.push(`<!--]--> `);
1059
+ children?.($$renderer);
1060
+ $$renderer.push(`<!----></button>`);
1061
+ }
1062
+ $$renderer.push(`<!--]-->`);
1063
+ }
1064
+
1065
+ // node_modules/svelte-french-toast/dist/components/Toaster.svelte
1066
+ import"svelte/internal/flags/async";
1067
+ import * as $10 from "svelte/internal/server";
1068
+
1069
+ // node_modules/svelte-french-toast/dist/core/store.js
1070
+ import { get as get2, writable } from "svelte/store";
1071
+
1072
+ // node_modules/svelte-writable-derived/index.mjs
1073
+ import { derived as derived3, get } from "svelte/store";
1074
+ function writableDerived(origins, derive, reflect, initial) {
1075
+ var childDerivedSetter, originValues, blockNextDerive = false;
1076
+ var reflectOldValues = reflect.length >= 2;
1077
+ var wrappedDerive = (got, set, update2) => {
1078
+ childDerivedSetter = set;
1079
+ if (reflectOldValues) {
1080
+ originValues = got;
1081
+ }
1082
+ if (!blockNextDerive) {
1083
+ let returned = derive(got, set, update2);
1084
+ if (derive.length < 2) {
1085
+ set(returned);
1086
+ } else {
1087
+ return returned;
1088
+ }
1089
+ }
1090
+ blockNextDerive = false;
1091
+ };
1092
+ var childDerived = derived3(origins, wrappedDerive, initial);
1093
+ var singleOrigin = !Array.isArray(origins);
1094
+ function doReflect(reflecting) {
1095
+ var setWith = reflect(reflecting, originValues);
1096
+ if (singleOrigin) {
1097
+ blockNextDerive = true;
1098
+ origins.set(setWith);
1099
+ } else {
1100
+ setWith.forEach((value, i) => {
1101
+ blockNextDerive = true;
1102
+ origins[i].set(value);
1103
+ });
1104
+ }
1105
+ blockNextDerive = false;
1106
+ }
1107
+ var tryingSet = false;
1108
+ function update(fn) {
1109
+ var isUpdated, mutatedBySubscriptions, oldValue, newValue;
1110
+ if (tryingSet) {
1111
+ newValue = fn(get(childDerived));
1112
+ childDerivedSetter(newValue);
1113
+ return;
1114
+ }
1115
+ var unsubscribe = childDerived.subscribe((value) => {
1116
+ if (!tryingSet) {
1117
+ oldValue = value;
1118
+ } else if (!isUpdated) {
1119
+ isUpdated = true;
1120
+ } else {
1121
+ mutatedBySubscriptions = true;
1122
+ }
1123
+ });
1124
+ newValue = fn(oldValue);
1125
+ tryingSet = true;
1126
+ childDerivedSetter(newValue);
1127
+ unsubscribe();
1128
+ tryingSet = false;
1129
+ if (mutatedBySubscriptions) {
1130
+ newValue = get(childDerived);
1131
+ }
1132
+ if (isUpdated) {
1133
+ doReflect(newValue);
1134
+ }
1135
+ }
1136
+ return {
1137
+ subscribe: childDerived.subscribe,
1138
+ set(value) {
1139
+ update(() => value);
1140
+ },
1141
+ update
1142
+ };
1143
+ }
1144
+
1145
+ // node_modules/svelte-french-toast/dist/core/store.js
1146
+ var TOAST_LIMIT = 20;
1147
+ var toasts = writable([]);
1148
+ var pausedAt = writable(null);
1149
+ var toastTimeouts = new Map;
1150
+ var addToRemoveQueue = (toastId) => {
1151
+ if (toastTimeouts.has(toastId)) {
1152
+ return;
1153
+ }
1154
+ const timeout = setTimeout(() => {
1155
+ toastTimeouts.delete(toastId);
1156
+ remove(toastId);
1157
+ }, 1000);
1158
+ toastTimeouts.set(toastId, timeout);
1159
+ };
1160
+ var clearFromRemoveQueue = (toastId) => {
1161
+ const timeout = toastTimeouts.get(toastId);
1162
+ if (timeout) {
1163
+ clearTimeout(timeout);
1164
+ }
1165
+ };
1166
+ function update(toast) {
1167
+ if (toast.id) {
1168
+ clearFromRemoveQueue(toast.id);
1169
+ }
1170
+ toasts.update(($toasts) => $toasts.map((t) => t.id === toast.id ? { ...t, ...toast } : t));
1171
+ }
1172
+ function add(toast) {
1173
+ toasts.update(($toasts) => [toast, ...$toasts].slice(0, TOAST_LIMIT));
1174
+ }
1175
+ function upsert(toast) {
1176
+ if (get2(toasts).find((t) => t.id === toast.id)) {
1177
+ update(toast);
1178
+ } else {
1179
+ add(toast);
1180
+ }
1181
+ }
1182
+ function dismiss(toastId) {
1183
+ toasts.update(($toasts) => {
1184
+ if (toastId) {
1185
+ addToRemoveQueue(toastId);
1186
+ } else {
1187
+ $toasts.forEach((toast) => {
1188
+ addToRemoveQueue(toast.id);
1189
+ });
1190
+ }
1191
+ return $toasts.map((t) => t.id === toastId || toastId === undefined ? { ...t, visible: false } : t);
1192
+ });
1193
+ }
1194
+ function remove(toastId) {
1195
+ toasts.update(($toasts) => {
1196
+ if (toastId === undefined) {
1197
+ return [];
1198
+ }
1199
+ return $toasts.filter((t) => t.id !== toastId);
1200
+ });
1201
+ }
1202
+ function startPause(time) {
1203
+ pausedAt.set(time);
1204
+ }
1205
+ function endPause(time) {
1206
+ let diff;
1207
+ pausedAt.update(($pausedAt) => {
1208
+ diff = time - ($pausedAt || 0);
1209
+ return null;
1210
+ });
1211
+ toasts.update(($toasts) => $toasts.map((t) => ({
1212
+ ...t,
1213
+ pauseDuration: t.pauseDuration + diff
1214
+ })));
1215
+ }
1216
+ var defaultTimeouts = {
1217
+ blank: 4000,
1218
+ error: 4000,
1219
+ success: 2000,
1220
+ loading: Infinity,
1221
+ custom: 4000
1222
+ };
1223
+ function useToasterStore(toastOptions = {}) {
1224
+ const mergedToasts = writableDerived(toasts, ($toasts) => $toasts.map((t) => ({
1225
+ ...toastOptions,
1226
+ ...toastOptions[t.type],
1227
+ ...t,
1228
+ duration: t.duration || toastOptions[t.type]?.duration || toastOptions?.duration || defaultTimeouts[t.type],
1229
+ style: [toastOptions.style, toastOptions[t.type]?.style, t.style].join(";")
1230
+ })), ($toasts) => $toasts);
1231
+ return {
1232
+ toasts: mergedToasts,
1233
+ pausedAt
1234
+ };
1235
+ }
1236
+
1237
+ // node_modules/svelte-french-toast/dist/core/types.js
1238
+ var isFunction = (valOrFunction) => typeof valOrFunction === "function";
1239
+ var resolveValue = (valOrFunction, arg) => isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction;
1240
+
1241
+ // node_modules/svelte-french-toast/dist/core/utils.js
1242
+ var genId = (() => {
1243
+ let count = 0;
1244
+ return () => {
1245
+ count += 1;
1246
+ return count.toString();
1247
+ };
1248
+ })();
1249
+ var prefersReducedMotion = (() => {
1250
+ let shouldReduceMotion;
1251
+ return () => {
1252
+ if (shouldReduceMotion === undefined && typeof window !== "undefined") {
1253
+ const mediaQuery = matchMedia("(prefers-reduced-motion: reduce)");
1254
+ shouldReduceMotion = !mediaQuery || mediaQuery.matches;
1255
+ }
1256
+ return shouldReduceMotion;
1257
+ };
1258
+ })();
1259
+
1260
+ // node_modules/svelte-french-toast/dist/core/toast.js
1261
+ var createToast = (message, type = "blank", opts) => ({
1262
+ createdAt: Date.now(),
1263
+ visible: true,
1264
+ type,
1265
+ ariaProps: {
1266
+ role: "status",
1267
+ "aria-live": "polite"
1268
+ },
1269
+ message,
1270
+ pauseDuration: 0,
1271
+ ...opts,
1272
+ id: opts?.id || genId()
1273
+ });
1274
+ var createHandler = (type) => (message, options) => {
1275
+ const toast = createToast(message, type, options);
1276
+ upsert(toast);
1277
+ return toast.id;
1278
+ };
1279
+ var toast = (message, opts) => createHandler("blank")(message, opts);
1280
+ toast.error = createHandler("error");
1281
+ toast.success = createHandler("success");
1282
+ toast.loading = createHandler("loading");
1283
+ toast.custom = createHandler("custom");
1284
+ toast.dismiss = (toastId) => {
1285
+ dismiss(toastId);
1286
+ };
1287
+ toast.remove = (toastId) => remove(toastId);
1288
+ toast.promise = (promise, msgs, opts) => {
1289
+ const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading });
1290
+ promise.then((p) => {
1291
+ toast.success(resolveValue(msgs.success, p), {
1292
+ id,
1293
+ ...opts,
1294
+ ...opts?.success
1295
+ });
1296
+ return p;
1297
+ }).catch((e) => {
1298
+ toast.error(resolveValue(msgs.error, e), {
1299
+ id,
1300
+ ...opts,
1301
+ ...opts?.error
1302
+ });
1303
+ });
1304
+ return promise;
1305
+ };
1306
+ var toast_default = toast;
1307
+
1308
+ // node_modules/svelte-french-toast/dist/core/use-toaster.js
1309
+ import { onDestroy } from "svelte";
1310
+ function calculateOffset(toast2, $toasts, opts) {
1311
+ const { reverseOrder, gutter = 8, defaultPosition } = opts || {};
1312
+ const relevantToasts = $toasts.filter((t) => (t.position || defaultPosition) === (toast2.position || defaultPosition) && t.height);
1313
+ const toastIndex = relevantToasts.findIndex((t) => t.id === toast2.id);
1314
+ const toastsBefore = relevantToasts.filter((toast3, i) => i < toastIndex && toast3.visible).length;
1315
+ const offset = relevantToasts.filter((t) => t.visible).slice(...reverseOrder ? [toastsBefore + 1] : [0, toastsBefore]).reduce((acc, t) => acc + (t.height || 0) + gutter, 0);
1316
+ return offset;
1317
+ }
1318
+ var handlers = {
1319
+ startPause() {
1320
+ startPause(Date.now());
1321
+ },
1322
+ endPause() {
1323
+ endPause(Date.now());
1324
+ },
1325
+ updateHeight: (toastId, height) => {
1326
+ update({ id: toastId, height });
1327
+ },
1328
+ calculateOffset
1329
+ };
1330
+ function useToaster(toastOptions) {
1331
+ const { toasts: toasts2, pausedAt: pausedAt2 } = useToasterStore(toastOptions);
1332
+ const timeouts = new Map;
1333
+ let _pausedAt;
1334
+ const unsubscribes = [
1335
+ pausedAt2.subscribe(($pausedAt) => {
1336
+ if ($pausedAt) {
1337
+ for (const [, timeoutId] of timeouts) {
1338
+ clearTimeout(timeoutId);
1339
+ }
1340
+ timeouts.clear();
1341
+ }
1342
+ _pausedAt = $pausedAt;
1343
+ }),
1344
+ toasts2.subscribe(($toasts) => {
1345
+ if (_pausedAt) {
1346
+ return;
1347
+ }
1348
+ const now = Date.now();
1349
+ for (const t of $toasts) {
1350
+ if (timeouts.has(t.id)) {
1351
+ continue;
1352
+ }
1353
+ if (t.duration === Infinity) {
1354
+ continue;
1355
+ }
1356
+ const durationLeft = (t.duration || 0) + t.pauseDuration - (now - t.createdAt);
1357
+ if (durationLeft < 0) {
1358
+ if (t.visible) {
1359
+ toast_default.dismiss(t.id);
1360
+ }
1361
+ return null;
1362
+ }
1363
+ timeouts.set(t.id, setTimeout(() => toast_default.dismiss(t.id), durationLeft));
1364
+ }
1365
+ })
1366
+ ];
1367
+ onDestroy(() => {
1368
+ for (const unsubscribe of unsubscribes) {
1369
+ unsubscribe();
1370
+ }
1371
+ });
1372
+ return { toasts: toasts2, handlers };
1373
+ }
1374
+
1375
+ // node_modules/svelte-french-toast/dist/components/ToastWrapper.svelte
1376
+ import"svelte/internal/flags/async";
1377
+ import * as $9 from "svelte/internal/server";
1378
+ import { onMount } from "svelte";
1379
+
1380
+ // node_modules/svelte-french-toast/dist/components/ToastBar.svelte
1381
+ import"svelte/internal/flags/async";
1382
+ import * as $8 from "svelte/internal/server";
1383
+
1384
+ // node_modules/svelte-french-toast/dist/components/ToastIcon.svelte
1385
+ import"svelte/internal/flags/async";
1386
+ import * as $6 from "svelte/internal/server";
1387
+
1388
+ // node_modules/svelte-french-toast/dist/components/CheckmarkIcon.svelte
1389
+ import"svelte/internal/flags/async";
1390
+ import * as $3 from "svelte/internal/server";
1391
+ function CheckmarkIcon($$renderer, $$props) {
1392
+ let primary = $3.fallback($$props["primary"], "#61d345");
1393
+ let secondary = $3.fallback($$props["secondary"], "#fff");
1394
+ $$renderer.push(`<div class="svelte-1did3zw"${$3.attr_style("", { "--primary": primary, "--secondary": secondary })}></div>`);
1395
+ $3.bind_props($$props, { primary, secondary });
1396
+ }
1397
+
1398
+ // node_modules/svelte-french-toast/dist/components/ErrorIcon.svelte
1399
+ import"svelte/internal/flags/async";
1400
+ import * as $4 from "svelte/internal/server";
1401
+ function ErrorIcon($$renderer, $$props) {
1402
+ let primary = $4.fallback($$props["primary"], "#ff4b4b");
1403
+ let secondary = $4.fallback($$props["secondary"], "#fff");
1404
+ $$renderer.push(`<div class="svelte-1ro2ggf"${$4.attr_style("", { "--primary": primary, "--secondary": secondary })}></div>`);
1405
+ $4.bind_props($$props, { primary, secondary });
1406
+ }
1407
+
1408
+ // node_modules/svelte-french-toast/dist/components/LoaderIcon.svelte
1409
+ import"svelte/internal/flags/async";
1410
+ import * as $5 from "svelte/internal/server";
1411
+ function LoaderIcon($$renderer, $$props) {
1412
+ let primary = $5.fallback($$props["primary"], "#616161");
1413
+ let secondary = $5.fallback($$props["secondary"], "#e0e0e0");
1414
+ $$renderer.push(`<div class="svelte-tyythq"${$5.attr_style("", { "--primary": primary, "--secondary": secondary })}></div>`);
1415
+ $5.bind_props($$props, { primary, secondary });
1416
+ }
1417
+
1418
+ // node_modules/svelte-french-toast/dist/components/ToastIcon.svelte
1419
+ function ToastIcon($$renderer, $$props) {
1420
+ let type, icon, iconTheme;
1421
+ let toast2 = $$props["toast"];
1422
+ $:
1423
+ ({ type, icon, iconTheme } = toast2);
1424
+ if (typeof icon === "string") {
1425
+ $$renderer.push("<!--[0-->");
1426
+ $$renderer.push(`<div class="animated svelte-t33qv2">${$6.escape(icon)}</div>`);
1427
+ } else if (typeof icon !== "undefined") {
1428
+ $$renderer.push("<!--[1-->");
1429
+ if (icon) {
1430
+ $$renderer.push("<!--[-->");
1431
+ icon($$renderer, {});
1432
+ $$renderer.push("<!--]-->");
1433
+ } else {
1434
+ $$renderer.push("<!--[!-->");
1435
+ $$renderer.push("<!--]-->");
1436
+ }
1437
+ } else if (type !== "blank") {
1438
+ $$renderer.push("<!--[2-->");
1439
+ $$renderer.push(`<div class="indicator svelte-t33qv2">`);
1440
+ LoaderIcon($$renderer, $6.spread_props([iconTheme]));
1441
+ $$renderer.push(`<!----> `);
1442
+ if (type !== "loading") {
1443
+ $$renderer.push("<!--[0-->");
1444
+ $$renderer.push(`<div class="status svelte-t33qv2">`);
1445
+ if (type === "error") {
1446
+ $$renderer.push("<!--[0-->");
1447
+ ErrorIcon($$renderer, $6.spread_props([iconTheme]));
1448
+ } else {
1449
+ $$renderer.push("<!--[-1-->");
1450
+ CheckmarkIcon($$renderer, $6.spread_props([iconTheme]));
1451
+ }
1452
+ $$renderer.push(`<!--]--></div>`);
1453
+ } else {
1454
+ $$renderer.push("<!--[-1-->");
1455
+ }
1456
+ $$renderer.push(`<!--]--></div>`);
1457
+ } else {
1458
+ $$renderer.push("<!--[-1-->");
1459
+ }
1460
+ $$renderer.push(`<!--]-->`);
1461
+ $6.bind_props($$props, { toast: toast2 });
1462
+ }
1463
+
1464
+ // node_modules/svelte-french-toast/dist/components/ToastMessage.svelte
1465
+ import"svelte/internal/flags/async";
1466
+ import * as $7 from "svelte/internal/server";
1467
+ function ToastMessage($$renderer, $$props) {
1468
+ $$renderer.component(($$renderer2) => {
1469
+ let toast2 = $$props["toast"];
1470
+ $$renderer2.push(`<div${$7.attributes({ class: "message", ...toast2.ariaProps }, "svelte-1gudbf6")}>`);
1471
+ if (typeof toast2.message === "string") {
1472
+ $$renderer2.push("<!--[0-->");
1473
+ $$renderer2.push(`${$7.escape(toast2.message)}`);
1474
+ } else {
1475
+ $$renderer2.push("<!--[-1-->");
1476
+ if (toast2.message) {
1477
+ $$renderer2.push("<!--[-->");
1478
+ toast2.message($$renderer2, { toast: toast2 });
1479
+ $$renderer2.push("<!--]-->");
1480
+ } else {
1481
+ $$renderer2.push("<!--[!-->");
1482
+ $$renderer2.push("<!--]-->");
1483
+ }
1484
+ }
1485
+ $$renderer2.push(`<!--]--></div>`);
1486
+ $7.bind_props($$props, { toast: toast2 });
1487
+ });
1488
+ }
1489
+
1490
+ // node_modules/svelte-french-toast/dist/components/ToastBar.svelte
1491
+ function ToastBar($$renderer, $$props) {
1492
+ $$renderer.component(($$renderer2) => {
1493
+ let toast2 = $$props["toast"];
1494
+ let position = $8.fallback($$props["position"], () => {
1495
+ return;
1496
+ }, true);
1497
+ let style = $8.fallback($$props["style"], "");
1498
+ let Component = $8.fallback($$props["Component"], () => {
1499
+ return;
1500
+ }, true);
1501
+ let factor;
1502
+ let animation;
1503
+ $: {
1504
+ const top = (toast2.position || position || "top-center").includes("top");
1505
+ factor = top ? 1 : -1;
1506
+ const [enter, exit] = prefersReducedMotion() ? ["fadeIn", "fadeOut"] : ["enter", "exit"];
1507
+ animation = toast2.visible ? enter : exit;
1508
+ }
1509
+ $$renderer2.push(`<div${$8.attr_class(`base ${$8.stringify(toast2.height ? animation : "transparent")} ${$8.stringify(toast2.className || "")}`, "svelte-yae3e8")}${$8.attr_style(`${$8.stringify(style)}; ${$8.stringify(toast2.style)}`, { "--factor": factor })}>`);
1510
+ if (Component) {
1511
+ $$renderer2.push("<!--[0-->");
1512
+ if (Component) {
1513
+ $$renderer2.push("<!--[-->");
1514
+ Component($$renderer2, {
1515
+ $$slots: {
1516
+ icon: ($$renderer3) => {
1517
+ ToastIcon($$renderer3, { toast: toast2, slot: "icon" });
1518
+ },
1519
+ message: ($$renderer3) => {
1520
+ ToastMessage($$renderer3, { toast: toast2, slot: "message" });
1521
+ }
1522
+ }
1523
+ });
1524
+ $$renderer2.push("<!--]-->");
1525
+ } else {
1526
+ $$renderer2.push("<!--[!-->");
1527
+ $$renderer2.push("<!--]-->");
1528
+ }
1529
+ } else {
1530
+ $$renderer2.push("<!--[-1-->");
1531
+ $$renderer2.push(`<!--[-->`);
1532
+ $8.slot($$renderer2, $$props, "default", { ToastIcon, ToastMessage, toast: toast2 }, () => {
1533
+ ToastIcon($$renderer2, { toast: toast2 });
1534
+ $$renderer2.push(`<!----> `);
1535
+ ToastMessage($$renderer2, { toast: toast2 });
1536
+ $$renderer2.push(`<!---->`);
1537
+ });
1538
+ $$renderer2.push(`<!--]-->`);
1539
+ }
1540
+ $$renderer2.push(`<!--]--></div>`);
1541
+ $8.bind_props($$props, { toast: toast2, position, style, Component });
1542
+ });
1543
+ }
1544
+
1545
+ // node_modules/svelte-french-toast/dist/components/ToastWrapper.svelte
1546
+ function ToastWrapper($$renderer, $$props) {
1547
+ $$renderer.component(($$renderer2) => {
1548
+ let top, bottom, factor, justifyContent;
1549
+ let toast2 = $$props["toast"];
1550
+ let setHeight = $$props["setHeight"];
1551
+ let wrapperEl;
1552
+ onMount(() => {
1553
+ setHeight(wrapperEl.getBoundingClientRect().height);
1554
+ });
1555
+ $:
1556
+ top = toast2.position?.includes("top") ? 0 : null;
1557
+ $:
1558
+ bottom = toast2.position?.includes("bottom") ? 0 : null;
1559
+ $:
1560
+ factor = toast2.position?.includes("top") ? 1 : -1;
1561
+ $:
1562
+ justifyContent = toast2.position?.includes("center") && "center" || (toast2.position?.includes("right") || toast2.position?.includes("end")) && "flex-end" || null;
1563
+ $$renderer2.push(`<div${$9.attr_class("wrapper svelte-1pz3gqy", undefined, {
1564
+ active: toast2.visible,
1565
+ transition: !prefersReducedMotion()
1566
+ })}${$9.attr_style("", {
1567
+ "--factor": factor,
1568
+ "--offset": toast2.offset,
1569
+ top,
1570
+ bottom,
1571
+ "justify-content": justifyContent
1572
+ })}>`);
1573
+ if (toast2.type === "custom") {
1574
+ $$renderer2.push("<!--[0-->");
1575
+ ToastMessage($$renderer2, { toast: toast2 });
1576
+ } else {
1577
+ $$renderer2.push("<!--[-1-->");
1578
+ $$renderer2.push(`<!--[-->`);
1579
+ $9.slot($$renderer2, $$props, "default", { toast: toast2 }, () => {
1580
+ ToastBar($$renderer2, { toast: toast2, position: toast2.position });
1581
+ });
1582
+ $$renderer2.push(`<!--]-->`);
1583
+ }
1584
+ $$renderer2.push(`<!--]--></div>`);
1585
+ $9.bind_props($$props, { toast: toast2, setHeight });
1586
+ });
1587
+ }
1588
+
1589
+ // node_modules/svelte-french-toast/dist/components/Toaster.svelte
1590
+ function Toaster($$renderer, $$props) {
1591
+ $$renderer.component(($$renderer2) => {
1592
+ var $$store_subs;
1593
+ let reverseOrder = $10.fallback($$props["reverseOrder"], false);
1594
+ let position = $10.fallback($$props["position"], "top-center");
1595
+ let toastOptions = $10.fallback($$props["toastOptions"], () => {
1596
+ return;
1597
+ }, true);
1598
+ let gutter = $10.fallback($$props["gutter"], 8);
1599
+ let containerStyle = $10.fallback($$props["containerStyle"], () => {
1600
+ return;
1601
+ }, true);
1602
+ let containerClassName = $10.fallback($$props["containerClassName"], () => {
1603
+ return;
1604
+ }, true);
1605
+ const { toasts: toasts2, handlers: handlers2 } = useToaster(toastOptions);
1606
+ let _toasts;
1607
+ $:
1608
+ _toasts = $10.store_get($$store_subs ??= {}, "$toasts", toasts2).map((toast2) => ({
1609
+ ...toast2,
1610
+ position: toast2.position || position,
1611
+ offset: handlers2.calculateOffset(toast2, $10.store_get($$store_subs ??= {}, "$toasts", toasts2), { reverseOrder, gutter, defaultPosition: position })
1612
+ }));
1613
+ $$renderer2.push(`<div${$10.attr_class(`toaster ${$10.stringify(containerClassName || "")}`, "svelte-haq5xk")}${$10.attr_style(containerStyle)} role="alert"><!--[-->`);
1614
+ const each_array = $10.ensure_array_like(_toasts);
1615
+ for (let $$index = 0, $$length = each_array.length;$$index < $$length; $$index++) {
1616
+ let toast2 = each_array[$$index];
1617
+ ToastWrapper($$renderer2, {
1618
+ toast: toast2,
1619
+ setHeight: (height) => handlers2.updateHeight(toast2.id, height)
1620
+ });
1621
+ }
1622
+ $$renderer2.push(`<!--]--></div>`);
1623
+ if ($$store_subs)
1624
+ $10.unsubscribe_stores($$store_subs);
1625
+ $10.bind_props($$props, {
1626
+ reverseOrder,
1627
+ position,
1628
+ toastOptions,
1629
+ gutter,
1630
+ containerStyle,
1631
+ containerClassName
1632
+ });
1633
+ });
1634
+ }
1635
+ // node_modules/svelte-french-toast/dist/index.js
1636
+ var dist_default = toast_default;
1637
+
1638
+ // src/components/AppBar.svelte
1639
+ import"svelte/internal/flags/async";
1640
+ import * as $12 from "svelte/internal/server";
1641
+
1642
+ // node_modules/@lucide/svelte/dist/icons/house.svelte
1643
+ import"svelte/internal/flags/async";
1644
+ import * as $11 from "svelte/internal/server";
1645
+ function House($$renderer, $$props) {
1646
+ let { $$slots, $$events, ...props } = $$props;
1647
+ const iconNode = [
1648
+ ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" }],
1649
+ [
1650
+ "path",
1651
+ {
1652
+ d: "M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"
1653
+ }
1654
+ ]
1655
+ ];
1656
+ Icon($$renderer, $11.spread_props([{ name: "house" }, props, { iconNode }]));
1657
+ }
1658
+ // src/components/AppBar.svelte
1659
+ function AppBar($$renderer, $$props) {
1660
+ let { children } = $$props;
1661
+ $$renderer.push(`<header class="bar svelte-fcv4i8"><a class="home svelte-fcv4i8" href="/" title="All instances" aria-label="All instances">`);
1662
+ House($$renderer, { size: 18 });
1663
+ $$renderer.push(`<!----></a> `);
1664
+ children?.($$renderer);
1665
+ $$renderer.push(`<!----></header>`);
1666
+ }
1667
+
1668
+ export { OFF, ON, ROWS, COLS, avatars, Avatar, Button, Toaster, dist_default, AppBar };