@fuzdev/fuz_app 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +49 -0
  3. package/dist/actions/action_bridge.d.ts +65 -0
  4. package/dist/actions/action_bridge.d.ts.map +1 -0
  5. package/dist/actions/action_bridge.js +76 -0
  6. package/dist/actions/action_codegen.d.ts +97 -0
  7. package/dist/actions/action_codegen.d.ts.map +1 -0
  8. package/dist/actions/action_codegen.js +280 -0
  9. package/dist/actions/action_registry.d.ts +35 -0
  10. package/dist/actions/action_registry.d.ts.map +1 -0
  11. package/dist/actions/action_registry.js +83 -0
  12. package/dist/actions/action_spec.d.ts +169 -0
  13. package/dist/actions/action_spec.d.ts.map +1 -0
  14. package/dist/actions/action_spec.js +76 -0
  15. package/dist/auth/account_queries.d.ts +96 -0
  16. package/dist/auth/account_queries.d.ts.map +1 -0
  17. package/dist/auth/account_queries.js +172 -0
  18. package/dist/auth/account_routes.d.ts +86 -0
  19. package/dist/auth/account_routes.d.ts.map +1 -0
  20. package/dist/auth/account_routes.js +406 -0
  21. package/dist/auth/account_schema.d.ts +192 -0
  22. package/dist/auth/account_schema.d.ts.map +1 -0
  23. package/dist/auth/account_schema.js +105 -0
  24. package/dist/auth/admin_routes.d.ts +29 -0
  25. package/dist/auth/admin_routes.d.ts.map +1 -0
  26. package/dist/auth/admin_routes.js +193 -0
  27. package/dist/auth/api_token.d.ts +33 -0
  28. package/dist/auth/api_token.d.ts.map +1 -0
  29. package/dist/auth/api_token.js +36 -0
  30. package/dist/auth/api_token_queries.d.ts +80 -0
  31. package/dist/auth/api_token_queries.d.ts.map +1 -0
  32. package/dist/auth/api_token_queries.js +116 -0
  33. package/dist/auth/app_settings_queries.d.ts +33 -0
  34. package/dist/auth/app_settings_queries.d.ts.map +1 -0
  35. package/dist/auth/app_settings_queries.js +51 -0
  36. package/dist/auth/app_settings_routes.d.ts +27 -0
  37. package/dist/auth/app_settings_routes.d.ts.map +1 -0
  38. package/dist/auth/app_settings_routes.js +66 -0
  39. package/dist/auth/app_settings_schema.d.ts +35 -0
  40. package/dist/auth/app_settings_schema.d.ts.map +1 -0
  41. package/dist/auth/app_settings_schema.js +22 -0
  42. package/dist/auth/audit_log_queries.d.ts +90 -0
  43. package/dist/auth/audit_log_queries.d.ts.map +1 -0
  44. package/dist/auth/audit_log_queries.js +205 -0
  45. package/dist/auth/audit_log_routes.d.ts +33 -0
  46. package/dist/auth/audit_log_routes.d.ts.map +1 -0
  47. package/dist/auth/audit_log_routes.js +106 -0
  48. package/dist/auth/audit_log_schema.d.ts +259 -0
  49. package/dist/auth/audit_log_schema.d.ts.map +1 -0
  50. package/dist/auth/audit_log_schema.js +123 -0
  51. package/dist/auth/bearer_auth.d.ts +32 -0
  52. package/dist/auth/bearer_auth.d.ts.map +1 -0
  53. package/dist/auth/bearer_auth.js +90 -0
  54. package/dist/auth/bootstrap_account.d.ts +82 -0
  55. package/dist/auth/bootstrap_account.d.ts.map +1 -0
  56. package/dist/auth/bootstrap_account.js +97 -0
  57. package/dist/auth/bootstrap_routes.d.ts +74 -0
  58. package/dist/auth/bootstrap_routes.d.ts.map +1 -0
  59. package/dist/auth/bootstrap_routes.js +154 -0
  60. package/dist/auth/daemon_token.d.ts +49 -0
  61. package/dist/auth/daemon_token.d.ts.map +1 -0
  62. package/dist/auth/daemon_token.js +49 -0
  63. package/dist/auth/daemon_token_middleware.d.ts +93 -0
  64. package/dist/auth/daemon_token_middleware.d.ts.map +1 -0
  65. package/dist/auth/daemon_token_middleware.js +167 -0
  66. package/dist/auth/ddl.d.ts +27 -0
  67. package/dist/auth/ddl.d.ts.map +1 -0
  68. package/dist/auth/ddl.js +111 -0
  69. package/dist/auth/deps.d.ts +52 -0
  70. package/dist/auth/deps.d.ts.map +1 -0
  71. package/dist/auth/deps.js +10 -0
  72. package/dist/auth/invite_queries.d.ts +68 -0
  73. package/dist/auth/invite_queries.d.ts.map +1 -0
  74. package/dist/auth/invite_queries.js +105 -0
  75. package/dist/auth/invite_routes.d.ts +18 -0
  76. package/dist/auth/invite_routes.d.ts.map +1 -0
  77. package/dist/auth/invite_routes.js +129 -0
  78. package/dist/auth/invite_schema.d.ts +51 -0
  79. package/dist/auth/invite_schema.d.ts.map +1 -0
  80. package/dist/auth/invite_schema.js +25 -0
  81. package/dist/auth/keyring.d.ts +87 -0
  82. package/dist/auth/keyring.d.ts.map +1 -0
  83. package/dist/auth/keyring.js +142 -0
  84. package/dist/auth/middleware.d.ts +40 -0
  85. package/dist/auth/middleware.d.ts.map +1 -0
  86. package/dist/auth/middleware.js +64 -0
  87. package/dist/auth/migrations.d.ts +42 -0
  88. package/dist/auth/migrations.d.ts.map +1 -0
  89. package/dist/auth/migrations.js +79 -0
  90. package/dist/auth/password.d.ts +39 -0
  91. package/dist/auth/password.d.ts.map +1 -0
  92. package/dist/auth/password.js +25 -0
  93. package/dist/auth/password_argon2.d.ts +43 -0
  94. package/dist/auth/password_argon2.d.ts.map +1 -0
  95. package/dist/auth/password_argon2.js +76 -0
  96. package/dist/auth/permit_queries.d.ts +72 -0
  97. package/dist/auth/permit_queries.d.ts.map +1 -0
  98. package/dist/auth/permit_queries.js +116 -0
  99. package/dist/auth/request_context.d.ts +114 -0
  100. package/dist/auth/request_context.d.ts.map +1 -0
  101. package/dist/auth/request_context.js +176 -0
  102. package/dist/auth/require_keeper.d.ts +20 -0
  103. package/dist/auth/require_keeper.d.ts.map +1 -0
  104. package/dist/auth/require_keeper.js +35 -0
  105. package/dist/auth/role_schema.d.ts +69 -0
  106. package/dist/auth/role_schema.d.ts.map +1 -0
  107. package/dist/auth/role_schema.js +70 -0
  108. package/dist/auth/route_guards.d.ts +21 -0
  109. package/dist/auth/route_guards.d.ts.map +1 -0
  110. package/dist/auth/route_guards.js +32 -0
  111. package/dist/auth/session_cookie.d.ts +158 -0
  112. package/dist/auth/session_cookie.d.ts.map +1 -0
  113. package/dist/auth/session_cookie.js +135 -0
  114. package/dist/auth/session_lifecycle.d.ts +35 -0
  115. package/dist/auth/session_lifecycle.d.ts.map +1 -0
  116. package/dist/auth/session_lifecycle.js +27 -0
  117. package/dist/auth/session_middleware.d.ts +33 -0
  118. package/dist/auth/session_middleware.d.ts.map +1 -0
  119. package/dist/auth/session_middleware.js +62 -0
  120. package/dist/auth/session_queries.d.ts +135 -0
  121. package/dist/auth/session_queries.d.ts.map +1 -0
  122. package/dist/auth/session_queries.js +186 -0
  123. package/dist/auth/signup_routes.d.ts +32 -0
  124. package/dist/auth/signup_routes.d.ts.map +1 -0
  125. package/dist/auth/signup_routes.js +150 -0
  126. package/dist/cli/args.d.ts +48 -0
  127. package/dist/cli/args.d.ts.map +1 -0
  128. package/dist/cli/args.js +76 -0
  129. package/dist/cli/config.d.ts +48 -0
  130. package/dist/cli/config.d.ts.map +1 -0
  131. package/dist/cli/config.js +77 -0
  132. package/dist/cli/daemon.d.ts +82 -0
  133. package/dist/cli/daemon.d.ts.map +1 -0
  134. package/dist/cli/daemon.js +149 -0
  135. package/dist/cli/help.d.ts +85 -0
  136. package/dist/cli/help.d.ts.map +1 -0
  137. package/dist/cli/help.js +138 -0
  138. package/dist/cli/logger.d.ts +46 -0
  139. package/dist/cli/logger.d.ts.map +1 -0
  140. package/dist/cli/logger.js +48 -0
  141. package/dist/cli/util.d.ts +36 -0
  142. package/dist/cli/util.d.ts.map +1 -0
  143. package/dist/cli/util.js +50 -0
  144. package/dist/crypto.d.ts +13 -0
  145. package/dist/crypto.d.ts.map +1 -0
  146. package/dist/crypto.js +19 -0
  147. package/dist/db/assert_row.d.ts +18 -0
  148. package/dist/db/assert_row.d.ts.map +1 -0
  149. package/dist/db/assert_row.js +24 -0
  150. package/dist/db/create_db.d.ts +38 -0
  151. package/dist/db/create_db.d.ts.map +1 -0
  152. package/dist/db/create_db.js +57 -0
  153. package/dist/db/db.d.ts +97 -0
  154. package/dist/db/db.d.ts.map +1 -0
  155. package/dist/db/db.js +76 -0
  156. package/dist/db/db_pg.d.ts +21 -0
  157. package/dist/db/db_pg.d.ts.map +1 -0
  158. package/dist/db/db_pg.js +45 -0
  159. package/dist/db/db_pglite.d.ts +21 -0
  160. package/dist/db/db_pglite.d.ts.map +1 -0
  161. package/dist/db/db_pglite.js +28 -0
  162. package/dist/db/migrate.d.ts +67 -0
  163. package/dist/db/migrate.d.ts.map +1 -0
  164. package/dist/db/migrate.js +118 -0
  165. package/dist/db/pg_error.d.ts +16 -0
  166. package/dist/db/pg_error.d.ts.map +1 -0
  167. package/dist/db/pg_error.js +15 -0
  168. package/dist/db/query_deps.d.ts +14 -0
  169. package/dist/db/query_deps.d.ts.map +1 -0
  170. package/dist/db/query_deps.js +9 -0
  171. package/dist/db/sql_identifier.d.ts +27 -0
  172. package/dist/db/sql_identifier.d.ts.map +1 -0
  173. package/dist/db/sql_identifier.js +31 -0
  174. package/dist/db/status.d.ts +62 -0
  175. package/dist/db/status.d.ts.map +1 -0
  176. package/dist/db/status.js +116 -0
  177. package/dist/dev/setup.d.ts +159 -0
  178. package/dist/dev/setup.d.ts.map +1 -0
  179. package/dist/dev/setup.js +265 -0
  180. package/dist/env/dotenv.d.ts +25 -0
  181. package/dist/env/dotenv.d.ts.map +1 -0
  182. package/dist/env/dotenv.js +52 -0
  183. package/dist/env/load.d.ts +52 -0
  184. package/dist/env/load.d.ts.map +1 -0
  185. package/dist/env/load.js +79 -0
  186. package/dist/env/mask.d.ts +19 -0
  187. package/dist/env/mask.d.ts.map +1 -0
  188. package/dist/env/mask.js +26 -0
  189. package/dist/env/resolve.d.ts +126 -0
  190. package/dist/env/resolve.d.ts.map +1 -0
  191. package/dist/env/resolve.js +200 -0
  192. package/dist/hono_context.d.ts +48 -0
  193. package/dist/hono_context.d.ts.map +1 -0
  194. package/dist/hono_context.js +22 -0
  195. package/dist/http/common_routes.d.ts +52 -0
  196. package/dist/http/common_routes.d.ts.map +1 -0
  197. package/dist/http/common_routes.js +65 -0
  198. package/dist/http/db_routes.d.ts +57 -0
  199. package/dist/http/db_routes.d.ts.map +1 -0
  200. package/dist/http/db_routes.js +176 -0
  201. package/dist/http/error_schemas.d.ts +169 -0
  202. package/dist/http/error_schemas.d.ts.map +1 -0
  203. package/dist/http/error_schemas.js +178 -0
  204. package/dist/http/middleware_spec.d.ts +19 -0
  205. package/dist/http/middleware_spec.d.ts.map +1 -0
  206. package/dist/http/middleware_spec.js +9 -0
  207. package/dist/http/origin.d.ts +57 -0
  208. package/dist/http/origin.d.ts.map +1 -0
  209. package/dist/http/origin.js +207 -0
  210. package/dist/http/proxy.d.ts +112 -0
  211. package/dist/http/proxy.d.ts.map +1 -0
  212. package/dist/http/proxy.js +240 -0
  213. package/dist/http/route_spec.d.ts +197 -0
  214. package/dist/http/route_spec.d.ts.map +1 -0
  215. package/dist/http/route_spec.js +243 -0
  216. package/dist/http/schema_helpers.d.ts +64 -0
  217. package/dist/http/schema_helpers.d.ts.map +1 -0
  218. package/dist/http/schema_helpers.js +90 -0
  219. package/dist/http/surface.d.ts +132 -0
  220. package/dist/http/surface.d.ts.map +1 -0
  221. package/dist/http/surface.js +156 -0
  222. package/dist/http/surface_query.d.ts +77 -0
  223. package/dist/http/surface_query.d.ts.map +1 -0
  224. package/dist/http/surface_query.js +86 -0
  225. package/dist/rate_limiter.d.ts +94 -0
  226. package/dist/rate_limiter.d.ts.map +1 -0
  227. package/dist/rate_limiter.js +156 -0
  228. package/dist/realtime/sse.d.ts +80 -0
  229. package/dist/realtime/sse.d.ts.map +1 -0
  230. package/dist/realtime/sse.js +109 -0
  231. package/dist/realtime/sse_auth_guard.d.ts +93 -0
  232. package/dist/realtime/sse_auth_guard.d.ts.map +1 -0
  233. package/dist/realtime/sse_auth_guard.js +111 -0
  234. package/dist/realtime/subscriber_registry.d.ts +85 -0
  235. package/dist/realtime/subscriber_registry.d.ts.map +1 -0
  236. package/dist/realtime/subscriber_registry.js +108 -0
  237. package/dist/runtime/deno.d.ts +21 -0
  238. package/dist/runtime/deno.d.ts.map +1 -0
  239. package/dist/runtime/deno.js +83 -0
  240. package/dist/runtime/deps.d.ts +113 -0
  241. package/dist/runtime/deps.d.ts.map +1 -0
  242. package/dist/runtime/deps.js +10 -0
  243. package/dist/runtime/fs.d.ts +15 -0
  244. package/dist/runtime/fs.d.ts.map +1 -0
  245. package/dist/runtime/fs.js +17 -0
  246. package/dist/runtime/mock.d.ts +81 -0
  247. package/dist/runtime/mock.d.ts.map +1 -0
  248. package/dist/runtime/mock.js +195 -0
  249. package/dist/runtime/node.d.ts +17 -0
  250. package/dist/runtime/node.d.ts.map +1 -0
  251. package/dist/runtime/node.js +117 -0
  252. package/dist/schema_meta.d.ts +16 -0
  253. package/dist/schema_meta.d.ts.map +1 -0
  254. package/dist/schema_meta.js +9 -0
  255. package/dist/sensitivity.d.ts +15 -0
  256. package/dist/sensitivity.d.ts.map +1 -0
  257. package/dist/sensitivity.js +9 -0
  258. package/dist/server/app_backend.d.ts +74 -0
  259. package/dist/server/app_backend.d.ts.map +1 -0
  260. package/dist/server/app_backend.js +39 -0
  261. package/dist/server/app_server.d.ts +201 -0
  262. package/dist/server/app_server.d.ts.map +1 -0
  263. package/dist/server/app_server.js +266 -0
  264. package/dist/server/env.d.ts +68 -0
  265. package/dist/server/env.d.ts.map +1 -0
  266. package/dist/server/env.js +95 -0
  267. package/dist/server/startup.d.ts +22 -0
  268. package/dist/server/startup.d.ts.map +1 -0
  269. package/dist/server/startup.js +48 -0
  270. package/dist/server/static.d.ts +39 -0
  271. package/dist/server/static.d.ts.map +1 -0
  272. package/dist/server/static.js +38 -0
  273. package/dist/server/validate_nginx.d.ts +34 -0
  274. package/dist/server/validate_nginx.d.ts.map +1 -0
  275. package/dist/server/validate_nginx.js +118 -0
  276. package/dist/testing/CLAUDE.md +3 -0
  277. package/dist/testing/admin_integration.d.ts +45 -0
  278. package/dist/testing/admin_integration.d.ts.map +1 -0
  279. package/dist/testing/admin_integration.js +840 -0
  280. package/dist/testing/adversarial_404.d.ts +15 -0
  281. package/dist/testing/adversarial_404.d.ts.map +1 -0
  282. package/dist/testing/adversarial_404.js +118 -0
  283. package/dist/testing/adversarial_headers.d.ts +36 -0
  284. package/dist/testing/adversarial_headers.d.ts.map +1 -0
  285. package/dist/testing/adversarial_headers.js +128 -0
  286. package/dist/testing/adversarial_input.d.ts +56 -0
  287. package/dist/testing/adversarial_input.d.ts.map +1 -0
  288. package/dist/testing/adversarial_input.js +494 -0
  289. package/dist/testing/app_server.d.ts +169 -0
  290. package/dist/testing/app_server.d.ts.map +1 -0
  291. package/dist/testing/app_server.js +240 -0
  292. package/dist/testing/assert_dev_env.d.ts +10 -0
  293. package/dist/testing/assert_dev_env.d.ts.map +1 -0
  294. package/dist/testing/assert_dev_env.js +13 -0
  295. package/dist/testing/assertions.d.ts +61 -0
  296. package/dist/testing/assertions.d.ts.map +1 -0
  297. package/dist/testing/assertions.js +96 -0
  298. package/dist/testing/attack_surface.d.ts +63 -0
  299. package/dist/testing/attack_surface.d.ts.map +1 -0
  300. package/dist/testing/attack_surface.js +224 -0
  301. package/dist/testing/audit_completeness.d.ts +29 -0
  302. package/dist/testing/audit_completeness.d.ts.map +1 -0
  303. package/dist/testing/audit_completeness.js +410 -0
  304. package/dist/testing/auth_apps.d.ts +55 -0
  305. package/dist/testing/auth_apps.d.ts.map +1 -0
  306. package/dist/testing/auth_apps.js +122 -0
  307. package/dist/testing/data_exposure.d.ts +62 -0
  308. package/dist/testing/data_exposure.d.ts.map +1 -0
  309. package/dist/testing/data_exposure.js +297 -0
  310. package/dist/testing/db.d.ts +111 -0
  311. package/dist/testing/db.d.ts.map +1 -0
  312. package/dist/testing/db.js +258 -0
  313. package/dist/testing/entities.d.ts +21 -0
  314. package/dist/testing/entities.d.ts.map +1 -0
  315. package/dist/testing/entities.js +42 -0
  316. package/dist/testing/error_coverage.d.ts +78 -0
  317. package/dist/testing/error_coverage.d.ts.map +1 -0
  318. package/dist/testing/error_coverage.js +135 -0
  319. package/dist/testing/integration.d.ts +37 -0
  320. package/dist/testing/integration.d.ts.map +1 -0
  321. package/dist/testing/integration.js +1139 -0
  322. package/dist/testing/integration_helpers.d.ts +107 -0
  323. package/dist/testing/integration_helpers.d.ts.map +1 -0
  324. package/dist/testing/integration_helpers.js +246 -0
  325. package/dist/testing/middleware.d.ts +125 -0
  326. package/dist/testing/middleware.d.ts.map +1 -0
  327. package/dist/testing/middleware.js +210 -0
  328. package/dist/testing/rate_limiting.d.ts +43 -0
  329. package/dist/testing/rate_limiting.d.ts.map +1 -0
  330. package/dist/testing/rate_limiting.js +216 -0
  331. package/dist/testing/round_trip.d.ts +37 -0
  332. package/dist/testing/round_trip.d.ts.map +1 -0
  333. package/dist/testing/round_trip.js +128 -0
  334. package/dist/testing/schema_generators.d.ts +33 -0
  335. package/dist/testing/schema_generators.d.ts.map +1 -0
  336. package/dist/testing/schema_generators.js +137 -0
  337. package/dist/testing/standard.d.ts +49 -0
  338. package/dist/testing/standard.d.ts.map +1 -0
  339. package/dist/testing/standard.js +16 -0
  340. package/dist/testing/stubs.d.ts +96 -0
  341. package/dist/testing/stubs.d.ts.map +1 -0
  342. package/dist/testing/stubs.js +192 -0
  343. package/dist/testing/surface_invariants.d.ts +189 -0
  344. package/dist/testing/surface_invariants.d.ts.map +1 -0
  345. package/dist/testing/surface_invariants.js +450 -0
  346. package/dist/ui/AccountSessions.svelte +75 -0
  347. package/dist/ui/AccountSessions.svelte.d.ts +19 -0
  348. package/dist/ui/AccountSessions.svelte.d.ts.map +1 -0
  349. package/dist/ui/AdminAccounts.svelte +107 -0
  350. package/dist/ui/AdminAccounts.svelte.d.ts +19 -0
  351. package/dist/ui/AdminAccounts.svelte.d.ts.map +1 -0
  352. package/dist/ui/AdminAuditLog.svelte +144 -0
  353. package/dist/ui/AdminAuditLog.svelte.d.ts +4 -0
  354. package/dist/ui/AdminAuditLog.svelte.d.ts.map +1 -0
  355. package/dist/ui/AdminInvites.svelte +142 -0
  356. package/dist/ui/AdminInvites.svelte.d.ts +4 -0
  357. package/dist/ui/AdminInvites.svelte.d.ts.map +1 -0
  358. package/dist/ui/AdminOverview.svelte +337 -0
  359. package/dist/ui/AdminOverview.svelte.d.ts +4 -0
  360. package/dist/ui/AdminOverview.svelte.d.ts.map +1 -0
  361. package/dist/ui/AdminPermitHistory.svelte +61 -0
  362. package/dist/ui/AdminPermitHistory.svelte.d.ts +19 -0
  363. package/dist/ui/AdminPermitHistory.svelte.d.ts.map +1 -0
  364. package/dist/ui/AdminSessions.svelte +85 -0
  365. package/dist/ui/AdminSessions.svelte.d.ts +19 -0
  366. package/dist/ui/AdminSessions.svelte.d.ts.map +1 -0
  367. package/dist/ui/AdminSettings.svelte +32 -0
  368. package/dist/ui/AdminSettings.svelte.d.ts +19 -0
  369. package/dist/ui/AdminSettings.svelte.d.ts.map +1 -0
  370. package/dist/ui/AdminSurface.svelte +42 -0
  371. package/dist/ui/AdminSurface.svelte.d.ts +4 -0
  372. package/dist/ui/AdminSurface.svelte.d.ts.map +1 -0
  373. package/dist/ui/AppShell.svelte +93 -0
  374. package/dist/ui/AppShell.svelte.d.ts +20 -0
  375. package/dist/ui/AppShell.svelte.d.ts.map +1 -0
  376. package/dist/ui/BootstrapForm.svelte +105 -0
  377. package/dist/ui/BootstrapForm.svelte.d.ts +4 -0
  378. package/dist/ui/BootstrapForm.svelte.d.ts.map +1 -0
  379. package/dist/ui/ColumnLayout.svelte +46 -0
  380. package/dist/ui/ColumnLayout.svelte.d.ts +11 -0
  381. package/dist/ui/ColumnLayout.svelte.d.ts.map +1 -0
  382. package/dist/ui/ConfirmButton.svelte +125 -0
  383. package/dist/ui/ConfirmButton.svelte.d.ts +54 -0
  384. package/dist/ui/ConfirmButton.svelte.d.ts.map +1 -0
  385. package/dist/ui/Datatable.svelte +185 -0
  386. package/dist/ui/Datatable.svelte.d.ts +35 -0
  387. package/dist/ui/Datatable.svelte.d.ts.map +1 -0
  388. package/dist/ui/LoginForm.svelte +82 -0
  389. package/dist/ui/LoginForm.svelte.d.ts +8 -0
  390. package/dist/ui/LoginForm.svelte.d.ts.map +1 -0
  391. package/dist/ui/LogoutButton.svelte +36 -0
  392. package/dist/ui/LogoutButton.svelte.d.ts +10 -0
  393. package/dist/ui/LogoutButton.svelte.d.ts.map +1 -0
  394. package/dist/ui/MenuLink.svelte +35 -0
  395. package/dist/ui/MenuLink.svelte.d.ts +12 -0
  396. package/dist/ui/MenuLink.svelte.d.ts.map +1 -0
  397. package/dist/ui/OpenSignupToggle.svelte +36 -0
  398. package/dist/ui/OpenSignupToggle.svelte.d.ts +19 -0
  399. package/dist/ui/OpenSignupToggle.svelte.d.ts.map +1 -0
  400. package/dist/ui/PopoverButton.svelte +136 -0
  401. package/dist/ui/PopoverButton.svelte.d.ts +63 -0
  402. package/dist/ui/PopoverButton.svelte.d.ts.map +1 -0
  403. package/dist/ui/SignupForm.svelte +117 -0
  404. package/dist/ui/SignupForm.svelte.d.ts +7 -0
  405. package/dist/ui/SignupForm.svelte.d.ts.map +1 -0
  406. package/dist/ui/SurfaceExplorer.svelte +287 -0
  407. package/dist/ui/SurfaceExplorer.svelte.d.ts +8 -0
  408. package/dist/ui/SurfaceExplorer.svelte.d.ts.map +1 -0
  409. package/dist/ui/account_sessions_state.svelte.d.ts +15 -0
  410. package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -0
  411. package/dist/ui/account_sessions_state.svelte.js +45 -0
  412. package/dist/ui/admin_accounts_state.svelte.d.ts +19 -0
  413. package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -0
  414. package/dist/ui/admin_accounts_state.svelte.js +65 -0
  415. package/dist/ui/admin_invites_state.svelte.d.ts +19 -0
  416. package/dist/ui/admin_invites_state.svelte.d.ts.map +1 -0
  417. package/dist/ui/admin_invites_state.svelte.js +71 -0
  418. package/dist/ui/admin_sessions_state.svelte.d.ts +18 -0
  419. package/dist/ui/admin_sessions_state.svelte.d.ts.map +1 -0
  420. package/dist/ui/admin_sessions_state.svelte.js +62 -0
  421. package/dist/ui/app_settings_state.svelte.d.ts +14 -0
  422. package/dist/ui/app_settings_state.svelte.d.ts.map +1 -0
  423. package/dist/ui/app_settings_state.svelte.js +44 -0
  424. package/dist/ui/audit_log_state.svelte.d.ts +40 -0
  425. package/dist/ui/audit_log_state.svelte.d.ts.map +1 -0
  426. package/dist/ui/audit_log_state.svelte.js +153 -0
  427. package/dist/ui/auth_state.svelte.d.ts +85 -0
  428. package/dist/ui/auth_state.svelte.d.ts.map +1 -0
  429. package/dist/ui/auth_state.svelte.js +238 -0
  430. package/dist/ui/datatable.d.ts +25 -0
  431. package/dist/ui/datatable.d.ts.map +1 -0
  432. package/dist/ui/datatable.js +9 -0
  433. package/dist/ui/enter_advance.d.ts +13 -0
  434. package/dist/ui/enter_advance.d.ts.map +1 -0
  435. package/dist/ui/enter_advance.js +30 -0
  436. package/dist/ui/loadable.svelte.d.ts +55 -0
  437. package/dist/ui/loadable.svelte.d.ts.map +1 -0
  438. package/dist/ui/loadable.svelte.js +75 -0
  439. package/dist/ui/popover.svelte.d.ts +137 -0
  440. package/dist/ui/popover.svelte.d.ts.map +1 -0
  441. package/dist/ui/popover.svelte.js +288 -0
  442. package/dist/ui/position_helpers.d.ts +27 -0
  443. package/dist/ui/position_helpers.d.ts.map +1 -0
  444. package/dist/ui/position_helpers.js +81 -0
  445. package/dist/ui/sidebar_state.svelte.d.ts +30 -0
  446. package/dist/ui/sidebar_state.svelte.d.ts.map +1 -0
  447. package/dist/ui/sidebar_state.svelte.js +39 -0
  448. package/dist/ui/table_state.svelte.d.ts +63 -0
  449. package/dist/ui/table_state.svelte.d.ts.map +1 -0
  450. package/dist/ui/table_state.svelte.js +117 -0
  451. package/dist/ui/ui_fetch.d.ts +29 -0
  452. package/dist/ui/ui_fetch.d.ts.map +1 -0
  453. package/dist/ui/ui_fetch.js +37 -0
  454. package/dist/ui/ui_format.d.ts +63 -0
  455. package/dist/ui/ui_format.d.ts.map +1 -0
  456. package/dist/ui/ui_format.js +196 -0
  457. package/package.json +121 -0
@@ -0,0 +1,35 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type DatatableColumn } from './datatable.js';
3
+ declare function $$render<T extends Record<string, any> = Record<string, any>>(): {
4
+ props: import("svelte/elements").HTMLAttributes<HTMLDivElement> & {
5
+ columns: Array<DatatableColumn<T>>;
6
+ rows: Array<T>;
7
+ row_key?: string & keyof T;
8
+ height?: string;
9
+ header?: Snippet<[column: DatatableColumn<T>]>;
10
+ cell?: Snippet<[column: DatatableColumn<T>, row: T, value: T[keyof T]]>;
11
+ empty?: Snippet;
12
+ };
13
+ exports: {};
14
+ bindings: "";
15
+ slots: {};
16
+ events: {};
17
+ };
18
+ declare class __sveltets_Render<T extends Record<string, any> = Record<string, any>> {
19
+ props(): ReturnType<typeof $$render<T>>['props'];
20
+ events(): ReturnType<typeof $$render<T>>['events'];
21
+ slots(): ReturnType<typeof $$render<T>>['slots'];
22
+ bindings(): "";
23
+ exports(): {};
24
+ }
25
+ interface $$IsomorphicComponent {
26
+ new <T extends Record<string, any> = Record<string, any>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
27
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
28
+ } & ReturnType<__sveltets_Render<T>['exports']>;
29
+ <T extends Record<string, any> = Record<string, any>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
30
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
31
+ }
32
+ declare const Datatable: $$IsomorphicComponent;
33
+ type Datatable<T extends Record<string, any> = Record<string, any>> = InstanceType<typeof Datatable<T>>;
34
+ export default Datatable;
35
+ //# sourceMappingURL=Datatable.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Datatable.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/Datatable.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAGL,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC;AAEzB,iBAAS,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;;iBAO1D,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;cAC5B,KAAK,CAAC,CAAC,CAAC;kBACJ,MAAM,GAAG,MAAM,CAAC;iBACjB,MAAM;iBACN,OAAO,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;eACvC,OAAO,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC/D,OAAO;;;;;;EAoGwG;AACzH,cAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACvE,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,MAAM,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClD,KAAK,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChD,QAAQ;IACR,OAAO;CACV;AAED,UAAU,qBAAqB;IAC3B,KAAK,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9a,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7K,YAAY,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;CACjE;AACD,QAAA,MAAM,SAAS,EAAE,qBAAmC,CAAC;AACnC,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1G,eAAe,SAAS,CAAC"}
@@ -0,0 +1,82 @@
1
+ <script lang="ts">
2
+ import {goto} from '$app/navigation';
3
+ import {resolve} from '$app/paths';
4
+ import PendingButton from '@fuzdev/fuz_ui/PendingButton.svelte';
5
+ import {autofocus} from '@fuzdev/fuz_ui/autofocus.svelte.js';
6
+
7
+ import {auth_state_context} from './auth_state.svelte.js';
8
+ import {enter_advance} from './enter_advance.js';
9
+
10
+ const {
11
+ username_label = 'username or email',
12
+ redirect_on_login = resolve('/account' as any),
13
+ }: {
14
+ username_label?: string;
15
+ redirect_on_login?: string;
16
+ } = $props();
17
+
18
+ const auth_state = auth_state_context.get();
19
+
20
+ let username = $state('');
21
+ let password = $state('');
22
+
23
+ const handle_login = async (): Promise<void> => {
24
+ const u = username.trim();
25
+ const p = password;
26
+ if (u && p) {
27
+ const success = await auth_state.login(u, p);
28
+ if (success) {
29
+ username = '';
30
+ password = '';
31
+ await goto(redirect_on_login);
32
+ }
33
+ }
34
+ };
35
+ </script>
36
+
37
+ <form
38
+ class="width_atmost_md"
39
+ oninput={() => {
40
+ auth_state.verify_error = null;
41
+ }}
42
+ onsubmit={(e) => {
43
+ e.preventDefault();
44
+ void handle_login();
45
+ }}
46
+ {@attach enter_advance()}
47
+ >
48
+ <label class="display:block mb_sm">
49
+ <span class="text_50 font_size_sm">{username_label}</span>
50
+ <input
51
+ type="text"
52
+ bind:value={username}
53
+ placeholder={username_label}
54
+ autocomplete="username"
55
+ disabled={auth_state.verifying}
56
+ {@attach autofocus()}
57
+ />
58
+ </label>
59
+ <label class="display:block mb_sm">
60
+ <span class="text_50 font_size_sm">password</span>
61
+ <input
62
+ type="password"
63
+ bind:value={password}
64
+ placeholder="password"
65
+ autocomplete="current-password"
66
+ disabled={auth_state.verifying}
67
+ />
68
+ </label>
69
+ <div class="row gap_sm">
70
+ <PendingButton
71
+ pending={auth_state.verifying}
72
+ disabled={!username.trim() || !password}
73
+ onclick={handle_login}
74
+ class={auth_state.verify_error ? 'color_c' : ''}
75
+ >
76
+ log in
77
+ </PendingButton>
78
+ </div>
79
+ {#if auth_state.verify_error}
80
+ <p class="color_c_50 font_size_sm mt_xs mb_0">{auth_state.verify_error}</p>
81
+ {/if}
82
+ </form>
@@ -0,0 +1,8 @@
1
+ type $$ComponentProps = {
2
+ username_label?: string;
3
+ redirect_on_login?: string;
4
+ };
5
+ declare const LoginForm: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type LoginForm = ReturnType<typeof LoginForm>;
7
+ export default LoginForm;
8
+ //# sourceMappingURL=LoginForm.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoginForm.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/LoginForm.svelte"],"names":[],"mappings":"AAWC,KAAK,gBAAgB,GAAI;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AA4DH,QAAA,MAAM,SAAS,sDAAwC,CAAC;AACxD,KAAK,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;AAC9C,eAAe,SAAS,CAAC"}
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import type {ComponentProps, Snippet} from 'svelte';
3
+ import PendingButton from '@fuzdev/fuz_ui/PendingButton.svelte';
4
+
5
+ import {auth_state_context} from './auth_state.svelte.js';
6
+
7
+ const {
8
+ onclick,
9
+ children,
10
+ ...rest
11
+ }: Omit<ComponentProps<typeof PendingButton>, 'pending' | 'onclick' | 'children'> & {
12
+ onclick?: ComponentProps<typeof PendingButton>['onclick'];
13
+ children?: Snippet;
14
+ } = $props();
15
+
16
+ const auth_state = auth_state_context.get();
17
+
18
+ let pending = $state(false);
19
+ </script>
20
+
21
+ <PendingButton
22
+ {...rest}
23
+ {pending}
24
+ onclick={async (e) => {
25
+ onclick?.(e);
26
+ if (e.defaultPrevented) return;
27
+ pending = true;
28
+ try {
29
+ await auth_state.logout();
30
+ } finally {
31
+ pending = false;
32
+ }
33
+ }}
34
+ >
35
+ {#if children}{@render children()}{:else}log out{/if}
36
+ </PendingButton>
@@ -0,0 +1,10 @@
1
+ import type { ComponentProps, Snippet } from 'svelte';
2
+ import PendingButton from '@fuzdev/fuz_ui/PendingButton.svelte';
3
+ type $$ComponentProps = Omit<ComponentProps<typeof PendingButton>, 'pending' | 'onclick' | 'children'> & {
4
+ onclick?: ComponentProps<typeof PendingButton>['onclick'];
5
+ children?: Snippet;
6
+ };
7
+ declare const LogoutButton: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type LogoutButton = ReturnType<typeof LogoutButton>;
9
+ export default LogoutButton;
10
+ //# sourceMappingURL=LogoutButton.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoutButton.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/LogoutButton.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpD,OAAO,aAAa,MAAM,qCAAqC,CAAC;AAI/D,KAAK,gBAAgB,GAAI,IAAI,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,GAAG;IACzG,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAiCH,QAAA,MAAM,YAAY,sDAAwC,CAAC;AAC3D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,eAAe,YAAY,CAAC"}
@@ -0,0 +1,35 @@
1
+ <script lang="ts">
2
+ import type {Snippet} from 'svelte';
3
+ import type {SvelteHTMLElements} from 'svelte/elements';
4
+ import {page} from '$app/state';
5
+ import {resolve} from '$app/paths';
6
+ import type {OmitStrict} from '@fuzdev/fuz_util/types.js';
7
+
8
+ const {
9
+ path,
10
+ highlighted,
11
+ children,
12
+ ...rest
13
+ }: OmitStrict<SvelteHTMLElements['a'], 'href' | 'children'> & {
14
+ path: string;
15
+ highlighted?: boolean;
16
+ children?: Snippet;
17
+ } = $props();
18
+
19
+ const href = $derived(resolve(path as any));
20
+ const selected = $derived(href === page.url.pathname);
21
+ const is_highlighted = $derived(
22
+ highlighted ?? (page.url.pathname.startsWith(href + '/') && !selected),
23
+ );
24
+ </script>
25
+
26
+ <!-- eslint-disable-next-line svelte/no-navigation-without-resolve -->
27
+ <a {href} class:selected class:highlighted={is_highlighted} {...rest}>
28
+ {@render children?.()}
29
+ </a>
30
+
31
+ <style>
32
+ .highlighted {
33
+ background-color: var(--fg_10);
34
+ }
35
+ </style>
@@ -0,0 +1,12 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { SvelteHTMLElements } from 'svelte/elements';
3
+ import type { OmitStrict } from '@fuzdev/fuz_util/types.js';
4
+ type $$ComponentProps = OmitStrict<SvelteHTMLElements['a'], 'href' | 'children'> & {
5
+ path: string;
6
+ highlighted?: boolean;
7
+ children?: Snippet;
8
+ };
9
+ declare const MenuLink: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type MenuLink = ReturnType<typeof MenuLink>;
11
+ export default MenuLink;
12
+ //# sourceMappingURL=MenuLink.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuLink.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/MenuLink.svelte"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGxD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAEzD,KAAK,gBAAgB,GAAI,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA+BH,QAAA,MAAM,QAAQ,sDAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import {AppSettingsState} from './app_settings_state.svelte.js';
3
+
4
+ const app_settings = new AppSettingsState();
5
+
6
+ void app_settings.fetch();
7
+ </script>
8
+
9
+ <div class="open_signup_toggle">
10
+ {#if app_settings.loading}
11
+ <p class="text_50">loading settings...</p>
12
+ {:else if app_settings.settings}
13
+ <label class="row">
14
+ <input
15
+ type="checkbox"
16
+ class="mr_lg"
17
+ checked={app_settings.settings.open_signup}
18
+ disabled={app_settings.updating}
19
+ onchange={() => app_settings.update_open_signup(!app_settings.settings!.open_signup)}
20
+ />
21
+ <div>
22
+ <div>open signup</div>
23
+ <div class="text_60 font_size_sm">
24
+ {#if app_settings.settings.open_signup}
25
+ anyone can create an account without an invite
26
+ {:else}
27
+ account creation requires an invite
28
+ {/if}
29
+ </div>
30
+ </div>
31
+ </label>
32
+ {/if}
33
+ {#if app_settings.error}
34
+ <p class="color_c_50">{app_settings.error}</p>
35
+ {/if}
36
+ </div>
@@ -0,0 +1,19 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const OpenSignupToggle: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type OpenSignupToggle = InstanceType<typeof OpenSignupToggle>;
18
+ export default OpenSignupToggle;
19
+ //# sourceMappingURL=OpenSignupToggle.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenSignupToggle.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/OpenSignupToggle.svelte"],"names":[],"mappings":"AAkCA,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IACtG,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,gBAAgB;;kBAA+E,CAAC;AACpF,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,136 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Button + popover composition for the common toggle-on-click pattern.
4
+ *
5
+ * Wraps a `Popover` instance with a `<button>`, a positioned content area,
6
+ * and scale transitions. Spreads extra props onto the button element.
7
+ * Pass `popover_content` for the popover body, and either `children` for
8
+ * simple button content or `button` for a fully custom trigger —
9
+ * both receive the `Popover` instance.
10
+ *
11
+ * @example
12
+ * ```svelte
13
+ * <PopoverButton position="bottom" align="center">
14
+ * {#snippet popover_content(popover)}
15
+ * <div class="box p_md">
16
+ * <button type="button" onclick={() => popover.hide()}>close</button>
17
+ * </div>
18
+ * {/snippet}
19
+ * open menu
20
+ * </PopoverButton>
21
+ * ```
22
+ *
23
+ * @example
24
+ * ```svelte
25
+ * <!-- custom trigger via the `button` snippet -->
26
+ * <PopoverButton position="right" align="start" disable_outside_click>
27
+ * {#snippet popover_content(popover)}
28
+ * <form onsubmit={() => popover.hide()}>
29
+ * <input name="search" />
30
+ * <button type="submit">go</button>
31
+ * </form>
32
+ * {/snippet}
33
+ * {#snippet button(popover)}
34
+ * <button type="button" class="icon_button" {@attach popover.trigger()}>
35
+ * search
36
+ * </button>
37
+ * {/snippet}
38
+ * </PopoverButton>
39
+ * ```
40
+ *
41
+ * @see `ConfirmButton` for a higher-level wrapper with confirmation semantics
42
+ *
43
+ * @module
44
+ */
45
+
46
+ import type {SvelteHTMLElements} from 'svelte/elements';
47
+ import type {Snippet} from 'svelte';
48
+ import {scale} from 'svelte/transition';
49
+ import type {OmitStrict} from '@fuzdev/fuz_util/types.js';
50
+
51
+ import {Popover} from './popover.svelte.js';
52
+ import type {Position, Alignment} from './position_helpers.js';
53
+
54
+ const {
55
+ position = 'bottom',
56
+ align = 'center',
57
+ disable_outside_click = false,
58
+ popover_class,
59
+ popover_attrs,
60
+ popover_content,
61
+ popover_container_attrs,
62
+ button,
63
+ children,
64
+ ...rest
65
+ }: OmitStrict<SvelteHTMLElements['button'], 'children'> & {
66
+ position?: Position | undefined;
67
+ align?: Alignment | undefined;
68
+ disable_outside_click?: boolean | undefined;
69
+ popover_class?: string | undefined;
70
+ popover_attrs?: SvelteHTMLElements['div'] | undefined;
71
+ popover_content: Snippet<[popover: Popover]>;
72
+ popover_container_attrs?: SvelteHTMLElements['div'] | undefined;
73
+ button?: Snippet<[popover: Popover]> | undefined;
74
+ children?: Snippet<[popover: Popover]> | undefined;
75
+ } = $props();
76
+
77
+ // TODO @many type union instead of this pattern?
78
+ $effect(() => {
79
+ if (children && button) {
80
+ console.error('PopoverButton has both children and button defined - button takes precedence');
81
+ }
82
+ if (!children && !button) {
83
+ console.error('PopoverButton requires either children or a button snippet prop');
84
+ }
85
+ });
86
+
87
+ // Create a popover instance
88
+ const popover = new Popover();
89
+
90
+ // TODO refactor, try to remove
91
+ // This hides the popover when the button is disabled
92
+ $effect.pre(() => {
93
+ if (rest.disabled) {
94
+ popover.hide();
95
+ }
96
+ });
97
+ </script>
98
+
99
+ <!-- TODO these flex values fix some layout cases so that the container is laid out like the button, but this is a partial solution -->
100
+ <div
101
+ {...popover_container_attrs}
102
+ class="position:relative {popover_container_attrs?.class}"
103
+ {@attach popover.container}
104
+ >
105
+ {#if button}
106
+ {@render button(popover)}
107
+ {:else}
108
+ <button
109
+ type="button"
110
+ {@attach popover.trigger({
111
+ position,
112
+ align,
113
+ disable_outside_click,
114
+ })}
115
+ {...rest}
116
+ >
117
+ {@render children?.(popover)}
118
+ </button>
119
+ {/if}
120
+
121
+ {#if popover.visible}
122
+ <div
123
+ {@attach popover.content({
124
+ position,
125
+ align,
126
+ disable_outside_click,
127
+ popover_class,
128
+ })}
129
+ in:scale={{duration: 80}}
130
+ out:scale={{duration: 200}}
131
+ {...popover_attrs}
132
+ >
133
+ {@render popover_content(popover)}
134
+ </div>
135
+ {/if}
136
+ </div>
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Button + popover composition for the common toggle-on-click pattern.
3
+ *
4
+ * Wraps a `Popover` instance with a `<button>`, a positioned content area,
5
+ * and scale transitions. Spreads extra props onto the button element.
6
+ * Pass `popover_content` for the popover body, and either `children` for
7
+ * simple button content or `button` for a fully custom trigger —
8
+ * both receive the `Popover` instance.
9
+ *
10
+ * @example
11
+ * ```svelte
12
+ * <PopoverButton position="bottom" align="center">
13
+ * {#snippet popover_content(popover)}
14
+ * <div class="box p_md">
15
+ * <button type="button" onclick={() => popover.hide()}>close</button>
16
+ * </div>
17
+ * {/snippet}
18
+ * open menu
19
+ * </PopoverButton>
20
+ * ```
21
+ *
22
+ * @example
23
+ * ```svelte
24
+ * <!-- custom trigger via the `button` snippet -->
25
+ * <PopoverButton position="right" align="start" disable_outside_click>
26
+ * {#snippet popover_content(popover)}
27
+ * <form onsubmit={() => popover.hide()}>
28
+ * <input name="search" />
29
+ * <button type="submit">go</button>
30
+ * </form>
31
+ * {/snippet}
32
+ * {#snippet button(popover)}
33
+ * <button type="button" class="icon_button" {@attach popover.trigger()}>
34
+ * search
35
+ * </button>
36
+ * {/snippet}
37
+ * </PopoverButton>
38
+ * ```
39
+ *
40
+ * @see `ConfirmButton` for a higher-level wrapper with confirmation semantics
41
+ *
42
+ * @module
43
+ */
44
+ import type { SvelteHTMLElements } from 'svelte/elements';
45
+ import type { Snippet } from 'svelte';
46
+ import type { OmitStrict } from '@fuzdev/fuz_util/types.js';
47
+ import { Popover } from './popover.svelte.js';
48
+ import type { Position, Alignment } from './position_helpers.js';
49
+ type $$ComponentProps = OmitStrict<SvelteHTMLElements['button'], 'children'> & {
50
+ position?: Position | undefined;
51
+ align?: Alignment | undefined;
52
+ disable_outside_click?: boolean | undefined;
53
+ popover_class?: string | undefined;
54
+ popover_attrs?: SvelteHTMLElements['div'] | undefined;
55
+ popover_content: Snippet<[popover: Popover]>;
56
+ popover_container_attrs?: SvelteHTMLElements['div'] | undefined;
57
+ button?: Snippet<[popover: Popover]> | undefined;
58
+ children?: Snippet<[popover: Popover]> | undefined;
59
+ };
60
+ declare const PopoverButton: import("svelte").Component<$$ComponentProps, {}, "">;
61
+ type PopoverButton = ReturnType<typeof PopoverButton>;
62
+ export default PopoverButton;
63
+ //# sourceMappingURL=PopoverButton.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PopoverButton.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/PopoverButton.svelte"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CI;AACJ,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAEpC,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAE9D,KAAK,gBAAgB,GAAI,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,GAAG;IAC/E,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,aAAa,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACtD,eAAe,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;CACnD,CAAC;AA2EH,QAAA,MAAM,aAAa,sDAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,117 @@
1
+ <script lang="ts">
2
+ import {goto} from '$app/navigation';
3
+ import {resolve} from '$app/paths';
4
+ import PendingButton from '@fuzdev/fuz_ui/PendingButton.svelte';
5
+ import {autofocus} from '@fuzdev/fuz_ui/autofocus.svelte.js';
6
+
7
+ import {Username} from '../auth/account_schema.js';
8
+ import {PASSWORD_LENGTH_MIN} from '../auth/password.js';
9
+ import {auth_state_context} from './auth_state.svelte.js';
10
+ import {enter_advance} from './enter_advance.js';
11
+
12
+ const {
13
+ redirect_on_signup = resolve('/account' as any),
14
+ }: {
15
+ redirect_on_signup?: string;
16
+ } = $props();
17
+
18
+ const auth_state = auth_state_context.get();
19
+
20
+ let username = $state('');
21
+ let email = $state('');
22
+ let password = $state('');
23
+ let password_confirm = $state('');
24
+
25
+ const username_valid = $derived(Username.safeParse(username).success);
26
+ const passwords_match = $derived(password === password_confirm);
27
+ const can_submit = $derived(
28
+ username.trim() &&
29
+ username_valid &&
30
+ password.length >= PASSWORD_LENGTH_MIN &&
31
+ passwords_match &&
32
+ !auth_state.verifying,
33
+ );
34
+
35
+ const handle_signup = async (): Promise<void> => {
36
+ if (!can_submit) return;
37
+ const success = await auth_state.signup(username.trim(), password, email.trim() || undefined);
38
+ if (success) {
39
+ await goto(redirect_on_signup);
40
+ }
41
+ };
42
+ </script>
43
+
44
+ <form
45
+ class="width_atmost_md"
46
+ oninput={() => {
47
+ auth_state.verify_error = null;
48
+ }}
49
+ onsubmit={(e) => {
50
+ e.preventDefault();
51
+ void handle_signup();
52
+ }}
53
+ {@attach enter_advance()}
54
+ >
55
+ <label class="display:block mb_sm">
56
+ <span class="text_50 font_size_sm">username</span>
57
+ <input
58
+ type="text"
59
+ bind:value={username}
60
+ placeholder="username"
61
+ autocomplete="username"
62
+ disabled={auth_state.verifying}
63
+ {@attach autofocus()}
64
+ />
65
+ </label>
66
+ {#if username && !username_valid}
67
+ <p class="color_c_50 font_size_sm mt_0 mb_xs">
68
+ 3-39 chars, starts with a letter, ends with letter/number, middle allows dash/underscore
69
+ </p>
70
+ {/if}
71
+ <label class="display:block mb_sm">
72
+ <span class="text_50 font_size_sm">email (optional)</span>
73
+ <input
74
+ type="email"
75
+ bind:value={email}
76
+ placeholder="email"
77
+ autocomplete="email"
78
+ disabled={auth_state.verifying}
79
+ />
80
+ </label>
81
+ <label class="display:block mb_sm">
82
+ <span class="text_50 font_size_sm">password (min {PASSWORD_LENGTH_MIN} characters)</span>
83
+ <input
84
+ type="password"
85
+ bind:value={password}
86
+ placeholder="password"
87
+ autocomplete="new-password"
88
+ disabled={auth_state.verifying}
89
+ />
90
+ </label>
91
+ <label class="display:block mb_sm">
92
+ <span class="text_50 font_size_sm">confirm password</span>
93
+ <input
94
+ type="password"
95
+ bind:value={password_confirm}
96
+ placeholder="confirm password"
97
+ autocomplete="new-password"
98
+ disabled={auth_state.verifying}
99
+ />
100
+ </label>
101
+ {#if password && password_confirm && !passwords_match}
102
+ <p class="color_c_50 font_size_sm mt_0 mb_xs">passwords do not match</p>
103
+ {/if}
104
+ <div class="row gap_sm">
105
+ <PendingButton
106
+ pending={auth_state.verifying}
107
+ disabled={!can_submit}
108
+ onclick={handle_signup}
109
+ class={auth_state.verify_error ? 'color_c' : ''}
110
+ >
111
+ sign up
112
+ </PendingButton>
113
+ </div>
114
+ {#if auth_state.verify_error}
115
+ <p class="color_c_50 font_size_sm mt_xs mb_0">{auth_state.verify_error}</p>
116
+ {/if}
117
+ </form>
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ redirect_on_signup?: string;
3
+ };
4
+ declare const SignupForm: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type SignupForm = ReturnType<typeof SignupForm>;
6
+ export default SignupForm;
7
+ //# sourceMappingURL=SignupForm.svelte.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignupForm.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/SignupForm.svelte"],"names":[],"mappings":"AAaC,KAAK,gBAAgB,GAAI;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAoFH,QAAA,MAAM,UAAU,sDAAwC,CAAC;AACzD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAChD,eAAe,UAAU,CAAC"}