otst commited on
Commit
524ce9f
·
1 Parent(s): 54c7e54

fix deployment issues

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitignore +3 -0
  2. .next/BUILD_ID +1 -1
  3. .next/app-build-manifest.json +74 -74
  4. .next/app-path-routes-manifest.json +26 -26
  5. .next/build-manifest.json +2 -2
  6. .next/prerender-manifest.json +33 -33
  7. .next/server/app-paths-manifest.json +26 -26
  8. .next/server/app/_not-found.html +1 -1
  9. .next/server/app/_not-found.rsc +1 -1
  10. .next/server/app/admin.html +1 -1
  11. .next/server/app/admin.rsc +1 -1
  12. .next/server/app/admin/docs.html +1 -1
  13. .next/server/app/admin/docs.rsc +1 -1
  14. .next/server/app/admin/login.html +1 -1
  15. .next/server/app/admin/login.rsc +1 -1
  16. .next/server/app/admin/projects.html +1 -1
  17. .next/server/app/admin/projects.rsc +1 -1
  18. .next/server/app/admin/settings.html +1 -1
  19. .next/server/app/admin/settings.rsc +1 -1
  20. .next/server/app/admin/settings/application.html +1 -1
  21. .next/server/app/admin/settings/application.rsc +1 -1
  22. .next/server/app/admin/settings/model.html +1 -1
  23. .next/server/app/admin/settings/model.rsc +1 -1
  24. .next/server/app/admin/sites.html +1 -1
  25. .next/server/app/admin/sites.rsc +1 -1
  26. .next/server/app/admin/skills.html +1 -1
  27. .next/server/app/admin/skills.rsc +1 -1
  28. .next/server/app/admin/templates.html +1 -1
  29. .next/server/app/admin/templates.rsc +1 -1
  30. .next/server/app/index.html +1 -1
  31. .next/server/app/index.rsc +1 -1
  32. .next/server/app/test-generation.html +1 -1
  33. .next/server/app/test-generation.rsc +1 -1
  34. .next/server/middleware-manifest.json +4 -4
  35. .next/server/pages/404.html +1 -1
  36. .next/server/pages/500.html +1 -1
  37. .next/static/{GN54BbL4KORqecYNj1l26 → 9vuBdSevB6CUChUh5Igaf}/_buildManifest.js +0 -0
  38. .next/static/{GN54BbL4KORqecYNj1l26 → 9vuBdSevB6CUChUh5Igaf}/_ssgManifest.js +0 -0
  39. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html +0 -424
  40. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html +0 -470
  41. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html +0 -394
  42. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html +0 -476
  43. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/robots.txt +0 -9
  44. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js +0 -142
  45. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/sitemap.xml +0 -33
  46. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css +0 -1029
  47. public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html +0 -517
  48. public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/about.html +0 -946
  49. public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/index.html +0 -1026
  50. public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/plan.md +0 -127
.gitignore CHANGED
@@ -22,6 +22,9 @@ npm-debug.log*
22
  # But exclude the cache directory - it's too large and not needed
23
  .next/cache/
24
 
 
 
 
25
  # Claude Code settings
26
  .claude/
27
 
 
22
  # But exclude the cache directory - it's too large and not needed
23
  .next/cache/
24
 
25
+ # Testing
26
+ .sites/*
27
+
28
  # Claude Code settings
29
  .claude/
30
 
.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- GN54BbL4KORqecYNj1l26
 
1
+ 9vuBdSevB6CUChUh5Igaf
.next/app-build-manifest.json CHANGED
@@ -17,33 +17,33 @@
17
  "static/chunks/2138-18d4ca002a920f5d.js",
18
  "static/chunks/app/layout-19d4da7b6d1a11dd.js"
19
  ],
20
- "/api/admin/run-migrations/route": [
21
  "static/chunks/webpack-c81a7e1091340d8b.js",
22
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
23
  "static/chunks/1684-94ae6109893bd411.js",
24
  "static/chunks/main-app-eac23abd81400eeb.js",
25
- "static/chunks/app/api/admin/run-migrations/route-ec97c80d56f7b57c.js"
26
  ],
27
- "/api/admin/sites/[id]/database/query/route": [
28
  "static/chunks/webpack-c81a7e1091340d8b.js",
29
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
30
  "static/chunks/1684-94ae6109893bd411.js",
31
  "static/chunks/main-app-eac23abd81400eeb.js",
32
- "static/chunks/app/api/admin/sites/[id]/database/query/route-e69d2fe91c705975.js"
33
  ],
34
- "/api/admin/sites/[id]/database/logs/route": [
35
  "static/chunks/webpack-c81a7e1091340d8b.js",
36
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
37
  "static/chunks/1684-94ae6109893bd411.js",
38
  "static/chunks/main-app-eac23abd81400eeb.js",
39
- "static/chunks/app/api/admin/sites/[id]/database/logs/route-c36b03dfd4ff180c.js"
40
  ],
41
- "/api/admin/sites/[id]/functions/[functionId]/route": [
42
  "static/chunks/webpack-c81a7e1091340d8b.js",
43
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
44
  "static/chunks/1684-94ae6109893bd411.js",
45
  "static/chunks/main-app-eac23abd81400eeb.js",
46
- "static/chunks/app/api/admin/sites/[id]/functions/[functionId]/route-2bd23c80b0d547a8.js"
47
  ],
48
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": [
49
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -52,12 +52,12 @@
52
  "static/chunks/main-app-eac23abd81400eeb.js",
53
  "static/chunks/app/api/admin/sites/[id]/functions/[functionId]/logs/route-745506c05ad29725.js"
54
  ],
55
- "/api/admin/sites/[id]/functions/route": [
56
  "static/chunks/webpack-c81a7e1091340d8b.js",
57
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
58
  "static/chunks/1684-94ae6109893bd411.js",
59
  "static/chunks/main-app-eac23abd81400eeb.js",
60
- "static/chunks/app/api/admin/sites/[id]/functions/route-f216a04ba9eaf519.js"
61
  ],
62
  "/api/admin/sites/[id]/secrets/[secretId]/route": [
63
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -73,12 +73,12 @@
73
  "static/chunks/main-app-eac23abd81400eeb.js",
74
  "static/chunks/app/api/admin/sites/[id]/secrets/route-7376ba8b5cefd4e8.js"
75
  ],
76
- "/api/admin/sites/[id]/server-functions/[functionId]/route": [
77
  "static/chunks/webpack-c81a7e1091340d8b.js",
78
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
79
  "static/chunks/1684-94ae6109893bd411.js",
80
  "static/chunks/main-app-eac23abd81400eeb.js",
81
- "static/chunks/app/api/admin/sites/[id]/server-functions/[functionId]/route-25697da6c69099f3.js"
82
  ],
83
  "/api/admin/sites/[id]/server-context/route": [
84
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -87,12 +87,12 @@
87
  "static/chunks/main-app-eac23abd81400eeb.js",
88
  "static/chunks/app/api/admin/sites/[id]/server-context/route-cbac2145aa36aaed.js"
89
  ],
90
- "/api/admin/sites/[id]/server-context/mutate/route": [
91
  "static/chunks/webpack-c81a7e1091340d8b.js",
92
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
93
  "static/chunks/1684-94ae6109893bd411.js",
94
  "static/chunks/main-app-eac23abd81400eeb.js",
95
- "static/chunks/app/api/admin/sites/[id]/server-context/mutate/route-ca842a8223996343.js"
96
  ],
97
  "/api/admin/sites/[id]/server-functions/route": [
98
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -101,6 +101,13 @@
101
  "static/chunks/main-app-eac23abd81400eeb.js",
102
  "static/chunks/app/api/admin/sites/[id]/server-functions/route-4d45f64e320920fe.js"
103
  ],
 
 
 
 
 
 
 
104
  "/api/analytics/[siteId]/clear/route": [
105
  "static/chunks/webpack-c81a7e1091340d8b.js",
106
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
@@ -115,6 +122,13 @@
115
  "static/chunks/main-app-eac23abd81400eeb.js",
116
  "static/chunks/app/api/analytics/[siteId]/export/route-61786f8f56f21e46.js"
117
  ],
 
 
 
 
 
 
 
118
  "/api/analytics/[siteId]/engagement/route": [
119
  "static/chunks/webpack-c81a7e1091340d8b.js",
120
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
@@ -122,12 +136,12 @@
122
  "static/chunks/main-app-eac23abd81400eeb.js",
123
  "static/chunks/app/api/analytics/[siteId]/engagement/route-c4c7ab3a4f2b80eb.js"
124
  ],
125
- "/api/analytics/[siteId]/heatmap/route": [
126
  "static/chunks/webpack-c81a7e1091340d8b.js",
127
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
128
  "static/chunks/1684-94ae6109893bd411.js",
129
  "static/chunks/main-app-eac23abd81400eeb.js",
130
- "static/chunks/app/api/analytics/[siteId]/heatmap/route-88ef7d383a45082d.js"
131
  ],
132
  "/api/analytics/[siteId]/storage/route": [
133
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -143,13 +157,6 @@
143
  "static/chunks/main-app-eac23abd81400eeb.js",
144
  "static/chunks/app/api/analytics/[siteId]/route-10aa33f2ec750d2d.js"
145
  ],
146
- "/api/analytics/track/route": [
147
- "static/chunks/webpack-c81a7e1091340d8b.js",
148
- "static/chunks/4bd1b696-2683f5a71cc09935.js",
149
- "static/chunks/1684-94ae6109893bd411.js",
150
- "static/chunks/main-app-eac23abd81400eeb.js",
151
- "static/chunks/app/api/analytics/track/route-fdb002ff96ad2df2.js"
152
- ],
153
  "/api/analytics/[siteId]/overview/route": [
154
  "static/chunks/webpack-c81a7e1091340d8b.js",
155
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
@@ -157,40 +164,40 @@
157
  "static/chunks/main-app-eac23abd81400eeb.js",
158
  "static/chunks/app/api/analytics/[siteId]/overview/route-a7cf1256591608fc.js"
159
  ],
160
- "/api/analytics/interaction/route": [
161
  "static/chunks/webpack-c81a7e1091340d8b.js",
162
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
163
  "static/chunks/1684-94ae6109893bd411.js",
164
  "static/chunks/main-app-eac23abd81400eeb.js",
165
- "static/chunks/app/api/analytics/interaction/route-6e80ed168ac9216b.js"
166
  ],
167
- "/api/admin/sites/[id]/database/schema/route": [
168
  "static/chunks/webpack-c81a7e1091340d8b.js",
169
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
170
  "static/chunks/1684-94ae6109893bd411.js",
171
  "static/chunks/main-app-eac23abd81400eeb.js",
172
- "static/chunks/app/api/admin/sites/[id]/database/schema/route-57afe5f39873ef1b.js"
173
  ],
174
- "/api/auth/check/route": [
175
  "static/chunks/webpack-c81a7e1091340d8b.js",
176
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
177
  "static/chunks/1684-94ae6109893bd411.js",
178
  "static/chunks/main-app-eac23abd81400eeb.js",
179
- "static/chunks/app/api/auth/check/route-dab4b93b788ff764.js"
180
  ],
181
- "/api/auth/login/route": [
182
  "static/chunks/webpack-c81a7e1091340d8b.js",
183
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
184
  "static/chunks/1684-94ae6109893bd411.js",
185
  "static/chunks/main-app-eac23abd81400eeb.js",
186
- "static/chunks/app/api/auth/login/route-6bb231b7c02f90a8.js"
187
  ],
188
- "/api/generate/route": [
189
  "static/chunks/webpack-c81a7e1091340d8b.js",
190
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
191
  "static/chunks/1684-94ae6109893bd411.js",
192
  "static/chunks/main-app-eac23abd81400eeb.js",
193
- "static/chunks/app/api/generate/route-3fcc5518477e369e.js"
194
  ],
195
  "/api/auth/logout/route": [
196
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -206,33 +213,33 @@
206
  "static/chunks/main-app-eac23abd81400eeb.js",
207
  "static/chunks/app/api/auth/me/route-9905c76bc79bb039.js"
208
  ],
209
- "/api/docs/[...path]/route": [
210
  "static/chunks/webpack-c81a7e1091340d8b.js",
211
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
212
  "static/chunks/1684-94ae6109893bd411.js",
213
  "static/chunks/main-app-eac23abd81400eeb.js",
214
- "static/chunks/app/api/docs/[...path]/route-627df421c9593aad.js"
215
  ],
216
- "/api/projects/[id]/sites/route": [
217
  "static/chunks/webpack-c81a7e1091340d8b.js",
218
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
219
  "static/chunks/1684-94ae6109893bd411.js",
220
  "static/chunks/main-app-eac23abd81400eeb.js",
221
- "static/chunks/app/api/projects/[id]/sites/route-b8d9f3309a1aabb6.js"
222
  ],
223
- "/api/models/route": [
224
  "static/chunks/webpack-c81a7e1091340d8b.js",
225
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
226
  "static/chunks/1684-94ae6109893bd411.js",
227
  "static/chunks/main-app-eac23abd81400eeb.js",
228
- "static/chunks/app/api/models/route-f2500a9d9bef7a52.js"
229
  ],
230
- "/api/projects/route": [
231
  "static/chunks/webpack-c81a7e1091340d8b.js",
232
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
233
  "static/chunks/1684-94ae6109893bd411.js",
234
  "static/chunks/main-app-eac23abd81400eeb.js",
235
- "static/chunks/app/api/projects/route-3fdeadd5f4cc9321.js"
236
  ],
237
  "/api/sites/[id]/publish/route": [
238
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -255,12 +262,12 @@
255
  "static/chunks/main-app-eac23abd81400eeb.js",
256
  "static/chunks/app/api/sites/[id]/route-8757097247ef3272.js"
257
  ],
258
- "/api/sites/[id]/settings/route": [
259
  "static/chunks/webpack-c81a7e1091340d8b.js",
260
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
261
  "static/chunks/1684-94ae6109893bd411.js",
262
  "static/chunks/main-app-eac23abd81400eeb.js",
263
- "static/chunks/app/api/sites/[id]/settings/route-a4110613ae39e9e3.js"
264
  ],
265
  "/api/sites/route": [
266
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -269,19 +276,19 @@
269
  "static/chunks/main-app-eac23abd81400eeb.js",
270
  "static/chunks/app/api/sites/route-1b735122cd050b64.js"
271
  ],
272
- "/api/sites/[id]/thumbnail/route": [
273
  "static/chunks/webpack-c81a7e1091340d8b.js",
274
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
275
  "static/chunks/1684-94ae6109893bd411.js",
276
  "static/chunks/main-app-eac23abd81400eeb.js",
277
- "static/chunks/app/api/sites/[id]/thumbnail/route-82f44a449ae7dd32.js"
278
  ],
279
- "/api/sync/files/route": [
280
  "static/chunks/webpack-c81a7e1091340d8b.js",
281
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
282
  "static/chunks/1684-94ae6109893bd411.js",
283
  "static/chunks/main-app-eac23abd81400eeb.js",
284
- "static/chunks/app/api/sync/files/route-63c78c4ce397e171.js"
285
  ],
286
  "/api/sync/projects/route": [
287
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -290,26 +297,26 @@
290
  "static/chunks/main-app-eac23abd81400eeb.js",
291
  "static/chunks/app/api/sync/projects/route-9e0db8afae377fa3.js"
292
  ],
293
- "/api/validate-key/route": [
294
  "static/chunks/webpack-c81a7e1091340d8b.js",
295
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
296
  "static/chunks/1684-94ae6109893bd411.js",
297
  "static/chunks/main-app-eac23abd81400eeb.js",
298
- "static/chunks/app/api/validate-key/route-c03a8560d2bd05a5.js"
299
  ],
300
- "/api/sync/projects/[id]/route": [
301
  "static/chunks/webpack-c81a7e1091340d8b.js",
302
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
303
  "static/chunks/1684-94ae6109893bd411.js",
304
  "static/chunks/main-app-eac23abd81400eeb.js",
305
- "static/chunks/app/api/sync/projects/[id]/route-df598dcf120a1209.js"
306
  ],
307
- "/sites/[id]/[...path]/route": [
308
  "static/chunks/webpack-c81a7e1091340d8b.js",
309
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
310
  "static/chunks/1684-94ae6109893bd411.js",
311
  "static/chunks/main-app-eac23abd81400eeb.js",
312
- "static/chunks/app/sites/[id]/[...path]/route-21a2d1800183d7cb.js"
313
  ],
314
  "/sites/[id]/route": [
315
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -318,19 +325,19 @@
318
  "static/chunks/main-app-eac23abd81400eeb.js",
319
  "static/chunks/app/sites/[id]/route-aaf0334e238f8f14.js"
320
  ],
321
- "/api/sync/status/route": [
322
  "static/chunks/webpack-c81a7e1091340d8b.js",
323
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
324
  "static/chunks/1684-94ae6109893bd411.js",
325
  "static/chunks/main-app-eac23abd81400eeb.js",
326
- "static/chunks/app/api/sync/status/route-8bb958d7801bf763.js"
327
  ],
328
- "/api/analytics/[siteId]/sessions/route": [
329
  "static/chunks/webpack-c81a7e1091340d8b.js",
330
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
331
  "static/chunks/1684-94ae6109893bd411.js",
332
  "static/chunks/main-app-eac23abd81400eeb.js",
333
- "static/chunks/app/api/analytics/[siteId]/sessions/route-248ca834c38e1f49.js"
334
  ],
335
  "/admin/docs/page": [
336
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -360,7 +367,7 @@
360
  "static/chunks/main-app-eac23abd81400eeb.js",
361
  "static/chunks/app/admin/page-f05c1054700b06bb.js"
362
  ],
363
- "/admin/projects/page": [
364
  "static/chunks/webpack-c81a7e1091340d8b.js",
365
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
366
  "static/chunks/1684-94ae6109893bd411.js",
@@ -372,7 +379,7 @@
372
  "static/chunks/3263-c92ef084ef21734b.js",
373
  "static/chunks/4750-0f9d0976158ca18d.js",
374
  "static/chunks/9695-475a71a5d57464e1.js",
375
- "static/chunks/app/admin/projects/page-1d5cea6db8f0f7fa.js"
376
  ],
377
  "/admin/settings/model/page": [
378
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -388,7 +395,7 @@
388
  "static/chunks/9695-475a71a5d57464e1.js",
389
  "static/chunks/app/admin/settings/model/page-e024da3091445646.js"
390
  ],
391
- "/admin/settings/application/page": [
392
  "static/chunks/webpack-c81a7e1091340d8b.js",
393
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
394
  "static/chunks/1684-94ae6109893bd411.js",
@@ -400,9 +407,9 @@
400
  "static/chunks/3263-c92ef084ef21734b.js",
401
  "static/chunks/4750-0f9d0976158ca18d.js",
402
  "static/chunks/9695-475a71a5d57464e1.js",
403
- "static/chunks/app/admin/settings/application/page-dc785116eef18e9d.js"
404
  ],
405
- "/admin/templates/page": [
406
  "static/chunks/webpack-c81a7e1091340d8b.js",
407
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
408
  "static/chunks/1684-94ae6109893bd411.js",
@@ -414,9 +421,9 @@
414
  "static/chunks/3263-c92ef084ef21734b.js",
415
  "static/chunks/4750-0f9d0976158ca18d.js",
416
  "static/chunks/9695-475a71a5d57464e1.js",
417
- "static/chunks/app/admin/templates/page-e957189165c35277.js"
418
  ],
419
- "/admin/skills/page": [
420
  "static/chunks/webpack-c81a7e1091340d8b.js",
421
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
422
  "static/chunks/1684-94ae6109893bd411.js",
@@ -428,7 +435,7 @@
428
  "static/chunks/3263-c92ef084ef21734b.js",
429
  "static/chunks/4750-0f9d0976158ca18d.js",
430
  "static/chunks/9695-475a71a5d57464e1.js",
431
- "static/chunks/app/admin/skills/page-cfcec55ab3500973.js"
432
  ],
433
  "/admin/sites/page": [
434
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -444,7 +451,7 @@
444
  "static/chunks/9695-475a71a5d57464e1.js",
445
  "static/chunks/app/admin/sites/page-f0e071160afe9175.js"
446
  ],
447
- "/admin/settings/page": [
448
  "static/chunks/webpack-c81a7e1091340d8b.js",
449
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
450
  "static/chunks/1684-94ae6109893bd411.js",
@@ -456,7 +463,7 @@
456
  "static/chunks/3263-c92ef084ef21734b.js",
457
  "static/chunks/4750-0f9d0976158ca18d.js",
458
  "static/chunks/9695-475a71a5d57464e1.js",
459
- "static/chunks/app/admin/settings/page-b4f8d13de930b91b.js"
460
  ],
461
  "/page": [
462
  "static/chunks/webpack-c81a7e1091340d8b.js",
@@ -482,13 +489,6 @@
482
  "static/chunks/4792-f97f5e70e2ff5861.js",
483
  "static/chunks/4750-0f9d0976158ca18d.js",
484
  "static/chunks/app/test-generation/page-c0fb010ce78373b4.js"
485
- ],
486
- "/api/sites/[id]/functions/[...path]/route": [
487
- "static/chunks/webpack-c81a7e1091340d8b.js",
488
- "static/chunks/4bd1b696-2683f5a71cc09935.js",
489
- "static/chunks/1684-94ae6109893bd411.js",
490
- "static/chunks/main-app-eac23abd81400eeb.js",
491
- "static/chunks/app/api/sites/[id]/functions/[...path]/route-1e8dcddfbba051ee.js"
492
  ]
493
  }
494
  }
 
17
  "static/chunks/2138-18d4ca002a920f5d.js",
18
  "static/chunks/app/layout-19d4da7b6d1a11dd.js"
19
  ],
20
+ "/api/admin/sites/[id]/database/schema/route": [
21
  "static/chunks/webpack-c81a7e1091340d8b.js",
22
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
23
  "static/chunks/1684-94ae6109893bd411.js",
24
  "static/chunks/main-app-eac23abd81400eeb.js",
25
+ "static/chunks/app/api/admin/sites/[id]/database/schema/route-57afe5f39873ef1b.js"
26
  ],
27
+ "/api/admin/sites/[id]/database/logs/route": [
28
  "static/chunks/webpack-c81a7e1091340d8b.js",
29
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
30
  "static/chunks/1684-94ae6109893bd411.js",
31
  "static/chunks/main-app-eac23abd81400eeb.js",
32
+ "static/chunks/app/api/admin/sites/[id]/database/logs/route-c36b03dfd4ff180c.js"
33
  ],
34
+ "/api/admin/sites/[id]/database/query/route": [
35
  "static/chunks/webpack-c81a7e1091340d8b.js",
36
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
37
  "static/chunks/1684-94ae6109893bd411.js",
38
  "static/chunks/main-app-eac23abd81400eeb.js",
39
+ "static/chunks/app/api/admin/sites/[id]/database/query/route-e69d2fe91c705975.js"
40
  ],
41
+ "/api/admin/run-migrations/route": [
42
  "static/chunks/webpack-c81a7e1091340d8b.js",
43
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
44
  "static/chunks/1684-94ae6109893bd411.js",
45
  "static/chunks/main-app-eac23abd81400eeb.js",
46
+ "static/chunks/app/api/admin/run-migrations/route-ec97c80d56f7b57c.js"
47
  ],
48
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": [
49
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
52
  "static/chunks/main-app-eac23abd81400eeb.js",
53
  "static/chunks/app/api/admin/sites/[id]/functions/[functionId]/logs/route-745506c05ad29725.js"
54
  ],
55
+ "/api/admin/sites/[id]/functions/[functionId]/route": [
56
  "static/chunks/webpack-c81a7e1091340d8b.js",
57
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
58
  "static/chunks/1684-94ae6109893bd411.js",
59
  "static/chunks/main-app-eac23abd81400eeb.js",
60
+ "static/chunks/app/api/admin/sites/[id]/functions/[functionId]/route-2bd23c80b0d547a8.js"
61
  ],
62
  "/api/admin/sites/[id]/secrets/[secretId]/route": [
63
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
73
  "static/chunks/main-app-eac23abd81400eeb.js",
74
  "static/chunks/app/api/admin/sites/[id]/secrets/route-7376ba8b5cefd4e8.js"
75
  ],
76
+ "/api/admin/sites/[id]/server-context/mutate/route": [
77
  "static/chunks/webpack-c81a7e1091340d8b.js",
78
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
79
  "static/chunks/1684-94ae6109893bd411.js",
80
  "static/chunks/main-app-eac23abd81400eeb.js",
81
+ "static/chunks/app/api/admin/sites/[id]/server-context/mutate/route-ca842a8223996343.js"
82
  ],
83
  "/api/admin/sites/[id]/server-context/route": [
84
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
87
  "static/chunks/main-app-eac23abd81400eeb.js",
88
  "static/chunks/app/api/admin/sites/[id]/server-context/route-cbac2145aa36aaed.js"
89
  ],
90
+ "/api/admin/sites/[id]/server-functions/[functionId]/route": [
91
  "static/chunks/webpack-c81a7e1091340d8b.js",
92
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
93
  "static/chunks/1684-94ae6109893bd411.js",
94
  "static/chunks/main-app-eac23abd81400eeb.js",
95
+ "static/chunks/app/api/admin/sites/[id]/server-functions/[functionId]/route-25697da6c69099f3.js"
96
  ],
97
  "/api/admin/sites/[id]/server-functions/route": [
98
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
101
  "static/chunks/main-app-eac23abd81400eeb.js",
102
  "static/chunks/app/api/admin/sites/[id]/server-functions/route-4d45f64e320920fe.js"
103
  ],
104
+ "/api/admin/sites/[id]/functions/route": [
105
+ "static/chunks/webpack-c81a7e1091340d8b.js",
106
+ "static/chunks/4bd1b696-2683f5a71cc09935.js",
107
+ "static/chunks/1684-94ae6109893bd411.js",
108
+ "static/chunks/main-app-eac23abd81400eeb.js",
109
+ "static/chunks/app/api/admin/sites/[id]/functions/route-f216a04ba9eaf519.js"
110
+ ],
111
  "/api/analytics/[siteId]/clear/route": [
112
  "static/chunks/webpack-c81a7e1091340d8b.js",
113
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
 
122
  "static/chunks/main-app-eac23abd81400eeb.js",
123
  "static/chunks/app/api/analytics/[siteId]/export/route-61786f8f56f21e46.js"
124
  ],
125
+ "/api/analytics/[siteId]/heatmap/route": [
126
+ "static/chunks/webpack-c81a7e1091340d8b.js",
127
+ "static/chunks/4bd1b696-2683f5a71cc09935.js",
128
+ "static/chunks/1684-94ae6109893bd411.js",
129
+ "static/chunks/main-app-eac23abd81400eeb.js",
130
+ "static/chunks/app/api/analytics/[siteId]/heatmap/route-88ef7d383a45082d.js"
131
+ ],
132
  "/api/analytics/[siteId]/engagement/route": [
133
  "static/chunks/webpack-c81a7e1091340d8b.js",
134
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
 
136
  "static/chunks/main-app-eac23abd81400eeb.js",
137
  "static/chunks/app/api/analytics/[siteId]/engagement/route-c4c7ab3a4f2b80eb.js"
138
  ],
139
+ "/api/analytics/[siteId]/sessions/route": [
140
  "static/chunks/webpack-c81a7e1091340d8b.js",
141
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
142
  "static/chunks/1684-94ae6109893bd411.js",
143
  "static/chunks/main-app-eac23abd81400eeb.js",
144
+ "static/chunks/app/api/analytics/[siteId]/sessions/route-248ca834c38e1f49.js"
145
  ],
146
  "/api/analytics/[siteId]/storage/route": [
147
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
157
  "static/chunks/main-app-eac23abd81400eeb.js",
158
  "static/chunks/app/api/analytics/[siteId]/route-10aa33f2ec750d2d.js"
159
  ],
 
 
 
 
 
 
 
160
  "/api/analytics/[siteId]/overview/route": [
161
  "static/chunks/webpack-c81a7e1091340d8b.js",
162
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
 
164
  "static/chunks/main-app-eac23abd81400eeb.js",
165
  "static/chunks/app/api/analytics/[siteId]/overview/route-a7cf1256591608fc.js"
166
  ],
167
+ "/api/analytics/track/route": [
168
  "static/chunks/webpack-c81a7e1091340d8b.js",
169
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
170
  "static/chunks/1684-94ae6109893bd411.js",
171
  "static/chunks/main-app-eac23abd81400eeb.js",
172
+ "static/chunks/app/api/analytics/track/route-fdb002ff96ad2df2.js"
173
  ],
174
+ "/api/auth/check/route": [
175
  "static/chunks/webpack-c81a7e1091340d8b.js",
176
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
177
  "static/chunks/1684-94ae6109893bd411.js",
178
  "static/chunks/main-app-eac23abd81400eeb.js",
179
+ "static/chunks/app/api/auth/check/route-dab4b93b788ff764.js"
180
  ],
181
+ "/api/analytics/interaction/route": [
182
  "static/chunks/webpack-c81a7e1091340d8b.js",
183
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
184
  "static/chunks/1684-94ae6109893bd411.js",
185
  "static/chunks/main-app-eac23abd81400eeb.js",
186
+ "static/chunks/app/api/analytics/interaction/route-6e80ed168ac9216b.js"
187
  ],
188
+ "/api/docs/[...path]/route": [
189
  "static/chunks/webpack-c81a7e1091340d8b.js",
190
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
191
  "static/chunks/1684-94ae6109893bd411.js",
192
  "static/chunks/main-app-eac23abd81400eeb.js",
193
+ "static/chunks/app/api/docs/[...path]/route-627df421c9593aad.js"
194
  ],
195
+ "/api/auth/login/route": [
196
  "static/chunks/webpack-c81a7e1091340d8b.js",
197
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
198
  "static/chunks/1684-94ae6109893bd411.js",
199
  "static/chunks/main-app-eac23abd81400eeb.js",
200
+ "static/chunks/app/api/auth/login/route-6bb231b7c02f90a8.js"
201
  ],
202
  "/api/auth/logout/route": [
203
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
213
  "static/chunks/main-app-eac23abd81400eeb.js",
214
  "static/chunks/app/api/auth/me/route-9905c76bc79bb039.js"
215
  ],
216
+ "/api/projects/[id]/sites/route": [
217
  "static/chunks/webpack-c81a7e1091340d8b.js",
218
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
219
  "static/chunks/1684-94ae6109893bd411.js",
220
  "static/chunks/main-app-eac23abd81400eeb.js",
221
+ "static/chunks/app/api/projects/[id]/sites/route-b8d9f3309a1aabb6.js"
222
  ],
223
+ "/api/projects/route": [
224
  "static/chunks/webpack-c81a7e1091340d8b.js",
225
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
226
  "static/chunks/1684-94ae6109893bd411.js",
227
  "static/chunks/main-app-eac23abd81400eeb.js",
228
+ "static/chunks/app/api/projects/route-3fdeadd5f4cc9321.js"
229
  ],
230
+ "/api/generate/route": [
231
  "static/chunks/webpack-c81a7e1091340d8b.js",
232
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
233
  "static/chunks/1684-94ae6109893bd411.js",
234
  "static/chunks/main-app-eac23abd81400eeb.js",
235
+ "static/chunks/app/api/generate/route-3fcc5518477e369e.js"
236
  ],
237
+ "/api/models/route": [
238
  "static/chunks/webpack-c81a7e1091340d8b.js",
239
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
240
  "static/chunks/1684-94ae6109893bd411.js",
241
  "static/chunks/main-app-eac23abd81400eeb.js",
242
+ "static/chunks/app/api/models/route-f2500a9d9bef7a52.js"
243
  ],
244
  "/api/sites/[id]/publish/route": [
245
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
262
  "static/chunks/main-app-eac23abd81400eeb.js",
263
  "static/chunks/app/api/sites/[id]/route-8757097247ef3272.js"
264
  ],
265
+ "/api/sites/[id]/thumbnail/route": [
266
  "static/chunks/webpack-c81a7e1091340d8b.js",
267
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
268
  "static/chunks/1684-94ae6109893bd411.js",
269
  "static/chunks/main-app-eac23abd81400eeb.js",
270
+ "static/chunks/app/api/sites/[id]/thumbnail/route-82f44a449ae7dd32.js"
271
  ],
272
  "/api/sites/route": [
273
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
276
  "static/chunks/main-app-eac23abd81400eeb.js",
277
  "static/chunks/app/api/sites/route-1b735122cd050b64.js"
278
  ],
279
+ "/api/sites/[id]/settings/route": [
280
  "static/chunks/webpack-c81a7e1091340d8b.js",
281
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
282
  "static/chunks/1684-94ae6109893bd411.js",
283
  "static/chunks/main-app-eac23abd81400eeb.js",
284
+ "static/chunks/app/api/sites/[id]/settings/route-a4110613ae39e9e3.js"
285
  ],
286
+ "/api/sync/projects/[id]/route": [
287
  "static/chunks/webpack-c81a7e1091340d8b.js",
288
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
289
  "static/chunks/1684-94ae6109893bd411.js",
290
  "static/chunks/main-app-eac23abd81400eeb.js",
291
+ "static/chunks/app/api/sync/projects/[id]/route-df598dcf120a1209.js"
292
  ],
293
  "/api/sync/projects/route": [
294
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
297
  "static/chunks/main-app-eac23abd81400eeb.js",
298
  "static/chunks/app/api/sync/projects/route-9e0db8afae377fa3.js"
299
  ],
300
+ "/api/sync/files/route": [
301
  "static/chunks/webpack-c81a7e1091340d8b.js",
302
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
303
  "static/chunks/1684-94ae6109893bd411.js",
304
  "static/chunks/main-app-eac23abd81400eeb.js",
305
+ "static/chunks/app/api/sync/files/route-63c78c4ce397e171.js"
306
  ],
307
+ "/sites/[id]/[...path]/route": [
308
  "static/chunks/webpack-c81a7e1091340d8b.js",
309
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
310
  "static/chunks/1684-94ae6109893bd411.js",
311
  "static/chunks/main-app-eac23abd81400eeb.js",
312
+ "static/chunks/app/sites/[id]/[...path]/route-21a2d1800183d7cb.js"
313
  ],
314
+ "/api/sync/status/route": [
315
  "static/chunks/webpack-c81a7e1091340d8b.js",
316
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
317
  "static/chunks/1684-94ae6109893bd411.js",
318
  "static/chunks/main-app-eac23abd81400eeb.js",
319
+ "static/chunks/app/api/sync/status/route-8bb958d7801bf763.js"
320
  ],
321
  "/sites/[id]/route": [
322
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
325
  "static/chunks/main-app-eac23abd81400eeb.js",
326
  "static/chunks/app/sites/[id]/route-aaf0334e238f8f14.js"
327
  ],
328
+ "/api/validate-key/route": [
329
  "static/chunks/webpack-c81a7e1091340d8b.js",
330
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
331
  "static/chunks/1684-94ae6109893bd411.js",
332
  "static/chunks/main-app-eac23abd81400eeb.js",
333
+ "static/chunks/app/api/validate-key/route-c03a8560d2bd05a5.js"
334
  ],
335
+ "/api/sites/[id]/functions/[...path]/route": [
336
  "static/chunks/webpack-c81a7e1091340d8b.js",
337
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
338
  "static/chunks/1684-94ae6109893bd411.js",
339
  "static/chunks/main-app-eac23abd81400eeb.js",
340
+ "static/chunks/app/api/sites/[id]/functions/[...path]/route-1e8dcddfbba051ee.js"
341
  ],
342
  "/admin/docs/page": [
343
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
367
  "static/chunks/main-app-eac23abd81400eeb.js",
368
  "static/chunks/app/admin/page-f05c1054700b06bb.js"
369
  ],
370
+ "/admin/settings/application/page": [
371
  "static/chunks/webpack-c81a7e1091340d8b.js",
372
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
373
  "static/chunks/1684-94ae6109893bd411.js",
 
379
  "static/chunks/3263-c92ef084ef21734b.js",
380
  "static/chunks/4750-0f9d0976158ca18d.js",
381
  "static/chunks/9695-475a71a5d57464e1.js",
382
+ "static/chunks/app/admin/settings/application/page-dc785116eef18e9d.js"
383
  ],
384
  "/admin/settings/model/page": [
385
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
395
  "static/chunks/9695-475a71a5d57464e1.js",
396
  "static/chunks/app/admin/settings/model/page-e024da3091445646.js"
397
  ],
398
+ "/admin/projects/page": [
399
  "static/chunks/webpack-c81a7e1091340d8b.js",
400
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
401
  "static/chunks/1684-94ae6109893bd411.js",
 
407
  "static/chunks/3263-c92ef084ef21734b.js",
408
  "static/chunks/4750-0f9d0976158ca18d.js",
409
  "static/chunks/9695-475a71a5d57464e1.js",
410
+ "static/chunks/app/admin/projects/page-1d5cea6db8f0f7fa.js"
411
  ],
412
+ "/admin/skills/page": [
413
  "static/chunks/webpack-c81a7e1091340d8b.js",
414
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
415
  "static/chunks/1684-94ae6109893bd411.js",
 
421
  "static/chunks/3263-c92ef084ef21734b.js",
422
  "static/chunks/4750-0f9d0976158ca18d.js",
423
  "static/chunks/9695-475a71a5d57464e1.js",
424
+ "static/chunks/app/admin/skills/page-cfcec55ab3500973.js"
425
  ],
426
+ "/admin/settings/page": [
427
  "static/chunks/webpack-c81a7e1091340d8b.js",
428
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
429
  "static/chunks/1684-94ae6109893bd411.js",
 
435
  "static/chunks/3263-c92ef084ef21734b.js",
436
  "static/chunks/4750-0f9d0976158ca18d.js",
437
  "static/chunks/9695-475a71a5d57464e1.js",
438
+ "static/chunks/app/admin/settings/page-b4f8d13de930b91b.js"
439
  ],
440
  "/admin/sites/page": [
441
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
451
  "static/chunks/9695-475a71a5d57464e1.js",
452
  "static/chunks/app/admin/sites/page-f0e071160afe9175.js"
453
  ],
454
+ "/admin/templates/page": [
455
  "static/chunks/webpack-c81a7e1091340d8b.js",
456
  "static/chunks/4bd1b696-2683f5a71cc09935.js",
457
  "static/chunks/1684-94ae6109893bd411.js",
 
463
  "static/chunks/3263-c92ef084ef21734b.js",
464
  "static/chunks/4750-0f9d0976158ca18d.js",
465
  "static/chunks/9695-475a71a5d57464e1.js",
466
+ "static/chunks/app/admin/templates/page-e957189165c35277.js"
467
  ],
468
  "/page": [
469
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
489
  "static/chunks/4792-f97f5e70e2ff5861.js",
490
  "static/chunks/4750-0f9d0976158ca18d.js",
491
  "static/chunks/app/test-generation/page-c0fb010ce78373b4.js"
 
 
 
 
 
 
 
492
  ]
493
  }
494
  }
.next/app-path-routes-manifest.json CHANGED
@@ -1,61 +1,61 @@
1
  {
2
  "/_not-found/page": "/_not-found",
3
- "/api/admin/run-migrations/route": "/api/admin/run-migrations",
4
- "/api/admin/sites/[id]/database/query/route": "/api/admin/sites/[id]/database/query",
5
  "/api/admin/sites/[id]/database/logs/route": "/api/admin/sites/[id]/database/logs",
6
- "/api/admin/sites/[id]/functions/[functionId]/route": "/api/admin/sites/[id]/functions/[functionId]",
 
7
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": "/api/admin/sites/[id]/functions/[functionId]/logs",
8
- "/api/admin/sites/[id]/functions/route": "/api/admin/sites/[id]/functions",
9
  "/api/admin/sites/[id]/secrets/[secretId]/route": "/api/admin/sites/[id]/secrets/[secretId]",
10
  "/api/admin/sites/[id]/secrets/route": "/api/admin/sites/[id]/secrets",
11
- "/api/admin/sites/[id]/server-functions/[functionId]/route": "/api/admin/sites/[id]/server-functions/[functionId]",
12
- "/api/admin/sites/[id]/server-context/route": "/api/admin/sites/[id]/server-context",
13
  "/api/admin/sites/[id]/server-context/mutate/route": "/api/admin/sites/[id]/server-context/mutate",
 
 
14
  "/api/admin/sites/[id]/server-functions/route": "/api/admin/sites/[id]/server-functions",
 
15
  "/api/analytics/[siteId]/clear/route": "/api/analytics/[siteId]/clear",
16
  "/api/analytics/[siteId]/export/route": "/api/analytics/[siteId]/export",
17
- "/api/analytics/[siteId]/engagement/route": "/api/analytics/[siteId]/engagement",
18
  "/api/analytics/[siteId]/heatmap/route": "/api/analytics/[siteId]/heatmap",
 
 
19
  "/api/analytics/[siteId]/storage/route": "/api/analytics/[siteId]/storage",
20
  "/api/analytics/[siteId]/route": "/api/analytics/[siteId]",
21
- "/api/analytics/track/route": "/api/analytics/track",
22
  "/api/analytics/[siteId]/overview/route": "/api/analytics/[siteId]/overview",
23
- "/api/analytics/interaction/route": "/api/analytics/interaction",
24
- "/api/admin/sites/[id]/database/schema/route": "/api/admin/sites/[id]/database/schema",
25
  "/api/auth/check/route": "/api/auth/check",
 
 
26
  "/api/auth/login/route": "/api/auth/login",
27
- "/api/generate/route": "/api/generate",
28
  "/api/auth/logout/route": "/api/auth/logout",
29
  "/api/auth/me/route": "/api/auth/me",
30
- "/api/docs/[...path]/route": "/api/docs/[...path]",
31
  "/api/projects/[id]/sites/route": "/api/projects/[id]/sites",
32
- "/api/models/route": "/api/models",
33
  "/api/projects/route": "/api/projects",
 
 
34
  "/api/sites/[id]/publish/route": "/api/sites/[id]/publish",
35
  "/api/shell/execute/route": "/api/shell/execute",
36
  "/api/sites/[id]/route": "/api/sites/[id]",
37
- "/api/sites/[id]/settings/route": "/api/sites/[id]/settings",
38
- "/api/sites/route": "/api/sites",
39
  "/api/sites/[id]/thumbnail/route": "/api/sites/[id]/thumbnail",
40
- "/api/sync/files/route": "/api/sync/files",
41
- "/api/sync/projects/route": "/api/sync/projects",
42
- "/api/validate-key/route": "/api/validate-key",
43
  "/api/sync/projects/[id]/route": "/api/sync/projects/[id]",
 
 
44
  "/sites/[id]/[...path]/route": "/sites/[id]/[...path]",
45
- "/sites/[id]/route": "/sites/[id]",
46
  "/api/sync/status/route": "/api/sync/status",
47
- "/api/analytics/[siteId]/sessions/route": "/api/analytics/[siteId]/sessions",
 
 
48
  "/admin/docs/page": "/admin/docs",
49
  "/admin/login/page": "/admin/login",
50
  "/admin/page": "/admin",
51
- "/admin/projects/page": "/admin/projects",
52
- "/admin/settings/model/page": "/admin/settings/model",
53
  "/admin/settings/application/page": "/admin/settings/application",
54
- "/admin/templates/page": "/admin/templates",
 
55
  "/admin/skills/page": "/admin/skills",
56
- "/admin/sites/page": "/admin/sites",
57
  "/admin/settings/page": "/admin/settings",
 
 
58
  "/page": "/",
59
- "/test-generation/page": "/test-generation",
60
- "/api/sites/[id]/functions/[...path]/route": "/api/sites/[id]/functions/[...path]"
61
  }
 
1
  {
2
  "/_not-found/page": "/_not-found",
3
+ "/api/admin/sites/[id]/database/schema/route": "/api/admin/sites/[id]/database/schema",
 
4
  "/api/admin/sites/[id]/database/logs/route": "/api/admin/sites/[id]/database/logs",
5
+ "/api/admin/sites/[id]/database/query/route": "/api/admin/sites/[id]/database/query",
6
+ "/api/admin/run-migrations/route": "/api/admin/run-migrations",
7
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": "/api/admin/sites/[id]/functions/[functionId]/logs",
8
+ "/api/admin/sites/[id]/functions/[functionId]/route": "/api/admin/sites/[id]/functions/[functionId]",
9
  "/api/admin/sites/[id]/secrets/[secretId]/route": "/api/admin/sites/[id]/secrets/[secretId]",
10
  "/api/admin/sites/[id]/secrets/route": "/api/admin/sites/[id]/secrets",
 
 
11
  "/api/admin/sites/[id]/server-context/mutate/route": "/api/admin/sites/[id]/server-context/mutate",
12
+ "/api/admin/sites/[id]/server-context/route": "/api/admin/sites/[id]/server-context",
13
+ "/api/admin/sites/[id]/server-functions/[functionId]/route": "/api/admin/sites/[id]/server-functions/[functionId]",
14
  "/api/admin/sites/[id]/server-functions/route": "/api/admin/sites/[id]/server-functions",
15
+ "/api/admin/sites/[id]/functions/route": "/api/admin/sites/[id]/functions",
16
  "/api/analytics/[siteId]/clear/route": "/api/analytics/[siteId]/clear",
17
  "/api/analytics/[siteId]/export/route": "/api/analytics/[siteId]/export",
 
18
  "/api/analytics/[siteId]/heatmap/route": "/api/analytics/[siteId]/heatmap",
19
+ "/api/analytics/[siteId]/engagement/route": "/api/analytics/[siteId]/engagement",
20
+ "/api/analytics/[siteId]/sessions/route": "/api/analytics/[siteId]/sessions",
21
  "/api/analytics/[siteId]/storage/route": "/api/analytics/[siteId]/storage",
22
  "/api/analytics/[siteId]/route": "/api/analytics/[siteId]",
 
23
  "/api/analytics/[siteId]/overview/route": "/api/analytics/[siteId]/overview",
24
+ "/api/analytics/track/route": "/api/analytics/track",
 
25
  "/api/auth/check/route": "/api/auth/check",
26
+ "/api/analytics/interaction/route": "/api/analytics/interaction",
27
+ "/api/docs/[...path]/route": "/api/docs/[...path]",
28
  "/api/auth/login/route": "/api/auth/login",
 
29
  "/api/auth/logout/route": "/api/auth/logout",
30
  "/api/auth/me/route": "/api/auth/me",
 
31
  "/api/projects/[id]/sites/route": "/api/projects/[id]/sites",
 
32
  "/api/projects/route": "/api/projects",
33
+ "/api/generate/route": "/api/generate",
34
+ "/api/models/route": "/api/models",
35
  "/api/sites/[id]/publish/route": "/api/sites/[id]/publish",
36
  "/api/shell/execute/route": "/api/shell/execute",
37
  "/api/sites/[id]/route": "/api/sites/[id]",
 
 
38
  "/api/sites/[id]/thumbnail/route": "/api/sites/[id]/thumbnail",
39
+ "/api/sites/route": "/api/sites",
40
+ "/api/sites/[id]/settings/route": "/api/sites/[id]/settings",
 
41
  "/api/sync/projects/[id]/route": "/api/sync/projects/[id]",
42
+ "/api/sync/projects/route": "/api/sync/projects",
43
+ "/api/sync/files/route": "/api/sync/files",
44
  "/sites/[id]/[...path]/route": "/sites/[id]/[...path]",
 
45
  "/api/sync/status/route": "/api/sync/status",
46
+ "/sites/[id]/route": "/sites/[id]",
47
+ "/api/validate-key/route": "/api/validate-key",
48
+ "/api/sites/[id]/functions/[...path]/route": "/api/sites/[id]/functions/[...path]",
49
  "/admin/docs/page": "/admin/docs",
50
  "/admin/login/page": "/admin/login",
51
  "/admin/page": "/admin",
 
 
52
  "/admin/settings/application/page": "/admin/settings/application",
53
+ "/admin/settings/model/page": "/admin/settings/model",
54
+ "/admin/projects/page": "/admin/projects",
55
  "/admin/skills/page": "/admin/skills",
 
56
  "/admin/settings/page": "/admin/settings",
57
+ "/admin/sites/page": "/admin/sites",
58
+ "/admin/templates/page": "/admin/templates",
59
  "/page": "/",
60
+ "/test-generation/page": "/test-generation"
 
61
  }
.next/build-manifest.json CHANGED
@@ -5,8 +5,8 @@
5
  "devFiles": [],
6
  "ampDevFiles": [],
7
  "lowPriorityFiles": [
8
- "static/GN54BbL4KORqecYNj1l26/_buildManifest.js",
9
- "static/GN54BbL4KORqecYNj1l26/_ssgManifest.js"
10
  ],
11
  "rootMainFiles": [
12
  "static/chunks/webpack-c81a7e1091340d8b.js",
 
5
  "devFiles": [],
6
  "ampDevFiles": [],
7
  "lowPriorityFiles": [
8
+ "static/9vuBdSevB6CUChUh5Igaf/_buildManifest.js",
9
+ "static/9vuBdSevB6CUChUh5Igaf/_ssgManifest.js"
10
  ],
11
  "rootMainFiles": [
12
  "static/chunks/webpack-c81a7e1091340d8b.js",
.next/prerender-manifest.json CHANGED
@@ -49,7 +49,7 @@
49
  "x-next-revalidate-tag-token"
50
  ]
51
  },
52
- "/admin/docs": {
53
  "experimentalBypassFor": [
54
  {
55
  "type": "header",
@@ -62,8 +62,8 @@
62
  }
63
  ],
64
  "initialRevalidateSeconds": false,
65
- "srcRoute": "/admin/docs",
66
- "dataRoute": "/admin/docs.rsc",
67
  "allowHeader": [
68
  "host",
69
  "x-matched-path",
@@ -73,7 +73,7 @@
73
  "x-next-revalidate-tag-token"
74
  ]
75
  },
76
- "/admin/templates": {
77
  "experimentalBypassFor": [
78
  {
79
  "type": "header",
@@ -86,8 +86,8 @@
86
  }
87
  ],
88
  "initialRevalidateSeconds": false,
89
- "srcRoute": "/admin/templates",
90
- "dataRoute": "/admin/templates.rsc",
91
  "allowHeader": [
92
  "host",
93
  "x-matched-path",
@@ -97,7 +97,7 @@
97
  "x-next-revalidate-tag-token"
98
  ]
99
  },
100
- "/admin/settings/application": {
101
  "experimentalBypassFor": [
102
  {
103
  "type": "header",
@@ -110,8 +110,8 @@
110
  }
111
  ],
112
  "initialRevalidateSeconds": false,
113
- "srcRoute": "/admin/settings/application",
114
- "dataRoute": "/admin/settings/application.rsc",
115
  "allowHeader": [
116
  "host",
117
  "x-matched-path",
@@ -121,7 +121,7 @@
121
  "x-next-revalidate-tag-token"
122
  ]
123
  },
124
- "/admin/settings": {
125
  "experimentalBypassFor": [
126
  {
127
  "type": "header",
@@ -134,8 +134,8 @@
134
  }
135
  ],
136
  "initialRevalidateSeconds": false,
137
- "srcRoute": "/admin/settings",
138
- "dataRoute": "/admin/settings.rsc",
139
  "allowHeader": [
140
  "host",
141
  "x-matched-path",
@@ -145,7 +145,7 @@
145
  "x-next-revalidate-tag-token"
146
  ]
147
  },
148
- "/admin/projects": {
149
  "experimentalBypassFor": [
150
  {
151
  "type": "header",
@@ -158,8 +158,8 @@
158
  }
159
  ],
160
  "initialRevalidateSeconds": false,
161
- "srcRoute": "/admin/projects",
162
- "dataRoute": "/admin/projects.rsc",
163
  "allowHeader": [
164
  "host",
165
  "x-matched-path",
@@ -169,7 +169,7 @@
169
  "x-next-revalidate-tag-token"
170
  ]
171
  },
172
- "/test-generation": {
173
  "experimentalBypassFor": [
174
  {
175
  "type": "header",
@@ -182,8 +182,8 @@
182
  }
183
  ],
184
  "initialRevalidateSeconds": false,
185
- "srcRoute": "/test-generation",
186
- "dataRoute": "/test-generation.rsc",
187
  "allowHeader": [
188
  "host",
189
  "x-matched-path",
@@ -193,7 +193,7 @@
193
  "x-next-revalidate-tag-token"
194
  ]
195
  },
196
- "/admin/skills": {
197
  "experimentalBypassFor": [
198
  {
199
  "type": "header",
@@ -206,8 +206,8 @@
206
  }
207
  ],
208
  "initialRevalidateSeconds": false,
209
- "srcRoute": "/admin/skills",
210
- "dataRoute": "/admin/skills.rsc",
211
  "allowHeader": [
212
  "host",
213
  "x-matched-path",
@@ -217,7 +217,7 @@
217
  "x-next-revalidate-tag-token"
218
  ]
219
  },
220
- "/admin/sites": {
221
  "experimentalBypassFor": [
222
  {
223
  "type": "header",
@@ -230,8 +230,8 @@
230
  }
231
  ],
232
  "initialRevalidateSeconds": false,
233
- "srcRoute": "/admin/sites",
234
- "dataRoute": "/admin/sites.rsc",
235
  "allowHeader": [
236
  "host",
237
  "x-matched-path",
@@ -241,7 +241,7 @@
241
  "x-next-revalidate-tag-token"
242
  ]
243
  },
244
- "/admin/settings/model": {
245
  "experimentalBypassFor": [
246
  {
247
  "type": "header",
@@ -254,8 +254,8 @@
254
  }
255
  ],
256
  "initialRevalidateSeconds": false,
257
- "srcRoute": "/admin/settings/model",
258
- "dataRoute": "/admin/settings/model.rsc",
259
  "allowHeader": [
260
  "host",
261
  "x-matched-path",
@@ -265,7 +265,7 @@
265
  "x-next-revalidate-tag-token"
266
  ]
267
  },
268
- "/": {
269
  "experimentalBypassFor": [
270
  {
271
  "type": "header",
@@ -278,8 +278,8 @@
278
  }
279
  ],
280
  "initialRevalidateSeconds": false,
281
- "srcRoute": "/",
282
- "dataRoute": "/index.rsc",
283
  "allowHeader": [
284
  "host",
285
  "x-matched-path",
@@ -293,8 +293,8 @@
293
  "dynamicRoutes": {},
294
  "notFoundRoutes": [],
295
  "preview": {
296
- "previewModeId": "3f6e7b68ca0f25523264b5e13ccf0d1b",
297
- "previewModeSigningKey": "66037fb25b96b1af87773cedf53654006f3a412cfca9a385817e5b6fc971e218",
298
- "previewModeEncryptionKey": "780f25b864dc75e98079e1c0718dbfc6d54b653657cbe5f47412a54f508f00b9"
299
  }
300
  }
 
49
  "x-next-revalidate-tag-token"
50
  ]
51
  },
52
+ "/admin/settings/model": {
53
  "experimentalBypassFor": [
54
  {
55
  "type": "header",
 
62
  }
63
  ],
64
  "initialRevalidateSeconds": false,
65
+ "srcRoute": "/admin/settings/model",
66
+ "dataRoute": "/admin/settings/model.rsc",
67
  "allowHeader": [
68
  "host",
69
  "x-matched-path",
 
73
  "x-next-revalidate-tag-token"
74
  ]
75
  },
76
+ "/admin/skills": {
77
  "experimentalBypassFor": [
78
  {
79
  "type": "header",
 
86
  }
87
  ],
88
  "initialRevalidateSeconds": false,
89
+ "srcRoute": "/admin/skills",
90
+ "dataRoute": "/admin/skills.rsc",
91
  "allowHeader": [
92
  "host",
93
  "x-matched-path",
 
97
  "x-next-revalidate-tag-token"
98
  ]
99
  },
100
+ "/": {
101
  "experimentalBypassFor": [
102
  {
103
  "type": "header",
 
110
  }
111
  ],
112
  "initialRevalidateSeconds": false,
113
+ "srcRoute": "/",
114
+ "dataRoute": "/index.rsc",
115
  "allowHeader": [
116
  "host",
117
  "x-matched-path",
 
121
  "x-next-revalidate-tag-token"
122
  ]
123
  },
124
+ "/test-generation": {
125
  "experimentalBypassFor": [
126
  {
127
  "type": "header",
 
134
  }
135
  ],
136
  "initialRevalidateSeconds": false,
137
+ "srcRoute": "/test-generation",
138
+ "dataRoute": "/test-generation.rsc",
139
  "allowHeader": [
140
  "host",
141
  "x-matched-path",
 
145
  "x-next-revalidate-tag-token"
146
  ]
147
  },
148
+ "/admin/docs": {
149
  "experimentalBypassFor": [
150
  {
151
  "type": "header",
 
158
  }
159
  ],
160
  "initialRevalidateSeconds": false,
161
+ "srcRoute": "/admin/docs",
162
+ "dataRoute": "/admin/docs.rsc",
163
  "allowHeader": [
164
  "host",
165
  "x-matched-path",
 
169
  "x-next-revalidate-tag-token"
170
  ]
171
  },
172
+ "/admin/settings/application": {
173
  "experimentalBypassFor": [
174
  {
175
  "type": "header",
 
182
  }
183
  ],
184
  "initialRevalidateSeconds": false,
185
+ "srcRoute": "/admin/settings/application",
186
+ "dataRoute": "/admin/settings/application.rsc",
187
  "allowHeader": [
188
  "host",
189
  "x-matched-path",
 
193
  "x-next-revalidate-tag-token"
194
  ]
195
  },
196
+ "/admin/sites": {
197
  "experimentalBypassFor": [
198
  {
199
  "type": "header",
 
206
  }
207
  ],
208
  "initialRevalidateSeconds": false,
209
+ "srcRoute": "/admin/sites",
210
+ "dataRoute": "/admin/sites.rsc",
211
  "allowHeader": [
212
  "host",
213
  "x-matched-path",
 
217
  "x-next-revalidate-tag-token"
218
  ]
219
  },
220
+ "/admin/settings": {
221
  "experimentalBypassFor": [
222
  {
223
  "type": "header",
 
230
  }
231
  ],
232
  "initialRevalidateSeconds": false,
233
+ "srcRoute": "/admin/settings",
234
+ "dataRoute": "/admin/settings.rsc",
235
  "allowHeader": [
236
  "host",
237
  "x-matched-path",
 
241
  "x-next-revalidate-tag-token"
242
  ]
243
  },
244
+ "/admin/templates": {
245
  "experimentalBypassFor": [
246
  {
247
  "type": "header",
 
254
  }
255
  ],
256
  "initialRevalidateSeconds": false,
257
+ "srcRoute": "/admin/templates",
258
+ "dataRoute": "/admin/templates.rsc",
259
  "allowHeader": [
260
  "host",
261
  "x-matched-path",
 
265
  "x-next-revalidate-tag-token"
266
  ]
267
  },
268
+ "/admin/projects": {
269
  "experimentalBypassFor": [
270
  {
271
  "type": "header",
 
278
  }
279
  ],
280
  "initialRevalidateSeconds": false,
281
+ "srcRoute": "/admin/projects",
282
+ "dataRoute": "/admin/projects.rsc",
283
  "allowHeader": [
284
  "host",
285
  "x-matched-path",
 
293
  "dynamicRoutes": {},
294
  "notFoundRoutes": [],
295
  "preview": {
296
+ "previewModeId": "34a23cbb30e9dedfdf948344c6b49fd3",
297
+ "previewModeSigningKey": "025c2a1f4659e3ab0244bd7c854a02f0b7cd74954bb516ce1b319c111eec1b34",
298
+ "previewModeEncryptionKey": "a76a5d1205f9c38e0a69e2c1aa3667910a81753ae956d745e574856885a4715e"
299
  }
300
  }
.next/server/app-paths-manifest.json CHANGED
@@ -1,61 +1,61 @@
1
  {
2
  "/_not-found/page": "app/_not-found/page.js",
3
- "/api/admin/run-migrations/route": "app/api/admin/run-migrations/route.js",
4
- "/api/admin/sites/[id]/database/query/route": "app/api/admin/sites/[id]/database/query/route.js",
5
  "/api/admin/sites/[id]/database/logs/route": "app/api/admin/sites/[id]/database/logs/route.js",
6
- "/api/admin/sites/[id]/functions/[functionId]/route": "app/api/admin/sites/[id]/functions/[functionId]/route.js",
 
7
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": "app/api/admin/sites/[id]/functions/[functionId]/logs/route.js",
8
- "/api/admin/sites/[id]/functions/route": "app/api/admin/sites/[id]/functions/route.js",
9
  "/api/admin/sites/[id]/secrets/[secretId]/route": "app/api/admin/sites/[id]/secrets/[secretId]/route.js",
10
  "/api/admin/sites/[id]/secrets/route": "app/api/admin/sites/[id]/secrets/route.js",
11
- "/api/admin/sites/[id]/server-functions/[functionId]/route": "app/api/admin/sites/[id]/server-functions/[functionId]/route.js",
12
- "/api/admin/sites/[id]/server-context/route": "app/api/admin/sites/[id]/server-context/route.js",
13
  "/api/admin/sites/[id]/server-context/mutate/route": "app/api/admin/sites/[id]/server-context/mutate/route.js",
 
 
14
  "/api/admin/sites/[id]/server-functions/route": "app/api/admin/sites/[id]/server-functions/route.js",
 
15
  "/api/analytics/[siteId]/clear/route": "app/api/analytics/[siteId]/clear/route.js",
16
  "/api/analytics/[siteId]/export/route": "app/api/analytics/[siteId]/export/route.js",
17
- "/api/analytics/[siteId]/engagement/route": "app/api/analytics/[siteId]/engagement/route.js",
18
  "/api/analytics/[siteId]/heatmap/route": "app/api/analytics/[siteId]/heatmap/route.js",
 
 
19
  "/api/analytics/[siteId]/storage/route": "app/api/analytics/[siteId]/storage/route.js",
20
  "/api/analytics/[siteId]/route": "app/api/analytics/[siteId]/route.js",
21
- "/api/analytics/track/route": "app/api/analytics/track/route.js",
22
  "/api/analytics/[siteId]/overview/route": "app/api/analytics/[siteId]/overview/route.js",
23
- "/api/analytics/interaction/route": "app/api/analytics/interaction/route.js",
24
- "/api/admin/sites/[id]/database/schema/route": "app/api/admin/sites/[id]/database/schema/route.js",
25
  "/api/auth/check/route": "app/api/auth/check/route.js",
 
 
26
  "/api/auth/login/route": "app/api/auth/login/route.js",
27
- "/api/generate/route": "app/api/generate/route.js",
28
  "/api/auth/logout/route": "app/api/auth/logout/route.js",
29
  "/api/auth/me/route": "app/api/auth/me/route.js",
30
- "/api/docs/[...path]/route": "app/api/docs/[...path]/route.js",
31
  "/api/projects/[id]/sites/route": "app/api/projects/[id]/sites/route.js",
32
- "/api/models/route": "app/api/models/route.js",
33
  "/api/projects/route": "app/api/projects/route.js",
 
 
34
  "/api/sites/[id]/publish/route": "app/api/sites/[id]/publish/route.js",
35
  "/api/shell/execute/route": "app/api/shell/execute/route.js",
36
  "/api/sites/[id]/route": "app/api/sites/[id]/route.js",
37
- "/api/sites/[id]/settings/route": "app/api/sites/[id]/settings/route.js",
38
- "/api/sites/route": "app/api/sites/route.js",
39
  "/api/sites/[id]/thumbnail/route": "app/api/sites/[id]/thumbnail/route.js",
40
- "/api/sync/files/route": "app/api/sync/files/route.js",
41
- "/api/sync/projects/route": "app/api/sync/projects/route.js",
42
- "/api/validate-key/route": "app/api/validate-key/route.js",
43
  "/api/sync/projects/[id]/route": "app/api/sync/projects/[id]/route.js",
 
 
44
  "/sites/[id]/[...path]/route": "app/sites/[id]/[...path]/route.js",
45
- "/sites/[id]/route": "app/sites/[id]/route.js",
46
  "/api/sync/status/route": "app/api/sync/status/route.js",
47
- "/api/analytics/[siteId]/sessions/route": "app/api/analytics/[siteId]/sessions/route.js",
 
 
48
  "/admin/docs/page": "app/admin/docs/page.js",
49
  "/admin/login/page": "app/admin/login/page.js",
50
  "/admin/page": "app/admin/page.js",
51
- "/admin/projects/page": "app/admin/projects/page.js",
52
- "/admin/settings/model/page": "app/admin/settings/model/page.js",
53
  "/admin/settings/application/page": "app/admin/settings/application/page.js",
54
- "/admin/templates/page": "app/admin/templates/page.js",
 
55
  "/admin/skills/page": "app/admin/skills/page.js",
56
- "/admin/sites/page": "app/admin/sites/page.js",
57
  "/admin/settings/page": "app/admin/settings/page.js",
 
 
58
  "/page": "app/page.js",
59
- "/test-generation/page": "app/test-generation/page.js",
60
- "/api/sites/[id]/functions/[...path]/route": "app/api/sites/[id]/functions/[...path]/route.js"
61
  }
 
1
  {
2
  "/_not-found/page": "app/_not-found/page.js",
3
+ "/api/admin/sites/[id]/database/schema/route": "app/api/admin/sites/[id]/database/schema/route.js",
 
4
  "/api/admin/sites/[id]/database/logs/route": "app/api/admin/sites/[id]/database/logs/route.js",
5
+ "/api/admin/sites/[id]/database/query/route": "app/api/admin/sites/[id]/database/query/route.js",
6
+ "/api/admin/run-migrations/route": "app/api/admin/run-migrations/route.js",
7
  "/api/admin/sites/[id]/functions/[functionId]/logs/route": "app/api/admin/sites/[id]/functions/[functionId]/logs/route.js",
8
+ "/api/admin/sites/[id]/functions/[functionId]/route": "app/api/admin/sites/[id]/functions/[functionId]/route.js",
9
  "/api/admin/sites/[id]/secrets/[secretId]/route": "app/api/admin/sites/[id]/secrets/[secretId]/route.js",
10
  "/api/admin/sites/[id]/secrets/route": "app/api/admin/sites/[id]/secrets/route.js",
 
 
11
  "/api/admin/sites/[id]/server-context/mutate/route": "app/api/admin/sites/[id]/server-context/mutate/route.js",
12
+ "/api/admin/sites/[id]/server-context/route": "app/api/admin/sites/[id]/server-context/route.js",
13
+ "/api/admin/sites/[id]/server-functions/[functionId]/route": "app/api/admin/sites/[id]/server-functions/[functionId]/route.js",
14
  "/api/admin/sites/[id]/server-functions/route": "app/api/admin/sites/[id]/server-functions/route.js",
15
+ "/api/admin/sites/[id]/functions/route": "app/api/admin/sites/[id]/functions/route.js",
16
  "/api/analytics/[siteId]/clear/route": "app/api/analytics/[siteId]/clear/route.js",
17
  "/api/analytics/[siteId]/export/route": "app/api/analytics/[siteId]/export/route.js",
 
18
  "/api/analytics/[siteId]/heatmap/route": "app/api/analytics/[siteId]/heatmap/route.js",
19
+ "/api/analytics/[siteId]/engagement/route": "app/api/analytics/[siteId]/engagement/route.js",
20
+ "/api/analytics/[siteId]/sessions/route": "app/api/analytics/[siteId]/sessions/route.js",
21
  "/api/analytics/[siteId]/storage/route": "app/api/analytics/[siteId]/storage/route.js",
22
  "/api/analytics/[siteId]/route": "app/api/analytics/[siteId]/route.js",
 
23
  "/api/analytics/[siteId]/overview/route": "app/api/analytics/[siteId]/overview/route.js",
24
+ "/api/analytics/track/route": "app/api/analytics/track/route.js",
 
25
  "/api/auth/check/route": "app/api/auth/check/route.js",
26
+ "/api/analytics/interaction/route": "app/api/analytics/interaction/route.js",
27
+ "/api/docs/[...path]/route": "app/api/docs/[...path]/route.js",
28
  "/api/auth/login/route": "app/api/auth/login/route.js",
 
29
  "/api/auth/logout/route": "app/api/auth/logout/route.js",
30
  "/api/auth/me/route": "app/api/auth/me/route.js",
 
31
  "/api/projects/[id]/sites/route": "app/api/projects/[id]/sites/route.js",
 
32
  "/api/projects/route": "app/api/projects/route.js",
33
+ "/api/generate/route": "app/api/generate/route.js",
34
+ "/api/models/route": "app/api/models/route.js",
35
  "/api/sites/[id]/publish/route": "app/api/sites/[id]/publish/route.js",
36
  "/api/shell/execute/route": "app/api/shell/execute/route.js",
37
  "/api/sites/[id]/route": "app/api/sites/[id]/route.js",
 
 
38
  "/api/sites/[id]/thumbnail/route": "app/api/sites/[id]/thumbnail/route.js",
39
+ "/api/sites/route": "app/api/sites/route.js",
40
+ "/api/sites/[id]/settings/route": "app/api/sites/[id]/settings/route.js",
 
41
  "/api/sync/projects/[id]/route": "app/api/sync/projects/[id]/route.js",
42
+ "/api/sync/projects/route": "app/api/sync/projects/route.js",
43
+ "/api/sync/files/route": "app/api/sync/files/route.js",
44
  "/sites/[id]/[...path]/route": "app/sites/[id]/[...path]/route.js",
 
45
  "/api/sync/status/route": "app/api/sync/status/route.js",
46
+ "/sites/[id]/route": "app/sites/[id]/route.js",
47
+ "/api/validate-key/route": "app/api/validate-key/route.js",
48
+ "/api/sites/[id]/functions/[...path]/route": "app/api/sites/[id]/functions/[...path]/route.js",
49
  "/admin/docs/page": "app/admin/docs/page.js",
50
  "/admin/login/page": "app/admin/login/page.js",
51
  "/admin/page": "app/admin/page.js",
 
 
52
  "/admin/settings/application/page": "app/admin/settings/application/page.js",
53
+ "/admin/settings/model/page": "app/admin/settings/model/page.js",
54
+ "/admin/projects/page": "app/admin/projects/page.js",
55
  "/admin/skills/page": "app/admin/skills/page.js",
 
56
  "/admin/settings/page": "app/admin/settings/page.js",
57
+ "/admin/sites/page": "app/admin/sites/page.js",
58
+ "/admin/templates/page": "app/admin/templates/page.js",
59
  "/page": "app/page.js",
60
+ "/test-generation/page": "app/test-generation/page.js"
 
61
  }
.next/server/app/_not-found.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[59665,[],\"MetadataBoundary\"]\n9:I[59665,[],\"OutletBoundary\"]\nc:I[74911,[],\"AsyncMetadataOutlet\"]\ne:I[59665,[],\"ViewportBoundary\"]\n10:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"5C0JyqexQMj3wXA8GGcNU\",{\"children\":[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:\"$Sreact.suspense\"\n12:I[74911,[],\"AsyncMetadata\"]\n8:[\"$\",\"$11\",null,{\"fallback\":null,\"children\":[\"$\",\"$L12\",null,{\"promise\":\"$@13\"}]}]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"13:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":\"$13:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[59665,[],\"MetadataBoundary\"]\n9:I[59665,[],\"OutletBoundary\"]\nc:I[74911,[],\"AsyncMetadataOutlet\"]\ne:I[59665,[],\"ViewportBoundary\"]\n10:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"wQcBI8QunRX7ZQ0gHa_Y1\",{\"children\":[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:\"$Sreact.suspense\"\n12:I[74911,[],\"AsyncMetadata\"]\n8:[\"$\",\"$11\",null,{\"fallback\":null,\"children\":[\"$\",\"$L12\",null,{\"promise\":\"$@13\"}]}]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"13:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":\"$13:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/_not-found.rsc CHANGED
@@ -13,7 +13,7 @@ e:I[59665,[],"ViewportBoundary"]
13
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
16
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","_not-found"],"i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["/_not-found",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],["$","$L7",null,{"children":"$L8"}],null,["$","$L9",null,{"children":["$La","$Lb",["$","$Lc",null,{"promise":"$@d"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$1","5C0JyqexQMj3wXA8GGcNU",{"children":[["$","$Le",null,{"children":"$Lf"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$10","$undefined"],"s":false,"S":true}
17
  11:"$Sreact.suspense"
18
  12:I[74911,[],"AsyncMetadata"]
19
  8:["$","$11",null,{"fallback":null,"children":["$","$L12",null,{"promise":"$@13"}]}]
 
13
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
16
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","_not-found"],"i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["/_not-found",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],["$","$L7",null,{"children":"$L8"}],null,["$","$L9",null,{"children":["$La","$Lb",["$","$Lc",null,{"promise":"$@d"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$1","wQcBI8QunRX7ZQ0gHa_Y1",{"children":[["$","$Le",null,{"children":"$Lf"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$10","$undefined"],"s":false,"S":true}
17
  11:"$Sreact.suspense"
18
  12:I[74911,[],"AsyncMetadata"]
19
  8:["$","$11",null,{"fallback":null,"children":["$","$L12",null,{"promise":"$@13"}]}]
.next/server/app/admin.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/app/admin/page-f05c1054700b06bb.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div class="min-h-screen flex items-center justify-center bg-[#0a0a0a]"><p class="text-zinc-400">Redirecting...</p></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[57161,[\"3698\",\"static/chunks/app/admin/page-f05c1054700b06bb.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"8WoFz6kAEAMp9s12QYtE1\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/app/admin/page-f05c1054700b06bb.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div class="min-h-screen flex items-center justify-center bg-[#0a0a0a]"><p class="text-zinc-400">Redirecting...</p></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[57161,[\"3698\",\"static/chunks/app/admin/page-f05c1054700b06bb.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"j38l6Vb5woMNS8YvQC-zK\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin.rsc CHANGED
@@ -15,7 +15,7 @@ d:I[59665,[],"OutletBoundary"]
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin"],"i":false,"f":[[["",{"children":["admin",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","8WoFz6kAEAMp9s12QYtE1",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
 
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin"],"i":false,"f":[[["",{"children":["admin",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","j38l6Vb5woMNS8YvQC-zK",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
.next/server/app/admin/docs.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Docs</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="flex items-center justify-center h-full">Loading documentation...</div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"4004\",\"static/chunks/app/admin/docs/page-88190421bfbac929.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"docs\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"docs\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"docs\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"docs\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"gVmiAB_uJhmxgwf1z1bcZ\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Docs</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="flex items-center justify-center h-full">Loading documentation...</div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"4004\",\"static/chunks/app/admin/docs/page-88190421bfbac929.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"docs\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"docs\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"docs\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"docs\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"uPF2GatGVoqSSuCTGAor6\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/docs.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","docs"],"i":false,"f":[[["",{"children":["admin",{"children":["docs",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"docs"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","gVmiAB_uJhmxgwf1z1bcZ",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","docs"],"i":false,"f":[[["",{"children":["admin",{"children":["docs",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"docs"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","uPF2GatGVoqSSuCTGAor6",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/login.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/app/admin/login/page-5470d9718e2ee0e3.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div class="jsx-301ec7a03a062a2c min-h-screen bg-[#0a0a0a] text-white flex items-center justify-center p-4 animate-fadeIn"><div class="jsx-301ec7a03a062a2c max-w-md w-full text-center"><div class="jsx-301ec7a03a062a2c mb-8 animate-float"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" preserveAspectRatio="xMidYMid meet" class="jsx-301ec7a03a062a2c w-24 h-24 mx-auto"><rect x="0" y="0" width="256" height="256" rx="20" ry="20" fill="#000000" class="jsx-301ec7a03a062a2c"></rect><g transform="translate(0,256) scale(0.0476,-0.0476)" fill="#ffffff" stroke="none" class="jsx-301ec7a03a062a2c"><path d="M725 4825 c-50 -18 -100 -71 -114 -122 -15 -54 -15 -1573 0 -1628 16 -55 44 -92 89 -115 38 -19 62 -20 855 -20 781 0 817 1 853 19 46 23 67 46 87 94 13 32 15 138 15 830 0 566 -3 804 -11 828 -16 45 -55 87 -104 110 -38 18 -82 19 -835 18 -659 0 -802 -2 -835 -14z m1351 -371 c15 -11 37 -33 48 -48 21 -27 21 -38 21 -520 0 -547 3 -523 -68 -566 -31 -19 -54 -20 -521 -20 -483 0 -489 0 -524 22 -20 12 -42 38 -53 62 -17 38 -19 74 -19 504 0 496 1 503 51 548 46 41 66 43 561 41 464 -2 477 -3 504 -23z" class="jsx-301ec7a03a062a2c"></path><path d="M3058 4830 c-44 -13 -87 -49 -108 -90 -19 -37 -20 -61 -20 -471 0 -428 0 -432 22 -471 13 -22 41 -51 64 -64 41 -24 41 -24 685 -24 645 0 645 0 689 -22 63 -33 80 -71 80 -183 0 -101 -15 -144 -63 -179 -28 -21 -41 -21 -695 -26 -666 -5 -667 -5 -702 -27 -109 -68 -106 -247 5 -310 40 -23 40 -23 858 -23 664 0 824 3 850 14 43 17 95 78 102 118 3 18 5 225 3 459 -3 426 -3 426 -31 462 -58 76 -15 71 -757 77 -620 5 -667 6 -692 23 -44 30 -58 74 -58 179 0 116 16 153 80 186 44 22 44 22 693 22 710 0 678 -3 731 60 80 96 41 240 -79 287 -35 14 -1612 17 -1657 3z" class="jsx-301ec7a03a062a2c"></path><path d="M702 2509 c-48 -24 -75 -57 -91 -114 -9 -29 -11 -253 -9 -840 3 -779 4 -801 23 -834 11 -19 37 -48 58 -65 39 -31 39 -31 380 -31 342 0 342 0 399 28 31 15 63 39 73 53 16 25 16 25 62 -16 77 -67 104 -71 470 -68 320 3 320 3 360 30 24 16 49 44 62 70 21 44 21 49 21 854 0 773 -1 811 -19 851 -35 76 -135 120 -215 93 -41 -13 -90 -51 -109 -84 -9 -16 -13 -187 -17 -688 -5 -654 -5 -667 -26 -694 -43 -58 -68 -69 -169 -72 -82 -3 -99 -1 -133 18 -22 12 -49 39 -61 60 -21 37 -21 45 -21 664 0 439 -3 641 -11 673 -32 123 -190 174 -285 91 -73 -64 -69 -20 -70 -743 0 -721 3 -687 -66 -737 -28 -20 -47 -23 -133 -26 -91 -3 -103 -2 -134 20 -19 13 -44 36 -55 51 -21 28 -21 38 -26 695 -4 481 -8 673 -17 687 -50 87 -152 118 -241 74z" class="jsx-301ec7a03a062a2c"></path><path d="M3047 2515 c-47 -16 -81 -46 -101 -90 -14 -28 -16 -95 -16 -463 0 -281 4 -440 11 -459 15 -40 48 -73 94 -94 38 -17 79 -19 685 -19 626 0 646 -1 678 -20 58 -35 72 -72 72 -185 0 -110 -14 -147 -67 -182 -25 -17 -73 -18 -698 -23 -672 -5 -672 -5 -708 -33 -20 -15 -44 -42 -53 -60 -21 -39 -21 -125 -1 -163 20 -38 65 -80 100 -93 19 -8 289 -11 833 -11 701 0 809 2 841 15 48 20 71 41 94 88 19 35 19 60 17 480 -3 444 -3 444 -30 479 -54 71 -23 68 -740 68 -612 0 -645 1 -685 20 -67 30 -83 66 -83 183 0 116 14 156 68 189 35 21 35 21 691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652 0 -807 -2 -838 -14z" class="jsx-301ec7a03a062a2c"></path></g></svg></div><h1 class="jsx-301ec7a03a062a2c text-3xl font-semibold mb-2 tracking-tight">OSW Studio Admin</h1><p class="jsx-301ec7a03a062a2c text-zinc-400 mb-8">Enter your password to continue</p><form class="jsx-301ec7a03a062a2c space-y-4"><div class="jsx-301ec7a03a062a2c text-left"><label for="password" class="jsx-301ec7a03a062a2c block text-sm font-medium text-zinc-400 mb-2">Password</label><input id="password" type="password" placeholder="Enter your password" required="" autofocus="" class="jsx-301ec7a03a062a2c w-full px-4 py-3 bg-zinc-900 border border-zinc-800 rounded-lg text-white placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent transition-all" value=""/></div><button type="submit" class="jsx-301ec7a03a062a2c w-full bg-orange-600 hover:bg-orange-700 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:bg-zinc-700 disabled:text-zinc-500 disabled:cursor-not-allowed">Login</button></form><div class="jsx-301ec7a03a062a2c mt-12 pt-6 border-t border-zinc-800 flex items-center justify-center gap-2 text-sm text-zinc-500"><span class="jsx-301ec7a03a062a2c">Powered by</span><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" preserveAspectRatio="xMidYMid meet" class="jsx-301ec7a03a062a2c w-5 h-5 opacity-80"><rect x="0" y="0" width="256" height="256" rx="20" ry="20" fill="#52525b" class="jsx-301ec7a03a062a2c"></rect><g transform="translate(0,256) scale(0.0476,-0.0476)" fill="#ffffff" stroke="none" class="jsx-301ec7a03a062a2c"><path d="M725 4825 c-50 -18 -100 -71 -114 -122 -15 -54 -15 -1573 0 -1628 16 -55 44 -92 89 -115 38 -19 62 -20 855 -20 781 0 817 1 853 19 46 23 67 46 87 94 13 32 15 138 15 830 0 566 -3 804 -11 828 -16 45 -55 87 -104 110 -38 18 -82 19 -835 18 -659 0 -802 -2 -835 -14z m1351 -371 c15 -11 37 -33 48 -48 21 -27 21 -38 21 -520 0 -547 3 -523 -68 -566 -31 -19 -54 -20 -521 -20 -483 0 -489 0 -524 22 -20 12 -42 38 -53 62 -17 38 -19 74 -19 504 0 496 1 503 51 548 46 41 66 43 561 41 464 -2 477 -3 504 -23z" class="jsx-301ec7a03a062a2c"></path><path d="M3058 4830 c-44 -13 -87 -49 -108 -90 -19 -37 -20 -61 -20 -471 0 -428 0 -432 22 -471 13 -22 41 -51 64 -64 41 -24 41 -24 685 -24 645 0 645 0 689 -22 63 -33 80 -71 80 -183 0 -101 -15 -144 -63 -179 -28 -21 -41 -21 -695 -26 -666 -5 -667 -5 -702 -27 -109 -68 -106 -247 5 -310 40 -23 40 -23 858 -23 664 0 824 3 850 14 43 17 95 78 102 118 3 18 5 225 3 459 -3 426 -3 426 -31 462 -58 76 -15 71 -757 77 -620 5 -667 6 -692 23 -44 30 -58 74 -58 179 0 116 16 153 80 186 44 22 44 22 693 22 710 0 678 -3 731 60 80 96 41 240 -79 287 -35 14 -1612 17 -1657 3z" class="jsx-301ec7a03a062a2c"></path><path d="M702 2509 c-48 -24 -75 -57 -91 -114 -9 -29 -11 -253 -9 -840 3 -779 4 -801 23 -834 11 -19 37 -48 58 -65 39 -31 39 -31 380 -31 342 0 342 0 399 28 31 15 63 39 73 53 16 25 16 25 62 -16 77 -67 104 -71 470 -68 320 3 320 3 360 30 24 16 49 44 62 70 21 44 21 49 21 854 0 773 -1 811 -19 851 -35 76 -135 120 -215 93 -41 -13 -90 -51 -109 -84 -9 -16 -13 -187 -17 -688 -5 -654 -5 -667 -26 -694 -43 -58 -68 -69 -169 -72 -82 -3 -99 -1 -133 18 -22 12 -49 39 -61 60 -21 37 -21 45 -21 664 0 439 -3 641 -11 673 -32 123 -190 174 -285 91 -73 -64 -69 -20 -70 -743 0 -721 3 -687 -66 -737 -28 -20 -47 -23 -133 -26 -91 -3 -103 -2 -134 20 -19 13 -44 36 -55 51 -21 28 -21 38 -26 695 -4 481 -8 673 -17 687 -50 87 -152 118 -241 74z" class="jsx-301ec7a03a062a2c"></path><path d="M3047 2515 c-47 -16 -81 -46 -101 -90 -14 -28 -16 -95 -16 -463 0 -281 4 -440 11 -459 15 -40 48 -73 94 -94 38 -17 79 -19 685 -19 626 0 646 -1 678 -20 58 -35 72 -72 72 -185 0 -110 -14 -147 -67 -182 -25 -17 -73 -18 -698 -23 -672 -5 -672 -5 -708 -33 -20 -15 -44 -42 -53 -60 -21 -39 -21 -125 -1 -163 20 -38 65 -80 100 -93 19 -8 289 -11 833 -11 701 0 809 2 841 15 48 20 71 41 94 88 19 35 19 60 17 480 -3 444 -3 444 -30 479 -54 71 -23 68 -740 68 -612 0 -645 1 -685 20 -67 30 -83 66 -83 183 0 116 14 156 68 189 35 21 35 21 691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652 0 -807 -2 -838 -14z" class="jsx-301ec7a03a062a2c"></path></g></svg><span class="jsx-301ec7a03a062a2c">OSW Studio</span></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[3727,[\"2116\",\"static/chunks/app/admin/login/page-5470d9718e2ee0e3.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"login\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"login\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"login\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"cuHnRYfVAnykWUCbd9TJk\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/app/admin/login/page-5470d9718e2ee0e3.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div class="jsx-301ec7a03a062a2c min-h-screen bg-[#0a0a0a] text-white flex items-center justify-center p-4 animate-fadeIn"><div class="jsx-301ec7a03a062a2c max-w-md w-full text-center"><div class="jsx-301ec7a03a062a2c mb-8 animate-float"><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" preserveAspectRatio="xMidYMid meet" class="jsx-301ec7a03a062a2c w-24 h-24 mx-auto"><rect x="0" y="0" width="256" height="256" rx="20" ry="20" fill="#000000" class="jsx-301ec7a03a062a2c"></rect><g transform="translate(0,256) scale(0.0476,-0.0476)" fill="#ffffff" stroke="none" class="jsx-301ec7a03a062a2c"><path d="M725 4825 c-50 -18 -100 -71 -114 -122 -15 -54 -15 -1573 0 -1628 16 -55 44 -92 89 -115 38 -19 62 -20 855 -20 781 0 817 1 853 19 46 23 67 46 87 94 13 32 15 138 15 830 0 566 -3 804 -11 828 -16 45 -55 87 -104 110 -38 18 -82 19 -835 18 -659 0 -802 -2 -835 -14z m1351 -371 c15 -11 37 -33 48 -48 21 -27 21 -38 21 -520 0 -547 3 -523 -68 -566 -31 -19 -54 -20 -521 -20 -483 0 -489 0 -524 22 -20 12 -42 38 -53 62 -17 38 -19 74 -19 504 0 496 1 503 51 548 46 41 66 43 561 41 464 -2 477 -3 504 -23z" class="jsx-301ec7a03a062a2c"></path><path d="M3058 4830 c-44 -13 -87 -49 -108 -90 -19 -37 -20 -61 -20 -471 0 -428 0 -432 22 -471 13 -22 41 -51 64 -64 41 -24 41 -24 685 -24 645 0 645 0 689 -22 63 -33 80 -71 80 -183 0 -101 -15 -144 -63 -179 -28 -21 -41 -21 -695 -26 -666 -5 -667 -5 -702 -27 -109 -68 -106 -247 5 -310 40 -23 40 -23 858 -23 664 0 824 3 850 14 43 17 95 78 102 118 3 18 5 225 3 459 -3 426 -3 426 -31 462 -58 76 -15 71 -757 77 -620 5 -667 6 -692 23 -44 30 -58 74 -58 179 0 116 16 153 80 186 44 22 44 22 693 22 710 0 678 -3 731 60 80 96 41 240 -79 287 -35 14 -1612 17 -1657 3z" class="jsx-301ec7a03a062a2c"></path><path d="M702 2509 c-48 -24 -75 -57 -91 -114 -9 -29 -11 -253 -9 -840 3 -779 4 -801 23 -834 11 -19 37 -48 58 -65 39 -31 39 -31 380 -31 342 0 342 0 399 28 31 15 63 39 73 53 16 25 16 25 62 -16 77 -67 104 -71 470 -68 320 3 320 3 360 30 24 16 49 44 62 70 21 44 21 49 21 854 0 773 -1 811 -19 851 -35 76 -135 120 -215 93 -41 -13 -90 -51 -109 -84 -9 -16 -13 -187 -17 -688 -5 -654 -5 -667 -26 -694 -43 -58 -68 -69 -169 -72 -82 -3 -99 -1 -133 18 -22 12 -49 39 -61 60 -21 37 -21 45 -21 664 0 439 -3 641 -11 673 -32 123 -190 174 -285 91 -73 -64 -69 -20 -70 -743 0 -721 3 -687 -66 -737 -28 -20 -47 -23 -133 -26 -91 -3 -103 -2 -134 20 -19 13 -44 36 -55 51 -21 28 -21 38 -26 695 -4 481 -8 673 -17 687 -50 87 -152 118 -241 74z" class="jsx-301ec7a03a062a2c"></path><path d="M3047 2515 c-47 -16 -81 -46 -101 -90 -14 -28 -16 -95 -16 -463 0 -281 4 -440 11 -459 15 -40 48 -73 94 -94 38 -17 79 -19 685 -19 626 0 646 -1 678 -20 58 -35 72 -72 72 -185 0 -110 -14 -147 -67 -182 -25 -17 -73 -18 -698 -23 -672 -5 -672 -5 -708 -33 -20 -15 -44 -42 -53 -60 -21 -39 -21 -125 -1 -163 20 -38 65 -80 100 -93 19 -8 289 -11 833 -11 701 0 809 2 841 15 48 20 71 41 94 88 19 35 19 60 17 480 -3 444 -3 444 -30 479 -54 71 -23 68 -740 68 -612 0 -645 1 -685 20 -67 30 -83 66 -83 183 0 116 14 156 68 189 35 21 35 21 691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652 0 -807 -2 -838 -14z" class="jsx-301ec7a03a062a2c"></path></g></svg></div><h1 class="jsx-301ec7a03a062a2c text-3xl font-semibold mb-2 tracking-tight">OSW Studio Admin</h1><p class="jsx-301ec7a03a062a2c text-zinc-400 mb-8">Enter your password to continue</p><form class="jsx-301ec7a03a062a2c space-y-4"><div class="jsx-301ec7a03a062a2c text-left"><label for="password" class="jsx-301ec7a03a062a2c block text-sm font-medium text-zinc-400 mb-2">Password</label><input id="password" type="password" placeholder="Enter your password" required="" autofocus="" class="jsx-301ec7a03a062a2c w-full px-4 py-3 bg-zinc-900 border border-zinc-800 rounded-lg text-white placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent transition-all" value=""/></div><button type="submit" class="jsx-301ec7a03a062a2c w-full bg-orange-600 hover:bg-orange-700 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:bg-zinc-700 disabled:text-zinc-500 disabled:cursor-not-allowed">Login</button></form><div class="jsx-301ec7a03a062a2c mt-12 pt-6 border-t border-zinc-800 flex items-center justify-center gap-2 text-sm text-zinc-500"><span class="jsx-301ec7a03a062a2c">Powered by</span><svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 256" preserveAspectRatio="xMidYMid meet" class="jsx-301ec7a03a062a2c w-5 h-5 opacity-80"><rect x="0" y="0" width="256" height="256" rx="20" ry="20" fill="#52525b" class="jsx-301ec7a03a062a2c"></rect><g transform="translate(0,256) scale(0.0476,-0.0476)" fill="#ffffff" stroke="none" class="jsx-301ec7a03a062a2c"><path d="M725 4825 c-50 -18 -100 -71 -114 -122 -15 -54 -15 -1573 0 -1628 16 -55 44 -92 89 -115 38 -19 62 -20 855 -20 781 0 817 1 853 19 46 23 67 46 87 94 13 32 15 138 15 830 0 566 -3 804 -11 828 -16 45 -55 87 -104 110 -38 18 -82 19 -835 18 -659 0 -802 -2 -835 -14z m1351 -371 c15 -11 37 -33 48 -48 21 -27 21 -38 21 -520 0 -547 3 -523 -68 -566 -31 -19 -54 -20 -521 -20 -483 0 -489 0 -524 22 -20 12 -42 38 -53 62 -17 38 -19 74 -19 504 0 496 1 503 51 548 46 41 66 43 561 41 464 -2 477 -3 504 -23z" class="jsx-301ec7a03a062a2c"></path><path d="M3058 4830 c-44 -13 -87 -49 -108 -90 -19 -37 -20 -61 -20 -471 0 -428 0 -432 22 -471 13 -22 41 -51 64 -64 41 -24 41 -24 685 -24 645 0 645 0 689 -22 63 -33 80 -71 80 -183 0 -101 -15 -144 -63 -179 -28 -21 -41 -21 -695 -26 -666 -5 -667 -5 -702 -27 -109 -68 -106 -247 5 -310 40 -23 40 -23 858 -23 664 0 824 3 850 14 43 17 95 78 102 118 3 18 5 225 3 459 -3 426 -3 426 -31 462 -58 76 -15 71 -757 77 -620 5 -667 6 -692 23 -44 30 -58 74 -58 179 0 116 16 153 80 186 44 22 44 22 693 22 710 0 678 -3 731 60 80 96 41 240 -79 287 -35 14 -1612 17 -1657 3z" class="jsx-301ec7a03a062a2c"></path><path d="M702 2509 c-48 -24 -75 -57 -91 -114 -9 -29 -11 -253 -9 -840 3 -779 4 -801 23 -834 11 -19 37 -48 58 -65 39 -31 39 -31 380 -31 342 0 342 0 399 28 31 15 63 39 73 53 16 25 16 25 62 -16 77 -67 104 -71 470 -68 320 3 320 3 360 30 24 16 49 44 62 70 21 44 21 49 21 854 0 773 -1 811 -19 851 -35 76 -135 120 -215 93 -41 -13 -90 -51 -109 -84 -9 -16 -13 -187 -17 -688 -5 -654 -5 -667 -26 -694 -43 -58 -68 -69 -169 -72 -82 -3 -99 -1 -133 18 -22 12 -49 39 -61 60 -21 37 -21 45 -21 664 0 439 -3 641 -11 673 -32 123 -190 174 -285 91 -73 -64 -69 -20 -70 -743 0 -721 3 -687 -66 -737 -28 -20 -47 -23 -133 -26 -91 -3 -103 -2 -134 20 -19 13 -44 36 -55 51 -21 28 -21 38 -26 695 -4 481 -8 673 -17 687 -50 87 -152 118 -241 74z" class="jsx-301ec7a03a062a2c"></path><path d="M3047 2515 c-47 -16 -81 -46 -101 -90 -14 -28 -16 -95 -16 -463 0 -281 4 -440 11 -459 15 -40 48 -73 94 -94 38 -17 79 -19 685 -19 626 0 646 -1 678 -20 58 -35 72 -72 72 -185 0 -110 -14 -147 -67 -182 -25 -17 -73 -18 -698 -23 -672 -5 -672 -5 -708 -33 -20 -15 -44 -42 -53 -60 -21 -39 -21 -125 -1 -163 20 -38 65 -80 100 -93 19 -8 289 -11 833 -11 701 0 809 2 841 15 48 20 71 41 94 88 19 35 19 60 17 480 -3 444 -3 444 -30 479 -54 71 -23 68 -740 68 -612 0 -645 1 -685 20 -67 30 -83 66 -83 183 0 116 14 156 68 189 35 21 35 21 691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652 0 -807 -2 -838 -14z" class="jsx-301ec7a03a062a2c"></path></g></svg><span class="jsx-301ec7a03a062a2c">OSW Studio</span></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[3727,[\"2116\",\"static/chunks/app/admin/login/page-5470d9718e2ee0e3.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"login\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"login\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"login\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"V01CrIXrnGtMd0fud69UH\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/login.rsc CHANGED
@@ -15,7 +15,7 @@ d:I[59665,[],"OutletBoundary"]
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","login"],"i":false,"f":[[["",{"children":["admin",{"children":["login",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","cuHnRYfVAnykWUCbd9TJk",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
 
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","login"],"i":false,"f":[[["",{"children":["admin",{"children":["login",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["login",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","V01CrIXrnGtMd0fud69UH",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
.next/server/app/admin/projects.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Projects</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading projects...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"3321\",\"static/chunks/app/admin/projects/page-1d5cea6db8f0f7fa.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"projects\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"projects\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"projects\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"projects\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"E7IBvfqK9kcV2BtaLIuCh\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Projects</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading projects...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"3321\",\"static/chunks/app/admin/projects/page-1d5cea6db8f0f7fa.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"projects\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"projects\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"projects\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"projects\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"PLVc4dhshUUd3sp1a9-0d\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/projects.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","projects"],"i":false,"f":[[["",{"children":["admin",{"children":["projects",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["projects",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"projects"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","E7IBvfqK9kcV2BtaLIuCh",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","projects"],"i":false,"f":[[["",{"children":["admin",{"children":["projects",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["projects",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"projects"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","PLVc4dhshUUd3sp1a9-0d",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/settings.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"7122\",\"static/chunks/app/admin/settings/page-b4f8d13de930b91b.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"nVCEMbVA_sGV-2W3QfB6H\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"7122\",\"static/chunks/app/admin/settings/page-b4f8d13de930b91b.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"FNL1tOYo0x0KviQbFP72e\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/settings.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","settings"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","nVCEMbVA_sGV-2W3QfB6H",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","settings"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","FNL1tOYo0x0KviQbFP72e",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/settings/application.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"6047\",\"static/chunks/app/admin/settings/application/page-dc785116eef18e9d.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\",\"application\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"application\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"application\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\",\"settingsTab\":\"application\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"7hEA6s1tF0eeCz4B1rowx\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"6047\",\"static/chunks/app/admin/settings/application/page-dc785116eef18e9d.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\",\"application\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"application\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"application\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\",\"settingsTab\":\"application\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"UnenDKfB6CZcL-S5xCx0P\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/settings/application.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","settings","application"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["application",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["application",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings","settingsTab":"application"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","7hEA6s1tF0eeCz4B1rowx",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","settings","application"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["application",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["application",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings","settingsTab":"application"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","UnenDKfB6CZcL-S5xCx0P",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/settings/model.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"3116\",\"static/chunks/app/admin/settings/model/page-e024da3091445646.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\",\"model\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"model\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"model\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\",\"settingsTab\":\"model\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"VEC8taydamtz0-uYh4xUn\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Settings</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="h-full flex items-center justify-center"><p class="text-muted-foreground">Loading...</p></div><!--/$--></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"3116\",\"static/chunks/app/admin/settings/model/page-e024da3091445646.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"settings\",\"model\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"settings\",{\"children\":[\"model\",{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"model\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"settings\",\"settingsTab\":\"model\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"f8OW2ow1DbAJcJeTDlui1\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/settings/model.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","settings","model"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["model",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings","settingsTab":"model"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","VEC8taydamtz0-uYh4xUn",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","settings","model"],"i":false,"f":[[["",{"children":["admin",{"children":["settings",{"children":["model",{"children":["__PAGE__",{}]}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["model",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"settings","settingsTab":"model"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","f8OW2ow1DbAJcJeTDlui1",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/sites.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Sites</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="h-full flex items-center justify-center"><div class="text-center text-muted-foreground"><p>Sites feature is only available in Server Mode</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"921\",\"static/chunks/app/admin/sites/page-f0e071160afe9175.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"sites\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"sites\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"sites\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"sites\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"v6ZibvY876vKmcnBABY7l\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Sites</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="h-full flex items-center justify-center"><div class="text-center text-muted-foreground"><p>Sites feature is only available in Server Mode</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"921\",\"static/chunks/app/admin/sites/page-f0e071160afe9175.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"sites\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"sites\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"sites\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"sites\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"qbjB7_9LxiFMge-8jLLIb\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/sites.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","sites"],"i":false,"f":[[["",{"children":["admin",{"children":["sites",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["sites",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"sites"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","v6ZibvY876vKmcnBABY7l",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","sites"],"i":false,"f":[[["",{"children":["admin",{"children":["sites",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["sites",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"sites"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","qbjB7_9LxiFMge-8jLLIb",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/skills.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Skills</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading skills...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"849\",\"static/chunks/app/admin/skills/page-cfcec55ab3500973.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"skills\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"skills\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"skills\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"vsa0PO3OiZhLZGquxNfdI\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Skills</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading skills...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"849\",\"static/chunks/app/admin/skills/page-cfcec55ab3500973.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"skills\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"skills\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"skills\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"Mxxi463W6av0InHG6NFAs\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/skills.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","skills"],"i":false,"f":[[["",{"children":["admin",{"children":["skills",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["skills",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"skills"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","vsa0PO3OiZhLZGquxNfdI",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","skills"],"i":false,"f":[[["",{"children":["admin",{"children":["skills",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["skills",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"skills"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Mxxi463W6av0InHG6NFAs",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/admin/templates.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="text-sm font-semibold">Templates</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading templates...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"7698\",\"static/chunks/app/admin/templates/page-e957189165c35277.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"admin\",\"templates\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"templates\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"templates\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"templates\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"RsvlSFjBOqS6S-HOyGbYV\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="text-sm font-semibold">Templates</span></div><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 md:hidden h-8 w-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 12h16"></path><path d="M4 18h16"></path><path d="M4 6h16"></path></svg></button></div></div></div><div class="flex-1 overflow-hidden"><div class="flex items-center justify-center h-screen"><div class="text-center"><div class="animate-spin rounded-full h-12 w-12 border-b-2 border-primary mx-auto"></div><p class="mt-4">Loading templates...</p></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[19009,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"7698\",\"static/chunks/app/admin/templates/page-e957189165c35277.js\"],\"PageWrapper\"]\n8:I[59665,[],\"MetadataBoundary\"]\na:I[59665,[],\"OutletBoundary\"]\nd:I[74911,[],\"AsyncMetadataOutlet\"]\nf:I[59665,[],\"ViewportBoundary\"]\n11:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"admin\",\"templates\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"admin\",{\"children\":[\"templates\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"admin\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"templates\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"view\":\"templates\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],null,[\"$\",\"$La\",null,{\"children\":[\"$Lb\",\"$Lc\",[\"$\",\"$Ld\",null,{\"promise\":\"$@e\"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"P4Z2XO8Xfz6970HfRKLXQ\",{\"children\":[[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"12:\"$Sreact.suspense\"\n13:I[74911,[],\"AsyncMetadata\"]\n9:[\"$\",\"$12\",null,{\"fallback\":null,\"children\":[\"$\",\"$L13\",null,{\"promise\":\"$@14\"}]}]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\nb:null\n"])</script><script>self.__next_f.push([1,"14:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"e:{\"metadata\":\"$14:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/admin/templates.rsc CHANGED
@@ -14,7 +14,7 @@ f:I[59665,[],"ViewportBoundary"]
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","admin","templates"],"i":false,"f":[[["",{"children":["admin",{"children":["templates",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["templates",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"templates"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","RsvlSFjBOqS6S-HOyGbYV",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
 
14
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
17
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","admin","templates"],"i":false,"f":[[["",{"children":["admin",{"children":["templates",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["admin",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["templates",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"view":"templates"}],["$","$L8",null,{"children":"$L9"}],null,["$","$La",null,{"children":["$Lb","$Lc",["$","$Ld",null,{"promise":"$@e"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","P4Z2XO8Xfz6970HfRKLXQ",{"children":[["$","$Lf",null,{"children":"$L10"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$11","$undefined"],"s":false,"S":true}
18
  12:"$Sreact.suspense"
19
  13:I[74911,[],"AsyncMetadata"]
20
  9:["$","$12",null,{"fallback":null,"children":["$","$L13",null,{"promise":"$@14"}]}]
.next/server/app/index.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/06bf0ff1-2f6b5dbae626a171.js" async=""></script><script src="/_next/static/chunks/ad2866b8-a4659a388c5e0680.js" async=""></script><script src="/_next/static/chunks/4792-f97f5e70e2ff5861.js" async=""></script><script src="/_next/static/chunks/3263-c92ef084ef21734b.js" async=""></script><script src="/_next/static/chunks/4750-0f9d0976158ca18d.js" async=""></script><script src="/_next/static/chunks/9695-475a71a5d57464e1.js" async=""></script><script src="/_next/static/chunks/app/page-fc9d69995a28aa9f.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen flex items-center justify-center bg-[#0a0a0a]"><p class="text-zinc-400">Loading...</p></div><!--/$--><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[40796,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"8974\",\"static/chunks/app/page-fc9d69995a28aa9f.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"FHcgspJzLKXX1pLFRlY4W\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><script src="/_next/static/chunks/06bf0ff1-2f6b5dbae626a171.js" async=""></script><script src="/_next/static/chunks/ad2866b8-a4659a388c5e0680.js" async=""></script><script src="/_next/static/chunks/4792-f97f5e70e2ff5861.js" async=""></script><script src="/_next/static/chunks/3263-c92ef084ef21734b.js" async=""></script><script src="/_next/static/chunks/4750-0f9d0976158ca18d.js" async=""></script><script src="/_next/static/chunks/9695-475a71a5d57464e1.js" async=""></script><script src="/_next/static/chunks/app/page-fc9d69995a28aa9f.js" async=""></script><meta name="next-size-adjust" content=""/><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div class="min-h-screen flex items-center justify-center bg-[#0a0a0a]"><p class="text-zinc-400">Loading...</p></div><!--/$--><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[40796,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"4316\",\"static/chunks/ad2866b8-a4659a388c5e0680.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"3263\",\"static/chunks/3263-c92ef084ef21734b.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"9695\",\"static/chunks/9695-475a71a5d57464e1.js\",\"8974\",\"static/chunks/app/page-fc9d69995a28aa9f.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"ULsqL2bmQXB1UTEFO-iTl\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/index.rsc CHANGED
@@ -15,7 +15,7 @@ d:I[59665,[],"OutletBoundary"]
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","FHcgspJzLKXX1pLFRlY4W",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
 
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","ULsqL2bmQXB1UTEFO-iTl",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
.next/server/app/test-generation.html CHANGED
@@ -36,4 +36,4 @@
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
- </svg></div><span class="font-semibold text-lg hidden md:inline">Model Tester</span></button><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"><h1 class="text-lg font-semibold md:hidden">Model Tester</h1></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3 justify-start"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-4 w-4 mr-2" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg>Back to Projects</button></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 h-8 w-8 md:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></div><div class="flex-1 overflow-auto bg-background p-6"><div class="max-w-6xl mx-auto"><div class="bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 rounded-lg p-4 mb-6"><div class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-alert h-5 w-5 text-blue-600 dark:text-blue-400 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="12" x2="12" y1="8" y2="12"></line><line x1="12" x2="12.01" y1="16" y2="16"></line></svg><div class="flex-1"><h3 class="font-medium text-blue-900 dark:text-blue-100 mb-1">How to Interpret Test Results</h3><p class="text-sm text-blue-800 dark:text-blue-200">These tests validate basic code generation capabilities across different task types. A <strong>passing test</strong> means files were created/modified successfully. A <strong>failing test</strong> indicates the model couldn&#x27;t complete the task or didn&#x27;t produce expected outputs.</p><div class="mt-2 text-xs text-blue-700 dark:text-blue-300"><strong>Tip:</strong> Select your preferred provider and model below to test specific configurations. The generation output will show you what the AI is thinking during execution.</div></div></div></div><div class="bg-amber-50 dark:bg-amber-950/30 border border-amber-200 dark:border-amber-800 rounded-lg p-4 mb-6"><div class="flex items-start gap-3"><div class="text-amber-600 dark:text-amber-400 mt-0.5">💡</div><div class="flex-1"><h3 class="font-medium text-amber-900 dark:text-amber-100 mb-1">Cost Warning</h3><p class="text-sm text-amber-800 dark:text-amber-200">Running these tests can be <strong>very expensive</strong> and likely isn&#x27;t necessary. It&#x27;s cheaper and easier to just use good models and research community feedback about agentic capabilities.</p><p class="text-sm text-amber-800 dark:text-amber-200 mt-2">This tester is largely for evaluating how models perform with OSW Studio&#x27;s implementation and using those results to improve the agentic system.</p></div></div></div><div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6"><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Total Tests</div><div class="text-2xl font-bold">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Passed</div><div class="text-2xl font-bold text-green-600">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Failed</div><div class="text-2xl font-bold text-red-600">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Success Rate</div><div class="text-2xl font-bold">0.0<!-- -->%</div></div></div><div class="flex gap-4 mb-6"><button data-slot="popover-trigger" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-«Rp3rlb»" data-state="closed"><span>Select Model</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up h-4 w-4 ml-2" aria-hidden="true"><path d="m18 15-6-6-6 6"></path></svg></button><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-4 w-4 mr-2" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Run Quick Tests (5 tests)</button><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw h-4 w-4 mr-2" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg>Reset</button></div><div class="grid gap-4"><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add hamburger menu to navbar<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a mobile hamburger menu to the navbar. The hamburger should appear on screens smaller than 768px<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create modal dialog<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a modal dialog that can be opened with a button click. The modal should have a close button a<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add contact form with validation<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a contact form with fields for name, email, and message. Include client-side validation for requ<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create dropdown menu<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a dropdown menu for the navigation. When hovering over &quot;Services&quot; link, show a dropdown with <!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create image carousel<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create an image carousel/slider with next and previous buttons. It should display one image at a tim<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Change background to gradient<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Change the body background to a linear gradient from #ff8c42 to #e65100<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add dark mode toggle<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a dark mode toggle button that switches the entire page between light and dark themes. Store the<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create responsive grid layout<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a responsive grid layout with 3 columns on desktop, 2 on tablet, and 1 on mobile. Add 6 card <!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add API fetch functionality<span class="text-sm font-normal text-muted-foreground">(<!-- -->javascript<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a button that fetches data from https://jsonplaceholder.typicode.com/users and displays the user<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create countdown timer<span class="text-sm font-normal text-muted-foreground">(<!-- -->javascript<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a countdown timer that counts down from 60 seconds and displays the remaining time. Include s<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Build a todo list application<span class="text-sm font-normal text-muted-foreground">(<!-- -->complex<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Build a todo list application with the ability to add tasks, mark them as complete, delete tasks, an<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[59054,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"6932\",\"static/chunks/app/test-generation/page-c0fb010ce78373b4.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"test-generation\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"test-generation\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"test-generation\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"FmDRoATllhhJPK1sy2HlJ\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
36
  691 22 606 1 658 2 688 19 137 74 130 264 -12 328 -38 18 -85 19 -840 18 -652
37
  0 -807 -2 -838 -14z"/>
38
  </g>
39
+ </svg></div><span class="font-semibold text-lg hidden md:inline">Model Tester</span></button><div class="flex items-center gap-2 flex-1 justify-center md:justify-start md:ml-6"><h1 class="text-lg font-semibold md:hidden">Model Tester</h1></div><div class="flex items-center gap-2"><div class="hidden md:flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3 justify-start"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-4 w-4 mr-2" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg>Back to Projects</button></div><div class="md:hidden flex items-center gap-2"></div><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 size-9 h-8 w-8 md:hidden"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-4 w-4" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></div><div class="flex-1 overflow-auto bg-background p-6"><div class="max-w-6xl mx-auto"><div class="bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 rounded-lg p-4 mb-6"><div class="flex items-start gap-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-alert h-5 w-5 text-blue-600 dark:text-blue-400 mt-0.5" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><line x1="12" x2="12" y1="8" y2="12"></line><line x1="12" x2="12.01" y1="16" y2="16"></line></svg><div class="flex-1"><h3 class="font-medium text-blue-900 dark:text-blue-100 mb-1">How to Interpret Test Results</h3><p class="text-sm text-blue-800 dark:text-blue-200">These tests validate basic code generation capabilities across different task types. A <strong>passing test</strong> means files were created/modified successfully. A <strong>failing test</strong> indicates the model couldn&#x27;t complete the task or didn&#x27;t produce expected outputs.</p><div class="mt-2 text-xs text-blue-700 dark:text-blue-300"><strong>Tip:</strong> Select your preferred provider and model below to test specific configurations. The generation output will show you what the AI is thinking during execution.</div></div></div></div><div class="bg-amber-50 dark:bg-amber-950/30 border border-amber-200 dark:border-amber-800 rounded-lg p-4 mb-6"><div class="flex items-start gap-3"><div class="text-amber-600 dark:text-amber-400 mt-0.5">💡</div><div class="flex-1"><h3 class="font-medium text-amber-900 dark:text-amber-100 mb-1">Cost Warning</h3><p class="text-sm text-amber-800 dark:text-amber-200">Running these tests can be <strong>very expensive</strong> and likely isn&#x27;t necessary. It&#x27;s cheaper and easier to just use good models and research community feedback about agentic capabilities.</p><p class="text-sm text-amber-800 dark:text-amber-200 mt-2">This tester is largely for evaluating how models perform with OSW Studio&#x27;s implementation and using those results to improve the agentic system.</p></div></div></div><div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6"><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Total Tests</div><div class="text-2xl font-bold">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Passed</div><div class="text-2xl font-bold text-green-600">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Failed</div><div class="text-2xl font-bold text-red-600">0</div></div><div class="bg-card border rounded-lg p-4"><div class="text-sm font-medium text-muted-foreground mb-1">Success Rate</div><div class="text-2xl font-bold">0.0<!-- -->%</div></div></div><div class="flex gap-4 mb-6"><button data-slot="popover-trigger" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls="radix-«Rp3rlb»" data-state="closed"><span>Select Model</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up h-4 w-4 ml-2" aria-hidden="true"><path d="m18 15-6-6-6 6"></path></svg></button><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-4 w-4 mr-2" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Run Quick Tests (5 tests)</button><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center gap-2 whitespace-nowrap rounded-full text-sm font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw h-4 w-4 mr-2" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg>Reset</button></div><div class="grid gap-4"><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add hamburger menu to navbar<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a mobile hamburger menu to the navbar. The hamburger should appear on screens smaller than 768px<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create modal dialog<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a modal dialog that can be opened with a button click. The modal should have a close button a<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add contact form with validation<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a contact form with fields for name, email, and message. Include client-side validation for requ<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create dropdown menu<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a dropdown menu for the navigation. When hovering over &quot;Services&quot; link, show a dropdown with <!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create image carousel<span class="text-sm font-normal text-muted-foreground">(<!-- -->ui<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create an image carousel/slider with next and previous buttons. It should display one image at a tim<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Change background to gradient<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Change the body background to a linear gradient from #ff8c42 to #e65100<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add dark mode toggle<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a dark mode toggle button that switches the entire page between light and dark themes. Store the<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create responsive grid layout<span class="text-sm font-normal text-muted-foreground">(<!-- -->style<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a responsive grid layout with 3 columns on desktop, 2 on tablet, and 1 on mobile. Add 6 card <!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Add API fetch functionality<span class="text-sm font-normal text-muted-foreground">(<!-- -->javascript<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Add a button that fetches data from https://jsonplaceholder.typicode.com/users and displays the user<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Create countdown timer<span class="text-sm font-normal text-muted-foreground">(<!-- -->javascript<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Create a countdown timer that counts down from 60 seconds and displays the remaining time. Include s<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div><div class="bg-card border rounded-lg p-4"><div class="flex items-center justify-between mb-2"><div><div class="flex items-center gap-2 font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clock h-4 w-4 text-gray-400" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>Build a todo list application<span class="text-sm font-normal text-muted-foreground">(<!-- -->complex<!-- -->)</span></div><div class="text-sm text-muted-foreground mt-1">Build a todo list application with the ability to add tasks, mark them as complete, delete tasks, an<!-- -->...</div></div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center cursor-pointer justify-center whitespace-nowrap font-sans font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-full text-[13px] gap-1.5 px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play h-3 w-3 mr-1" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg>Test</button></div></div></div></div></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[90894,[],\"ClientPageRoot\"]\n8:I[59054,[\"5948\",\"static/chunks/06bf0ff1-2f6b5dbae626a171.js\",\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"4792\",\"static/chunks/4792-f97f5e70e2ff5861.js\",\"4750\",\"static/chunks/4750-0f9d0976158ca18d.js\",\"6932\",\"static/chunks/app/test-generation/page-c0fb010ce78373b4.js\"],\"default\"]\nb:I[59665,[],\"MetadataBoundary\"]\nd:I[59665,[],\"OutletBoundary\"]\n10:I[74911,[],\"AsyncMetadataOutlet\"]\n12:I[59665,[],\"ViewportBoundary\"]\n14:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"test-generation\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"test-generation\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"test-generation\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L7\",null,{\"Component\":\"$8\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@9\",\"$@a\"]}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],null,[\"$\",\"$Ld\",null,{\"children\":[\"$Le\",\"$Lf\",[\"$\",\"$L10\",null,{\"promise\":\"$@11\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"SExV4FBq_rUT0IqVxaqkh\",{\"children\":[[\"$\",\"$L12\",null,{\"children\":\"$L13\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$14\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"15:\"$Sreact.suspense\"\n16:I[74911,[],\"AsyncMetadata\"]\n9:{}\na:{}\nc:[\"$\",\"$15\",null,{\"fallback\":null,\"children\":[\"$\",\"$L16\",null,{\"promise\":\"$@17\"}]}]\n"])</script><script>self.__next_f.push([1,"f:null\n"])</script><script>self.__next_f.push([1,"13:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\ne:null\n"])</script><script>self.__next_f.push([1,"17:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:{\"metadata\":\"$17:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/app/test-generation.rsc CHANGED
@@ -15,7 +15,7 @@ d:I[59665,[],"OutletBoundary"]
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
- 0:{"P":null,"b":"GN54BbL4KORqecYNj1l26","p":"","c":["","test-generation"],"i":false,"f":[[["",{"children":["test-generation",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["test-generation",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","FmDRoATllhhJPK1sy2HlJ",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
 
15
  :HL["/_next/static/media/c3f6eb667c0186c5-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
16
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
  :HL["/_next/static/css/52c3faddab7e8cad.css","style"]
18
+ 0:{"P":null,"b":"9vuBdSevB6CUChUh5Igaf","p":"","c":["","test-generation"],"i":false,"f":[[["",{"children":["test-generation",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/52c3faddab7e8cad.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":[["$","$L3",null,{"richColors":true,"position":"bottom-center"}],["$","$L4",null,{"children":["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]}]]}],{"children":["test-generation",["$","$1","c",{"children":[null,["$","$L5",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L7",null,{"Component":"$8","searchParams":{},"params":{},"promises":["$@9","$@a"]}],["$","$Lb",null,{"children":"$Lc"}],null,["$","$Ld",null,{"children":["$Le","$Lf",["$","$L10",null,{"promise":"$@11"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","SExV4FBq_rUT0IqVxaqkh",{"children":[["$","$L12",null,{"children":"$L13"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true}
19
  15:"$Sreact.suspense"
20
  16:I[74911,[],"AsyncMetadata"]
21
  9:{}
.next/server/middleware-manifest.json CHANGED
@@ -17,11 +17,11 @@
17
  "wasm": [],
18
  "assets": [],
19
  "env": {
20
- "__NEXT_BUILD_ID": "GN54BbL4KORqecYNj1l26",
21
  "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "l0tpmYiNHNzUMdv6nSguBVBaNWEc/bLKDYmnpOgGnGk=",
22
- "__NEXT_PREVIEW_MODE_ID": "3f6e7b68ca0f25523264b5e13ccf0d1b",
23
- "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "780f25b864dc75e98079e1c0718dbfc6d54b653657cbe5f47412a54f508f00b9",
24
- "__NEXT_PREVIEW_MODE_SIGNING_KEY": "66037fb25b96b1af87773cedf53654006f3a412cfca9a385817e5b6fc971e218"
25
  }
26
  }
27
  },
 
17
  "wasm": [],
18
  "assets": [],
19
  "env": {
20
+ "__NEXT_BUILD_ID": "9vuBdSevB6CUChUh5Igaf",
21
  "NEXT_SERVER_ACTIONS_ENCRYPTION_KEY": "l0tpmYiNHNzUMdv6nSguBVBaNWEc/bLKDYmnpOgGnGk=",
22
+ "__NEXT_PREVIEW_MODE_ID": "34a23cbb30e9dedfdf948344c6b49fd3",
23
+ "__NEXT_PREVIEW_MODE_ENCRYPTION_KEY": "a76a5d1205f9c38e0a69e2c1aa3667910a81753ae956d745e574856885a4715e",
24
+ "__NEXT_PREVIEW_MODE_SIGNING_KEY": "025c2a1f4659e3ab0244bd7c854a02f0b7cd74954bb516ce1b319c111eec1b34"
25
  }
26
  }
27
  },
.next/server/pages/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[59665,[],\"MetadataBoundary\"]\n9:I[59665,[],\"OutletBoundary\"]\nc:I[74911,[],\"AsyncMetadataOutlet\"]\ne:I[59665,[],\"ViewportBoundary\"]\n10:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"GN54BbL4KORqecYNj1l26\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"5C0JyqexQMj3wXA8GGcNU\",{\"children\":[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:\"$Sreact.suspense\"\n12:I[74911,[],\"AsyncMetadata\"]\n8:[\"$\",\"$11\",null,{\"fallback\":null,\"children\":[\"$\",\"$L12\",null,{\"promise\":\"$@13\"}]}]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"13:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":\"$13:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><link rel="preload" href="/_next/static/media/58f662ed5ba12a72-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c3f6eb667c0186c5-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/52c3faddab7e8cad.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-c81a7e1091340d8b.js"/><script src="/_next/static/chunks/4bd1b696-2683f5a71cc09935.js" async=""></script><script src="/_next/static/chunks/1684-94ae6109893bd411.js" async=""></script><script src="/_next/static/chunks/main-app-eac23abd81400eeb.js" async=""></script><script src="/_next/static/chunks/6671-78ed01c4e5154d89.js" async=""></script><script src="/_next/static/chunks/2138-18d4ca002a920f5d.js" async=""></script><script src="/_next/static/chunks/app/layout-19d4da7b6d1a11dd.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#000000"/><title>Open Source Web Studio | Agentic AI Development 🎨</title><meta name="description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="mobile-web-app-capable" content="yes"/><meta name="apple-mobile-web-app-title" content="OSW-Studio"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta property="og:title" content="Open Source Web Studio | Agentic AI Development 🎨"/><meta property="og:description" content="Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta property="og:url" content="https://huggingface.co/spaces/otst/osw-studio"/><meta property="og:site_name" content="Open Source Web Studio"/><meta property="og:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Open Source Web Studio - Agentic AI Development"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="OSW-Studio | Agentic AI Development 🎨"/><meta name="twitter:description" content="OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language."/><meta name="twitter:image" content="https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png"/><link rel="shortcut icon" href="/osw-studio-logo.svg"/><link rel="icon" href="/osw-studio-logo.svg"/><link rel="apple-touch-icon" href="/osw-studio-logo.svg"/><script>document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden"><script>((e,t,r,n,a,o,i,s)=>{let u=document.documentElement,l=["light","dark"];function c(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(u.classList.remove(...n),u.classList.add(o&&o[t]?o[t]:t)):u.setAttribute(e,t)}),r=t,s&&l.includes(r)&&(u.style.colorScheme=r)}if(n)c(n);else try{let e=localStorage.getItem(t)||r,n=i&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;c(n)}catch(e){}})("class","osw-studio-theme","dark",null,["light","dark"],null,true,true)</script><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><!--$--><!--/$--><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[61321,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"ThemeProvider\"]\n3:I[15851,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"Toaster\"]\n4:I[25388,[\"6671\",\"static/chunks/6671-78ed01c4e5154d89.js\",\"2138\",\"static/chunks/2138-18d4ca002a920f5d.js\",\"7177\",\"static/chunks/app/layout-19d4da7b6d1a11dd.js\"],\"default\"]\n5:I[87555,[],\"\"]\n6:I[31295,[],\"\"]\n7:I[59665,[],\"MetadataBoundary\"]\n9:I[59665,[],\"OutletBoundary\"]\nc:I[74911,[],\"AsyncMetadataOutlet\"]\ne:I[59665,[],\"ViewportBoundary\"]\n10:I[26614,[],\"\"]\n:HL[\"/_next/static/media/58f662ed5ba12a72-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/c3f6eb667c0186c5-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/52c3faddab7e8cad.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9vuBdSevB6CUChUh5Igaf\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/52c3faddab7e8cad.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_438d47 antialiased bg-background h-[100dvh] overflow-hidden\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{\"richColors\":true,\"position\":\"bottom-center\"}],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:1:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",\"$Lb\",[\"$\",\"$Lc\",null,{\"promise\":\"$@d\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$1\",\"wQcBI8QunRX7ZQ0gHa_Y1\",{\"children\":[[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$10\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"11:\"$Sreact.suspense\"\n12:I[74911,[],\"AsyncMetadata\"]\n8:[\"$\",\"$11\",null,{\"fallback\":null,\"children\":[\"$\",\"$L12\",null,{\"promise\":\"$@13\"}]}]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script><script>self.__next_f.push([1,"f:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#000000\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"13:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"mobile-web-app-capable\",\"content\":\"yes\"}],[\"$\",\"meta\",\"3\",{\"name\":\"apple-mobile-web-app-title\",\"content\":\"OSW-Studio\"}],[\"$\",\"meta\",\"4\",{\"name\":\"apple-mobile-web-app-status-bar-style\",\"content\":\"black-translucent\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Open Source Web Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Open Source Web Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Open Source Web Studio\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:alt\",\"content\":\"Open Source Web Studio - Agentic AI Development\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"OSW-Studio | Agentic AI Development 🎨\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"OSW-Studio is an AI-powered development environment that enables autonomous multi-file development through intelligent tool usage. Build complete applications with natural language.\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://huggingface.co/spaces/otst/osw-studio/resolve/main/banner.png\"}],[\"$\",\"link\",\"17\",{\"rel\":\"shortcut icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/osw-studio-logo.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/osw-studio-logo.svg\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:{\"metadata\":\"$13:metadata\",\"error\":null,\"digest\":\"$undefined\"}\n"])</script></body></html>
.next/server/pages/500.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" defer=""></script><script src="/_next/static/chunks/framework-744b75979ac08316.js" defer=""></script><script src="/_next/static/chunks/main-f85875a95a0f07d0.js" defer=""></script><script src="/_next/static/chunks/pages/_app-5d1abe03d322390c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-3b2a1d523de49635.js" defer=""></script><script src="/_next/static/GN54BbL4KORqecYNj1l26/_buildManifest.js" defer=""></script><script src="/_next/static/GN54BbL4KORqecYNj1l26/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"GN54BbL4KORqecYNj1l26","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
 
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-c81a7e1091340d8b.js" defer=""></script><script src="/_next/static/chunks/framework-744b75979ac08316.js" defer=""></script><script src="/_next/static/chunks/main-f85875a95a0f07d0.js" defer=""></script><script src="/_next/static/chunks/pages/_app-5d1abe03d322390c.js" defer=""></script><script src="/_next/static/chunks/pages/_error-3b2a1d523de49635.js" defer=""></script><script src="/_next/static/9vuBdSevB6CUChUh5Igaf/_buildManifest.js" defer=""></script><script src="/_next/static/9vuBdSevB6CUChUh5Igaf/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"9vuBdSevB6CUChUh5Igaf","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
.next/static/{GN54BbL4KORqecYNj1l26 → 9vuBdSevB6CUChUh5Igaf}/_buildManifest.js RENAMED
File without changes
.next/static/{GN54BbL4KORqecYNj1l26 → 9vuBdSevB6CUChUh5Igaf}/_ssgManifest.js RENAMED
File without changes
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html DELETED
@@ -1,424 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fi">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Aukioloajat - Leppävaaran Uimahalli</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <link rel="stylesheet" href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <div class="top-bar">
14
- <div class="top-bar-left">
15
- <ul class="menu">
16
- <li class="menu-text"><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</li>
17
- </ul>
18
- </div>
19
- <div class="top-bar-right">
20
- <ul class="menu">
21
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html">Etusivu</a></li>
22
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
23
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnat</a></li>
24
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
25
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
26
- </ul>
27
- </div>
28
- </div>
29
- </header>
30
- <main>
31
- <!-- Page Header -->
32
- <section class="page-hero-section">
33
- <div class="grid-container">
34
- <div class="grid-x grid-padding-x align-center">
35
- <div class="cell medium-10 large-8 text-center">
36
- <h1><i class="fas fa-clock"></i> Aukioloajat</h1>
37
- <p class="lead">Ajankohtaiset aukioloaikamme ja poikkeukset</p>
38
- </div>
39
- </div>
40
- </div>
41
- </section>
42
-
43
- <!-- Regular Opening Hours -->
44
- <section class="content-section">
45
- <div class="grid-container">
46
- <div class="grid-x grid-padding-x">
47
- <div class="cell large-8 large-offset-2">
48
- <h2>Normaalit aukioloajat</h2>
49
- <div class="hours-table">
50
- <table>
51
- <thead>
52
- <tr>
53
- <th>Päivä</th>
54
- <th>Aukioloaika</th>
55
- </tr>
56
- </thead>
57
- <tbody>
58
- <tr>
59
- <td>Maanantai</td>
60
- <td>06:00 - 22:00</td>
61
- </tr>
62
- <tr>
63
- <td>Tiistai</td>
64
- <td>06:00 - 22:00</td>
65
- </tr>
66
- <tr>
67
- <td>Keskiviikko</td>
68
- <td>06:00 - 22:00</td>
69
- </tr>
70
- <tr>
71
- <td>Torstai</td>
72
- <td>06:00 - 22:00</td>
73
- </tr>
74
- <tr>
75
- <td>Perjantai</td>
76
- <td>06:00 - 22:00</td>
77
- </tr>
78
- <tr>
79
- <td>Lauantai</td>
80
- <td>08:00 - 20:00</td>
81
- </tr>
82
- <tr>
83
- <td>Sunnuntai</td>
84
- <td>08:00 - 20:00</td>
85
- </tr>
86
- </tbody>
87
- </table>
88
- </div>
89
- </div>
90
- </div>
91
- </div>
92
- </section>
93
-
94
- <!-- Special Hours -->
95
- <section class="content-section alternate-bg">
96
- <div class="grid-container">
97
- <div class="grid-x grid-padding-x">
98
- <div class="cell large-8 large-offset-2">
99
- <h2>Erityisaukioloajat</h2>
100
- <div class="info-cards">
101
- <div class="info-card">
102
- <h3><i class="fas fa-calendar-alt"></i> Juhannus</h3>
103
- <p>Suljettu 21.6. - 23.6.2024</p>
104
- </div>
105
- <div class="info-card">
106
- <h3><i class="fas fa-tree"></i> Joulu</h3>
107
- <p>Suljettu 24.12. - 26.12.2024</p>
108
- </div>
109
- <div class="info-card">
110
- <h3><i class="fas fa-glass-cheers"></i> Uusivuosi</h3>
111
- <p>Suljettu 1.1.2025</p>
112
- </div>
113
- </div>
114
- </div>
115
- </div>
116
- </div>
117
- </section>
118
-
119
- <!-- Additional Info -->
120
- <section class="content-section">
121
- <div class="grid-container">
122
- <div class="grid-x grid-padding-x">
123
- <div class="cell large-8 large-offset-2">
124
- <h2>Lisätietoja</h2>
125
- <div class="info-box">
126
- <p><i class="fas fa-info-circle"></i> <strong>HUOM!</strong> Viimeinen asiakas otetaan sisään 30 minuuttia ennen sulkemisaikaa.</p>
127
- </div>
128
- <div class="info-box">
129
- <p><i class="fas fa-users"></i> <strong>Ryhmävaraukset:</strong> Kysy mahdollisuutta yksityisvarauksiin numerosta 09-123 4567.</p>
130
- </div>
131
- </div>
132
- </div>
133
- </div>
134
- </section>
135
- </main>
136
-
137
- <footer class="site-footer">
138
- <div class="grid-container">
139
- <div class="grid-x grid-padding-x">
140
- <div class="cell medium-4">
141
- <h4><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h4>
142
- <p>Moderni uimahalli Espoon sydämessä. Tarjoamme laadukkaat uimavalmennukset ja kuntoutuspalvelut kaikenikäisille.</p>
143
- </div>
144
- <div class="cell medium-4">
145
- <h4><i class="fas fa-link"></i> Pikalinkit</h4>
146
- <ul>
147
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
148
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnasto</a></li>
149
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
150
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
151
- </ul>
152
- </div>
153
- <div class="cell medium-4">
154
- <h4><i class="fas fa-phone"></i> Yhteystiedot</h4>
155
- <p>
156
- <i class="fas fa-map-marker-alt"></i> Veräjävuorenkatu 5<br>
157
- <i class="fas fa-map-marker-alt"></i> 02670 Espoo<br>
158
- <i class="fas fa-phone"></i> Puhelin: 09-123 4567<br>
159
- <i class="fas fa-envelope"></i> Sähköposti: info@leppavaaranuimahalli.fi
160
- </p>
161
- </div>
162
- </div>
163
- <div class="grid-x grid-padding-x">
164
- <div class="cell text-center">
165
- <p class="copyright">&copy; 2024 Leppävaaran Uimahalli. Kaikki oikeudet pidätetään.</p>
166
- </div>
167
- </div>
168
- </div>
169
- </footer>
170
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
171
- <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
172
- <script src="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js"></script>
173
- <!-- OSW Studio Analytics -->
174
- <script>
175
- (function() {
176
- 'use strict';
177
-
178
- // Configuration
179
- var config = {
180
- siteId: '039b8554-0a87-42f7-a969-570c3fa99cb5',
181
- apiEndpoint: '/api/analytics/track',
182
- interactionEndpoint: '/api/analytics/interaction',
183
- features: {"basicTracking":true,"heatmaps":false,"sessionRecording":false,"performanceMetrics":false,"engagementTracking":false,"customEvents":false}
184
- };
185
-
186
- // State
187
- var pageLoadTime = Date.now();
188
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
189
- var eventQueue = [];
190
- var lastFlush = Date.now();
191
-
192
- // Generate anonymous session ID from browser fingerprint (no cookies)
193
- function generateSessionId() {
194
- var canvas = document.createElement('canvas');
195
- var ctx = canvas.getContext('2d');
196
- ctx.textBaseline = 'top';
197
- ctx.font = '14px Arial';
198
- ctx.fillText('osw', 0, 0);
199
- var canvasData = canvas.toDataURL();
200
-
201
- var fingerprint = [
202
- navigator.userAgent,
203
- navigator.language,
204
- screen.colorDepth,
205
- screen.width + 'x' + screen.height,
206
- new Date().getTimezoneOffset(),
207
- canvasData.slice(0, 100)
208
- ].join('|');
209
-
210
- var hash = 0;
211
- for (var i = 0; i < fingerprint.length; i++) {
212
- var char = fingerprint.charCodeAt(i);
213
- hash = ((hash << 5) - hash) + char;
214
- hash = hash & hash;
215
- }
216
- return Math.abs(hash).toString(36);
217
- }
218
-
219
- // Detect device type
220
- function getDeviceType() {
221
- var width = window.innerWidth;
222
- if (width < 768) return 'mobile';
223
- if (width < 1024) return 'tablet';
224
- return 'desktop';
225
- }
226
-
227
- // Send analytics data
228
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
229
- function sendData(endpoint, data) {
230
- if (navigator.sendBeacon) {
231
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
232
- navigator.sendBeacon(endpoint, blob);
233
- } else {
234
- fetch(endpoint, {
235
- method: 'POST',
236
- headers: { 'Content-Type': 'application/json' },
237
- body: JSON.stringify(data),
238
- keepalive: true
239
- }).catch(function() {});
240
- }
241
- }
242
-
243
- // Track pageview
244
- function trackPageview() {
245
- if (!config.features.basicTracking) return;
246
-
247
- var data = {
248
- siteId: config.siteId,
249
- pagePath: window.location.pathname,
250
- referrer: document.referrer || '',
251
- userAgent: navigator.userAgent,
252
- deviceType: getDeviceType()
253
- };
254
-
255
- sendData(config.apiEndpoint, data);
256
- pageLoadTime = Date.now();
257
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
258
- }
259
-
260
- // Track click (for heatmaps)
261
- function trackClick(event) {
262
- if (!config.features.heatmaps) return;
263
-
264
- var target = event.target;
265
- var selector = target.tagName;
266
- if (target.id) selector += '#' + target.id;
267
- if (target.className) selector += '.' + target.className.split(' ').join('.');
268
-
269
- eventQueue.push({
270
- type: 'click',
271
- data: {
272
- siteId: config.siteId,
273
- pagePath: window.location.pathname,
274
- interactionType: 'click',
275
- elementSelector: selector,
276
- coordinates: {
277
- x: event.clientX,
278
- y: event.clientY,
279
- scrollY: window.scrollY || window.pageYOffset || 0,
280
- viewportWidth: window.innerWidth,
281
- viewportHeight: window.innerHeight,
282
- documentHeight: Math.max(
283
- document.body.scrollHeight,
284
- document.body.offsetHeight,
285
- document.documentElement.clientHeight,
286
- document.documentElement.scrollHeight,
287
- document.documentElement.offsetHeight
288
- )
289
- },
290
- timeOnPage: Date.now() - pageLoadTime
291
- }
292
- });
293
-
294
- flushEvents();
295
- }
296
-
297
- // Track scroll depth
298
- function trackScroll() {
299
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
300
-
301
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
302
- var scrolled = window.scrollY;
303
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
304
-
305
- // Track milestones
306
- [25, 50, 75, 100].forEach(function(milestone) {
307
- if (percent >= milestone && !scrollMilestones[milestone]) {
308
- scrollMilestones[milestone] = true;
309
-
310
- eventQueue.push({
311
- type: 'scroll',
312
- data: {
313
- siteId: config.siteId,
314
- pagePath: window.location.pathname,
315
- interactionType: 'scroll',
316
- scrollDepth: milestone,
317
- timeOnPage: Date.now() - pageLoadTime
318
- }
319
- });
320
- }
321
- });
322
-
323
- flushEvents();
324
- }
325
-
326
- // Track page exit (send time on page)
327
- function trackExit() {
328
- if (!config.features.engagementTracking) return;
329
-
330
- var timeOnPage = Date.now() - pageLoadTime;
331
- if (timeOnPage < 1000) return; // Ignore very short visits
332
-
333
- sendData(config.interactionEndpoint, {
334
- siteId: config.siteId,
335
- pagePath: window.location.pathname,
336
- interactionType: 'exit',
337
- timeOnPage: timeOnPage
338
- });
339
- }
340
-
341
- // Flush event queue (batching)
342
- function flushEvents(force) {
343
- var now = Date.now();
344
- if (eventQueue.length === 0) return;
345
-
346
- // Increased thresholds: 30s or 50 events (more efficient batching)
347
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
348
-
349
- var batch = eventQueue.splice(0, eventQueue.length);
350
-
351
- // Send as single batched request instead of individual requests
352
- var batchData = {
353
- batch: true,
354
- interactions: batch.map(function(event) { return event.data; })
355
- };
356
-
357
- sendData(config.interactionEndpoint, batchData);
358
- lastFlush = now;
359
- }
360
-
361
- // Initialize tracking
362
- function init() {
363
- // Track initial pageview
364
- if (document.readyState === 'complete') {
365
- trackPageview();
366
- } else {
367
- window.addEventListener('load', trackPageview);
368
- }
369
-
370
- // Track SPA navigation
371
- var pushState = history.pushState;
372
- history.pushState = function() {
373
- pushState.apply(history, arguments);
374
- trackPageview();
375
- };
376
- window.addEventListener('popstate', trackPageview);
377
-
378
- // Track clicks for heatmaps
379
- if (config.features.heatmaps) {
380
- document.addEventListener('click', trackClick, true);
381
- }
382
-
383
- // Track scroll
384
- if (config.features.engagementTracking || config.features.heatmaps) {
385
- var scrollTimer;
386
- window.addEventListener('scroll', function() {
387
- clearTimeout(scrollTimer);
388
- scrollTimer = setTimeout(trackScroll, 100);
389
- });
390
- }
391
-
392
- // Track page exit
393
- if (config.features.engagementTracking) {
394
- window.addEventListener('beforeunload', function() {
395
- flushEvents(true); // Force flush pending events
396
- trackExit();
397
- });
398
- document.addEventListener('visibilitychange', function() {
399
- if (document.visibilityState === 'hidden') {
400
- flushEvents(true); // Force flush pending events
401
- trackExit();
402
- }
403
- });
404
- } else {
405
- // Even without engagement tracking, flush pending events on exit
406
- window.addEventListener('beforeunload', function() {
407
- flushEvents(true);
408
- });
409
- document.addEventListener('visibilitychange', function() {
410
- if (document.visibilityState === 'hidden') {
411
- flushEvents(true);
412
- }
413
- });
414
- }
415
-
416
- // Flush events periodically (increased to 30s for efficiency)
417
- setInterval(function() { flushEvents(false); }, 30000);
418
- }
419
-
420
- init();
421
- })();
422
- </script>
423
- </body>
424
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html DELETED
@@ -1,470 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fi">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Hinnat - Leppävaaran Uimahalli</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <link rel="stylesheet" href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <div class="top-bar">
14
- <div class="top-bar-left">
15
- <ul class="menu">
16
- <li class="menu-text"><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</li>
17
- </ul>
18
- </div>
19
- <div class="top-bar-right">
20
- <ul class="menu">
21
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html">Etusivu</a></li>
22
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
23
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnat</a></li>
24
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
25
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
26
- </ul>
27
- </div>
28
- </div>
29
- </header>
30
- <main>
31
- <!-- Page Header -->
32
- <section class="page-hero-section">
33
- <div class="grid-container">
34
- <div class="grid-x grid-padding-x align-center">
35
- <div class="cell medium-10 large-8 text-center">
36
- <h1><i class="fas fa-euro-sign"></i> Hinnat</h1>
37
- <p class="lead">Kattavat ja kohtuulliset hinnat kaikille asiakasryhmille</p>
38
- </div>
39
- </div>
40
- </div>
41
- </section>
42
-
43
- <!-- Single Visit Prices -->
44
- <section class="content-section">
45
- <div class="grid-container">
46
- <div class="grid-x grid-padding-x">
47
- <div class="cell large-10 large-offset-1">
48
- <h2>Kertakäyntihinnat</h2>
49
- <div class="price-cards">
50
- <div class="price-card">
51
- <div class="price-icon">
52
- <i class="fas fa-user"></i>
53
- </div>
54
- <h3>Aikuinen</h3>
55
- <div class="price">7,00€</div>
56
- <p>18-64 vuotiaat</p>
57
- </div>
58
- <div class="price-card">
59
- <div class="price-icon">
60
- <i class="fas fa-child"></i>
61
- </div>
62
- <h3>Lapsi</h3>
63
- <div class="price">4,00€</div>
64
- <p>7-17 vuotiaat</p>
65
- </div>
66
- <div class="price-card">
67
- <div class="price-icon">
68
- <i class="fas fa-graduation-cap"></i>
69
- </div>
70
- <h3>Opiskelija</h3>
71
- <div class="price">5,00€</div>
72
- <p>Opiskelijakortilla</p>
73
- </div>
74
- <div class="price-card">
75
- <div class="price-icon">
76
- <i class="fas fa-user-tie"></i>
77
- </div>
78
- <h3>Eläkeläinen</h3>
79
- <div class="price">5,00€</div>
80
- <p>65+ vuotiaat</p>
81
- </div>
82
- </div>
83
- </div>
84
- </div>
85
- </div>
86
- </section>
87
-
88
- <!-- Season Cards -->
89
- <section class="content-section alternate-bg">
90
- <div class="grid-container">
91
- <div class="grid-x grid-padding-x">
92
- <div class="cell large-10 large-offset-1">
93
- <h2>Kausikortit</h2>
94
- <div class="season-cards">
95
- <div class="season-card">
96
- <h3><i class="fas fa-calendar-month"></i> Kuukausikortti</h3>
97
- <div class="price">65,00€</div>
98
- <ul>
99
- <li>Voimassa 30 päivää</li>
100
- <li>Rajoittamaton käyttö</li>
101
- <li>Sisältää kuntosalin</li>
102
- </ul>
103
- </div>
104
- <div class="season-card">
105
- <h3><i class="fas fa-calendar-check"></i> Kausikortti</h3>
106
- <div class="price">220,00€</div>
107
- <ul>
108
- <li>Voimassa 4 kuukautta</li>
109
- <li>Rajoittamaton käyttö</li>
110
- <li>Sisältää kuntosalin</li>
111
- </ul>
112
- </div>
113
- <div class="season-card">
114
- <h3><i class="fas fa-calendar-star"></i> Vuosikortti</h3>
115
- <div class="price">580,00€</div>
116
- <ul>
117
- <li>Voimassa 12 kuukautta</li>
118
- <li>Rajoittamaton käyttö</li>
119
- <li>Sisältää kuntosalin ja saunan</li>
120
- </ul>
121
- </div>
122
- </div>
123
- </div>
124
- </div>
125
- </div>
126
- </section>
127
-
128
- <!-- Group Prices -->
129
- <section class="content-section">
130
- <div class="grid-container">
131
- <div class="grid-x grid-padding-x">
132
- <div class="cell large-8 large-offset-2">
133
- <h2>Ryhmähinnat</h2>
134
- <div class="group-prices">
135
- <div class="group-price-item">
136
- <h3><i class="fas fa-users"></i> Koululuokat</h3>
137
- <p>3,00€ / oppilas (opettajat maksutta)</p>
138
- </div>
139
- <div class="group-price-item">
140
- <h3><i class="fas fa-building"></i> Yritykset</h3>
141
- <p>6,00€ / henkilö (min. 10 henkilöä)</p>
142
- </div>
143
- <div class="group-price-item">
144
- <h3="fas fa-birthday-cake"></i> Syntymäpäiväpaketti</h3>
145
- <p>150,00€ (max 15 lasta, 2h)</p>
146
- </div>
147
- </div>
148
- </div>
149
- </div>
150
- </div>
151
- </section>
152
-
153
- <!-- Payment Methods -->
154
- <section class="content-section alternate-bg">
155
- <div class="grid-container">
156
- <div class="grid-x grid-padding-x">
157
- <div class="cell large-8 large-offset-2">
158
- <h2>Maksutavat</h2>
159
- <div class="payment-methods">
160
- <div class="payment-method">
161
- <i class="fas fa-credit-card"></i>
162
- <p>Maksukortit (Visa, MasterCard)</p>
163
- </div>
164
- <div class="payment-method">
165
- <i class="fas fa-money-bill-wave"></i>
166
- <p>Käteinen</p>
167
- </div>
168
- <div class="payment-method">
169
- <i class="fas fa-mobile-alt"></i>
170
- <p>MobilePay</p>
171
- </div>
172
- <div class="payment-method">
173
- <i class="fas fa-qrcode"></i>
174
- <p>Eduskortti, Smartum, E-passi</p>
175
- </div>
176
- </div>
177
- </div>
178
- </div>
179
- </div>
180
- </section>
181
- </main>
182
-
183
- <footer class="site-footer">
184
- <div class="grid-container">
185
- <div class="grid-x grid-padding-x">
186
- <div class="cell medium-4">
187
- <h4><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h4>
188
- <p>Moderni uimahalli Espoon sydämessä. Tarjoamme laadukkaat uimavalmennukset ja kuntoutuspalvelut kaikenikäisille.</p>
189
- </div>
190
- <div class="cell medium-4">
191
- <h4><i class="fas fa-link"></i> Pikalinkit</h4>
192
- <ul>
193
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
194
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnasto</a></li>
195
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
196
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
197
- </ul>
198
- </div>
199
- <div class="cell medium-4">
200
- <h4><i class="fas fa-phone"></i> Yhteystiedot</h4>
201
- <p>
202
- <i class="fas fa-map-marker-alt"></i> Veräjävuorenkatu 5<br>
203
- <i class="fas fa-map-marker-alt"></i> 02670 Espoo<br>
204
- <i class="fas fa-phone"></i> Puhelin: 09-123 4567<br>
205
- <i class="fas fa-envelope"></i> Sähköposti: info@leppavaaranuimahalli.fi
206
- </p>
207
- </div>
208
- </div>
209
- <div class="grid-x grid-padding-x">
210
- <div class="cell text-center">
211
- <p class="copyright">&copy; 2024 Leppävaaran Uimahalli. Kaikki oikeudet pidätetään.</p>
212
- </div>
213
- </div>
214
- </div>
215
- </footer>
216
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
217
- <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
218
- <script src="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js"></script>
219
- <!-- OSW Studio Analytics -->
220
- <script>
221
- (function() {
222
- 'use strict';
223
-
224
- // Configuration
225
- var config = {
226
- siteId: '039b8554-0a87-42f7-a969-570c3fa99cb5',
227
- apiEndpoint: '/api/analytics/track',
228
- interactionEndpoint: '/api/analytics/interaction',
229
- features: {"basicTracking":true,"heatmaps":false,"sessionRecording":false,"performanceMetrics":false,"engagementTracking":false,"customEvents":false}
230
- };
231
-
232
- // State
233
- var pageLoadTime = Date.now();
234
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
235
- var eventQueue = [];
236
- var lastFlush = Date.now();
237
-
238
- // Generate anonymous session ID from browser fingerprint (no cookies)
239
- function generateSessionId() {
240
- var canvas = document.createElement('canvas');
241
- var ctx = canvas.getContext('2d');
242
- ctx.textBaseline = 'top';
243
- ctx.font = '14px Arial';
244
- ctx.fillText('osw', 0, 0);
245
- var canvasData = canvas.toDataURL();
246
-
247
- var fingerprint = [
248
- navigator.userAgent,
249
- navigator.language,
250
- screen.colorDepth,
251
- screen.width + 'x' + screen.height,
252
- new Date().getTimezoneOffset(),
253
- canvasData.slice(0, 100)
254
- ].join('|');
255
-
256
- var hash = 0;
257
- for (var i = 0; i < fingerprint.length; i++) {
258
- var char = fingerprint.charCodeAt(i);
259
- hash = ((hash << 5) - hash) + char;
260
- hash = hash & hash;
261
- }
262
- return Math.abs(hash).toString(36);
263
- }
264
-
265
- // Detect device type
266
- function getDeviceType() {
267
- var width = window.innerWidth;
268
- if (width < 768) return 'mobile';
269
- if (width < 1024) return 'tablet';
270
- return 'desktop';
271
- }
272
-
273
- // Send analytics data
274
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
275
- function sendData(endpoint, data) {
276
- if (navigator.sendBeacon) {
277
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
278
- navigator.sendBeacon(endpoint, blob);
279
- } else {
280
- fetch(endpoint, {
281
- method: 'POST',
282
- headers: { 'Content-Type': 'application/json' },
283
- body: JSON.stringify(data),
284
- keepalive: true
285
- }).catch(function() {});
286
- }
287
- }
288
-
289
- // Track pageview
290
- function trackPageview() {
291
- if (!config.features.basicTracking) return;
292
-
293
- var data = {
294
- siteId: config.siteId,
295
- pagePath: window.location.pathname,
296
- referrer: document.referrer || '',
297
- userAgent: navigator.userAgent,
298
- deviceType: getDeviceType()
299
- };
300
-
301
- sendData(config.apiEndpoint, data);
302
- pageLoadTime = Date.now();
303
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
304
- }
305
-
306
- // Track click (for heatmaps)
307
- function trackClick(event) {
308
- if (!config.features.heatmaps) return;
309
-
310
- var target = event.target;
311
- var selector = target.tagName;
312
- if (target.id) selector += '#' + target.id;
313
- if (target.className) selector += '.' + target.className.split(' ').join('.');
314
-
315
- eventQueue.push({
316
- type: 'click',
317
- data: {
318
- siteId: config.siteId,
319
- pagePath: window.location.pathname,
320
- interactionType: 'click',
321
- elementSelector: selector,
322
- coordinates: {
323
- x: event.clientX,
324
- y: event.clientY,
325
- scrollY: window.scrollY || window.pageYOffset || 0,
326
- viewportWidth: window.innerWidth,
327
- viewportHeight: window.innerHeight,
328
- documentHeight: Math.max(
329
- document.body.scrollHeight,
330
- document.body.offsetHeight,
331
- document.documentElement.clientHeight,
332
- document.documentElement.scrollHeight,
333
- document.documentElement.offsetHeight
334
- )
335
- },
336
- timeOnPage: Date.now() - pageLoadTime
337
- }
338
- });
339
-
340
- flushEvents();
341
- }
342
-
343
- // Track scroll depth
344
- function trackScroll() {
345
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
346
-
347
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
348
- var scrolled = window.scrollY;
349
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
350
-
351
- // Track milestones
352
- [25, 50, 75, 100].forEach(function(milestone) {
353
- if (percent >= milestone && !scrollMilestones[milestone]) {
354
- scrollMilestones[milestone] = true;
355
-
356
- eventQueue.push({
357
- type: 'scroll',
358
- data: {
359
- siteId: config.siteId,
360
- pagePath: window.location.pathname,
361
- interactionType: 'scroll',
362
- scrollDepth: milestone,
363
- timeOnPage: Date.now() - pageLoadTime
364
- }
365
- });
366
- }
367
- });
368
-
369
- flushEvents();
370
- }
371
-
372
- // Track page exit (send time on page)
373
- function trackExit() {
374
- if (!config.features.engagementTracking) return;
375
-
376
- var timeOnPage = Date.now() - pageLoadTime;
377
- if (timeOnPage < 1000) return; // Ignore very short visits
378
-
379
- sendData(config.interactionEndpoint, {
380
- siteId: config.siteId,
381
- pagePath: window.location.pathname,
382
- interactionType: 'exit',
383
- timeOnPage: timeOnPage
384
- });
385
- }
386
-
387
- // Flush event queue (batching)
388
- function flushEvents(force) {
389
- var now = Date.now();
390
- if (eventQueue.length === 0) return;
391
-
392
- // Increased thresholds: 30s or 50 events (more efficient batching)
393
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
394
-
395
- var batch = eventQueue.splice(0, eventQueue.length);
396
-
397
- // Send as single batched request instead of individual requests
398
- var batchData = {
399
- batch: true,
400
- interactions: batch.map(function(event) { return event.data; })
401
- };
402
-
403
- sendData(config.interactionEndpoint, batchData);
404
- lastFlush = now;
405
- }
406
-
407
- // Initialize tracking
408
- function init() {
409
- // Track initial pageview
410
- if (document.readyState === 'complete') {
411
- trackPageview();
412
- } else {
413
- window.addEventListener('load', trackPageview);
414
- }
415
-
416
- // Track SPA navigation
417
- var pushState = history.pushState;
418
- history.pushState = function() {
419
- pushState.apply(history, arguments);
420
- trackPageview();
421
- };
422
- window.addEventListener('popstate', trackPageview);
423
-
424
- // Track clicks for heatmaps
425
- if (config.features.heatmaps) {
426
- document.addEventListener('click', trackClick, true);
427
- }
428
-
429
- // Track scroll
430
- if (config.features.engagementTracking || config.features.heatmaps) {
431
- var scrollTimer;
432
- window.addEventListener('scroll', function() {
433
- clearTimeout(scrollTimer);
434
- scrollTimer = setTimeout(trackScroll, 100);
435
- });
436
- }
437
-
438
- // Track page exit
439
- if (config.features.engagementTracking) {
440
- window.addEventListener('beforeunload', function() {
441
- flushEvents(true); // Force flush pending events
442
- trackExit();
443
- });
444
- document.addEventListener('visibilitychange', function() {
445
- if (document.visibilityState === 'hidden') {
446
- flushEvents(true); // Force flush pending events
447
- trackExit();
448
- }
449
- });
450
- } else {
451
- // Even without engagement tracking, flush pending events on exit
452
- window.addEventListener('beforeunload', function() {
453
- flushEvents(true);
454
- });
455
- document.addEventListener('visibilitychange', function() {
456
- if (document.visibilityState === 'hidden') {
457
- flushEvents(true);
458
- }
459
- });
460
- }
461
-
462
- // Flush events periodically (increased to 30s for efficiency)
463
- setInterval(function() { flushEvents(false); }, 30000);
464
- }
465
-
466
- init();
467
- })();
468
- </script>
469
- </body>
470
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html DELETED
@@ -1,394 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fi">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Leppävaaran Uimahalli</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <link rel="stylesheet" href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <div class="top-bar">
14
- <div class="top-bar-left">
15
- <ul class="menu">
16
- <li class="menu-text"><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</li>
17
- </ul>
18
- </div>
19
- <div class="top-bar-right">
20
- <ul class="menu">
21
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html">Etusivu</a></li>
22
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
23
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnat</a></li>
24
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
25
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
26
- </ul>
27
- </div>
28
- </div>
29
- </header>
30
- <main>
31
- <!-- Hero Section -->
32
- <section class="hero-section" id="etusivu">
33
- <div class="grid-container">
34
- <div class="grid-x grid-padding-x align-center">
35
- <div class="cell medium-10 large-8 text-center">
36
- <h1><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h1>
37
- <p class="lead">Moderni ja viihtyisä uimahalli Espoon Leppävaarassa</p>
38
- </div>
39
- </div>
40
- </div>
41
- </section>
42
-
43
- <!-- Info Section -->
44
- <section class="info-section" id="palvelut">
45
- <div class="grid-container">
46
- <div class="grid-x grid-padding-x">
47
- <div class="cell medium-6 large-3">
48
- <div class="info-card">
49
- <h3><i class="fas fa-clock"></i> Aukioloajat</h3>
50
- <p class="opening-hours">Ma-Pe: 6:00-22:00<br>La-Su: 8:00-20:00</p>
51
- </div>
52
- </div>
53
- <div class="cell medium-6 large-3">
54
- <div class="info-card">
55
- <h3><i class="fas fa-euro-sign"></i> Hinnat</h3>
56
- <p>Aikuiset: 7€<br>Lapset: 4€<br>Opiskelijat: 5€</p>
57
- </div>
58
- </div>
59
- <div class="cell medium-6 large-3">
60
- <div class="info-card">
61
- <h3><i class="fas fa-swimming-pool"></i> Palvelut</h3>
62
- <p>25m allas<br>Opetusallas<br>Kuntosalipalvelut</p>
63
- </div>
64
- </div>
65
- <div class="cell medium-6 large-3">
66
- <div class="info-card">
67
- <h3><i class="fas fa-map-marker-alt"></i> Yhteystiedot</h3>
68
- <p>Veräjävuorenkatu 5<br>02670 Espoo<br>Puh: 09-123 4567</p>
69
- </div>
70
- </div>
71
- </div>
72
- </div>
73
- </section>
74
-
75
- <!-- Pools Section -->
76
- <section class="pools-section">
77
- <div class="grid-container">
78
- <h2 class="text-center"><i class="fas fa-swimmer"></i> Allastiedot</h2>
79
- <div class="grid-x grid-padding-x">
80
- <div class="cell medium-6">
81
- <div class="pool-card">
82
- <h3><i class="fas fa-swimming-pool"></i> Pääallas</h3>
83
- <p>25 metrin uimallas, 8 rataa</p>
84
- <ul>
85
- <li>Syvyys: 1.2-2.0m</li>
86
- <li>Lämpötila: 27°C</li>
87
- <li>Kapasiteetti: 100 henkilöä</li>
88
- </ul>
89
- </div>
90
- </div>
91
- <div class="cell medium-6">
92
- <div class="pool-card">
93
- <h3><i class="fas fa-child"></i> Opetusallas</h3>
94
- <p>12.5 metrin opetusallas</p>
95
- <ul>
96
- <li>Syvyys: 0.8-1.2m</li>
97
- <li>Lämpötila: 30°C</li>
98
- <li>Kapasiteetti: 40 henkilöä</li>
99
- </ul>
100
- </div>
101
- </div>
102
- </div>
103
- </div>
104
- </section>
105
- </main>
106
-
107
- <footer class="site-footer">
108
- <div class="grid-container">
109
- <div class="grid-x grid-padding-x">
110
- <div class="cell medium-4">
111
- <h4><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h4>
112
- <p>Moderni uimahalli Espoon sydämessä. Tarjoamme laadukkaat uimavalmennukset ja kuntoutuspalvelut kaikenikäisille.</p>
113
- </div>
114
- <div class="cell medium-4">
115
- <h4><i class="fas fa-link"></i> Pikalinkit</h4>
116
- <ul>
117
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
118
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnasto</a></li>
119
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
120
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
121
- </ul>
122
- </div>
123
- <div class="cell medium-4">
124
- <h4><i class="fas fa-phone"></i> Yhteystiedot</h4>
125
- <p>
126
- <i class="fas fa-map-marker-alt"></i> Veräjävuorenkatu 5<br>
127
- <i class="fas fa-map-marker-alt"></i> 02670 Espoo<br>
128
- <i class="fas fa-phone"></i> Puhelin: 09-123 4567<br>
129
- <i class="fas fa-envelope"></i> Sähköposti: info@leppavaaranuimahalli.fi
130
- </p>
131
- </div>
132
- </div>
133
- <div class="grid-x grid-padding-x">
134
- <div class="cell text-center">
135
- <p class="copyright">&copy; 2024 Leppävaaran Uimahalli. Kaikki oikeudet pidätetään.</p>
136
- </div>
137
- </div>
138
- </div>
139
- </footer>
140
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
141
- <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
142
- <script src="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js"></script>
143
- <!-- OSW Studio Analytics -->
144
- <script>
145
- (function() {
146
- 'use strict';
147
-
148
- // Configuration
149
- var config = {
150
- siteId: '039b8554-0a87-42f7-a969-570c3fa99cb5',
151
- apiEndpoint: '/api/analytics/track',
152
- interactionEndpoint: '/api/analytics/interaction',
153
- features: {"basicTracking":true,"heatmaps":false,"sessionRecording":false,"performanceMetrics":false,"engagementTracking":false,"customEvents":false}
154
- };
155
-
156
- // State
157
- var pageLoadTime = Date.now();
158
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
159
- var eventQueue = [];
160
- var lastFlush = Date.now();
161
-
162
- // Generate anonymous session ID from browser fingerprint (no cookies)
163
- function generateSessionId() {
164
- var canvas = document.createElement('canvas');
165
- var ctx = canvas.getContext('2d');
166
- ctx.textBaseline = 'top';
167
- ctx.font = '14px Arial';
168
- ctx.fillText('osw', 0, 0);
169
- var canvasData = canvas.toDataURL();
170
-
171
- var fingerprint = [
172
- navigator.userAgent,
173
- navigator.language,
174
- screen.colorDepth,
175
- screen.width + 'x' + screen.height,
176
- new Date().getTimezoneOffset(),
177
- canvasData.slice(0, 100)
178
- ].join('|');
179
-
180
- var hash = 0;
181
- for (var i = 0; i < fingerprint.length; i++) {
182
- var char = fingerprint.charCodeAt(i);
183
- hash = ((hash << 5) - hash) + char;
184
- hash = hash & hash;
185
- }
186
- return Math.abs(hash).toString(36);
187
- }
188
-
189
- // Detect device type
190
- function getDeviceType() {
191
- var width = window.innerWidth;
192
- if (width < 768) return 'mobile';
193
- if (width < 1024) return 'tablet';
194
- return 'desktop';
195
- }
196
-
197
- // Send analytics data
198
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
199
- function sendData(endpoint, data) {
200
- if (navigator.sendBeacon) {
201
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
202
- navigator.sendBeacon(endpoint, blob);
203
- } else {
204
- fetch(endpoint, {
205
- method: 'POST',
206
- headers: { 'Content-Type': 'application/json' },
207
- body: JSON.stringify(data),
208
- keepalive: true
209
- }).catch(function() {});
210
- }
211
- }
212
-
213
- // Track pageview
214
- function trackPageview() {
215
- if (!config.features.basicTracking) return;
216
-
217
- var data = {
218
- siteId: config.siteId,
219
- pagePath: window.location.pathname,
220
- referrer: document.referrer || '',
221
- userAgent: navigator.userAgent,
222
- deviceType: getDeviceType()
223
- };
224
-
225
- sendData(config.apiEndpoint, data);
226
- pageLoadTime = Date.now();
227
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
228
- }
229
-
230
- // Track click (for heatmaps)
231
- function trackClick(event) {
232
- if (!config.features.heatmaps) return;
233
-
234
- var target = event.target;
235
- var selector = target.tagName;
236
- if (target.id) selector += '#' + target.id;
237
- if (target.className) selector += '.' + target.className.split(' ').join('.');
238
-
239
- eventQueue.push({
240
- type: 'click',
241
- data: {
242
- siteId: config.siteId,
243
- pagePath: window.location.pathname,
244
- interactionType: 'click',
245
- elementSelector: selector,
246
- coordinates: {
247
- x: event.clientX,
248
- y: event.clientY,
249
- scrollY: window.scrollY || window.pageYOffset || 0,
250
- viewportWidth: window.innerWidth,
251
- viewportHeight: window.innerHeight,
252
- documentHeight: Math.max(
253
- document.body.scrollHeight,
254
- document.body.offsetHeight,
255
- document.documentElement.clientHeight,
256
- document.documentElement.scrollHeight,
257
- document.documentElement.offsetHeight
258
- )
259
- },
260
- timeOnPage: Date.now() - pageLoadTime
261
- }
262
- });
263
-
264
- flushEvents();
265
- }
266
-
267
- // Track scroll depth
268
- function trackScroll() {
269
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
270
-
271
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
272
- var scrolled = window.scrollY;
273
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
274
-
275
- // Track milestones
276
- [25, 50, 75, 100].forEach(function(milestone) {
277
- if (percent >= milestone && !scrollMilestones[milestone]) {
278
- scrollMilestones[milestone] = true;
279
-
280
- eventQueue.push({
281
- type: 'scroll',
282
- data: {
283
- siteId: config.siteId,
284
- pagePath: window.location.pathname,
285
- interactionType: 'scroll',
286
- scrollDepth: milestone,
287
- timeOnPage: Date.now() - pageLoadTime
288
- }
289
- });
290
- }
291
- });
292
-
293
- flushEvents();
294
- }
295
-
296
- // Track page exit (send time on page)
297
- function trackExit() {
298
- if (!config.features.engagementTracking) return;
299
-
300
- var timeOnPage = Date.now() - pageLoadTime;
301
- if (timeOnPage < 1000) return; // Ignore very short visits
302
-
303
- sendData(config.interactionEndpoint, {
304
- siteId: config.siteId,
305
- pagePath: window.location.pathname,
306
- interactionType: 'exit',
307
- timeOnPage: timeOnPage
308
- });
309
- }
310
-
311
- // Flush event queue (batching)
312
- function flushEvents(force) {
313
- var now = Date.now();
314
- if (eventQueue.length === 0) return;
315
-
316
- // Increased thresholds: 30s or 50 events (more efficient batching)
317
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
318
-
319
- var batch = eventQueue.splice(0, eventQueue.length);
320
-
321
- // Send as single batched request instead of individual requests
322
- var batchData = {
323
- batch: true,
324
- interactions: batch.map(function(event) { return event.data; })
325
- };
326
-
327
- sendData(config.interactionEndpoint, batchData);
328
- lastFlush = now;
329
- }
330
-
331
- // Initialize tracking
332
- function init() {
333
- // Track initial pageview
334
- if (document.readyState === 'complete') {
335
- trackPageview();
336
- } else {
337
- window.addEventListener('load', trackPageview);
338
- }
339
-
340
- // Track SPA navigation
341
- var pushState = history.pushState;
342
- history.pushState = function() {
343
- pushState.apply(history, arguments);
344
- trackPageview();
345
- };
346
- window.addEventListener('popstate', trackPageview);
347
-
348
- // Track clicks for heatmaps
349
- if (config.features.heatmaps) {
350
- document.addEventListener('click', trackClick, true);
351
- }
352
-
353
- // Track scroll
354
- if (config.features.engagementTracking || config.features.heatmaps) {
355
- var scrollTimer;
356
- window.addEventListener('scroll', function() {
357
- clearTimeout(scrollTimer);
358
- scrollTimer = setTimeout(trackScroll, 100);
359
- });
360
- }
361
-
362
- // Track page exit
363
- if (config.features.engagementTracking) {
364
- window.addEventListener('beforeunload', function() {
365
- flushEvents(true); // Force flush pending events
366
- trackExit();
367
- });
368
- document.addEventListener('visibilitychange', function() {
369
- if (document.visibilityState === 'hidden') {
370
- flushEvents(true); // Force flush pending events
371
- trackExit();
372
- }
373
- });
374
- } else {
375
- // Even without engagement tracking, flush pending events on exit
376
- window.addEventListener('beforeunload', function() {
377
- flushEvents(true);
378
- });
379
- document.addEventListener('visibilitychange', function() {
380
- if (document.visibilityState === 'hidden') {
381
- flushEvents(true);
382
- }
383
- });
384
- }
385
-
386
- // Flush events periodically (increased to 30s for efficiency)
387
- setInterval(function() { flushEvents(false); }, 30000);
388
- }
389
-
390
- init();
391
- })();
392
- </script>
393
- </body>
394
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html DELETED
@@ -1,476 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fi">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Palvelut - Leppävaaran Uimahalli</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <link rel="stylesheet" href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <div class="top-bar">
14
- <div class="top-bar-left">
15
- <ul class="menu">
16
- <li class="menu-text"><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</li>
17
- </ul>
18
- </div>
19
- <div class="top-bar-right">
20
- <ul class="menu">
21
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html">Etusivu</a></li>
22
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
23
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnat</a></li>
24
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
25
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
26
- </ul>
27
- </div>
28
- </div>
29
- </header>
30
- <main>
31
- <!-- Page Header -->
32
- <section class="page-hero-section">
33
- <div class="grid-container">
34
- <div class="grid-x grid-padding-x align-center">
35
- <div class="cell medium-10 large-8 text-center">
36
- <h1><i class="fas fa-swimming-pool"></i> Palvelut</h1>
37
- <p class="lead">Kattavat palvelut kaikenikäisille ja kuntoisille uimareille</p>
38
- </div>
39
- </div>
40
- </div>
41
- </section>
42
-
43
- <!-- Pool Services -->
44
- <section class="content-section">
45
- <div class="grid-container">
46
- <div class="grid-x grid-padding-x">
47
- <div class="cell large-10 large-offset-1">
48
- <h2>Allaspalvelut</h2>
49
- <div class="service-cards">
50
- <div class="service-card">
51
- <div class="service-image">
52
- <img src="https://picsum.photos/seed/mainpool/400/250.jpg" alt="Pääallas">
53
- </div>
54
- <div class="service-content">
55
- <h3><i class="fas fa-swimming-pool"></i> Pääallas</h3>
56
- <p>25-metrinen olympiakokoinen uimallas 8 radalla. Sopii kuntoiluun ja harjoitteluun.</p>
57
- <ul>
58
- <li>Pituus: 25m</li>
59
- <li>Leveys: 8 rataa</li>
60
- <li>Syvyys: 1.2-2.0m</li>
61
- <li>Lämpötila: 27°C</li>
62
- </ul>
63
- </div>
64
- </div>
65
- <div class="service-card">
66
- <div class="service-image">
67
- <img src="https://picsum.photos/seed/teachingpool/400/250.jpg" alt="Opetusallas">
68
- </div>
69
- <div class="service-content">
70
- <h3><i class="fas fa-child"></i> Opetusallas</h3>
71
- <p>Matala opetusallas sopii erinomaisesti lapsille ja aloittelijoille.</p>
72
- <ul>
73
- <li>Pituus: 12.5m</li>
74
- <li>Syvyys: 0.8-1.2m</li>
75
- <li>Lämpötila: 30°C</li>
76
- <li>Kapasiteetti: 40 hlö</li>
77
- </ul>
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
- </div>
83
- </div>
84
- </section>
85
-
86
- <!-- Additional Services -->
87
- <section class="content-section alternate-bg">
88
- <div class="grid-container">
89
- <div class="grid-x grid-padding-x">
90
- <div class="cell large-10 large-offset-1">
91
- <h2>Muut palvelut</h2>
92
- <div class="additional-services">
93
- <div class="additional-service">
94
- <div class="service-icon">
95
- <i class="fas fa-dumbbell"></i>
96
- </div>
97
- <h3>Kuntosali</h3>
98
- <p>Moderni kuntosali laadukkailla laitteilla ja vapaineilla. Aukioloajat samat kuin allas.</p>
99
- </div>
100
- <div class="additional-service">
101
- <div class="service-icon">
102
- <i class="fas fa-hot-tub"></i>
103
- </div>
104
- <h3>Palju ja sauna</h3>
105
- <p>Relaxoituvat saunatilat ja palju uinnin jälkeen. Sekä miesten että naisten puolella.</p>
106
- </div>
107
- <div class="additional-service">
108
- <div class="service-icon">
109
- <i class="fas fa-user-tie"></i>
110
- </div>
111
- <h3>Uimakoulu</h3>
112
- <p>Laadukas uimakoulu kaikenikäisille. Ryhmät aloittelijoista edistyneisiin.</p>
113
- </div>
114
- <div class="additional-service">
115
- <div class="service-icon">
116
- <i class="fas fa-users"></i>
117
- </div>
118
- <h3>Aikuisten uintiryhmät</h3>
119
- <p>Tekniikkaryhmiä ja kuntouintiryhmiä ohjatusti.</p>
120
- </div>
121
- </div>
122
- </div>
123
- </div>
124
- </div>
125
- </section>
126
-
127
- <!-- Special Programs -->
128
- <section class="content-section">
129
- <div class="grid-container">
130
- <div class="grid-x grid-padding-x">
131
- <div class="cell large-10 large-offset-1">
132
- <h2>Erikoisohjelmat</h2>
133
- <div class="special-programs">
134
- <div class="program-card">
135
- <h3><i class="fas fa-baby"></i> Perheuinti</h3>
136
- <p>Lauantaisin klo 9-11 perheille ja lapsille. Mukava yhdessäolo vedessä.</p>
137
- <div class="program-time">Lauantai 9:00-11:00</div>
138
- </div>
139
- <div class="program-card">
140
- <h3><i class="fas fa-user-clock"></i> Senioriuinti</h3>
141
- <p>Rauhallinen uintihetki senioreille tiistaisin ja torstaisin.</p>
142
- <div class="program-time">Ti-To 10:00-12:00</div>
143
- </div>
144
- <div class="program-card">
145
- <h3><i class="fas fa-wheelchair"></i> Vammaisuinti</h3>
146
- <p>Soveltuva uinti liikuntarajoitteisille. Nostin saatavilla.</p>
147
- <div class="program-time">Ma-Ke 14:00-16:00</div>
148
- </div>
149
- </div>
150
- </div>
151
- </div>
152
- </div>
153
- </section>
154
-
155
- <!-- Facilities -->
156
- <section class="content-section alternate-bg">
157
- <div class="grid-container">
158
- <div class="grid-x grid-padding-x">
159
- <div class="cell large-8 large-offset-2">
160
- <h2>Tilat ja varusteet</h2>
161
- <div class="facilities-list">
162
- <div class="facility-item">
163
- <i class="fas fa-lock"></i>
164
- <p>Max 200 lukollista kaappia</p>
165
- </div>
166
- <div class="facility-item">
167
- <i class="fas fa-shower"></i>
168
- <p>Laajat pukutilat ja suihkut</p>
169
- </div>
170
- <div class="facility-item">
171
- <i class="fas fa-utensils"></i>
172
- <p>Kahvila ja välipalautomaatti</p>
173
- </div>
174
- <div class="facility-item">
175
- <i class="fas fa-wheelchair"></i>
176
- <p>Esteettömät tilat</p>
177
- </div>
178
- <div class="facility-item">
179
- <i class="fas fa-parking"></i>
180
- <p>Ilmainen pysäköintialue</p>
181
- </div>
182
- </div>
183
- </div>
184
- </div>
185
- </div>
186
- </section>
187
- </main>
188
-
189
- <footer class="site-footer">
190
- <div class="grid-container">
191
- <div class="grid-x grid-padding-x">
192
- <div class="cell medium-4">
193
- <h4><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h4>
194
- <p>Moderni uimahalli Espoon sydämessä. Tarjoamme laadukkaat uimavalmennukset ja kuntoutuspalvelut kaikenikäisille.</p>
195
- </div>
196
- <div class="cell medium-4">
197
- <h4><i class="fas fa-link"></i> Pikalinkit</h4>
198
- <ul>
199
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
200
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnasto</a></li>
201
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
202
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
203
- </ul>
204
- </div>
205
- <div class="cell medium-4">
206
- <h4><i class="fas fa-phone"></i> Yhteystiedot</h4>
207
- <p>
208
- <i class="fas fa-map-marker-alt"></i> Veräjävuorenkatu 5<br>
209
- <i class="fas fa-map-marker-alt"></i> 02670 Espoo<br>
210
- <i class="fas fa-phone"></i> Puhelin: 09-123 4567<br>
211
- <i class="fas fa-envelope"></i> Sähköposti: info@leppavaaranuimahalli.fi
212
- </p>
213
- </div>
214
- </div>
215
- <div class="grid-x grid-padding-x">
216
- <div class="cell text-center">
217
- <p class="copyright">&copy; 2024 Leppävaaran Uimahalli. Kaikki oikeudet pidätetään.</p>
218
- </div>
219
- </div>
220
- </div>
221
- </footer>
222
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
223
- <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
224
- <script src="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js"></script>
225
- <!-- OSW Studio Analytics -->
226
- <script>
227
- (function() {
228
- 'use strict';
229
-
230
- // Configuration
231
- var config = {
232
- siteId: '039b8554-0a87-42f7-a969-570c3fa99cb5',
233
- apiEndpoint: '/api/analytics/track',
234
- interactionEndpoint: '/api/analytics/interaction',
235
- features: {"basicTracking":true,"heatmaps":false,"sessionRecording":false,"performanceMetrics":false,"engagementTracking":false,"customEvents":false}
236
- };
237
-
238
- // State
239
- var pageLoadTime = Date.now();
240
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
241
- var eventQueue = [];
242
- var lastFlush = Date.now();
243
-
244
- // Generate anonymous session ID from browser fingerprint (no cookies)
245
- function generateSessionId() {
246
- var canvas = document.createElement('canvas');
247
- var ctx = canvas.getContext('2d');
248
- ctx.textBaseline = 'top';
249
- ctx.font = '14px Arial';
250
- ctx.fillText('osw', 0, 0);
251
- var canvasData = canvas.toDataURL();
252
-
253
- var fingerprint = [
254
- navigator.userAgent,
255
- navigator.language,
256
- screen.colorDepth,
257
- screen.width + 'x' + screen.height,
258
- new Date().getTimezoneOffset(),
259
- canvasData.slice(0, 100)
260
- ].join('|');
261
-
262
- var hash = 0;
263
- for (var i = 0; i < fingerprint.length; i++) {
264
- var char = fingerprint.charCodeAt(i);
265
- hash = ((hash << 5) - hash) + char;
266
- hash = hash & hash;
267
- }
268
- return Math.abs(hash).toString(36);
269
- }
270
-
271
- // Detect device type
272
- function getDeviceType() {
273
- var width = window.innerWidth;
274
- if (width < 768) return 'mobile';
275
- if (width < 1024) return 'tablet';
276
- return 'desktop';
277
- }
278
-
279
- // Send analytics data
280
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
281
- function sendData(endpoint, data) {
282
- if (navigator.sendBeacon) {
283
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
284
- navigator.sendBeacon(endpoint, blob);
285
- } else {
286
- fetch(endpoint, {
287
- method: 'POST',
288
- headers: { 'Content-Type': 'application/json' },
289
- body: JSON.stringify(data),
290
- keepalive: true
291
- }).catch(function() {});
292
- }
293
- }
294
-
295
- // Track pageview
296
- function trackPageview() {
297
- if (!config.features.basicTracking) return;
298
-
299
- var data = {
300
- siteId: config.siteId,
301
- pagePath: window.location.pathname,
302
- referrer: document.referrer || '',
303
- userAgent: navigator.userAgent,
304
- deviceType: getDeviceType()
305
- };
306
-
307
- sendData(config.apiEndpoint, data);
308
- pageLoadTime = Date.now();
309
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
310
- }
311
-
312
- // Track click (for heatmaps)
313
- function trackClick(event) {
314
- if (!config.features.heatmaps) return;
315
-
316
- var target = event.target;
317
- var selector = target.tagName;
318
- if (target.id) selector += '#' + target.id;
319
- if (target.className) selector += '.' + target.className.split(' ').join('.');
320
-
321
- eventQueue.push({
322
- type: 'click',
323
- data: {
324
- siteId: config.siteId,
325
- pagePath: window.location.pathname,
326
- interactionType: 'click',
327
- elementSelector: selector,
328
- coordinates: {
329
- x: event.clientX,
330
- y: event.clientY,
331
- scrollY: window.scrollY || window.pageYOffset || 0,
332
- viewportWidth: window.innerWidth,
333
- viewportHeight: window.innerHeight,
334
- documentHeight: Math.max(
335
- document.body.scrollHeight,
336
- document.body.offsetHeight,
337
- document.documentElement.clientHeight,
338
- document.documentElement.scrollHeight,
339
- document.documentElement.offsetHeight
340
- )
341
- },
342
- timeOnPage: Date.now() - pageLoadTime
343
- }
344
- });
345
-
346
- flushEvents();
347
- }
348
-
349
- // Track scroll depth
350
- function trackScroll() {
351
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
352
-
353
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
354
- var scrolled = window.scrollY;
355
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
356
-
357
- // Track milestones
358
- [25, 50, 75, 100].forEach(function(milestone) {
359
- if (percent >= milestone && !scrollMilestones[milestone]) {
360
- scrollMilestones[milestone] = true;
361
-
362
- eventQueue.push({
363
- type: 'scroll',
364
- data: {
365
- siteId: config.siteId,
366
- pagePath: window.location.pathname,
367
- interactionType: 'scroll',
368
- scrollDepth: milestone,
369
- timeOnPage: Date.now() - pageLoadTime
370
- }
371
- });
372
- }
373
- });
374
-
375
- flushEvents();
376
- }
377
-
378
- // Track page exit (send time on page)
379
- function trackExit() {
380
- if (!config.features.engagementTracking) return;
381
-
382
- var timeOnPage = Date.now() - pageLoadTime;
383
- if (timeOnPage < 1000) return; // Ignore very short visits
384
-
385
- sendData(config.interactionEndpoint, {
386
- siteId: config.siteId,
387
- pagePath: window.location.pathname,
388
- interactionType: 'exit',
389
- timeOnPage: timeOnPage
390
- });
391
- }
392
-
393
- // Flush event queue (batching)
394
- function flushEvents(force) {
395
- var now = Date.now();
396
- if (eventQueue.length === 0) return;
397
-
398
- // Increased thresholds: 30s or 50 events (more efficient batching)
399
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
400
-
401
- var batch = eventQueue.splice(0, eventQueue.length);
402
-
403
- // Send as single batched request instead of individual requests
404
- var batchData = {
405
- batch: true,
406
- interactions: batch.map(function(event) { return event.data; })
407
- };
408
-
409
- sendData(config.interactionEndpoint, batchData);
410
- lastFlush = now;
411
- }
412
-
413
- // Initialize tracking
414
- function init() {
415
- // Track initial pageview
416
- if (document.readyState === 'complete') {
417
- trackPageview();
418
- } else {
419
- window.addEventListener('load', trackPageview);
420
- }
421
-
422
- // Track SPA navigation
423
- var pushState = history.pushState;
424
- history.pushState = function() {
425
- pushState.apply(history, arguments);
426
- trackPageview();
427
- };
428
- window.addEventListener('popstate', trackPageview);
429
-
430
- // Track clicks for heatmaps
431
- if (config.features.heatmaps) {
432
- document.addEventListener('click', trackClick, true);
433
- }
434
-
435
- // Track scroll
436
- if (config.features.engagementTracking || config.features.heatmaps) {
437
- var scrollTimer;
438
- window.addEventListener('scroll', function() {
439
- clearTimeout(scrollTimer);
440
- scrollTimer = setTimeout(trackScroll, 100);
441
- });
442
- }
443
-
444
- // Track page exit
445
- if (config.features.engagementTracking) {
446
- window.addEventListener('beforeunload', function() {
447
- flushEvents(true); // Force flush pending events
448
- trackExit();
449
- });
450
- document.addEventListener('visibilitychange', function() {
451
- if (document.visibilityState === 'hidden') {
452
- flushEvents(true); // Force flush pending events
453
- trackExit();
454
- }
455
- });
456
- } else {
457
- // Even without engagement tracking, flush pending events on exit
458
- window.addEventListener('beforeunload', function() {
459
- flushEvents(true);
460
- });
461
- document.addEventListener('visibilitychange', function() {
462
- if (document.visibilityState === 'hidden') {
463
- flushEvents(true);
464
- }
465
- });
466
- }
467
-
468
- // Flush events periodically (increased to 30s for efficiency)
469
- setInterval(function() { flushEvents(false); }, 30000);
470
- }
471
-
472
- init();
473
- })();
474
- </script>
475
- </body>
476
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/robots.txt DELETED
@@ -1,9 +0,0 @@
1
- User-agent: *
2
- Allow: /
3
-
4
- Sitemap: http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/sitemap.xml
5
-
6
- # Disallow common non-content paths
7
- Disallow: /api/
8
- Disallow: /_next/
9
- Disallow: /admin/
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js DELETED
@@ -1,142 +0,0 @@
1
- // Leppävaaran Uimahalli - Enhanced JavaScript
2
-
3
- document.addEventListener('DOMContentLoaded', () => {
4
- // Initialize Foundation framework
5
- $(document).foundation();
6
-
7
- // Smooth scroll for navigation links
8
- const navLinks = document.querySelectorAll('.top-bar a[href^="#"]');
9
-
10
- navLinks.forEach(link => {
11
- link.addEventListener('click', (e) => {
12
- e.preventDefault();
13
- const targetId = link.getAttribute('href');
14
- const targetElement = document.querySelector(targetId);
15
-
16
- if (targetElement) {
17
- const headerOffset = 100;
18
- const elementPosition = targetElement.getBoundingClientRect().top;
19
- const offsetPosition = elementPosition + window.pageYOffset - headerOffset;
20
-
21
- window.scrollTo({
22
- top: offsetPosition,
23
- behavior: 'smooth'
24
- });
25
- }
26
- });
27
- });
28
-
29
- // Enhanced header scroll effect
30
- const header = document.querySelector('.site-header');
31
- let lastScroll = 0;
32
- let ticking = false;
33
-
34
- function updateHeader() {
35
- const currentScroll = window.pageYOffset;
36
-
37
- if (currentScroll > 50) {
38
- header.style.boxShadow = '0 4px 20px rgba(0, 102, 204, 0.15)';
39
- header.style.background = 'rgba(255, 255, 255, 0.98)';
40
- } else {
41
- header.style.boxShadow = '0 2px 12px rgba(0, 102, 204, 0.08)';
42
- header.style.background = 'rgba(255, 255, 255, 0.95)';
43
- }
44
-
45
- lastScroll = currentScroll;
46
- ticking = false;
47
- }
48
-
49
- window.addEventListener('scroll', () => {
50
- if (!ticking) {
51
- requestAnimationFrame(updateHeader);
52
- ticking = true;
53
- }
54
- });
55
-
56
- // Enhanced Intersection Observer for staggered animations
57
- const observerOptions = {
58
- threshold: 0.1,
59
- rootMargin: '0px 0px -50px 0px'
60
- };
61
-
62
- const fadeInObserver = new IntersectionObserver((entries) => {
63
- entries.forEach((entry, index) => {
64
- if (entry.isIntersecting) {
65
- setTimeout(() => {
66
- entry.target.style.opacity = '1';
67
- entry.target.style.transform = 'translateY(0)';
68
- }, index * 100); // Stagger animation
69
- }
70
- });
71
- }, observerOptions);
72
-
73
- // Observe info cards and pool cards with staggered effect
74
- document.querySelectorAll('.info-card, .pool-card').forEach(card => {
75
- card.style.opacity = '0';
76
- card.style.transform = 'translateY(30px)';
77
- card.style.transition = 'opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1), transform 0.6s cubic-bezier(0.4, 0, 0.2, 1)';
78
- fadeInObserver.observe(card);
79
- });
80
-
81
- // Add hover effect for cards
82
- document.querySelectorAll('.info-card, .pool-card').forEach(card => {
83
- card.addEventListener('mouseenter', () => {
84
- card.style.transform = 'translateY(-8px) scale(1.02)';
85
- });
86
-
87
- card.addEventListener('mouseleave', () => {
88
- card.style.transform = 'translateY(0) scale(1)';
89
- });
90
- });
91
-
92
- // Add active state to navigation based on scroll position
93
- const sections = document.querySelectorAll('section[id]');
94
- const navMenuItems = document.querySelectorAll('.top-bar .menu a[href^="#"]');
95
-
96
- function updateActiveNav() {
97
- const scrollPosition = window.pageYOffset + 150;
98
-
99
- sections.forEach(section => {
100
- const sectionTop = section.offsetTop;
101
- const sectionHeight = section.offsetHeight;
102
- const sectionId = section.getAttribute('id');
103
-
104
- if (scrollPosition >= sectionTop && scrollPosition < sectionTop + sectionHeight) {
105
- navMenuItems.forEach(item => {
106
- item.classList.remove('active');
107
- if (item.getAttribute('href') === `#${sectionId}`) {
108
- item.classList.add('active');
109
- }
110
- });
111
- }
112
- });
113
- }
114
-
115
- window.addEventListener('scroll', updateActiveNav);
116
- updateActiveNav(); // Call once on load
117
-
118
- // Add CSS for active navigation state
119
- const style = document.createElement('style');
120
- style.textContent = `
121
- .top-bar .menu a.active {
122
- background: var(--water-light) !important;
123
- color: var(--primary-blue) !important;
124
- font-weight: 600;
125
- }
126
- `;
127
- document.head.appendChild(style);
128
-
129
- // Add subtle parallax effect to hero section
130
- const heroSection = document.querySelector('.hero-section');
131
-
132
- window.addEventListener('scroll', () => {
133
- const scrolled = window.pageYOffset;
134
- const parallax = scrolled * 0.5;
135
-
136
- if (heroSection) {
137
- heroSection.style.transform = `translateY(${parallax}px)`;
138
- }
139
- });
140
-
141
- console.log('🏊‍♂️ Leppävaaran Uimahalli website loaded successfully!');
142
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/sitemap.xml DELETED
@@ -1,33 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
- <url>
4
- <loc>http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html</loc>
5
- <lastmod>2025-11-21</lastmod>
6
- <changefreq>weekly</changefreq>
7
- <priority>0.8</priority>
8
- </url>
9
- <url>
10
- <loc>http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html</loc>
11
- <lastmod>2025-11-21</lastmod>
12
- <changefreq>weekly</changefreq>
13
- <priority>0.8</priority>
14
- </url>
15
- <url>
16
- <loc>http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5</loc>
17
- <lastmod>2025-11-21</lastmod>
18
- <changefreq>weekly</changefreq>
19
- <priority>1.0</priority>
20
- </url>
21
- <url>
22
- <loc>http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html</loc>
23
- <lastmod>2025-11-21</lastmod>
24
- <changefreq>weekly</changefreq>
25
- <priority>0.8</priority>
26
- </url>
27
- <url>
28
- <loc>http://localhost:3000/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html</loc>
29
- <lastmod>2025-11-21</lastmod>
30
- <changefreq>weekly</changefreq>
31
- <priority>0.8</priority>
32
- </url>
33
- </urlset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css DELETED
@@ -1,1029 +0,0 @@
1
- /* Leppävaaran Uimahalli - Improved cohesive design */
2
-
3
- :root {
4
- /* Water-inspired color palette */
5
- --primary-blue: #0066cc;
6
- --light-blue: #4a90e2;
7
- --accent-cyan: #00acc1;
8
- --deep-blue: #003d7a;
9
- --water-light: #e3f2fd;
10
- --water-medium: #bbdefb;
11
- --water-dark: #1e88e5;
12
-
13
- /* Neutral colors */
14
- --text-dark: #1a2332;
15
- --text-light: #546e7a;
16
- --bg-light: #f5f8fa;
17
- --bg-white: #ffffff;
18
- --border-light: #e1e8ed;
19
- --shadow-light: rgba(0, 102, 204, 0.08);
20
- --shadow-medium: rgba(0, 102, 204, 0.15);
21
-
22
- /* Typography scale */
23
- --font-xs: 0.875rem;
24
- --font-sm: 1rem;
25
- --font-base: 1.125rem;
26
- --font-lg: 1.25rem;
27
- --font-xl: 1.5rem;
28
- --font-2xl: 2rem;
29
- --font-3xl: 2.5rem;
30
- --font-4xl: 3rem;
31
-
32
- /* Spacing scale */
33
- --space-xs: 0.5rem;
34
- --space-sm: 1rem;
35
- --space-md: 1.5rem;
36
- --space-lg: 2rem;
37
- --space-xl: 3rem;
38
- --space-2xl: 4rem;
39
-
40
- /* Border radius */
41
- --radius-sm: 4px;
42
- --radius-md: 8px;
43
- --radius-lg: 12px;
44
- }
45
-
46
- /* Base styles */
47
- * {
48
- box-sizing: border-box;
49
- }
50
-
51
- body {
52
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
53
- margin: 0;
54
- padding: 0;
55
- background: var(--bg-light);
56
- color: var(--text-dark);
57
- line-height: 1.6;
58
- font-size: var(--font-base);
59
- }
60
-
61
- /* Typography */
62
- h1, h2, h3, h4 {
63
- font-weight: 700;
64
- line-height: 1.2;
65
- margin: 0 0 var(--space-md) 0;
66
- }
67
-
68
- h1 {
69
- font-size: var(--font-4xl);
70
- }
71
-
72
- h2 {
73
- font-size: var(--font-3xl);
74
- }
75
-
76
- h3 {
77
- font-size: var(--font-2xl);
78
- }
79
-
80
- h4 {
81
- font-size: var(--font-xl);
82
- }
83
-
84
- p {
85
- margin: 0 0 var(--space-md) 0;
86
- }
87
-
88
- a {
89
- color: var(--primary-blue);
90
- text-decoration: none;
91
- transition: color 0.2s ease;
92
- }
93
-
94
- a:hover {
95
- color: var(--deep-blue);
96
- }
97
-
98
- /* Header Styles */
99
- .site-header {
100
- background: var(--bg-white);
101
- box-shadow: 0 2px 12px var(--shadow-light);
102
- position: sticky;
103
- top: 0;
104
- z-index: 1000;
105
- backdrop-filter: blur(10px);
106
- background: rgba(255, 255, 255, 0.95);
107
- }
108
-
109
- .top-bar {
110
- background: transparent;
111
- padding: 0;
112
- height: 80px;
113
- align-items: center;
114
- }
115
-
116
- .top-bar .menu-text {
117
- color: var(--primary-blue);
118
- font-weight: 700;
119
- font-size: var(--font-xl);
120
- margin: 0;
121
- }
122
-
123
- .top-bar .menu {
124
- background: transparent;
125
- }
126
-
127
- .top-bar .menu a {
128
- color: var(--text-dark);
129
- font-weight: 500;
130
- padding: var(--space-sm) var(--space-md);
131
- border-radius: var(--radius-md);
132
- transition: all 0.2s ease;
133
- font-size: var(--font-sm);
134
- }
135
-
136
- .top-bar .menu a:hover {
137
- background: var(--water-light);
138
- color: var(--primary-blue);
139
- }
140
-
141
- /* Hero Section */
142
- .hero-section {
143
- background: linear-gradient(135deg, var(--primary-blue) 0%, var(--accent-cyan) 100%);
144
- color: white;
145
- padding: var(--space-2xl) 0;
146
- text-align: center;
147
- position: relative;
148
- overflow: hidden;
149
- }
150
-
151
- .hero-section::before {
152
- content: '';
153
- position: absolute;
154
- top: 0;
155
- left: 0;
156
- right: 0;
157
- bottom: 0;
158
- background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path d="M0,50 Q25,30 50,50 T100,50 L100,100 L0,100 Z" fill="rgba(255,255,255,0.1)"/></svg>') repeat-x;
159
- background-size: 200px 100px;
160
- animation: wave 10s linear infinite;
161
- }
162
-
163
- @keyframes wave {
164
- 0% { background-position-x: 0; }
165
- 100% { background-position-x: 200px; }
166
- }
167
-
168
- .hero-section > .grid-container {
169
- position: relative;
170
- z-index: 1;
171
- }
172
-
173
- .hero-section h1 {
174
- font-size: var(--font-4xl);
175
- font-weight: 800;
176
- margin-bottom: var(--space-md);
177
- text-shadow: none;
178
- letter-spacing: -0.5px;
179
- }
180
-
181
- .hero-section .lead {
182
- font-size: var(--font-xl);
183
- font-weight: 400;
184
- opacity: 1;
185
- max-width: 600px;
186
- margin: 0 auto;
187
- }
188
-
189
- /* Info Section */
190
- .info-section {
191
- padding: var(--space-2xl) 0;
192
- background: var(--bg-white);
193
- }
194
-
195
- .info-card {
196
- background: var(--bg-white);
197
- border: 1px solid var(--border-light);
198
- border-radius: var(--radius-lg);
199
- padding: var(--space-xl);
200
- text-align: center;
201
- height: 100%;
202
- box-shadow: 0 4px 6px var(--shadow-light);
203
- transition: all 0.3s ease;
204
- position: relative;
205
- overflow: hidden;
206
- }
207
-
208
- .info-card::before {
209
- content: '';
210
- position: absolute;
211
- top: 0;
212
- left: 0;
213
- right: 0;
214
- height: 4px;
215
- background: linear-gradient(90deg, var(--primary-blue), var(--accent-cyan));
216
- }
217
-
218
- .info-card:hover {
219
- transform: translateY(-8px);
220
- box-shadow: 0 12px 24px var(--shadow-medium);
221
- }
222
-
223
- .info-card h3 {
224
- color: var(--primary-blue);
225
- font-size: var(--font-xl);
226
- margin-bottom: var(--space-md);
227
- font-weight: 700;
228
- }
229
-
230
- .info-card p {
231
- line-height: 1.8;
232
- margin: 0;
233
- color: var(--text-light);
234
- }
235
-
236
- .opening-hours {
237
- font-weight: 600;
238
- font-size: var(--font-lg);
239
- color: var(--text-dark);
240
- }
241
-
242
- /* Pools Section */
243
- .pools-section {
244
- padding: var(--space-2xl) 0;
245
- background: var(--bg-light);
246
- }
247
-
248
- .pools-section h2 {
249
- color: var(--text-dark);
250
- font-size: var(--font-3xl);
251
- margin-bottom: var(--space-xl);
252
- font-weight: 700;
253
- text-align: center;
254
- }
255
-
256
- .pool-card {
257
- background: var(--bg-white);
258
- border-radius: var(--radius-lg);
259
- padding: var(--space-xl);
260
- box-shadow: 0 4px 6px var(--shadow-light);
261
- transition: all 0.3s ease;
262
- position: relative;
263
- overflow: hidden;
264
- }
265
-
266
- .pool-card::before {
267
- content: '';
268
- position: absolute;
269
- top: 0;
270
- left: 0;
271
- right: 0;
272
- height: 4px;
273
- background: linear-gradient(90deg, var(--water-dark), var(--accent-cyan));
274
- }
275
-
276
- .pool-card:hover {
277
- transform: translateY(-8px);
278
- box-shadow: 0 12px 24px var(--shadow-medium);
279
- }
280
-
281
- .pool-card h3 {
282
- color: var(--water-dark);
283
- font-size: var(--font-xl);
284
- margin-bottom: var(--space-md);
285
- font-weight: 700;
286
- }
287
-
288
- .pool-card p {
289
- font-size: var(--font-lg);
290
- margin-bottom: var(--space-lg);
291
- font-weight: 500;
292
- color: var(--text-dark);
293
- }
294
-
295
- .pool-card ul {
296
- list-style: none;
297
- padding: 0;
298
- margin: 0;
299
- }
300
-
301
- .pool-card ul li {
302
- padding: var(--space-sm) 0;
303
- border-bottom: 1px solid var(--border-light);
304
- position: relative;
305
- padding-left: 32px;
306
- color: var(--text-light);
307
- font-size: var(--font-sm);
308
- }
309
-
310
- .pool-card ul li:before {
311
- content: '';
312
- position: absolute;
313
- left: 0;
314
- top: 50%;
315
- transform: translateY(-50%);
316
- width: 20px;
317
- height: 20px;
318
- background: var(--water-light);
319
- border-radius: 50%;
320
- display: flex;
321
- align-items: center;
322
- justify-content: center;
323
- }
324
-
325
- .pool-card ul li:after {
326
- content: '✓';
327
- position: absolute;
328
- left: 6px;
329
- top: 50%;
330
- transform: translateY(-50%);
331
- color: var(--primary-blue);
332
- font-weight: bold;
333
- font-size: 12px;
334
- z-index: 1;
335
- }
336
-
337
- .pool-card ul li:last-child {
338
- border-bottom: none;
339
- }
340
-
341
- /* Footer Styles */
342
- .site-footer {
343
- background: var(--text-dark);
344
- color: white;
345
- padding: var(--space-2xl) 0 var(--space-lg);
346
- margin-top: 0;
347
- }
348
-
349
- .site-footer h4 {
350
- color: var(--accent-cyan);
351
- font-size: var(--font-lg);
352
- margin-bottom: var(--space-md);
353
- font-weight: 600;
354
- }
355
-
356
- .site-footer ul {
357
- list-style: none;
358
- padding: 0;
359
- margin: 0;
360
- }
361
-
362
- .site-footer ul li {
363
- margin-bottom: var(--space-sm);
364
- }
365
-
366
- .site-footer ul li a {
367
- color: rgba(255, 255, 255, 0.7);
368
- text-decoration: none;
369
- transition: all 0.2s ease;
370
- font-size: var(--font-sm);
371
- }
372
-
373
- .site-footer ul li a:hover {
374
- color: var(--accent-cyan);
375
- transform: translateX(2px);
376
- }
377
-
378
- .site-footer p {
379
- color: rgba(255, 255, 255, 0.7);
380
- line-height: 1.8;
381
- font-size: var(--font-sm);
382
- }
383
-
384
- .copyright {
385
- margin-top: var(--space-xl);
386
- padding-top: var(--space-lg);
387
- border-top: 1px solid rgba(255, 255, 255, 0.1);
388
- color: rgba(255, 255, 255, 0.5);
389
- text-align: center;
390
- font-size: var(--font-xs);
391
- }
392
-
393
- /* Responsive Design */
394
- @media screen and (max-width: 1024px) {
395
- .hero-section h1 {
396
- font-size: var(--font-3xl);
397
- }
398
-
399
- .hero-section .lead {
400
- font-size: var(--font-lg);
401
- }
402
- }
403
-
404
- @media screen and (max-width: 640px) {
405
- :root {
406
- --space-2xl: 3rem;
407
- --space-xl: 2rem;
408
- }
409
-
410
- .top-bar {
411
- height: auto;
412
- padding: var(--space-md) 0;
413
- }
414
-
415
- .hero-section {
416
- padding: var(--space-xl) 0;
417
- }
418
-
419
- .hero-section h1 {
420
- font-size: var(--font-2xl);
421
- }
422
-
423
- .hero-section .lead {
424
- font-size: var(--font-base);
425
- }
426
-
427
- .info-section, .pools-section {
428
- padding: var(--space-xl) 0;
429
- }
430
-
431
- .pools-section h2 {
432
- font-size: var(--font-2xl);
433
- }
434
-
435
- .info-card, .pool-card {
436
- padding: var(--space-lg);
437
- margin-bottom: var(--space-md);
438
- }
439
- }
440
-
441
- /* Smooth scrolling */
442
- html {
443
- scroll-behavior: smooth;
444
- }
445
-
446
- /* Section spacing */
447
- main section {
448
- position: relative;
449
- }
450
-
451
- /* Utility classes */
452
- .text-center {
453
- text-align: center;
454
- }
455
-
456
- /* Page Hero Section */
457
- .page-hero-section {
458
- background: linear-gradient(135deg, var(--primary-blue) 0%, var(--accent-cyan) 100%);
459
- color: white;
460
- padding: var(--space-xl) 0;
461
- text-align: center;
462
- position: relative;
463
- overflow: hidden;
464
- }
465
-
466
- .page-hero-section::before {
467
- content: '';
468
- position: absolute;
469
- top: 0;
470
- left: 0;
471
- right: 0;
472
- bottom: 0;
473
- background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><path d="M0,50 Q25,30 50,50 T100,50 L100,100 L0,100 Z" fill="rgba(255,255,255,0.1)"/></svg>') repeat-x;
474
- background-size: 200px 100px;
475
- animation: wave 10s linear infinite;
476
- }
477
-
478
- .page-hero-section > .grid-container {
479
- position: relative;
480
- z-index: 1;
481
- }
482
-
483
- .page-hero-section h1 {
484
- font-size: var(--font-3xl);
485
- font-weight: 800;
486
- margin-bottom: var(--space-md);
487
- text-shadow: none;
488
- letter-spacing: -0.5px;
489
- }
490
-
491
- .page-hero-section .lead {
492
- font-size: var(--font-lg);
493
- font-weight: 400;
494
- opacity: 1;
495
- max-width: 600px;
496
- margin: 0 auto;
497
- }
498
-
499
- /* Content Section */
500
- .content-section {
501
- padding: var(--space-2xl) 0;
502
- background: var(--bg-white);
503
- }
504
-
505
- .content-section.alternate-bg {
506
- background: var(--bg-light);
507
- }
508
-
509
- .content-section h2 {
510
- color: var(--text-dark);
511
- font-size: var(--font-2xl);
512
- margin-bottom: var(--space-xl);
513
- font-weight: 700;
514
- text-align: center;
515
- }
516
-
517
- /* Hours Table */
518
- .hours-table {
519
- margin: var(--space-lg) 0;
520
- }
521
-
522
- .hours-table table {
523
- width: 100%;
524
- border-collapse: collapse;
525
- background: var(--bg-white);
526
- border-radius: var(--radius-lg);
527
- overflow: hidden;
528
- box-shadow: 0 4px 6px var(--shadow-light);
529
- }
530
-
531
- .hours-table th {
532
- background: var(--primary-blue);
533
- color: white;
534
- padding: var(--space-md);
535
- text-align: left;
536
- font-weight: 600;
537
- }
538
-
539
- .hours-table td {
540
- padding: var(--space-md);
541
- border-bottom: 1px solid var(--border-light);
542
- }
543
-
544
- .hours-table tr:last-child td {
545
- border-bottom: none;
546
- }
547
-
548
- .hours-table tr:nth-child(even) {
549
- background: var(--water-light);
550
- }
551
-
552
- /* Info Cards for special pages */
553
- .info-cards {
554
- display: grid;
555
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
556
- gap: var(--space-lg);
557
- margin: var(--space-lg) 0;
558
- }
559
-
560
- .info-box {
561
- background: var(--water-light);
562
- border-left: 4px solid var(--primary-blue);
563
- padding: var(--space-md);
564
- margin: var(--space-md) 0;
565
- border-radius: var(--radius-sm);
566
- }
567
-
568
- /* Price Cards */
569
- .price-cards {
570
- display: grid;
571
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
572
- gap: var(--space-lg);
573
- margin: var(--space-lg) 0;
574
- }
575
-
576
- .price-card {
577
- background: var(--bg-white);
578
- border: 1px solid var(--border-light);
579
- border-radius: var(--radius-lg);
580
- padding: var(--space-xl);
581
- text-align: center;
582
- box-shadow: 0 4px 6px var(--shadow-light);
583
- transition: all 0.3s ease;
584
- position: relative;
585
- overflow: hidden;
586
- }
587
-
588
- .price-card::before {
589
- content: '';
590
- position: absolute;
591
- top: 0;
592
- left: 0;
593
- right: 0;
594
- height: 4px;
595
- background: linear-gradient(90deg, var(--primary-blue), var(--accent-cyan));
596
- }
597
-
598
- .price-card:hover {
599
- transform: translateY(-8px);
600
- box-shadow: 0 12px 24px var(--shadow-medium);
601
- }
602
-
603
- .price-icon {
604
- font-size: 2.5rem;
605
- color: var(--primary-blue);
606
- margin-bottom: var(--space-md);
607
- }
608
-
609
- .price-card h3 {
610
- color: var(--text-dark);
611
- font-size: var(--font-lg);
612
- margin-bottom: var(--space-sm);
613
- font-weight: 600;
614
- }
615
-
616
- .price {
617
- font-size: var(--font-3xl);
618
- font-weight: 800;
619
- color: var(--primary-blue);
620
- margin: var(--space-md) 0;
621
- }
622
-
623
- /* Season Cards */
624
- .season-cards {
625
- display: grid;
626
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
627
- gap: var(--space-lg);
628
- margin: var(--space-lg) 0;
629
- }
630
-
631
- .season-card {
632
- background: var(--bg-white);
633
- border: 1px solid var(--border-light);
634
- border-radius: var(--radius-lg);
635
- padding: var(--space-xl);
636
- box-shadow: 0 4px 6px var(--shadow-light);
637
- transition: all 0.3s ease;
638
- position: relative;
639
- overflow: hidden;
640
- }
641
-
642
- .season-card::before {
643
- content: '';
644
- position: absolute;
645
- top: 0;
646
- left: 0;
647
- right: 0;
648
- height: 4px;
649
- background: linear-gradient(90deg, var(--water-dark), var(--accent-cyan));
650
- }
651
-
652
- .season-card:hover {
653
- transform: translateY(-8px);
654
- box-shadow: 0 12px 24px var(--shadow-medium);
655
- }
656
-
657
- .season-card h3 {
658
- color: var(--water-dark);
659
- font-size: var(--font-xl);
660
- margin-bottom: var(--space-md);
661
- font-weight: 600;
662
- }
663
-
664
- .season-card .price {
665
- font-size: var(--font-3xl);
666
- font-weight: 800;
667
- color: var(--water-dark);
668
- margin: var(--space-md) 0;
669
- }
670
-
671
- .season-card ul {
672
- list-style: none;
673
- padding: 0;
674
- margin: var(--space-md) 0;
675
- }
676
-
677
- .season-card ul li {
678
- padding: var(--space-xs) 0;
679
- position: relative;
680
- padding-left: 25px;
681
- color: var(--text-light);
682
- }
683
-
684
- .season-card ul li:before {
685
- content: '✓';
686
- position: absolute;
687
- left: 0;
688
- color: var(--primary-blue);
689
- font-weight: bold;
690
- }
691
-
692
- /* Group Prices */
693
- .group-prices {
694
- margin: var(--space-lg) 0;
695
- }
696
-
697
- .group-price-item {
698
- background: var(--water-light);
699
- border-radius: var(--radius-md);
700
- padding: var(--space-md);
701
- margin: var(--space-md) 0;
702
- display: flex;
703
- align-items: center;
704
- gap: var(--space-md);
705
- }
706
-
707
- .group-price-item h3 {
708
- margin: 0;
709
- color: var(--primary-blue);
710
- font-size: var(--font-lg);
711
- }
712
-
713
- .group-price-item p {
714
- margin: 0;
715
- font-weight: 500;
716
- color: var(--text-dark);
717
- }
718
-
719
- /* Payment Methods */
720
- .payment-methods {
721
- display: grid;
722
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
723
- gap: var(--space-md);
724
- margin: var(--space-lg) 0;
725
- }
726
-
727
- .payment-method {
728
- background: var(--bg-white);
729
- border: 1px solid var(--border-light);
730
- border-radius: var(--radius-md);
731
- padding: var(--space-lg);
732
- text-align: center;
733
- transition: all 0.3s ease;
734
- }
735
-
736
- .payment-method:hover {
737
- transform: translateY(-4px);
738
- box-shadow: 0 8px 16px var(--shadow-medium);
739
- }
740
-
741
- .payment-method i {
742
- font-size: 2rem;
743
- color: var(--primary-blue);
744
- margin-bottom: var(--space-sm);
745
- }
746
-
747
- /* Service Cards */
748
- .service-cards {
749
- display: grid;
750
- grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
751
- gap: var(--space-xl);
752
- margin: var(--space-lg) 0;
753
- }
754
-
755
- .service-card {
756
- background: var(--bg-white);
757
- border: 1px solid var(--border-light);
758
- border-radius: var(--radius-lg);
759
- overflow: hidden;
760
- box-shadow: 0 4px 6px var(--shadow-light);
761
- transition: all 0.3s ease;
762
- }
763
-
764
- .service-card:hover {
765
- transform: translateY(-8px);
766
- box-shadow: 0 12px 24px var(--shadow-medium);
767
- }
768
-
769
- .service-image img {
770
- width: 100%;
771
- height: 200px;
772
- object-fit: cover;
773
- }
774
-
775
- .service-content {
776
- padding: var(--space-lg);
777
- }
778
-
779
- .service-content h3 {
780
- color: var(--water-dark);
781
- font-size: var(--font-xl);
782
- margin-bottom: var(--space-md);
783
- font-weight: 600;
784
- }
785
-
786
- .service-content ul {
787
- list-style: none;
788
- padding: 0;
789
- margin: var(--space-md) 0;
790
- }
791
-
792
- .service-content ul li {
793
- padding: var(--space-xs) 0;
794
- border-bottom: 1px solid var(--border-light);
795
- position: relative;
796
- padding-left: 25px;
797
- color: var(--text-light);
798
- }
799
-
800
- .service-content ul li:before {
801
- content: '✓';
802
- position: absolute;
803
- left: 0;
804
- color: var(--primary-blue);
805
- font-weight: bold;
806
- }
807
-
808
- .service-content ul li:last-child {
809
- border-bottom: none;
810
- }
811
-
812
- /* Additional Services */
813
- .additional-services {
814
- display: grid;
815
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
816
- gap: var(--space-lg);
817
- margin: var(--space-lg) 0;
818
- }
819
-
820
- .additional-service {
821
- background: var(--bg-white);
822
- border: 1px solid var(--border-light);
823
- border-radius: var(--radius-lg);
824
- padding: var(--space-xl);
825
- text-align: center;
826
- box-shadow: 0 4px 6px var(--shadow-light);
827
- transition: all 0.3s ease;
828
- }
829
-
830
- .additional-service:hover {
831
- transform: translateY(-8px);
832
- box-shadow: 0 12px 24px var(--shadow-medium);
833
- }
834
-
835
- .service-icon {
836
- font-size: 2.5rem;
837
- color: var(--accent-cyan);
838
- margin-bottom: var(--space-md);
839
- }
840
-
841
- .additional-service h3 {
842
- color: var(--text-dark);
843
- font-size: var(--font-lg);
844
- margin-bottom: var(--space-sm);
845
- font-weight: 600;
846
- }
847
-
848
- /* Special Programs */
849
- .special-programs {
850
- display: grid;
851
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
852
- gap: var(--space-lg);
853
- margin: var(--space-lg) 0;
854
- }
855
-
856
- .program-card {
857
- background: var(--bg-white);
858
- border: 1px solid var(--border-light);
859
- border-radius: var(--radius-lg);
860
- padding: var(--space-xl);
861
- box-shadow: 0 4px 6px var(--shadow-light);
862
- transition: all 0.3s ease;
863
- }
864
-
865
- .program-card:hover {
866
- transform: translateY(-8px);
867
- box-shadow: 0 12px 24px var(--shadow-medium);
868
- }
869
-
870
- .program-card h3 {
871
- color: var(--text-dark);
872
- font-size: var(--font-lg);
873
- margin-bottom: var(--space-sm);
874
- font-weight: 600;
875
- }
876
-
877
- .program-time {
878
- background: var(--primary-blue);
879
- color: white;
880
- padding: var(--space-xs) var(--space-sm);
881
- border-radius: var(--radius-sm);
882
- display: inline-block;
883
- font-weight: 600;
884
- margin-top: var(--space-sm);
885
- }
886
-
887
- /* Facilities List */
888
- .facilities-list {
889
- margin: var(--space-lg) 0;
890
- }
891
-
892
- .facility-item {
893
- display: flex;
894
- align-items: center;
895
- gap: var(--space-md);
896
- padding: var(--space-md);
897
- margin: var(--space-sm) 0;
898
- background: var(--water-light);
899
- border-radius: var(--radius-md);
900
- transition: all 0.3s ease;
901
- }
902
-
903
- .facility-item:hover {
904
- transform: translateX(8px);
905
- background: var(--water-medium);
906
- }
907
-
908
- .facility-item i {
909
- font-size: 1.5rem;
910
- color: var(--primary-blue);
911
- width: 30px;
912
- }
913
-
914
- /* Contact Information */
915
- .contact-info {
916
- margin: var(--space-lg) 0;
917
- }
918
-
919
- .contact-item {
920
- display: flex;
921
- align-items: flex-start;
922
- gap: var(--space-md);
923
- margin: var(--space-lg) 0;
924
- padding: var(--space-lg);
925
- background: var(--water-light);
926
- border-radius: var(--radius-md);
927
- }
928
-
929
- .contact-icon {
930
- background: var(--primary-blue);
931
- color: white;
932
- width: 50px;
933
- height: 50px;
934
- border-radius: 50%;
935
- display: flex;
936
- align-items: center;
937
- justify-content: center;
938
- font-size: 1.2rem;
939
- flex-shrink: 0;
940
- }
941
-
942
- .contact-details h3 {
943
- margin: 0 0 var(--space-xs) 0;
944
- color: var(--primary-blue);
945
- font-size: var(--font-lg);
946
- font-weight: 600;
947
- }
948
-
949
- .contact-details p {
950
- margin: 0;
951
- color: var(--text-dark);
952
- line-height: 1.6;
953
- }
954
-
955
- /* Contact Form */
956
- .contact-form {
957
- background: var(--bg-white);
958
- border: 1px solid var(--border-light);
959
- border-radius: var(--radius-lg);
960
- padding: var(--space-xl);
961
- box-shadow: 0 4px 6px var(--shadow-light);
962
- }
963
-
964
- .contact-form label {
965
- font-weight: 600;
966
- color: var(--text-dark);
967
- margin-bottom: var(--space-xs);
968
- }
969
-
970
- .contact-form input,
971
- .contact-form select,
972
- .contact-form textarea {
973
- border: 1px solid var(--border-light);
974
- border-radius: var(--radius-sm);
975
- padding: var(--space-sm);
976
- font-size: var(--font-sm);
977
- transition: all 0.2s ease;
978
- }
979
-
980
- .contact-form input:focus,
981
- .contact-form select:focus,
982
- .contact-form textarea:focus {
983
- border-color: var(--primary-blue);
984
- outline: none;
985
- box-shadow: 0 0 0 2px var(--water-light);
986
- }
987
-
988
- .button.primary {
989
- background: var(--primary-blue);
990
- color: white;
991
- border: none;
992
- padding: var(--space-md) var(--space-xl);
993
- border-radius: var(--radius-md);
994
- font-weight: 600;
995
- transition: all 0.2s ease;
996
- }
997
-
998
- .button.primary:hover {
999
- background: var(--deep-blue);
1000
- transform: translateY(-2px);
1001
- box-shadow: 0 4px 8px var(--shadow-medium);
1002
- }
1003
-
1004
- /* Map Container */
1005
- .map-container {
1006
- margin: var(--space-lg) 0;
1007
- border-radius: var(--radius-lg);
1008
- overflow: hidden;
1009
- box-shadow: 0 4px 6px var(--shadow-light);
1010
- }
1011
-
1012
- .map-image {
1013
- width: 100%;
1014
- height: 400px;
1015
- object-fit: cover;
1016
- }
1017
-
1018
- /* Transportation Options */
1019
- .transportation-options {
1020
- display: grid;
1021
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1022
- gap: var(--space-lg);
1023
- margin: var(--space-lg) 0;
1024
- }
1025
-
1026
- .transport-option {
1027
- background: var(--bg-white);
1028
- border: 1px solid var(--border-light);
1029
- border-radius: var(--
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html DELETED
@@ -1,517 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="fi">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Yhteystiedot - Leppävaaran Uimahalli</title>
7
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
8
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
- <link rel="stylesheet" href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/styles/style.css">
10
- </head>
11
- <body>
12
- <header class="site-header">
13
- <div class="top-bar">
14
- <div class="top-bar-left">
15
- <ul class="menu">
16
- <li class="menu-text"><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</li>
17
- </ul>
18
- </div>
19
- <div class="top-bar-right">
20
- <ul class="menu">
21
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/index.html">Etusivu</a></li>
22
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
23
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnat</a></li>
24
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
25
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
26
- </ul>
27
- </div>
28
- </div>
29
- </header>
30
- <main>
31
- <!-- Page Header -->
32
- <section class="page-hero-section">
33
- <div class="grid-container">
34
- <div class="grid-x grid-padding-x align-center">
35
- <div class="cell medium-10 large-8 text-center">
36
- <h1><i class="fas fa-map-marker-alt"></i> Yhteystiedot</h1>
37
- <p class="lead">Ota yhteyttä ja tule käymään uimahallillamme</p>
38
- </div>
39
- </div>
40
- </div>
41
- </section>
42
-
43
- <!-- Contact Information -->
44
- <section class="content-section">
45
- <div class="grid-container">
46
- <div class="grid-x grid-padding-x">
47
- <div class="cell large-6">
48
- <h2>Yhteystiedot</h2>
49
- <div class="contact-info">
50
- <div class="contact-item">
51
- <div class="contact-icon">
52
- <i class="fas fa-map-marker-alt"></i>
53
- </div>
54
- <div class="contact-details">
55
- <h3>Osoite</h3>
56
- <p>Veräjävuorenkatu 5<br>02670 Espoo</p>
57
- </div>
58
- </div>
59
- <div class="contact-item">
60
- <div class="contact-icon">
61
- <i class="fas fa-phone"></i>
62
- </div>
63
- <div class="contact-details">
64
- <h3>Puhelin</h3>
65
- <p>09-123 4567<br>(arkisin 9:00-17:00)</p>
66
- </div>
67
- </div>
68
- <div class="contact-item">
69
- <div class="contact-icon">
70
- <i class="fas fa-envelope"></i>
71
- </div>
72
- <div class="contact-details">
73
- <h3>Sähköposti</h3>
74
- <p>info@leppavaaranuimahalli.fi</p>
75
- </div>
76
- </div>
77
- <div class="contact-item">
78
- <div class="contact-icon">
79
- <i class="fas fa-clock"></i>
80
- </div>
81
- <div class="contact-details">
82
- <h3>Aukioloajat</h3>
83
- <p>Ma-Pe: 6:00-22:00<br>La-Su: 8:00-20:00</p>
84
- </div>
85
- </div>
86
- </div>
87
- </div>
88
- <div class="cell large-6">
89
- <h2>Yhteydenottolomake</h2>
90
- <form class="contact-form">
91
- <div class="grid-x grid-padding-x">
92
- <div class="cell medium-6">
93
- <label>Nimi *</label>
94
- <input type="text" placeholder="Etunimi Sukunimi" required>
95
- </div>
96
- <div class="cell medium-6">
97
- <label>Sähköposti *</label>
98
- <input type="email" placeholder="sahkoposti@esimerkki.fi" required>
99
- </div>
100
- </div>
101
- <div class="grid-x grid-padding-x">
102
- <div class="cell medium-6">
103
- <label>Puhelin</label>
104
- <input type="tel" placeholder="050-1234567">
105
- </div>
106
- <div class="cell medium-6">
107
- <label>Aihe *</label>
108
- <select required>
109
- <option value="">Valitse aihe</option>
110
- <option value="general">Yleinen kysymys</option>
111
- <option value="prices">Hinnat</option>
112
- <option value="services">Palvelut</option>
113
- <option value="groups">Ryhmävaraukset</option>
114
- <option value="feedback">Palaute</option>
115
- </select>
116
- </div>
117
- </div>
118
- <div class="grid-x grid-padding-x">
119
- <div class="cell">
120
- <label>Viesti *</label>
121
- <textarea placeholder="Kirjoita viestisi tähän..." rows="5" required></textarea>
122
- </div>
123
- </div>
124
- <div class="grid-x grid-padding-x">
125
- <div class="cell">
126
- <button type="submit" class="button primary">
127
- <i class="fas fa-paper-plane"></i> Lähetä viesti
128
- </button>
129
- </div>
130
- </div>
131
- </form>
132
- </div>
133
- </div>
134
- </div>
135
- </section>
136
-
137
- <!-- Map Section -->
138
- <section class="content-section alternate-bg">
139
- <div class="grid-container">
140
- <div class="grid-x grid-padding-x">
141
- <div class="cell large-12">
142
- <h2 class="text-center">Sijainti</h2>
143
- <div class="map-container">
144
- <img src="https://picsum.photos/seed/maplocation/1200/400.jpg" alt="Kartta Leppävaaran uimahallin sijainti" class="map-image">
145
- </div>
146
- </div>
147
- </div>
148
- </div>
149
- </section>
150
-
151
- <!-- Transportation -->
152
- <section class="content-section">
153
- <div class="grid-container">
154
- <div class="grid-x grid-padding-x">
155
- <div class="cell large-8 large-offset-2">
156
- <h2 class="text-center">Saapuminen paikalle</h2>
157
- <div class="transportation-options">
158
- <div class="transport-option">
159
- <div class="transport-icon">
160
- <i class="fas fa-bus"></i>
161
- </div>
162
- <h3>Joukkoliikenne</h3>
163
- <p>Bussit 531, 543, 550 ja 552. Lähin pysäkki: Leppävaaran asema (n. 200m).</p>
164
- </div>
165
- <div class="transport-option">
166
- <div class="transport-icon">
167
- <i class="fas fa-train"></i>
168
- </div>
169
- <h3>Junalla</h3>
170
- <p>Leppävaaran juna-asemalle (L, E, A-linjat). Kävelymatka n. 300 metriä.</p>
171
- </div>
172
- <div class="transport-option">
173
- <div class="transport-icon">
174
- <i class="fas fa-car"></i>
175
- </div>
176
- <h3>Autolla</h3>
177
- <p>Ilmainen asiakaspaikoitus 100 paikkaa. Pääsy Veräjävuorenkadulta.</p>
178
- </div>
179
- <div class="transport-option">
180
- <div class="transport-icon">
181
- <i class="fas fa-bicycle"></i>
182
- </div>
183
- <h3>Pyörällä</h3>
184
- <p>Pyörätelineet sisäänkäynnin läheisyydessä. Suositeltu pyöräreitti Leppävaaran kautta.</p>
185
- </div>
186
- </div>
187
- </div>
188
- </div>
189
- </div>
190
- </section>
191
-
192
- <!-- Staff -->
193
- <section class="content-section alternate-bg">
194
- <div class="grid-container">
195
- <div class="grid-x grid-padding-x">
196
- <div class="cell large-10 large-offset-1">
197
- <h2 class="text-center">Henkilökunta</h2>
198
- <div class="staff-grid">
199
- <div class="staff-member">
200
- <div class="staff-photo">
201
- <img src="https://picsum.photos/seed/manager1/200/200.jpg" alt="Hallinnoija">
202
- </div>
203
- <h3>Matti Meikäläinen</h3>
204
- <p class="staff-title">Hallinnoija</p>
205
- <p class="staff-contact">matti.meikalainen@leppavaaranuimahalli.fi</p>
206
- </div>
207
- <div class="staff-member">
208
- <div class="staff-photo">
209
- <img src="https://picsum.photos/seed/coach1/200/200.jpg" alt="Uimaopettaja">
210
- </div>
211
- <h3>Liisa Virtanen</h3>
212
- <p class="staff-title">Uimaopettaja</p>
213
- <p class="staff-contact">liisa.virtanen@leppavaaranuimahalli.fi</p>
214
- </div>
215
- <div class="staff-member">
216
- <div class="staff-photo">
217
- <img src="https://picsum.photos/seed/trainer1/200/200.jpg" alt="Kuntovalmentaja">
218
- </div>
219
- <h3>Pekka Järvinen</h3>
220
- <p class="staff-title">Kuntovalmentaja</p>
221
- <p class="staff-contact">pekka.jarvinen@leppavaaranuimahalli.fi</p>
222
- </div>
223
- </div>
224
- </div>
225
- </div>
226
- </div>
227
- </section>
228
- </main>
229
-
230
- <footer class="site-footer">
231
- <div class="grid-container">
232
- <div class="grid-x grid-padding-x">
233
- <div class="cell medium-4">
234
- <h4><i class="fas fa-swimmer"></i> Leppävaaran Uimahalli</h4>
235
- <p>Moderni uimahalli Espoon sydämessä. Tarjoamme laadukkaat uimavalmennukset ja kuntoutuspalvelut kaikenikäisille.</p>
236
- </div>
237
- <div class="cell medium-4">
238
- <h4><i class="fas fa-link"></i> Pikalinkit</h4>
239
- <ul>
240
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/aukioloajat.html">Aukioloajat</a></li>
241
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/hinnat.html">Hinnasto</a></li>
242
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/palvelut.html">Palvelut</a></li>
243
- <li><a href="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/yhteystiedot.html">Yhteystiedot</a></li>
244
- </ul>
245
- </div>
246
- <div class="cell medium-4">
247
- <h4><i class="fas fa-phone"></i> Yhteystiedot</h4>
248
- <p>
249
- <i class="fas fa-map-marker-alt"></i> Veräjävuorenkatu 5<br>
250
- <i class="fas fa-map-marker-alt"></i> 02670 Espoo<br>
251
- <i class="fas fa-phone"></i> Puhelin: 09-123 4567<br>
252
- <i class="fas fa-envelope"></i> Sähköposti: info@leppavaaranuimahalli.fi
253
- </p>
254
- </div>
255
- </div>
256
- <div class="grid-x grid-padding-x">
257
- <div class="cell text-center">
258
- <p class="copyright">&copy; 2024 Leppävaaran Uimahalli. Kaikki oikeudet pidätetään.</p>
259
- </div>
260
- </div>
261
- </div>
262
- </footer>
263
- <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
264
- <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
265
- <script src="/sites/039b8554-0a87-42f7-a969-570c3fa99cb5/scripts/main.js"></script>
266
- <!-- OSW Studio Analytics -->
267
- <script>
268
- (function() {
269
- 'use strict';
270
-
271
- // Configuration
272
- var config = {
273
- siteId: '039b8554-0a87-42f7-a969-570c3fa99cb5',
274
- apiEndpoint: '/api/analytics/track',
275
- interactionEndpoint: '/api/analytics/interaction',
276
- features: {"basicTracking":true,"heatmaps":false,"sessionRecording":false,"performanceMetrics":false,"engagementTracking":false,"customEvents":false}
277
- };
278
-
279
- // State
280
- var pageLoadTime = Date.now();
281
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
282
- var eventQueue = [];
283
- var lastFlush = Date.now();
284
-
285
- // Generate anonymous session ID from browser fingerprint (no cookies)
286
- function generateSessionId() {
287
- var canvas = document.createElement('canvas');
288
- var ctx = canvas.getContext('2d');
289
- ctx.textBaseline = 'top';
290
- ctx.font = '14px Arial';
291
- ctx.fillText('osw', 0, 0);
292
- var canvasData = canvas.toDataURL();
293
-
294
- var fingerprint = [
295
- navigator.userAgent,
296
- navigator.language,
297
- screen.colorDepth,
298
- screen.width + 'x' + screen.height,
299
- new Date().getTimezoneOffset(),
300
- canvasData.slice(0, 100)
301
- ].join('|');
302
-
303
- var hash = 0;
304
- for (var i = 0; i < fingerprint.length; i++) {
305
- var char = fingerprint.charCodeAt(i);
306
- hash = ((hash << 5) - hash) + char;
307
- hash = hash & hash;
308
- }
309
- return Math.abs(hash).toString(36);
310
- }
311
-
312
- // Detect device type
313
- function getDeviceType() {
314
- var width = window.innerWidth;
315
- if (width < 768) return 'mobile';
316
- if (width < 1024) return 'tablet';
317
- return 'desktop';
318
- }
319
-
320
- // Send analytics data
321
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
322
- function sendData(endpoint, data) {
323
- if (navigator.sendBeacon) {
324
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
325
- navigator.sendBeacon(endpoint, blob);
326
- } else {
327
- fetch(endpoint, {
328
- method: 'POST',
329
- headers: { 'Content-Type': 'application/json' },
330
- body: JSON.stringify(data),
331
- keepalive: true
332
- }).catch(function() {});
333
- }
334
- }
335
-
336
- // Track pageview
337
- function trackPageview() {
338
- if (!config.features.basicTracking) return;
339
-
340
- var data = {
341
- siteId: config.siteId,
342
- pagePath: window.location.pathname,
343
- referrer: document.referrer || '',
344
- userAgent: navigator.userAgent,
345
- deviceType: getDeviceType()
346
- };
347
-
348
- sendData(config.apiEndpoint, data);
349
- pageLoadTime = Date.now();
350
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
351
- }
352
-
353
- // Track click (for heatmaps)
354
- function trackClick(event) {
355
- if (!config.features.heatmaps) return;
356
-
357
- var target = event.target;
358
- var selector = target.tagName;
359
- if (target.id) selector += '#' + target.id;
360
- if (target.className) selector += '.' + target.className.split(' ').join('.');
361
-
362
- eventQueue.push({
363
- type: 'click',
364
- data: {
365
- siteId: config.siteId,
366
- pagePath: window.location.pathname,
367
- interactionType: 'click',
368
- elementSelector: selector,
369
- coordinates: {
370
- x: event.clientX,
371
- y: event.clientY,
372
- scrollY: window.scrollY || window.pageYOffset || 0,
373
- viewportWidth: window.innerWidth,
374
- viewportHeight: window.innerHeight,
375
- documentHeight: Math.max(
376
- document.body.scrollHeight,
377
- document.body.offsetHeight,
378
- document.documentElement.clientHeight,
379
- document.documentElement.scrollHeight,
380
- document.documentElement.offsetHeight
381
- )
382
- },
383
- timeOnPage: Date.now() - pageLoadTime
384
- }
385
- });
386
-
387
- flushEvents();
388
- }
389
-
390
- // Track scroll depth
391
- function trackScroll() {
392
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
393
-
394
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
395
- var scrolled = window.scrollY;
396
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
397
-
398
- // Track milestones
399
- [25, 50, 75, 100].forEach(function(milestone) {
400
- if (percent >= milestone && !scrollMilestones[milestone]) {
401
- scrollMilestones[milestone] = true;
402
-
403
- eventQueue.push({
404
- type: 'scroll',
405
- data: {
406
- siteId: config.siteId,
407
- pagePath: window.location.pathname,
408
- interactionType: 'scroll',
409
- scrollDepth: milestone,
410
- timeOnPage: Date.now() - pageLoadTime
411
- }
412
- });
413
- }
414
- });
415
-
416
- flushEvents();
417
- }
418
-
419
- // Track page exit (send time on page)
420
- function trackExit() {
421
- if (!config.features.engagementTracking) return;
422
-
423
- var timeOnPage = Date.now() - pageLoadTime;
424
- if (timeOnPage < 1000) return; // Ignore very short visits
425
-
426
- sendData(config.interactionEndpoint, {
427
- siteId: config.siteId,
428
- pagePath: window.location.pathname,
429
- interactionType: 'exit',
430
- timeOnPage: timeOnPage
431
- });
432
- }
433
-
434
- // Flush event queue (batching)
435
- function flushEvents(force) {
436
- var now = Date.now();
437
- if (eventQueue.length === 0) return;
438
-
439
- // Increased thresholds: 30s or 50 events (more efficient batching)
440
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
441
-
442
- var batch = eventQueue.splice(0, eventQueue.length);
443
-
444
- // Send as single batched request instead of individual requests
445
- var batchData = {
446
- batch: true,
447
- interactions: batch.map(function(event) { return event.data; })
448
- };
449
-
450
- sendData(config.interactionEndpoint, batchData);
451
- lastFlush = now;
452
- }
453
-
454
- // Initialize tracking
455
- function init() {
456
- // Track initial pageview
457
- if (document.readyState === 'complete') {
458
- trackPageview();
459
- } else {
460
- window.addEventListener('load', trackPageview);
461
- }
462
-
463
- // Track SPA navigation
464
- var pushState = history.pushState;
465
- history.pushState = function() {
466
- pushState.apply(history, arguments);
467
- trackPageview();
468
- };
469
- window.addEventListener('popstate', trackPageview);
470
-
471
- // Track clicks for heatmaps
472
- if (config.features.heatmaps) {
473
- document.addEventListener('click', trackClick, true);
474
- }
475
-
476
- // Track scroll
477
- if (config.features.engagementTracking || config.features.heatmaps) {
478
- var scrollTimer;
479
- window.addEventListener('scroll', function() {
480
- clearTimeout(scrollTimer);
481
- scrollTimer = setTimeout(trackScroll, 100);
482
- });
483
- }
484
-
485
- // Track page exit
486
- if (config.features.engagementTracking) {
487
- window.addEventListener('beforeunload', function() {
488
- flushEvents(true); // Force flush pending events
489
- trackExit();
490
- });
491
- document.addEventListener('visibilitychange', function() {
492
- if (document.visibilityState === 'hidden') {
493
- flushEvents(true); // Force flush pending events
494
- trackExit();
495
- }
496
- });
497
- } else {
498
- // Even without engagement tracking, flush pending events on exit
499
- window.addEventListener('beforeunload', function() {
500
- flushEvents(true);
501
- });
502
- document.addEventListener('visibilitychange', function() {
503
- if (document.visibilityState === 'hidden') {
504
- flushEvents(true);
505
- }
506
- });
507
- }
508
-
509
- // Flush events periodically (increased to 30s for efficiency)
510
- setInterval(function() { flushEvents(false); }, 30000);
511
- }
512
-
513
- init();
514
- })();
515
- </script>
516
- </body>
517
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/about.html DELETED
@@ -1,946 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>About - 2019 WPA World Ten-ball Championship</title>
7
- <meta name="description" content="Learn about the 2019 WPA World Ten-ball Championship, its history, organizers, and the sport of ten-ball.">
8
- <script src="https://cdn.tailwindcss.com"></script>
9
- <link rel="stylesheet" href="/styles/style.css">
10
- <title>Testing 123</title>
11
- <meta property="og:title" content="Testing 123">
12
- <meta name="twitter:title" content="Testing 123">
13
- <meta name="description" content="This site is the best">
14
- <meta property="og:description" content="This site is the best">
15
- <meta name="twitter:description" content="This site is the best">
16
- <meta property="og:url" content="https://testing.com">
17
- <meta property="og:type" content="website">
18
- <meta name="twitter:card" content="summary_large_image">
19
- <link rel="canonical" href="https://testing.com/">
20
- <script>
21
- console.log("test");
22
- </script>
23
- </head>
24
- <body>
25
- <nav class="bg-slate-900 shadow-lg fixed w-full top-0 z-50" id="navbar">
26
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
27
- <div class="flex justify-between items-center h-20">
28
- <!-- Logo/Brand -->
29
- <div class="flex-shrink-0">
30
- <a href="/index.html" class="flex items-center space-x-3">
31
- <div class="w-12 h-12 bg-gradient-to-br from-emerald-500 to-blue-600 rounded-full flex items-center justify-center">
32
- <span class="text-2xl">🎱</span>
33
- </div>
34
- <div class="hidden md:block">
35
- <h1 class="text-white font-bold text-xl">WPA World Ten-ball</h1>
36
- <p class="text-emerald-400 text-xs">Championship 2019</p>
37
- </div>
38
- </a>
39
- </div>
40
-
41
- <!-- Desktop Navigation -->
42
- <div class="hidden md:flex space-x-1">
43
- <a href="/index.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
44
- Home
45
- </a>
46
- <a href="/about.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
47
- About
48
- </a>
49
- <a href="/schedule.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
50
- Schedule
51
- </a>
52
- <a href="/players.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
53
- Players
54
- </a>
55
- <a href="results.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
56
- Results
57
- </a>
58
- <a href="gallery.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
59
- Gallery
60
- </a>
61
- <a href="contact.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
62
- Contact
63
- </a>
64
- </div>
65
-
66
- <!-- Mobile menu button -->
67
- <div class="md:hidden">
68
- <button id="mobile-menu-button" class="text-gray-300 hover:text-white focus:outline-none focus:ring-2 focus:ring-emerald-500 rounded-lg p-2">
69
- <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
70
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
71
- </svg>
72
- </button>
73
- </div>
74
- </div>
75
- </div>
76
-
77
- <!-- Mobile Navigation -->
78
- <div id="mobile-menu" class="hidden md:hidden bg-slate-800">
79
- <div class="px-2 pt-2 pb-3 space-y-1">
80
- <a href="/index.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
81
- Home
82
- </a>
83
- <a href="/about.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
84
- About
85
- </a>
86
- <a href="/schedule.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
87
- Schedule
88
- </a>
89
- <a href="/players.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
90
- Players
91
- </a>
92
- <a href="results.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
93
- Results
94
- </a>
95
- <a href="gallery.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
96
- Gallery
97
- </a>
98
- <a href="contact.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
99
- Contact
100
- </a>
101
- </div>
102
- </div>
103
- </nav>
104
-
105
- <!-- Spacer for fixed navbar -->
106
- <div class="h-20"></div>
107
- <!-- Hero Section -->
108
- <div class="hero-section relative bg-gradient-to-br from-slate-900 via-blue-900 to-slate-900 overflow-hidden">
109
- <div class="absolute inset-0">
110
- <img src="https://picsum.photos/seed/about-hero/1920/1080" alt="About Championship" class="w-full h-full object-cover opacity-20">
111
- <div class="absolute inset-0 bg-gradient-to-r from-slate-900/90 to-blue-900/90"></div>
112
- </div>
113
-
114
- <div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-24 md:py-32">
115
- <div class="text-center">
116
- <h1 class="text-4xl md:text-6xl font-bold text-white mb-6 leading-tight">
117
- About the <span class="text-emerald-400">Championship</span>
118
- </h1>
119
- <p class="text-xl text-gray-300 max-w-3xl mx-auto">
120
- Discover the history and prestige of the WPA World Ten-ball Championship
121
- </p>
122
- </div>
123
- </div>
124
-
125
- <div class="absolute bottom-0 left-0 right-0">
126
- <svg viewBox="0 0 1440 120" fill="none" xmlns="http://www.w3.org/2000/svg">
127
- <path d="M0 120L60 105C120 90 240 60 360 45C480 30 600 30 720 37.5C840 45 960 60 1080 67.5C1200 75 1320 75 1380 75L1440 75V120H1380C1320 120 1200 120 1080 120C960 120 840 120 720 120C600 120 480 120 360 120C240 120 120 120 60 120H0Z" fill="currentColor" class="text-slate-50"/>
128
- </svg>
129
- </div>
130
- </div>
131
-
132
- <!-- Tournament History -->
133
- <section class="section bg-slate-50">
134
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
135
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
136
- <div class="animate-on-scroll">
137
- <h2 class="text-4xl font-bold text-slate-900 mb-6">
138
- Tournament <span class="gradient-text">History</span>
139
- </h2>
140
- <p class="text-lg text-gray-600 mb-6">
141
- The 2019 WPA World Ten-ball Championship represented the fifth edition of this prestigious tournament, continuing a legacy of excellence in professional pool competition.
142
- </p>
143
- <p class="text-lg text-gray-600 mb-6">
144
- After the previous championship in 2015, plans for events in both 2016 and 2018 to be held in Manila fell through. However, this setback led to an exciting new chapter when it was agreed to hold the 2019 event at the Rio All-Suite Hotel & Casino in Las Vegas.
145
- </p>
146
- <p class="text-lg text-gray-600">
147
- This move to Las Vegas marked the beginning of a three-year deal for the event to be played in the United States, bringing world-class ten-ball competition to the entertainment capital of the world.
148
- </p>
149
- </div>
150
- <div class="animate-on-scroll">
151
- <img src="https://picsum.photos/seed/history/800/600" alt="Tournament History" class="rounded-xl shadow-2xl">
152
- </div>
153
- </div>
154
- </div>
155
- </section>
156
-
157
- <!-- What is Ten-ball -->
158
- <section class="section bg-white">
159
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
160
- <div class="text-center mb-12">
161
- <h2 class="text-4xl font-bold text-slate-900 mb-6 animate-on-scroll">
162
- What is <span class="gradient-text">Ten-ball?</span>
163
- </h2>
164
- <p class="text-xl text-gray-600 max-w-3xl mx-auto animate-on-scroll">
165
- Understanding the discipline of professional ten-ball pool
166
- </p>
167
- </div>
168
-
169
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
170
- <div class="bg-gradient-to-br from-emerald-50 to-blue-50 p-8 rounded-xl shadow-lg animate-on-scroll">
171
- <div class="text-4xl mb-4">🎱</div>
172
- <h3 class="text-xl font-bold text-slate-900 mb-3">The Game</h3>
173
- <p class="text-gray-600">
174
- Ten-ball is a rotation pool game similar to nine-ball, but using ten object balls instead of nine. The game requires players to call their shots, adding an extra layer of strategy and skill.
175
- </p>
176
- </div>
177
-
178
- <div class="bg-gradient-to-br from-emerald-50 to-blue-50 p-8 rounded-xl shadow-lg animate-on-scroll">
179
- <div class="text-4xl mb-4">🎯</div>
180
- <h3 class="text-xl font-bold text-slate-900 mb-3">The Rules</h3>
181
- <p class="text-gray-600">
182
- Players must pocket balls in numerical order from 1 to 10. The player who legally pockets the 10-ball wins the game. All shots must be called, making it a true test of precision.
183
- </p>
184
- </div>
185
-
186
- <div class="bg-gradient-to-br from-emerald-50 to-blue-50 p-8 rounded-xl shadow-lg animate-on-scroll">
187
- <div class="text-4xl mb-4">🏆</div>
188
- <h3 class="text-xl font-bold text-slate-900 mb-3">The Challenge</h3>
189
- <p class="text-gray-600">
190
- Ten-ball is considered more challenging than nine-ball due to the call-shot requirement and additional ball, making it the perfect format for world championship competition.
191
- </p>
192
- </div>
193
- </div>
194
- </div>
195
- </section>
196
-
197
- <!-- Organizers -->
198
- <section class="section bg-gradient-to-br from-slate-900 to-blue-900">
199
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
200
- <div class="text-center mb-12">
201
- <h2 class="text-4xl font-bold text-white mb-6 animate-on-scroll">
202
- Tournament Organizers
203
- </h2>
204
- <p class="text-xl text-gray-300 animate-on-scroll">
205
- Leading organizations in professional pool
206
- </p>
207
- </div>
208
-
209
- <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
210
- <div class="bg-white/10 backdrop-blur-lg p-8 rounded-xl animate-on-scroll">
211
- <h3 class="text-2xl font-bold text-white mb-4">
212
- World Pool-Billiard Association (WPA)
213
- </h3>
214
- <p class="text-gray-300 mb-4">
215
- The WPA is the international governing body for pool (pocket billiards). Founded to promote the sport worldwide, the WPA sanctions major international tournaments and establishes standardized rules for professional competition.
216
- </p>
217
- <p class="text-gray-300">
218
- The organization works to elevate pool to Olympic sport status and maintains the highest standards of professional play across the globe.
219
- </p>
220
- </div>
221
-
222
- <div class="bg-white/10 backdrop-blur-lg p-8 rounded-xl animate-on-scroll">
223
- <h3 class="text-2xl font-bold text-white mb-4">
224
- CueSports International
225
- </h3>
226
- <p class="text-gray-300 mb-4">
227
- CueSports International (CSI) is a premier organization dedicated to promoting professional pool and billiards. They organize and manage world-class tournaments, ensuring the highest level of competition and player experience.
228
- </p>
229
- <p class="text-gray-300">
230
- CSI's partnership with the WPA brings together expertise in tournament management and international governance to create unforgettable championship events.
231
- </p>
232
- </div>
233
- </div>
234
- </div>
235
- </section>
236
-
237
- <!-- Venue Details -->
238
- <section class="section bg-white">
239
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
240
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
241
- <div class="animate-on-scroll">
242
- <img src="https://picsum.photos/seed/rio-detail/800/600" alt="Rio All-Suite Hotel & Casino" class="rounded-xl shadow-2xl">
243
- </div>
244
- <div class="animate-on-scroll">
245
- <h2 class="text-4xl font-bold text-slate-900 mb-6">
246
- Rio All-Suite Hotel & Casino
247
- </h2>
248
- <p class="text-lg text-gray-600 mb-6">
249
- Located just off the Las Vegas Strip, the Rio All-Suite Hotel & Casino is an iconic Las Vegas destination known for hosting world-class events and entertainment.
250
- </p>
251
- <div class="space-y-4">
252
- <div class="flex items-start space-x-4 bg-slate-50 p-4 rounded-lg">
253
- <span class="text-3xl">🏛️</span>
254
- <div>
255
- <h4 class="font-bold text-slate-900 mb-1">World-Class Facilities</h4>
256
- <p class="text-gray-600">State-of-the-art tournament space with professional-grade tables and equipment</p>
257
- </div>
258
- </div>
259
- <div class="flex items-start space-x-4 bg-slate-50 p-4 rounded-lg">
260
- <span class="text-3xl">👥</span>
261
- <div>
262
- <h4 class="font-bold text-slate-900 mb-1">Spectator Experience</h4>
263
- <p class="text-gray-600">Excellent viewing areas and amenities for fans and spectators</p>
264
- </div>
265
- </div>
266
- <div class="flex items-start space-x-4 bg-slate-50 p-4 rounded-lg">
267
- <span class="text-3xl">⭐</span>
268
- <div>
269
- <h4 class="font-bold text-slate-900 mb-1">Las Vegas Experience</h4>
270
- <p class="text-gray-600">Access to world-class dining, entertainment, and accommodations</p>
271
- </div>
272
- </div>
273
- </div>
274
- </div>
275
- </div>
276
- </div>
277
- </section>
278
-
279
- <!-- Concurrent Event -->
280
- <section class="section bg-slate-50">
281
- <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
282
- <div class="animate-on-scroll">
283
- <h2 class="text-4xl font-bold text-slate-900 mb-6">
284
- Concurrent Competition
285
- </h2>
286
- <p class="text-lg text-gray-600 mb-6">
287
- The tournament ran concurrently with the Billiard Congress of America's National Ten-ball event, creating an unprecedented week of elite ten-ball competition in Las Vegas.
288
- </p>
289
- <p class="text-lg text-gray-600">
290
- This collaboration between international and national governing bodies showcased the global appeal of ten-ball and provided players and fans with an unparalleled championship experience.
291
- </p>
292
- </div>
293
- </div>
294
- </section>
295
-
296
- <!-- Sponsor -->
297
- <section class="section bg-gradient-to-r from-emerald-500 to-blue-600">
298
- <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
299
- <div class="animate-on-scroll">
300
- <h2 class="text-4xl font-bold text-white mb-6">
301
- Official Tournament Sponsor
302
- </h2>
303
- <div class="bg-white p-12 rounded-xl shadow-2xl inline-block">
304
- <p class="text-5xl font-bold gradient-text mb-4">Predator Group</p>
305
- <p class="text-xl text-gray-600">Premium Cue Manufacturer</p>
306
- </div>
307
- <p class="text-lg text-white/90 mt-8">
308
- Predator Group, renowned for manufacturing the world's finest pool cues, proudly sponsored the 2019 WPA World Ten-ball Championship, providing players with top-tier equipment for championship-level play.
309
- </p>
310
- </div>
311
- </div>
312
- </section>
313
-
314
- <footer class="bg-slate-900 text-gray-300 pt-16 pb-8 mt-20">
315
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
316
- <div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
317
- <!-- About Section -->
318
- <div class="col-span-1 md:col-span-2">
319
- <div class="flex items-center space-x-3 mb-4">
320
- <div class="w-12 h-12 bg-gradient-to-br from-emerald-500 to-blue-600 rounded-full flex items-center justify-center">
321
- <span class="text-2xl">🎱</span>
322
- </div>
323
- <div>
324
- <h3 class="text-white font-bold text-lg">WPA World Ten-ball Championship</h3>
325
- <p class="text-emerald-400 text-sm">2019 Edition</p>
326
- </div>
327
- </div>
328
- <p class="text-sm mb-4">
329
- The premier professional pool tournament for ten-ball, organized by the World Pool-Billiard Association (WPA) and CueSports International.
330
- </p>
331
- <p class="text-sm text-gray-400">
332
- 📍 Rio All-Suite Hotel & Casino, Las Vegas, NV<br>
333
- 📅 July 22-26, 2019
334
- </p>
335
- </div>
336
-
337
- <!-- Quick Links -->
338
- <div>
339
- <h4 class="text-white font-semibold mb-4">Quick Links</h4>
340
- <ul class="space-y-2 text-sm">
341
- <li>
342
- <a href="/index.html" class="hover:text-emerald-400 transition-colors">Home</a>
343
- </li>
344
- <li>
345
- <a href="/about.html" class="hover:text-emerald-400 transition-colors">About</a>
346
- </li>
347
- <li>
348
- <a href="/schedule.html" class="hover:text-emerald-400 transition-colors">Schedule</a>
349
- </li>
350
- <li>
351
- <a href="/players.html" class="hover:text-emerald-400 transition-colors">Players</a>
352
- </li>
353
- <li>
354
- <a href="results.html" class="hover:text-emerald-400 transition-colors">Results</a>
355
- </li>
356
- <li>
357
- <a href="gallery.html" class="hover:text-emerald-400 transition-colors">Gallery</a>
358
- </li>
359
- <li>
360
- <a href="contact.html" class="hover:text-emerald-400 transition-colors">Contact</a>
361
- </li>
362
- </ul>
363
- </div>
364
-
365
- <!-- Organizations -->
366
- <div>
367
- <h4 class="text-white font-semibold mb-4">Organizers & Sponsors</h4>
368
- <ul class="space-y-2 text-sm">
369
- <li class="flex items-center space-x-2">
370
- <span class="text-emerald-400">▸</span>
371
- <span>World Pool-Billiard Association</span>
372
- </li>
373
- <li class="flex items-center space-x-2">
374
- <span class="text-emerald-400">▸</span>
375
- <span>CueSports International</span>
376
- </li>
377
- <li class="flex items-center space-x-2">
378
- <span class="text-emerald-400">▸</span>
379
- <span>Predator Group</span>
380
- </li>
381
- <li class="flex items-center space-x-2">
382
- <span class="text-emerald-400">▸</span>
383
- <span>Billiard Congress of America</span>
384
- </li>
385
- </ul>
386
- </div>
387
- </div>
388
-
389
- <!-- Social Media -->
390
- <div class="border-t border-slate-800 pt-8 flex flex-col md:flex-row justify-between items-center">
391
- <p class="text-sm text-gray-400 mb-4 md:mb-0">
392
- © 2019 WPA World Ten-ball Championship. All rights reserved.
393
- </p>
394
- <div class="flex space-x-6">
395
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
396
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"/></svg>
397
- </a>
398
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
399
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg>
400
- </a>
401
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
402
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
403
- </a>
404
- </div>
405
- </div>
406
- </div>
407
- </footer>
408
- <script src="/scripts/main.js"></script>
409
- <script>
410
- if (!window.oswAnalyticsBlocked) {
411
- <!-- OSW Studio Analytics -->
412
-
413
- (function() {
414
- 'use strict';
415
-
416
- // Configuration
417
- var config = {
418
- siteId: '18efcdfd-9309-45d1-bf13-82a968da7216',
419
- apiEndpoint: '/api/analytics/track',
420
- interactionEndpoint: '/api/analytics/interaction',
421
- features: {"basicTracking":true,"heatmaps":true,"sessionRecording":true,"performanceMetrics":true,"engagementTracking":true,"customEvents":false}
422
- };
423
-
424
- // State
425
- var pageLoadTime = Date.now();
426
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
427
- var eventQueue = [];
428
- var lastFlush = Date.now();
429
-
430
- // Generate anonymous session ID from browser fingerprint (no cookies)
431
- function generateSessionId() {
432
- var canvas = document.createElement('canvas');
433
- var ctx = canvas.getContext('2d');
434
- ctx.textBaseline = 'top';
435
- ctx.font = '14px Arial';
436
- ctx.fillText('osw', 0, 0);
437
- var canvasData = canvas.toDataURL();
438
-
439
- var fingerprint = [
440
- navigator.userAgent,
441
- navigator.language,
442
- screen.colorDepth,
443
- screen.width + 'x' + screen.height,
444
- new Date().getTimezoneOffset(),
445
- canvasData.slice(0, 100)
446
- ].join('|');
447
-
448
- var hash = 0;
449
- for (var i = 0; i < fingerprint.length; i++) {
450
- var char = fingerprint.charCodeAt(i);
451
- hash = ((hash << 5) - hash) + char;
452
- hash = hash & hash;
453
- }
454
- return Math.abs(hash).toString(36);
455
- }
456
-
457
- // Detect device type
458
- function getDeviceType() {
459
- var width = window.innerWidth;
460
- if (width < 768) return 'mobile';
461
- if (width < 1024) return 'tablet';
462
- return 'desktop';
463
- }
464
-
465
- // Send analytics data
466
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
467
- function sendData(endpoint, data) {
468
- if (navigator.sendBeacon) {
469
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
470
- navigator.sendBeacon(endpoint, blob);
471
- } else {
472
- fetch(endpoint, {
473
- method: 'POST',
474
- headers: { 'Content-Type': 'application/json' },
475
- body: JSON.stringify(data),
476
- keepalive: true
477
- }).catch(function() {});
478
- }
479
- }
480
-
481
- // Track pageview
482
- function trackPageview() {
483
- if (!config.features.basicTracking) return;
484
-
485
- var data = {
486
- siteId: config.siteId,
487
- pagePath: window.location.pathname,
488
- referrer: document.referrer || '',
489
- userAgent: navigator.userAgent,
490
- deviceType: getDeviceType()
491
- };
492
-
493
- sendData(config.apiEndpoint, data);
494
- pageLoadTime = Date.now();
495
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
496
- }
497
-
498
- // Track click (for heatmaps)
499
- function trackClick(event) {
500
- if (!config.features.heatmaps) return;
501
-
502
- var target = event.target;
503
- var selector = target.tagName;
504
- if (target.id) selector += '#' + target.id;
505
- if (target.className) selector += '.' + target.className.split(' ').join('.');
506
-
507
- eventQueue.push({
508
- type: 'click',
509
- data: {
510
- siteId: config.siteId,
511
- pagePath: window.location.pathname,
512
- interactionType: 'click',
513
- elementSelector: selector,
514
- coordinates: {
515
- x: event.clientX,
516
- y: event.clientY,
517
- scrollY: window.scrollY || window.pageYOffset || 0,
518
- viewportWidth: window.innerWidth,
519
- viewportHeight: window.innerHeight,
520
- documentHeight: Math.max(
521
- document.body.scrollHeight,
522
- document.body.offsetHeight,
523
- document.documentElement.clientHeight,
524
- document.documentElement.scrollHeight,
525
- document.documentElement.offsetHeight
526
- )
527
- },
528
- timeOnPage: Date.now() - pageLoadTime
529
- }
530
- });
531
-
532
- flushEvents();
533
- }
534
-
535
- // Track scroll depth
536
- function trackScroll() {
537
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
538
-
539
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
540
- var scrolled = window.scrollY;
541
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
542
-
543
- // Track milestones
544
- [25, 50, 75, 100].forEach(function(milestone) {
545
- if (percent >= milestone && !scrollMilestones[milestone]) {
546
- scrollMilestones[milestone] = true;
547
-
548
- eventQueue.push({
549
- type: 'scroll',
550
- data: {
551
- siteId: config.siteId,
552
- pagePath: window.location.pathname,
553
- interactionType: 'scroll',
554
- scrollDepth: milestone,
555
- timeOnPage: Date.now() - pageLoadTime
556
- }
557
- });
558
- }
559
- });
560
-
561
- flushEvents();
562
- }
563
-
564
- // Track page exit (send time on page)
565
- function trackExit() {
566
- if (!config.features.engagementTracking) return;
567
-
568
- var timeOnPage = Date.now() - pageLoadTime;
569
- if (timeOnPage < 1000) return; // Ignore very short visits
570
-
571
- sendData(config.interactionEndpoint, {
572
- siteId: config.siteId,
573
- pagePath: window.location.pathname,
574
- interactionType: 'exit',
575
- timeOnPage: timeOnPage
576
- });
577
- }
578
-
579
- // Flush event queue (batching)
580
- function flushEvents(force) {
581
- var now = Date.now();
582
- if (eventQueue.length === 0) return;
583
-
584
- // Increased thresholds: 30s or 50 events (more efficient batching)
585
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
586
-
587
- var batch = eventQueue.splice(0, eventQueue.length);
588
-
589
- // Send as single batched request instead of individual requests
590
- var batchData = {
591
- batch: true,
592
- interactions: batch.map(function(event) { return event.data; })
593
- };
594
-
595
- sendData(config.interactionEndpoint, batchData);
596
- lastFlush = now;
597
- }
598
-
599
- // Initialize tracking
600
- function init() {
601
- // Track initial pageview
602
- if (document.readyState === 'complete') {
603
- trackPageview();
604
- } else {
605
- window.addEventListener('load', trackPageview);
606
- }
607
-
608
- // Track SPA navigation
609
- var pushState = history.pushState;
610
- history.pushState = function() {
611
- pushState.apply(history, arguments);
612
- trackPageview();
613
- };
614
- window.addEventListener('popstate', trackPageview);
615
-
616
- // Track clicks for heatmaps
617
- if (config.features.heatmaps) {
618
- document.addEventListener('click', trackClick, true);
619
- }
620
-
621
- // Track scroll
622
- if (config.features.engagementTracking || config.features.heatmaps) {
623
- var scrollTimer;
624
- window.addEventListener('scroll', function() {
625
- clearTimeout(scrollTimer);
626
- scrollTimer = setTimeout(trackScroll, 100);
627
- });
628
- }
629
-
630
- // Track page exit
631
- if (config.features.engagementTracking) {
632
- window.addEventListener('beforeunload', function() {
633
- flushEvents(true); // Force flush pending events
634
- trackExit();
635
- });
636
- document.addEventListener('visibilitychange', function() {
637
- if (document.visibilityState === 'hidden') {
638
- flushEvents(true); // Force flush pending events
639
- trackExit();
640
- }
641
- });
642
- } else {
643
- // Even without engagement tracking, flush pending events on exit
644
- window.addEventListener('beforeunload', function() {
645
- flushEvents(true);
646
- });
647
- document.addEventListener('visibilitychange', function() {
648
- if (document.visibilityState === 'hidden') {
649
- flushEvents(true);
650
- }
651
- });
652
- }
653
-
654
- // Flush events periodically (increased to 30s for efficiency)
655
- setInterval(function() { flushEvents(false); }, 30000);
656
- }
657
-
658
- init();
659
- })();
660
-
661
- }
662
- </script>
663
- <!-- OSW Studio Consent Banner -->
664
- <style>
665
- #osw-consent-banner {
666
- position: fixed;
667
-
668
- bottom: 0; border-top: 1px solid rgba(0,0,0,0.1);
669
- left: 0;
670
- right: 0;
671
- width: 100%;
672
-
673
- background: #ffffff;
674
- color: #333333;
675
- padding: 1.25rem;
676
- z-index: 999999;
677
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
678
- font-size: 14px;
679
- line-height: 1.5;
680
- display: none;
681
- box-sizing: border-box;
682
- }
683
-
684
- #osw-consent-banner * {
685
- box-sizing: border-box;
686
- }
687
-
688
- #osw-consent-banner.osw-show {
689
- display: flex;
690
- align-items: center;
691
- justify-content: space-between;
692
- flex-wrap: wrap;
693
- gap: 1rem;
694
- justify-content: center;
695
- }
696
-
697
- #osw-consent-content {
698
- flex: 1 1 auto;
699
- min-width: 250px;
700
- }
701
-
702
- #osw-consent-message {
703
- margin: 0;
704
- font-size: 14px;
705
- color: #333333;
706
- }
707
-
708
- #osw-consent-links {
709
- margin: 0.5rem 0 0 0;
710
- font-size: 12px;
711
- }
712
-
713
- #osw-consent-links a {
714
- color: #0066cc;
715
- text-decoration: underline;
716
- margin-right: 1rem;
717
- transition: color 0.2s;
718
- }
719
-
720
- #osw-consent-links a:hover {
721
- color: #0052a3;
722
- }
723
-
724
- #osw-consent-actions {
725
- display: flex;
726
- gap: 0.75rem;
727
- flex-wrap: wrap;
728
- flex-shrink: 0;
729
- }
730
-
731
- #osw-consent-actions button {
732
- padding: 0.625rem 1.5rem;
733
- border: none;
734
- border-radius: 6px;
735
- cursor: pointer;
736
- font-size: 14px;
737
- font-weight: 500;
738
- transition: all 0.2s;
739
- white-space: nowrap;
740
- }
741
-
742
- #osw-consent-actions button:hover {
743
- transform: translateY(-1px);
744
- box-shadow: 0 2px 8px rgba(0,0,0,0.15);
745
- }
746
-
747
- #osw-consent-actions button:active {
748
- transform: translateY(0);
749
- }
750
-
751
- #osw-consent-accept {
752
- background: #0066cc;
753
- color: #ffffff;
754
- }
755
-
756
- #osw-consent-accept:hover {
757
- background: #0052a3;
758
- }
759
-
760
- #osw-consent-decline {
761
- background: #f5f5f5;
762
- color: #333333;
763
- border: 1px solid #e0e0e0;
764
- }
765
-
766
- #osw-consent-decline:hover {
767
- background: #e8e8e8;
768
- }
769
-
770
- /* Responsive Design */
771
- @media (max-width: 768px) {
772
- #osw-consent-banner.osw-show {
773
- flex-direction: column;
774
- align-items: stretch;
775
- }
776
-
777
- #osw-consent-content {
778
- min-width: 100%;
779
- }
780
-
781
- #osw-consent-actions {
782
- width: 100%;
783
- justify-content: stretch;
784
- }
785
-
786
- #osw-consent-actions button {
787
- flex: 1 1 auto;
788
- }
789
- }
790
-
791
- @media (max-width: 600px) {
792
- #osw-consent-banner {
793
- left: 0 !important;
794
- right: 0 !important;
795
- transform: none !important;
796
- max-width: none !important;
797
- border-radius: 0 !important;
798
- margin: 0 !important;
799
- padding: 1rem;
800
- }
801
-
802
- #osw-consent-actions {
803
- flex-direction: column;
804
- }
805
-
806
- #osw-consent-actions button {
807
- width: 100%;
808
- }
809
- }
810
-
811
- /* Dark mode support */
812
- @media (prefers-color-scheme: dark) {
813
- #osw-consent-banner {
814
- background: #1e1e1e;
815
- color: #e0e0e0;
816
- border-color: rgba(255,255,255,0.1) !important;
817
- }
818
-
819
- #osw-consent-message {
820
- color: #e0e0e0;
821
- }
822
-
823
- #osw-consent-links a {
824
- color: #4d9fff;
825
- }
826
-
827
- #osw-consent-links a:hover {
828
- color: #6bb0ff;
829
- }
830
-
831
- #osw-consent-decline {
832
- background: #2a2a2a;
833
- color: #e0e0e0;
834
- border-color: #404040;
835
- }
836
-
837
- #osw-consent-decline:hover {
838
- background: #353535;
839
- }
840
- }
841
- </style>
842
-
843
- <div id="osw-consent-banner">
844
- <div id="osw-consent-content">
845
- <div id="osw-consent-message">We use cookies to improve your experience. By using this site, you accept our use of cookies.</div>
846
-
847
- </div>
848
- <div id="osw-consent-actions">
849
- <button id="osw-consent-accept">Accept</button>
850
- <button id="osw-consent-decline">Decline</button>
851
- </div>
852
- </div>
853
-
854
- <script>
855
- (function() {
856
- 'use strict';
857
- var STORAGE_KEY = 'osw_consent_18efcdfd-9309-45d1-bf13-82a968da7216';
858
- var MODE = 'opt-in';
859
- var BLOCK_ANALYTICS = true;
860
-
861
- function getConsent() {
862
- try {
863
- return localStorage.getItem(STORAGE_KEY);
864
- } catch (e) {
865
- return null;
866
- }
867
- }
868
-
869
- function setConsent(value) {
870
- try {
871
- localStorage.setItem(STORAGE_KEY, value);
872
- } catch (e) {
873
- // Silently fail if localStorage is disabled
874
- }
875
- }
876
-
877
- function hideBanner() {
878
- var banner = document.getElementById('osw-consent-banner');
879
- if (banner) {
880
- banner.classList.remove('osw-show');
881
- }
882
- }
883
-
884
- function showBanner() {
885
- var banner = document.getElementById('osw-consent-banner');
886
- if (banner) {
887
- banner.classList.add('osw-show');
888
- }
889
- }
890
-
891
- function handleAccept() {
892
- setConsent('accepted');
893
- hideBanner();
894
-
895
- // If analytics was blocked, reload to allow it
896
- if (BLOCK_ANALYTICS && window.oswAnalyticsBlocked) {
897
- window.location.reload();
898
- }
899
- }
900
-
901
- function handleDecline() {
902
- setConsent('declined');
903
- hideBanner();
904
- }
905
-
906
- // Check existing consent
907
- var consent = getConsent();
908
-
909
- if (consent === 'accepted') {
910
- // Consent already given, don't show banner
911
- hideBanner();
912
- } else if (consent === 'declined') {
913
- // Consent declined, don't show banner, block analytics if needed
914
- hideBanner();
915
- if (BLOCK_ANALYTICS) {
916
- window.oswAnalyticsBlocked = true;
917
- }
918
- } else {
919
- // No consent recorded yet
920
- if (MODE === 'opt-in') {
921
- // Opt-in: show banner, block analytics by default
922
- showBanner();
923
- if (BLOCK_ANALYTICS) {
924
- window.oswAnalyticsBlocked = true;
925
- }
926
- } else {
927
- // Opt-out: show banner, allow analytics by default
928
- showBanner();
929
- }
930
- }
931
-
932
- // Attach event listeners
933
- var acceptBtn = document.getElementById('osw-consent-accept');
934
- var declineBtn = document.getElementById('osw-consent-decline');
935
-
936
- if (acceptBtn) {
937
- acceptBtn.addEventListener('click', handleAccept);
938
- }
939
-
940
- if (declineBtn) {
941
- declineBtn.addEventListener('click', handleDecline);
942
- }
943
- })();
944
- </script>
945
- </body>
946
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/index.html DELETED
@@ -1,1026 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>2019 WPA World Ten-ball Championship - Las Vegas</title>
7
- <meta name="description" content="The 2019 WPA World Ten-ball Championship at Rio All-Suite Hotel & Casino, Las Vegas. July 22-26, 2019.">
8
- <script src="https://cdn.tailwindcss.com"></script>
9
- <link rel="stylesheet" href="/styles/style.css">
10
- <title>Testing 123</title>
11
- <meta property="og:title" content="Testing 123">
12
- <meta name="twitter:title" content="Testing 123">
13
- <meta name="description" content="This site is the best">
14
- <meta property="og:description" content="This site is the best">
15
- <meta name="twitter:description" content="This site is the best">
16
- <meta property="og:url" content="https://testing.com">
17
- <meta property="og:type" content="website">
18
- <meta name="twitter:card" content="summary_large_image">
19
- <link rel="canonical" href="https://testing.com/">
20
- <script>
21
- console.log("test");
22
- </script>
23
- </head>
24
- <body>
25
- <nav class="bg-slate-900 shadow-lg fixed w-full top-0 z-50" id="navbar">
26
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
27
- <div class="flex justify-between items-center h-20">
28
- <!-- Logo/Brand -->
29
- <div class="flex-shrink-0">
30
- <a href="/index.html" class="flex items-center space-x-3">
31
- <div class="w-12 h-12 bg-gradient-to-br from-emerald-500 to-blue-600 rounded-full flex items-center justify-center">
32
- <span class="text-2xl">🎱</span>
33
- </div>
34
- <div class="hidden md:block">
35
- <h1 class="text-white font-bold text-xl">WPA World Ten-ball</h1>
36
- <p class="text-emerald-400 text-xs">Championship 2019</p>
37
- </div>
38
- </a>
39
- </div>
40
-
41
- <!-- Desktop Navigation -->
42
- <div class="hidden md:flex space-x-1">
43
- <a href="/index.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
44
- Home
45
- </a>
46
- <a href="/about.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
47
- About
48
- </a>
49
- <a href="/schedule.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
50
- Schedule
51
- </a>
52
- <a href="/players.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
53
- Players
54
- </a>
55
- <a href="results.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
56
- Results
57
- </a>
58
- <a href="gallery.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
59
- Gallery
60
- </a>
61
- <a href="contact.html" class="nav-link text-gray-300 hover:bg-slate-800 hover:text-white px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200">
62
- Contact
63
- </a>
64
- </div>
65
-
66
- <!-- Mobile menu button -->
67
- <div class="md:hidden">
68
- <button id="mobile-menu-button" class="text-gray-300 hover:text-white focus:outline-none focus:ring-2 focus:ring-emerald-500 rounded-lg p-2">
69
- <svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
70
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
71
- </svg>
72
- </button>
73
- </div>
74
- </div>
75
- </div>
76
-
77
- <!-- Mobile Navigation -->
78
- <div id="mobile-menu" class="hidden md:hidden bg-slate-800">
79
- <div class="px-2 pt-2 pb-3 space-y-1">
80
- <a href="/index.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
81
- Home
82
- </a>
83
- <a href="/about.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
84
- About
85
- </a>
86
- <a href="/schedule.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
87
- Schedule
88
- </a>
89
- <a href="/players.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
90
- Players
91
- </a>
92
- <a href="results.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
93
- Results
94
- </a>
95
- <a href="gallery.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
96
- Gallery
97
- </a>
98
- <a href="contact.html" class="text-gray-300 hover:bg-slate-700 hover:text-white block px-3 py-2 rounded-lg text-base font-medium transition-colors">
99
- Contact
100
- </a>
101
- </div>
102
- </div>
103
- </nav>
104
-
105
- <!-- Spacer for fixed navbar -->
106
- <div class="h-20"></div>
107
- <!-- Hero Section -->
108
- <div class="hero-section relative bg-gradient-to-br from-slate-900 via-blue-900 to-slate-900 overflow-hidden">
109
- <!-- Background Image with Overlay -->
110
- <div class="absolute inset-0">
111
- <img src="https://picsum.photos/seed/pool-hero/1920/1080" alt="Pool Championship" class="w-full h-full object-cover opacity-20">
112
- <div class="absolute inset-0 bg-gradient-to-r from-slate-900/90 to-blue-900/90"></div>
113
- </div>
114
-
115
- <!-- Content -->
116
- <div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-24 md:py-32">
117
- <div class="text-center">
118
- <div class="inline-block mb-4">
119
- <span class="bg-emerald-500/20 text-emerald-400 px-4 py-2 rounded-full text-sm font-semibold border border-emerald-500/30 pulse">
120
- 🏆 5th Edition Championship
121
- </span>
122
- </div>
123
-
124
- <h1 class="text-4xl md:text-6xl lg:text-7xl font-bold text-white mb-6 leading-tight animate-on-scroll">
125
- 2019 WPA World<br>
126
- <span class="text-emerald-400">Ten-ball Championship</span>
127
- </h1>
128
-
129
- <p class="text-xl md:text-2xl text-gray-300 mb-8 max-w-3xl mx-auto animate-on-scroll">
130
- The World's Premier Ten-ball Tournament
131
- </p>
132
-
133
- <p class="text-lg text-gray-400 mb-10 max-w-2xl mx-auto animate-on-scroll">
134
- 📅 July 22-26, 2019 | 📍 Rio All-Suite Hotel & Casino, Las Vegas, Nevada
135
- </p>
136
-
137
- <div class="flex flex-col sm:flex-row gap-4 justify-center animate-on-scroll">
138
- <a href="results.html" class="bg-orange-500 hover:bg-orange-600 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-200 transform hover:scale-105 shadow-lg hover:shadow-orange-500/50">
139
- View Results
140
- </a>
141
- <a href="gallery.html" class="bg-white/10 hover:bg-white/20 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-200 border border-white/30">
142
- Photo Gallery
143
- </a>
144
- </div>
145
- </div>
146
- </div>
147
-
148
- <!-- Decorative Wave -->
149
- <div class="absolute bottom-0 left-0 right-0">
150
- <svg viewBox="0 0 1440 120" fill="none" xmlns="http://www.w3.org/2000/svg">
151
- <path d="M0 120L60 105C120 90 240 60 360 45C480 30 600 30 720 37.5C840 45 960 60 1080 67.5C1200 75 1320 75 1380 75L1440 75V120H1380C1320 120 1200 120 1080 120C960 120 840 120 720 120C600 120 480 120 360 120C240 120 120 120 60 120H0Z" fill="currentColor" class="text-slate-50"/>
152
- </svg>
153
- </div>
154
- </div>
155
-
156
- <!-- Quick Facts Section -->
157
- <section class="py-16 bg-slate-50">
158
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
159
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-8">
160
- <div class="stat-item animate-on-scroll">
161
- <div class="text-5xl mb-3">🏆</div>
162
- <h3 class="text-2xl font-bold text-slate-900 mb-2">5th Edition</h3>
163
- <p class="text-gray-600">Fifth WPA World Ten-ball Championship</p>
164
- </div>
165
- <div class="stat-item animate-on-scroll">
166
- <div class="text-5xl mb-3">📅</div>
167
- <h3 class="text-2xl font-bold text-slate-900 mb-2">July 22-26, 2019</h3>
168
- <p class="text-gray-600">Five days of elite competition</p>
169
- </div>
170
- <div class="stat-item animate-on-scroll">
171
- <div class="text-5xl mb-3">📍</div>
172
- <h3 class="text-2xl font-bold text-slate-900 mb-2">Las Vegas, USA</h3>
173
- <p class="text-gray-600">Rio All-Suite Hotel &amp; Casino</p>
174
- </div>
175
- <div class="stat-item animate-on-scroll">
176
- <div class="text-5xl mb-3">🎱</div>
177
- <h3 class="text-2xl font-bold text-slate-900 mb-2">World-Class Players</h3>
178
- <p class="text-gray-600">Top ten-ball professionals worldwide</p>
179
- </div>
180
- </div>
181
- </div>
182
- </section>
183
-
184
- <!-- About Championship Section -->
185
- <section class="section bg-white">
186
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
187
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
188
- <div class="animate-on-scroll">
189
- <h2 class="text-4xl font-bold text-slate-900 mb-6">
190
- A Historic <span class="gradient-text">Championship</span>
191
- </h2>
192
- <p class="text-lg text-gray-600 mb-6">
193
- The 2019 WPA World Ten-ball Championship marked the fifth edition of this prestigious tournament. After plans for events in 2016 and 2018 in Manila fell through, the championship found its new home in Las Vegas as part of a groundbreaking three-year deal.
194
- </p>
195
- <p class="text-lg text-gray-600 mb-6">
196
- Organized by the World Pool-Billiard Association (WPA) and CueSports International, the tournament ran concurrently with the Billiard Congress of America's National Ten-ball event, creating an unprecedented week of world-class ten-ball competition.
197
- </p>
198
- <div class="flex flex-wrap gap-4">
199
- <a href="/about.html" class="btn btn-primary">
200
- Learn More
201
- </a>
202
- <a href="/schedule.html" class="btn btn-secondary">
203
- View Schedule
204
- </a>
205
- </div>
206
- </div>
207
- <div class="animate-on-scroll">
208
- <img src="https://picsum.photos/seed/championship/800/600" alt="Championship" class="rounded-xl shadow-2xl">
209
- </div>
210
- </div>
211
- </div>
212
- </section>
213
-
214
- <!-- Featured Players Section -->
215
- <section class="section bg-gradient-to-br from-slate-900 to-blue-900">
216
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
217
- <div class="text-center mb-12">
218
- <h2 class="text-4xl font-bold text-white mb-4 animate-on-scroll">
219
- Featured Players
220
- </h2>
221
- <p class="text-xl text-gray-300 animate-on-scroll">
222
- World-class competitors from around the globe
223
- </p>
224
- </div>
225
-
226
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
227
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
228
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
229
- <img src="https://picsum.photos/seed/player1/400/500" alt="Ko Pin-yi" class="w-full h-64 object-cover">
230
- </div>
231
- <div class="p-6">
232
- <div class="flex items-center justify-between mb-2">
233
- <h3 class="text-xl font-bold text-white">Ko Pin-yi</h3>
234
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
235
- #1
236
- </span>
237
- </div>
238
- <p class="text-gray-300">🌍 Taiwan</p>
239
- </div>
240
- </div>
241
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
242
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
243
- <img src="https://picsum.photos/seed/player2/400/500" alt="Jayson Shaw" class="w-full h-64 object-cover">
244
- </div>
245
- <div class="p-6">
246
- <div class="flex items-center justify-between mb-2">
247
- <h3 class="text-xl font-bold text-white">Jayson Shaw</h3>
248
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
249
- #2
250
- </span>
251
- </div>
252
- <p class="text-gray-300">🌍 Scotland</p>
253
- </div>
254
- </div>
255
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
256
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
257
- <img src="https://picsum.photos/seed/player3/400/500" alt="Fedor Gorst" class="w-full h-64 object-cover">
258
- </div>
259
- <div class="p-6">
260
- <div class="flex items-center justify-between mb-2">
261
- <h3 class="text-xl font-bold text-white">Fedor Gorst</h3>
262
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
263
- #3
264
- </span>
265
- </div>
266
- <p class="text-gray-300">🌍 Russia</p>
267
- </div>
268
- </div>
269
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
270
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
271
- <img src="https://picsum.photos/seed/player4/400/500" alt="Joshua Filler" class="w-full h-64 object-cover">
272
- </div>
273
- <div class="p-6">
274
- <div class="flex items-center justify-between mb-2">
275
- <h3 class="text-xl font-bold text-white">Joshua Filler</h3>
276
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
277
- #4
278
- </span>
279
- </div>
280
- <p class="text-gray-300">🌍 Germany</p>
281
- </div>
282
- </div>
283
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
284
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
285
- <img src="https://picsum.photos/seed/player5/400/500" alt="Albin Ouschan" class="w-full h-64 object-cover">
286
- </div>
287
- <div class="p-6">
288
- <div class="flex items-center justify-between mb-2">
289
- <h3 class="text-xl font-bold text-white">Albin Ouschan</h3>
290
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
291
- #5
292
- </span>
293
- </div>
294
- <p class="text-gray-300">🌍 Austria</p>
295
- </div>
296
- </div>
297
- <div class="card-item bg-white/10 backdrop-blur-lg rounded-xl overflow-hidden hover:bg-white/20 transition-all duration-300 transform hover:-translate-y-2 animate-on-scroll">
298
- <div class="aspect-w-3 aspect-h-4 overflow-hidden">
299
- <img src="https://picsum.photos/seed/player6/400/500" alt="Shane Van Boening" class="w-full h-64 object-cover">
300
- </div>
301
- <div class="p-6">
302
- <div class="flex items-center justify-between mb-2">
303
- <h3 class="text-xl font-bold text-white">Shane Van Boening</h3>
304
- <span class="bg-emerald-500 text-white px-3 py-1 rounded-full text-sm font-semibold">
305
- #6
306
- </span>
307
- </div>
308
- <p class="text-gray-300">🌍 USA</p>
309
- </div>
310
- </div>
311
- </div>
312
-
313
- <div class="text-center mt-12">
314
- <a href="/players.html" class="bg-emerald-500 hover:bg-emerald-600 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-200 transform hover:scale-105 inline-block">
315
- View All Players
316
- </a>
317
- </div>
318
- </div>
319
- </section>
320
-
321
- <!-- Venue Section -->
322
- <section class="section bg-white">
323
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
324
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
325
- <div class="order-2 lg:order-1 animate-on-scroll">
326
- <img src="https://picsum.photos/seed/rio-vegas/800/600" alt="Rio All-Suite Hotel & Casino" class="rounded-xl shadow-2xl">
327
- </div>
328
- <div class="order-1 lg:order-2 animate-on-scroll">
329
- <h2 class="text-4xl font-bold text-slate-900 mb-6">
330
- The Venue: <span class="gradient-text">Rio Las Vegas</span>
331
- </h2>
332
- <p class="text-lg text-gray-600 mb-6">
333
- The Rio All-Suite Hotel & Casino provided the perfect backdrop for this world-class tournament. Located in the heart of Las Vegas, the Rio's state-of-the-art facilities and championship atmosphere created an unforgettable experience for players and spectators alike.
334
- </p>
335
- <div class="space-y-4">
336
- <div class="flex items-start space-x-3">
337
- <span class="text-2xl">📍</span>
338
- <div>
339
- <h4 class="font-semibold text-slate-900">Location</h4>
340
- <p class="text-gray-600">3700 W Flamingo Rd, Las Vegas, NV 89103</p>
341
- </div>
342
- </div>
343
- <div class="flex items-start space-x-3">
344
- <span class="text-2xl">🏨</span>
345
- <div>
346
- <h4 class="font-semibold text-slate-900">World-Class Facilities</h4>
347
- <p class="text-gray-600">Professional tournament tables and viewing areas</p>
348
- </div>
349
- </div>
350
- <div class="flex items-start space-x-3">
351
- <span class="text-2xl">🎰</span>
352
- <div>
353
- <h4 class="font-semibold text-slate-900">Entertainment Capital</h4>
354
- <p class="text-gray-600">Las Vegas, the ultimate destination for world championships</p>
355
- </div>
356
- </div>
357
- </div>
358
- </div>
359
- </div>
360
- </div>
361
- </section>
362
-
363
- <!-- Sponsor Section -->
364
- <section class="py-16 bg-slate-50">
365
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
366
- <h3 class="text-2xl font-bold text-slate-900 mb-8 animate-on-scroll">Official Sponsor</h3>
367
- <div class="inline-block bg-white px-12 py-8 rounded-xl shadow-lg animate-on-scroll">
368
- <p class="text-4xl font-bold gradient-text">Predator Group</p>
369
- <p class="text-gray-600 mt-2">Premium Cue Manufacturer</p>
370
- </div>
371
- </div>
372
- </section>
373
-
374
- <!-- CTA Section -->
375
- <section class="section bg-gradient-to-r from-emerald-500 to-blue-600">
376
- <div class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
377
- <h2 class="text-4xl font-bold text-white mb-6 animate-on-scroll">
378
- Experience the Championship
379
- </h2>
380
- <p class="text-xl text-white/90 mb-8 animate-on-scroll">
381
- Explore the tournament results, player profiles, and exclusive photo gallery from this historic event.
382
- </p>
383
- <div class="flex flex-col sm:flex-row gap-4 justify-center animate-on-scroll">
384
- <a href="gallery.html" class="bg-white text-emerald-600 hover:bg-gray-100 px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-200 transform hover:scale-105">
385
- Browse Gallery
386
- </a>
387
- <a href="contact.html" class="bg-white/10 hover:bg-white/20 text-white px-8 py-4 rounded-lg font-semibold text-lg transition-all duration-200 border-2 border-white">
388
- Get in Touch
389
- </a>
390
- </div>
391
- </div>
392
- </section>
393
-
394
- <footer class="bg-slate-900 text-gray-300 pt-16 pb-8 mt-20">
395
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
396
- <div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
397
- <!-- About Section -->
398
- <div class="col-span-1 md:col-span-2">
399
- <div class="flex items-center space-x-3 mb-4">
400
- <div class="w-12 h-12 bg-gradient-to-br from-emerald-500 to-blue-600 rounded-full flex items-center justify-center">
401
- <span class="text-2xl">🎱</span>
402
- </div>
403
- <div>
404
- <h3 class="text-white font-bold text-lg">WPA World Ten-ball Championship</h3>
405
- <p class="text-emerald-400 text-sm">2019 Edition</p>
406
- </div>
407
- </div>
408
- <p class="text-sm mb-4">
409
- The premier professional pool tournament for ten-ball, organized by the World Pool-Billiard Association (WPA) and CueSports International.
410
- </p>
411
- <p class="text-sm text-gray-400">
412
- 📍 Rio All-Suite Hotel & Casino, Las Vegas, NV<br>
413
- 📅 July 22-26, 2019
414
- </p>
415
- </div>
416
-
417
- <!-- Quick Links -->
418
- <div>
419
- <h4 class="text-white font-semibold mb-4">Quick Links</h4>
420
- <ul class="space-y-2 text-sm">
421
- <li>
422
- <a href="/index.html" class="hover:text-emerald-400 transition-colors">Home</a>
423
- </li>
424
- <li>
425
- <a href="/about.html" class="hover:text-emerald-400 transition-colors">About</a>
426
- </li>
427
- <li>
428
- <a href="/schedule.html" class="hover:text-emerald-400 transition-colors">Schedule</a>
429
- </li>
430
- <li>
431
- <a href="/players.html" class="hover:text-emerald-400 transition-colors">Players</a>
432
- </li>
433
- <li>
434
- <a href="results.html" class="hover:text-emerald-400 transition-colors">Results</a>
435
- </li>
436
- <li>
437
- <a href="gallery.html" class="hover:text-emerald-400 transition-colors">Gallery</a>
438
- </li>
439
- <li>
440
- <a href="contact.html" class="hover:text-emerald-400 transition-colors">Contact</a>
441
- </li>
442
- </ul>
443
- </div>
444
-
445
- <!-- Organizations -->
446
- <div>
447
- <h4 class="text-white font-semibold mb-4">Organizers & Sponsors</h4>
448
- <ul class="space-y-2 text-sm">
449
- <li class="flex items-center space-x-2">
450
- <span class="text-emerald-400">▸</span>
451
- <span>World Pool-Billiard Association</span>
452
- </li>
453
- <li class="flex items-center space-x-2">
454
- <span class="text-emerald-400">▸</span>
455
- <span>CueSports International</span>
456
- </li>
457
- <li class="flex items-center space-x-2">
458
- <span class="text-emerald-400">▸</span>
459
- <span>Predator Group</span>
460
- </li>
461
- <li class="flex items-center space-x-2">
462
- <span class="text-emerald-400">▸</span>
463
- <span>Billiard Congress of America</span>
464
- </li>
465
- </ul>
466
- </div>
467
- </div>
468
-
469
- <!-- Social Media -->
470
- <div class="border-t border-slate-800 pt-8 flex flex-col md:flex-row justify-between items-center">
471
- <p class="text-sm text-gray-400 mb-4 md:mb-0">
472
- © 2019 WPA World Ten-ball Championship. All rights reserved.
473
- </p>
474
- <div class="flex space-x-6">
475
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
476
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"/></svg>
477
- </a>
478
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
479
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg>
480
- </a>
481
- <a href="#" class="text-gray-400 hover:text-emerald-400 transition-colors">
482
- <svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>
483
- </a>
484
- </div>
485
- </div>
486
- </div>
487
- </footer>
488
- <script src="/scripts/main.js"></script>
489
- <script>
490
- if (!window.oswAnalyticsBlocked) {
491
- <!-- OSW Studio Analytics -->
492
-
493
- (function() {
494
- 'use strict';
495
-
496
- // Configuration
497
- var config = {
498
- siteId: '18efcdfd-9309-45d1-bf13-82a968da7216',
499
- apiEndpoint: '/api/analytics/track',
500
- interactionEndpoint: '/api/analytics/interaction',
501
- features: {"basicTracking":true,"heatmaps":true,"sessionRecording":true,"performanceMetrics":true,"engagementTracking":true,"customEvents":false}
502
- };
503
-
504
- // State
505
- var pageLoadTime = Date.now();
506
- var scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
507
- var eventQueue = [];
508
- var lastFlush = Date.now();
509
-
510
- // Generate anonymous session ID from browser fingerprint (no cookies)
511
- function generateSessionId() {
512
- var canvas = document.createElement('canvas');
513
- var ctx = canvas.getContext('2d');
514
- ctx.textBaseline = 'top';
515
- ctx.font = '14px Arial';
516
- ctx.fillText('osw', 0, 0);
517
- var canvasData = canvas.toDataURL();
518
-
519
- var fingerprint = [
520
- navigator.userAgent,
521
- navigator.language,
522
- screen.colorDepth,
523
- screen.width + 'x' + screen.height,
524
- new Date().getTimezoneOffset(),
525
- canvasData.slice(0, 100)
526
- ].join('|');
527
-
528
- var hash = 0;
529
- for (var i = 0; i < fingerprint.length; i++) {
530
- var char = fingerprint.charCodeAt(i);
531
- hash = ((hash << 5) - hash) + char;
532
- hash = hash & hash;
533
- }
534
- return Math.abs(hash).toString(36);
535
- }
536
-
537
- // Detect device type
538
- function getDeviceType() {
539
- var width = window.innerWidth;
540
- if (width < 768) return 'mobile';
541
- if (width < 1024) return 'tablet';
542
- return 'desktop';
543
- }
544
-
545
- // Send analytics data
546
- // Security: Origin/Referer validation on server (browser-enforced, cannot be spoofed cross-domain)
547
- function sendData(endpoint, data) {
548
- if (navigator.sendBeacon) {
549
- var blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
550
- navigator.sendBeacon(endpoint, blob);
551
- } else {
552
- fetch(endpoint, {
553
- method: 'POST',
554
- headers: { 'Content-Type': 'application/json' },
555
- body: JSON.stringify(data),
556
- keepalive: true
557
- }).catch(function() {});
558
- }
559
- }
560
-
561
- // Track pageview
562
- function trackPageview() {
563
- if (!config.features.basicTracking) return;
564
-
565
- var data = {
566
- siteId: config.siteId,
567
- pagePath: window.location.pathname,
568
- referrer: document.referrer || '',
569
- userAgent: navigator.userAgent,
570
- deviceType: getDeviceType()
571
- };
572
-
573
- sendData(config.apiEndpoint, data);
574
- pageLoadTime = Date.now();
575
- scrollMilestones = { 25: false, 50: false, 75: false, 100: false };
576
- }
577
-
578
- // Track click (for heatmaps)
579
- function trackClick(event) {
580
- if (!config.features.heatmaps) return;
581
-
582
- var target = event.target;
583
- var selector = target.tagName;
584
- if (target.id) selector += '#' + target.id;
585
- if (target.className) selector += '.' + target.className.split(' ').join('.');
586
-
587
- eventQueue.push({
588
- type: 'click',
589
- data: {
590
- siteId: config.siteId,
591
- pagePath: window.location.pathname,
592
- interactionType: 'click',
593
- elementSelector: selector,
594
- coordinates: {
595
- x: event.clientX,
596
- y: event.clientY,
597
- scrollY: window.scrollY || window.pageYOffset || 0,
598
- viewportWidth: window.innerWidth,
599
- viewportHeight: window.innerHeight,
600
- documentHeight: Math.max(
601
- document.body.scrollHeight,
602
- document.body.offsetHeight,
603
- document.documentElement.clientHeight,
604
- document.documentElement.scrollHeight,
605
- document.documentElement.offsetHeight
606
- )
607
- },
608
- timeOnPage: Date.now() - pageLoadTime
609
- }
610
- });
611
-
612
- flushEvents();
613
- }
614
-
615
- // Track scroll depth
616
- function trackScroll() {
617
- if (!config.features.engagementTracking && !config.features.heatmaps) return;
618
-
619
- var scrollHeight = document.documentElement.scrollHeight - window.innerHeight;
620
- var scrolled = window.scrollY;
621
- var percent = scrollHeight > 0 ? Math.round((scrolled / scrollHeight) * 100) : 100;
622
-
623
- // Track milestones
624
- [25, 50, 75, 100].forEach(function(milestone) {
625
- if (percent >= milestone && !scrollMilestones[milestone]) {
626
- scrollMilestones[milestone] = true;
627
-
628
- eventQueue.push({
629
- type: 'scroll',
630
- data: {
631
- siteId: config.siteId,
632
- pagePath: window.location.pathname,
633
- interactionType: 'scroll',
634
- scrollDepth: milestone,
635
- timeOnPage: Date.now() - pageLoadTime
636
- }
637
- });
638
- }
639
- });
640
-
641
- flushEvents();
642
- }
643
-
644
- // Track page exit (send time on page)
645
- function trackExit() {
646
- if (!config.features.engagementTracking) return;
647
-
648
- var timeOnPage = Date.now() - pageLoadTime;
649
- if (timeOnPage < 1000) return; // Ignore very short visits
650
-
651
- sendData(config.interactionEndpoint, {
652
- siteId: config.siteId,
653
- pagePath: window.location.pathname,
654
- interactionType: 'exit',
655
- timeOnPage: timeOnPage
656
- });
657
- }
658
-
659
- // Flush event queue (batching)
660
- function flushEvents(force) {
661
- var now = Date.now();
662
- if (eventQueue.length === 0) return;
663
-
664
- // Increased thresholds: 30s or 50 events (more efficient batching)
665
- if (!force && now - lastFlush < 30000 && eventQueue.length < 50) return;
666
-
667
- var batch = eventQueue.splice(0, eventQueue.length);
668
-
669
- // Send as single batched request instead of individual requests
670
- var batchData = {
671
- batch: true,
672
- interactions: batch.map(function(event) { return event.data; })
673
- };
674
-
675
- sendData(config.interactionEndpoint, batchData);
676
- lastFlush = now;
677
- }
678
-
679
- // Initialize tracking
680
- function init() {
681
- // Track initial pageview
682
- if (document.readyState === 'complete') {
683
- trackPageview();
684
- } else {
685
- window.addEventListener('load', trackPageview);
686
- }
687
-
688
- // Track SPA navigation
689
- var pushState = history.pushState;
690
- history.pushState = function() {
691
- pushState.apply(history, arguments);
692
- trackPageview();
693
- };
694
- window.addEventListener('popstate', trackPageview);
695
-
696
- // Track clicks for heatmaps
697
- if (config.features.heatmaps) {
698
- document.addEventListener('click', trackClick, true);
699
- }
700
-
701
- // Track scroll
702
- if (config.features.engagementTracking || config.features.heatmaps) {
703
- var scrollTimer;
704
- window.addEventListener('scroll', function() {
705
- clearTimeout(scrollTimer);
706
- scrollTimer = setTimeout(trackScroll, 100);
707
- });
708
- }
709
-
710
- // Track page exit
711
- if (config.features.engagementTracking) {
712
- window.addEventListener('beforeunload', function() {
713
- flushEvents(true); // Force flush pending events
714
- trackExit();
715
- });
716
- document.addEventListener('visibilitychange', function() {
717
- if (document.visibilityState === 'hidden') {
718
- flushEvents(true); // Force flush pending events
719
- trackExit();
720
- }
721
- });
722
- } else {
723
- // Even without engagement tracking, flush pending events on exit
724
- window.addEventListener('beforeunload', function() {
725
- flushEvents(true);
726
- });
727
- document.addEventListener('visibilitychange', function() {
728
- if (document.visibilityState === 'hidden') {
729
- flushEvents(true);
730
- }
731
- });
732
- }
733
-
734
- // Flush events periodically (increased to 30s for efficiency)
735
- setInterval(function() { flushEvents(false); }, 30000);
736
- }
737
-
738
- init();
739
- })();
740
-
741
- }
742
- </script>
743
- <!-- OSW Studio Consent Banner -->
744
- <style>
745
- #osw-consent-banner {
746
- position: fixed;
747
-
748
- bottom: 0; border-top: 1px solid rgba(0,0,0,0.1);
749
- left: 0;
750
- right: 0;
751
- width: 100%;
752
-
753
- background: #ffffff;
754
- color: #333333;
755
- padding: 1.25rem;
756
- z-index: 999999;
757
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
758
- font-size: 14px;
759
- line-height: 1.5;
760
- display: none;
761
- box-sizing: border-box;
762
- }
763
-
764
- #osw-consent-banner * {
765
- box-sizing: border-box;
766
- }
767
-
768
- #osw-consent-banner.osw-show {
769
- display: flex;
770
- align-items: center;
771
- justify-content: space-between;
772
- flex-wrap: wrap;
773
- gap: 1rem;
774
- justify-content: center;
775
- }
776
-
777
- #osw-consent-content {
778
- flex: 1 1 auto;
779
- min-width: 250px;
780
- }
781
-
782
- #osw-consent-message {
783
- margin: 0;
784
- font-size: 14px;
785
- color: #333333;
786
- }
787
-
788
- #osw-consent-links {
789
- margin: 0.5rem 0 0 0;
790
- font-size: 12px;
791
- }
792
-
793
- #osw-consent-links a {
794
- color: #0066cc;
795
- text-decoration: underline;
796
- margin-right: 1rem;
797
- transition: color 0.2s;
798
- }
799
-
800
- #osw-consent-links a:hover {
801
- color: #0052a3;
802
- }
803
-
804
- #osw-consent-actions {
805
- display: flex;
806
- gap: 0.75rem;
807
- flex-wrap: wrap;
808
- flex-shrink: 0;
809
- }
810
-
811
- #osw-consent-actions button {
812
- padding: 0.625rem 1.5rem;
813
- border: none;
814
- border-radius: 6px;
815
- cursor: pointer;
816
- font-size: 14px;
817
- font-weight: 500;
818
- transition: all 0.2s;
819
- white-space: nowrap;
820
- }
821
-
822
- #osw-consent-actions button:hover {
823
- transform: translateY(-1px);
824
- box-shadow: 0 2px 8px rgba(0,0,0,0.15);
825
- }
826
-
827
- #osw-consent-actions button:active {
828
- transform: translateY(0);
829
- }
830
-
831
- #osw-consent-accept {
832
- background: #0066cc;
833
- color: #ffffff;
834
- }
835
-
836
- #osw-consent-accept:hover {
837
- background: #0052a3;
838
- }
839
-
840
- #osw-consent-decline {
841
- background: #f5f5f5;
842
- color: #333333;
843
- border: 1px solid #e0e0e0;
844
- }
845
-
846
- #osw-consent-decline:hover {
847
- background: #e8e8e8;
848
- }
849
-
850
- /* Responsive Design */
851
- @media (max-width: 768px) {
852
- #osw-consent-banner.osw-show {
853
- flex-direction: column;
854
- align-items: stretch;
855
- }
856
-
857
- #osw-consent-content {
858
- min-width: 100%;
859
- }
860
-
861
- #osw-consent-actions {
862
- width: 100%;
863
- justify-content: stretch;
864
- }
865
-
866
- #osw-consent-actions button {
867
- flex: 1 1 auto;
868
- }
869
- }
870
-
871
- @media (max-width: 600px) {
872
- #osw-consent-banner {
873
- left: 0 !important;
874
- right: 0 !important;
875
- transform: none !important;
876
- max-width: none !important;
877
- border-radius: 0 !important;
878
- margin: 0 !important;
879
- padding: 1rem;
880
- }
881
-
882
- #osw-consent-actions {
883
- flex-direction: column;
884
- }
885
-
886
- #osw-consent-actions button {
887
- width: 100%;
888
- }
889
- }
890
-
891
- /* Dark mode support */
892
- @media (prefers-color-scheme: dark) {
893
- #osw-consent-banner {
894
- background: #1e1e1e;
895
- color: #e0e0e0;
896
- border-color: rgba(255,255,255,0.1) !important;
897
- }
898
-
899
- #osw-consent-message {
900
- color: #e0e0e0;
901
- }
902
-
903
- #osw-consent-links a {
904
- color: #4d9fff;
905
- }
906
-
907
- #osw-consent-links a:hover {
908
- color: #6bb0ff;
909
- }
910
-
911
- #osw-consent-decline {
912
- background: #2a2a2a;
913
- color: #e0e0e0;
914
- border-color: #404040;
915
- }
916
-
917
- #osw-consent-decline:hover {
918
- background: #353535;
919
- }
920
- }
921
- </style>
922
-
923
- <div id="osw-consent-banner">
924
- <div id="osw-consent-content">
925
- <div id="osw-consent-message">We use cookies to improve your experience. By using this site, you accept our use of cookies.</div>
926
-
927
- </div>
928
- <div id="osw-consent-actions">
929
- <button id="osw-consent-accept">Accept</button>
930
- <button id="osw-consent-decline">Decline</button>
931
- </div>
932
- </div>
933
-
934
- <script>
935
- (function() {
936
- 'use strict';
937
- var STORAGE_KEY = 'osw_consent_18efcdfd-9309-45d1-bf13-82a968da7216';
938
- var MODE = 'opt-in';
939
- var BLOCK_ANALYTICS = true;
940
-
941
- function getConsent() {
942
- try {
943
- return localStorage.getItem(STORAGE_KEY);
944
- } catch (e) {
945
- return null;
946
- }
947
- }
948
-
949
- function setConsent(value) {
950
- try {
951
- localStorage.setItem(STORAGE_KEY, value);
952
- } catch (e) {
953
- // Silently fail if localStorage is disabled
954
- }
955
- }
956
-
957
- function hideBanner() {
958
- var banner = document.getElementById('osw-consent-banner');
959
- if (banner) {
960
- banner.classList.remove('osw-show');
961
- }
962
- }
963
-
964
- function showBanner() {
965
- var banner = document.getElementById('osw-consent-banner');
966
- if (banner) {
967
- banner.classList.add('osw-show');
968
- }
969
- }
970
-
971
- function handleAccept() {
972
- setConsent('accepted');
973
- hideBanner();
974
-
975
- // If analytics was blocked, reload to allow it
976
- if (BLOCK_ANALYTICS && window.oswAnalyticsBlocked) {
977
- window.location.reload();
978
- }
979
- }
980
-
981
- function handleDecline() {
982
- setConsent('declined');
983
- hideBanner();
984
- }
985
-
986
- // Check existing consent
987
- var consent = getConsent();
988
-
989
- if (consent === 'accepted') {
990
- // Consent already given, don't show banner
991
- hideBanner();
992
- } else if (consent === 'declined') {
993
- // Consent declined, don't show banner, block analytics if needed
994
- hideBanner();
995
- if (BLOCK_ANALYTICS) {
996
- window.oswAnalyticsBlocked = true;
997
- }
998
- } else {
999
- // No consent recorded yet
1000
- if (MODE === 'opt-in') {
1001
- // Opt-in: show banner, block analytics by default
1002
- showBanner();
1003
- if (BLOCK_ANALYTICS) {
1004
- window.oswAnalyticsBlocked = true;
1005
- }
1006
- } else {
1007
- // Opt-out: show banner, allow analytics by default
1008
- showBanner();
1009
- }
1010
- }
1011
-
1012
- // Attach event listeners
1013
- var acceptBtn = document.getElementById('osw-consent-accept');
1014
- var declineBtn = document.getElementById('osw-consent-decline');
1015
-
1016
- if (acceptBtn) {
1017
- acceptBtn.addEventListener('click', handleAccept);
1018
- }
1019
-
1020
- if (declineBtn) {
1021
- declineBtn.addEventListener('click', handleDecline);
1022
- }
1023
- })();
1024
- </script>
1025
- </body>
1026
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public/sites/18efcdfd-9309-45d1-bf13-82a968da7216/plan.md DELETED
@@ -1,127 +0,0 @@
1
- # 2019 WPA World Ten-ball Championship Website - Development Plan
2
-
3
- ## Project Overview
4
- A modern, sporty multipage website for the 2019 WPA World Ten-ball Championship held at Rio All-Suite Hotel & Casino, Las Vegas.
5
-
6
- ## Technology Stack
7
- - **Styling**: TailwindCSS (via CDN)
8
- - **Animations**: Framer Motion (via CDN)
9
- - **Images**: Picsum Photos
10
- - **Templating**: Handlebars for reusable components
11
- - **Structure**: Multi-page HTML site
12
-
13
- ## Design Aesthetics
14
- - **Modern & Sporty**: Bold typography, dynamic layouts, vibrant colors
15
- - **Color Scheme**:
16
- - Primary: Deep blue (#1e3a8a) - professional pool table felt
17
- - Accent: Bright green (#10b981) - billiard table
18
- - Secondary: Gold/Yellow (#fbbf24) - championship/winner
19
- - Dark: #0f172a
20
- - Light: #f8fafc
21
- - **Typography**: Sans-serif, bold headings, clean body text
22
- - **Animations**: Smooth transitions, scroll animations, hover effects
23
-
24
- ## Site Structure
25
-
26
- ### Pages
27
- 1. **Home (index.html)**
28
- - Hero section with championship title and dates
29
- - Quick facts/highlights
30
- - Featured image gallery
31
- - Call-to-action sections
32
- - Latest news/updates section
33
-
34
- 2. **About (about.html)**
35
- - Tournament history
36
- - WPA & CueSports International information
37
- - Ten-ball discipline explanation
38
- - Venue information (Rio All-Suite Hotel & Casino)
39
- - Sponsorship (Predator Group)
40
-
41
- 3. **Schedule (schedule.html)**
42
- - Tournament dates (July 22-26, 2019)
43
- - Daily schedule breakdown
44
- - Concurrent BCA National Ten-ball event info
45
- - Timeline visualization
46
-
47
- 4. **Players (players.html)**
48
- - Featured players/competitors
49
- - Player profiles with images
50
- - Past champions (2015 and earlier)
51
- - Player statistics
52
-
53
- 5. **Results (results.html)**
54
- - Tournament brackets
55
- - Match results
56
- - Final standings
57
- - Championship winner highlight
58
-
59
- 6. **Gallery (gallery.html)**
60
- - Photo gallery from the event
61
- - Action shots
62
- - Venue photos
63
- - Award ceremony images
64
-
65
- 7. **Contact (contact.html)**
66
- - Contact form
67
- - WPA contact information
68
- - Venue location map
69
- - Social media links
70
-
71
- ## Reusable Components (Handlebars Templates)
72
-
73
- ### 1. Navigation Bar (`/templates/nav.hbs`)
74
- - Logo/Championship branding
75
- - Navigation links to all pages
76
- - Responsive mobile menu
77
- - Sticky header with animation
78
-
79
- ### 2. Footer (`/templates/footer.hbs`)
80
- - Organization logos (WPA, CueSports International)
81
- - Sponsor information (Predator Group)
82
- - Quick links
83
- - Social media icons
84
- - Copyright information
85
-
86
- ### 3. Hero Section (`/templates/hero.hbs`)
87
- - Customizable per page
88
- - Background image overlay
89
- - Title and subtitle
90
- - CTA buttons
91
-
92
- ### 4. Card Component (`/templates/card.hbs`)
93
- - Reusable for players, news, schedule items
94
- - Image, title, description
95
- - Hover animations
96
-
97
- ## Animation Strategy (Framer Motion)
98
- - **Page Load**: Fade-in animations for hero sections
99
- - **Scroll**: Reveal animations for content sections
100
- - **Hover**: Scale and shadow effects on cards
101
- - **Navigation**: Smooth transitions between pages
102
- - **Gallery**: Lightbox effects and image transitions
103
-
104
- ## Implementation Order
105
- 1. ✅ Create plan.md
106
- 2. Create data.json with site data
107
- 3. Create Handlebars templates (nav, footer, hero, card)
108
- 4. Create global styles.css
109
- 5. Build index.html (Home)
110
- 6. Build about.html
111
- 7. Build schedule.html
112
- 8. Build players.html
113
- 9. Build results.html
114
- 10. Build gallery.html
115
- 11. Build contact.html
116
- 12. Add Framer Motion animations
117
- 13. Test responsive design
118
- 14. Final polish and optimization
119
-
120
- ## Key Features
121
- - Fully responsive design (mobile-first)
122
- - Smooth animations and transitions
123
- - Image optimization with Picsum
124
- - Accessible navigation
125
- - Clean, modern UI
126
- - Fast loading times
127
- - Cross-browser compatibility