@tinyrack/issuary-server 0.27.0 → 0.29.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 (2048) hide show
  1. package/dist/emails/components/email-layout.d.ts.map +1 -1
  2. package/dist/emails/components/email-layout.js +1 -2
  3. package/dist/emails/components/email-layout.js.map +1 -1
  4. package/dist/emails/i18n/index.d.ts.map +1 -1
  5. package/dist/emails/i18n/index.js +1 -1
  6. package/dist/emails/render.d.ts.map +1 -1
  7. package/dist/emails/render.js +4 -4
  8. package/dist/emails/render.js.map +1 -1
  9. package/dist/emails/templates/password-reset.d.ts.map +1 -1
  10. package/dist/emails/templates/password-reset.js +3 -3
  11. package/dist/emails/templates/password-reset.js.map +1 -1
  12. package/dist/emails/templates/verification.d.ts.map +1 -1
  13. package/dist/emails/templates/verification.js +3 -3
  14. package/dist/emails/templates/verification.js.map +1 -1
  15. package/dist/entities/background-job.entity.d.ts +42 -42
  16. package/dist/entities/background-job.entity.d.ts.map +1 -1
  17. package/dist/entities/background-job.entity.js +2 -2
  18. package/dist/entities/base.entity.d.ts +8 -8
  19. package/dist/entities/base.entity.d.ts.map +1 -1
  20. package/dist/entities/bootstrap-state.entity.d.ts +15 -15
  21. package/dist/entities/bootstrap-state.entity.d.ts.map +1 -1
  22. package/dist/entities/bootstrap-state.entity.js +1 -1
  23. package/dist/entities/email-verification.entity.d.ts +27 -27
  24. package/dist/entities/email-verification.entity.d.ts.map +1 -1
  25. package/dist/entities/email-verification.entity.js +3 -3
  26. package/dist/entities/jwt-key.entity.d.ts +43 -43
  27. package/dist/entities/jwt-key.entity.d.ts.map +1 -1
  28. package/dist/entities/jwt-key.entity.js +2 -2
  29. package/dist/entities/oauth-client.entity.d.ts +657 -639
  30. package/dist/entities/oauth-client.entity.d.ts.map +1 -1
  31. package/dist/entities/oauth-client.entity.js +18 -6
  32. package/dist/entities/oauth-client.entity.js.map +1 -1
  33. package/dist/entities/oauth-code.entity.d.ts +659 -641
  34. package/dist/entities/oauth-code.entity.d.ts.map +1 -1
  35. package/dist/entities/oauth-code.entity.js +4 -4
  36. package/dist/entities/oauth-device-code.entity.d.ts +657 -639
  37. package/dist/entities/oauth-device-code.entity.d.ts.map +1 -1
  38. package/dist/entities/oauth-device-code.entity.js +4 -4
  39. package/dist/entities/password-reset.entity.d.ts +27 -27
  40. package/dist/entities/password-reset.entity.d.ts.map +1 -1
  41. package/dist/entities/password-reset.entity.js +3 -3
  42. package/dist/entities/pending-oauth-registration.entity.d.ts +39 -39
  43. package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -1
  44. package/dist/entities/pending-oauth-registration.entity.js +2 -2
  45. package/dist/entities/revoked-token.entity.d.ts +659 -641
  46. package/dist/entities/revoked-token.entity.d.ts.map +1 -1
  47. package/dist/entities/revoked-token.entity.js +4 -4
  48. package/dist/entities/scheduler-job.entity.d.ts +48 -48
  49. package/dist/entities/scheduler-job.entity.d.ts.map +1 -1
  50. package/dist/entities/scheduler-job.entity.js +2 -2
  51. package/dist/entities/terms-content.entity.d.ts +305 -305
  52. package/dist/entities/terms-content.entity.d.ts.map +1 -1
  53. package/dist/entities/terms-content.entity.js +3 -3
  54. package/dist/entities/terms.entity.d.ts +305 -305
  55. package/dist/entities/terms.entity.d.ts.map +1 -1
  56. package/dist/entities/terms.entity.js +4 -4
  57. package/dist/entities/user-consent.entity.d.ts +657 -639
  58. package/dist/entities/user-consent.entity.d.ts.map +1 -1
  59. package/dist/entities/user-consent.entity.js +4 -4
  60. package/dist/entities/user-oauth.entity.d.ts +30 -30
  61. package/dist/entities/user-oauth.entity.d.ts.map +1 -1
  62. package/dist/entities/user-oauth.entity.js +3 -3
  63. package/dist/entities/user-passkey.entity.d.ts +42 -42
  64. package/dist/entities/user-passkey.entity.d.ts.map +1 -1
  65. package/dist/entities/user-passkey.entity.js +3 -3
  66. package/dist/entities/user-terms-consent.entity.d.ts +305 -305
  67. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
  68. package/dist/entities/user-terms-consent.entity.js +4 -4
  69. package/dist/entities/user-totp-recovery-code.entity.d.ts +190 -190
  70. package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -1
  71. package/dist/entities/user-totp-recovery-code.entity.js +3 -3
  72. package/dist/entities/user-totp.entity.d.ts +190 -190
  73. package/dist/entities/user-totp.entity.d.ts.map +1 -1
  74. package/dist/entities/user-totp.entity.js +3 -3
  75. package/dist/entities/user.entity.d.ts +190 -190
  76. package/dist/entities/user.entity.d.ts.map +1 -1
  77. package/dist/entities/user.entity.js +6 -6
  78. package/dist/entrypoints/app.d.ts +1415 -1319
  79. package/dist/entrypoints/app.d.ts.map +1 -1
  80. package/dist/entrypoints/app.js +24 -22
  81. package/dist/entrypoints/app.js.map +1 -1
  82. package/dist/entrypoints/config/index.js +1 -1
  83. package/dist/entrypoints/database/postgres/cli.d.ts.map +1 -1
  84. package/dist/entrypoints/database/postgres/cli.js +1 -1
  85. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +10 -4
  86. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  87. package/dist/entrypoints/database/postgres/compiled-functions.js +112 -25
  88. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  89. package/dist/entrypoints/database/postgres/postgres.js +2 -2
  90. package/dist/entrypoints/database/sqlite/cli.d.ts.map +1 -1
  91. package/dist/entrypoints/database/sqlite/cli.js +1 -1
  92. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +10 -4
  93. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  94. package/dist/entrypoints/database/sqlite/compiled-functions.js +112 -25
  95. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  96. package/dist/entrypoints/database/sqlite/sqlite.js +2 -2
  97. package/dist/entrypoints/index.js +2 -2
  98. package/dist/entrypoints/scheduler/croner.js +1 -1
  99. package/dist/entrypoints/scheduler/croner.js.map +1 -1
  100. package/dist/entrypoints/scheduler/database.d.ts.map +1 -1
  101. package/dist/entrypoints/scheduler/database.js +4 -4
  102. package/dist/entrypoints/scheduler/database.js.map +1 -1
  103. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -1
  104. package/dist/entrypoints/scheduler/distributed-runner.js +1 -1
  105. package/dist/entrypoints/services.js +1 -1
  106. package/dist/lib/config/account-deletion.d.ts +2 -2
  107. package/dist/lib/config/account-deletion.d.ts.map +1 -1
  108. package/dist/lib/config/account-deletion.js +2 -2
  109. package/dist/lib/config/admin.d.ts +1 -1
  110. package/dist/lib/config/admin.d.ts.map +1 -1
  111. package/dist/lib/config/admin.js +1 -1
  112. package/dist/lib/config/auth.d.ts +39 -39
  113. package/dist/lib/config/auth.d.ts.map +1 -1
  114. package/dist/lib/config/auth.js +3 -3
  115. package/dist/lib/config/branding.d.ts +1 -1
  116. package/dist/lib/config/branding.d.ts.map +1 -1
  117. package/dist/lib/config/cleanup.d.ts +14 -6
  118. package/dist/lib/config/cleanup.d.ts.map +1 -1
  119. package/dist/lib/config/cleanup.js +18 -2
  120. package/dist/lib/config/cleanup.js.map +1 -1
  121. package/dist/lib/config/client.d.ts +10 -10
  122. package/dist/lib/config/client.d.ts.map +1 -1
  123. package/dist/lib/config/i18n.d.ts +7 -7
  124. package/dist/lib/config/i18n.d.ts.map +1 -1
  125. package/dist/lib/config/i18n.js +1 -1
  126. package/dist/lib/config/identity-providers.d.ts +8 -8
  127. package/dist/lib/config/identity-providers.d.ts.map +1 -1
  128. package/dist/lib/config/index.d.ts +0 -2
  129. package/dist/lib/config/index.d.ts.map +1 -1
  130. package/dist/lib/config/index.js +20 -21
  131. package/dist/lib/config/index.js.map +1 -1
  132. package/dist/lib/config/logging.d.ts +9 -9
  133. package/dist/lib/config/logging.d.ts.map +1 -1
  134. package/dist/lib/config/openapi.d.ts +4 -4
  135. package/dist/lib/config/openapi.d.ts.map +1 -1
  136. package/dist/lib/config/openapi.js +1 -1
  137. package/dist/lib/config/registration.d.ts +1 -1
  138. package/dist/lib/config/registration.d.ts.map +1 -1
  139. package/dist/lib/config/registration.js +1 -1
  140. package/dist/lib/config/resolved.d.ts +58 -55
  141. package/dist/lib/config/resolved.d.ts.map +1 -1
  142. package/dist/lib/config/resolved.js +19 -21
  143. package/dist/lib/config/resolved.js.map +1 -1
  144. package/dist/lib/config/security.d.ts +1 -1
  145. package/dist/lib/config/security.d.ts.map +1 -1
  146. package/dist/lib/config/security.js +2 -2
  147. package/dist/lib/config/server.d.ts +2 -2
  148. package/dist/lib/config/server.d.ts.map +1 -1
  149. package/dist/lib/config/server.js +2 -2
  150. package/dist/lib/config/terms.d.ts +6 -6
  151. package/dist/lib/config/terms.d.ts.map +1 -1
  152. package/dist/lib/config/terms.js +1 -1
  153. package/dist/lib/config/tokens.d.ts +3 -3
  154. package/dist/lib/config/tokens.d.ts.map +1 -1
  155. package/dist/lib/config/tokens.js +1 -1
  156. package/dist/lib/config/user.d.ts +4 -4
  157. package/dist/lib/config/user.d.ts.map +1 -1
  158. package/dist/lib/crypto.js +2 -2
  159. package/dist/lib/database/entities.js +20 -20
  160. package/dist/lib/frontend/react-router.d.ts +8 -0
  161. package/dist/lib/frontend/react-router.d.ts.map +1 -0
  162. package/dist/lib/frontend/react-router.js +92 -0
  163. package/dist/lib/frontend/react-router.js.map +1 -0
  164. package/dist/lib/frontend/runtime-context.d.ts +6 -0
  165. package/dist/lib/frontend/runtime-context.d.ts.map +1 -0
  166. package/dist/lib/frontend/runtime-context.js +3 -0
  167. package/dist/lib/frontend/runtime-context.js.map +1 -0
  168. package/dist/lib/locale.d.ts +1 -1
  169. package/dist/lib/locale.d.ts.map +1 -1
  170. package/dist/lib/logger.js +1 -1
  171. package/dist/lib/openapi.d.ts +4 -4
  172. package/dist/lib/openapi.d.ts.map +1 -1
  173. package/dist/lib/password-policy.d.ts.map +1 -1
  174. package/dist/lib/password-policy.js +1 -1
  175. package/dist/lib/password-policy.js.map +1 -1
  176. package/dist/lib/pkce.js +1 -1
  177. package/dist/lib/pkce.js.map +1 -1
  178. package/dist/lib/scopes.d.ts.map +1 -1
  179. package/dist/lib/swagger-tags.d.ts +8 -8
  180. package/dist/lib/swagger-tags.d.ts.map +1 -1
  181. package/dist/middleware/auth.d.ts +6 -6
  182. package/dist/middleware/auth.d.ts.map +1 -1
  183. package/dist/middleware/auth.js +1 -1
  184. package/dist/middleware/csrf.js +1 -1
  185. package/dist/middleware/session.js +1 -1
  186. package/dist/middleware/trusted-proxy-guard.js +2 -2
  187. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -1
  188. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -1
  189. package/dist/migrations/postgres/Migration20260619075007.d.ts.map +1 -1
  190. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -1
  191. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -1
  192. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -1
  193. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -1
  194. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -1
  195. package/dist/migrations/postgres/Migration20260825110000_add_password_reset_required.d.ts.map +1 -1
  196. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -1
  197. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts.map +1 -1
  198. package/dist/migrations/postgres/Migration20260904090000_add_oauth_client_lifecycle.d.ts +6 -0
  199. package/dist/migrations/postgres/Migration20260904090000_add_oauth_client_lifecycle.d.ts.map +1 -0
  200. package/dist/migrations/postgres/Migration20260904090000_add_oauth_client_lifecycle.js +14 -0
  201. package/dist/migrations/postgres/Migration20260904090000_add_oauth_client_lifecycle.js.map +1 -0
  202. package/dist/migrations/postgres/index.d.ts.map +1 -1
  203. package/dist/migrations/postgres/index.js +2 -0
  204. package/dist/migrations/postgres/index.js.map +1 -1
  205. package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts.map +1 -1
  206. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -1
  207. package/dist/migrations/sqlite/Migration20260619075330.d.ts.map +1 -1
  208. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -1
  209. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -1
  210. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -1
  211. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -1
  212. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -1
  213. package/dist/migrations/sqlite/Migration20260825110000_add_password_reset_required.d.ts.map +1 -1
  214. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -1
  215. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.d.ts.map +1 -1
  216. package/dist/migrations/sqlite/Migration20260904090000_add_oauth_client_lifecycle.d.ts +6 -0
  217. package/dist/migrations/sqlite/Migration20260904090000_add_oauth_client_lifecycle.d.ts.map +1 -0
  218. package/dist/migrations/sqlite/Migration20260904090000_add_oauth_client_lifecycle.js +14 -0
  219. package/dist/migrations/sqlite/Migration20260904090000_add_oauth_client_lifecycle.js.map +1 -0
  220. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  221. package/dist/migrations/sqlite/index.js +2 -0
  222. package/dist/migrations/sqlite/index.js.map +1 -1
  223. package/dist/repositories/email-verification.repository.d.ts.map +1 -1
  224. package/dist/repositories/email-verification.repository.js +1 -1
  225. package/dist/repositories/jwt-key.repository.d.ts.map +1 -1
  226. package/dist/repositories/jwt-key.repository.js +1 -1
  227. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  228. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  229. package/dist/repositories/password-reset.repository.d.ts.map +1 -1
  230. package/dist/repositories/password-reset.repository.js +1 -1
  231. package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -1
  232. package/dist/repositories/revoked-token.repository.d.ts.map +1 -1
  233. package/dist/repositories/terms.repository.d.ts.map +1 -1
  234. package/dist/repositories/user-consent.repository.d.ts.map +1 -1
  235. package/dist/repositories/user-consent.repository.js +1 -1
  236. package/dist/repositories/user-oauth.repository.d.ts.map +1 -1
  237. package/dist/repositories/user-oauth.repository.js +1 -1
  238. package/dist/repositories/user-passkey.repository.d.ts +42 -42
  239. package/dist/repositories/user-passkey.repository.d.ts.map +1 -1
  240. package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -1
  241. package/dist/repositories/user-terms-consent.repository.js +1 -1
  242. package/dist/repositories/user-totp-recovery-code.repository.d.ts +124 -124
  243. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  244. package/dist/repositories/user-totp.repository.d.ts +186 -186
  245. package/dist/repositories/user-totp.repository.d.ts.map +1 -1
  246. package/dist/repositories/user.repository.d.ts.map +1 -1
  247. package/dist/repositories/user.repository.js +1 -1
  248. package/dist/routes/.well-known/index.d.ts +2 -2
  249. package/dist/routes/.well-known/openid-configuration/get.d.ts +2 -2
  250. package/dist/routes/api/admin/console/index.d.ts +216 -126
  251. package/dist/routes/api/admin/console/index.d.ts.map +1 -1
  252. package/dist/routes/api/admin/console/index.js +12 -4
  253. package/dist/routes/api/admin/console/index.js.map +1 -1
  254. package/dist/routes/api/admin/index.d.ts +290 -200
  255. package/dist/routes/api/admin/index.d.ts.map +1 -1
  256. package/dist/routes/api/admin/index.js +3 -3
  257. package/dist/routes/api/admin/me/get.d.ts +3 -3
  258. package/dist/routes/api/admin/me/get.js +4 -4
  259. package/dist/routes/api/admin/users/index.d.ts +71 -71
  260. package/dist/routes/api/admin/users/index.js +6 -6
  261. package/dist/routes/api/auth/2fa/methods/get.d.ts +2 -2
  262. package/dist/routes/api/auth/2fa/methods/get.js +4 -4
  263. package/dist/routes/api/auth/accounts/get.d.ts +6 -6
  264. package/dist/routes/api/auth/accounts/remove.post.d.ts +6 -6
  265. package/dist/routes/api/auth/accounts/remove.post.js +2 -2
  266. package/dist/routes/api/auth/accounts/select.post.d.ts +7 -7
  267. package/dist/routes/api/auth/accounts/select.post.js +1 -1
  268. package/dist/routes/api/auth/email/resend/post.d.ts +5 -5
  269. package/dist/routes/api/auth/email/resend/post.js +4 -4
  270. package/dist/routes/api/auth/email/verify/post.d.ts +7 -7
  271. package/dist/routes/api/auth/email/verify/post.js +4 -4
  272. package/dist/routes/api/auth/index.d.ts +140 -140
  273. package/dist/routes/api/auth/index.js +15 -15
  274. package/dist/routes/api/auth/login/post.d.ts +8 -8
  275. package/dist/routes/api/auth/login/post.js +4 -4
  276. package/dist/routes/api/auth/logout/post.d.ts +1 -1
  277. package/dist/routes/api/auth/logout/post.js +2 -2
  278. package/dist/routes/api/auth/passkey/options/post.d.ts +10 -10
  279. package/dist/routes/api/auth/passkey/options/post.js +4 -4
  280. package/dist/routes/api/auth/passkey/verify/post.d.ts +18 -18
  281. package/dist/routes/api/auth/passkey/verify/post.js +5 -5
  282. package/dist/routes/api/auth/password/forgot/post.d.ts +5 -5
  283. package/dist/routes/api/auth/password/forgot/post.js +4 -4
  284. package/dist/routes/api/auth/password/reset/post.d.ts +5 -5
  285. package/dist/routes/api/auth/password/reset/post.js +4 -4
  286. package/dist/routes/api/auth/register/post.d.ts +17 -17
  287. package/dist/routes/api/auth/register/post.js +6 -6
  288. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +7 -7
  289. package/dist/routes/api/auth/totp/recovery/verify/post.js +6 -6
  290. package/dist/routes/api/auth/totp/verify/post.d.ts +7 -7
  291. package/dist/routes/api/auth/totp/verify/post.js +6 -6
  292. package/dist/routes/api/config/get.d.ts +4 -4
  293. package/dist/routes/api/config/get.js +1 -1
  294. package/dist/routes/api/config/index.d.ts +4 -4
  295. package/dist/routes/api/config/index.js +1 -1
  296. package/dist/routes/api/consent/get.d.ts +6 -6
  297. package/dist/routes/api/consent/get.d.ts.map +1 -1
  298. package/dist/routes/api/consent/get.js +7 -7
  299. package/dist/routes/api/consent/index.d.ts +13 -13
  300. package/dist/routes/api/consent/index.js +2 -2
  301. package/dist/routes/api/consent/post.d.ts +7 -7
  302. package/dist/routes/api/consent/post.js +6 -6
  303. package/dist/routes/api/docs/get.d.ts +1 -1
  304. package/dist/routes/api/docs/index.d.ts +1 -1
  305. package/dist/routes/api/docs/index.js +1 -1
  306. package/dist/routes/api/health/get.d.ts +5 -5
  307. package/dist/routes/api/health/get.d.ts.map +1 -1
  308. package/dist/routes/api/health/get.js +2 -2
  309. package/dist/routes/api/health/index.d.ts +12 -12
  310. package/dist/routes/api/health/index.js +3 -3
  311. package/dist/routes/api/health/live/get.d.ts +2 -2
  312. package/dist/routes/api/health/live/get.d.ts.map +1 -1
  313. package/dist/routes/api/health/live/get.js +2 -2
  314. package/dist/routes/api/health/ready/get.d.ts +5 -5
  315. package/dist/routes/api/health/ready/get.d.ts.map +1 -1
  316. package/dist/routes/api/health/ready/get.js +2 -2
  317. package/dist/routes/api/index.d.ts +1316 -1226
  318. package/dist/routes/api/index.d.ts.map +1 -1
  319. package/dist/routes/api/index.js +9 -9
  320. package/dist/routes/api/oauth/_provider/authorize/get.d.ts +4 -4
  321. package/dist/routes/api/oauth/_provider/authorize/get.js +6 -6
  322. package/dist/routes/api/oauth/_provider/callback/get.d.ts +9 -9
  323. package/dist/routes/api/oauth/_provider/callback/get.js +5 -5
  324. package/dist/routes/api/oauth/_provider/callback/post.d.ts +7 -7
  325. package/dist/routes/api/oauth/_provider/callback/post.js +6 -6
  326. package/dist/routes/api/oauth/_provider/delete.d.ts +5 -5
  327. package/dist/routes/api/oauth/_provider/delete.js +6 -6
  328. package/dist/routes/api/oauth/authorization-context/get.d.ts +8 -8
  329. package/dist/routes/api/oauth/authorization-context/get.d.ts.map +1 -1
  330. package/dist/routes/api/oauth/authorization-context/get.js +4 -4
  331. package/dist/routes/api/oauth/index.d.ts +56 -56
  332. package/dist/routes/api/oauth/index.js +5 -5
  333. package/dist/routes/api/terms/consent/post.d.ts +6 -6
  334. package/dist/routes/api/terms/consent/post.js +5 -5
  335. package/dist/routes/api/terms/get.d.ts +13 -13
  336. package/dist/routes/api/terms/get.js +5 -5
  337. package/dist/routes/api/terms/index.d.ts +19 -19
  338. package/dist/routes/api/terms/index.js +2 -2
  339. package/dist/routes/api/user/delete.d.ts +1 -1
  340. package/dist/routes/api/user/delete.js +6 -6
  341. package/dist/routes/api/user/index.d.ts +103 -103
  342. package/dist/routes/api/user/index.js +16 -16
  343. package/dist/routes/api/user/oauth-accounts/get.d.ts +1 -1
  344. package/dist/routes/api/user/oauth-accounts/get.js +5 -5
  345. package/dist/routes/api/user/passkeys/_id/delete.d.ts +5 -5
  346. package/dist/routes/api/user/passkeys/_id/delete.js +6 -6
  347. package/dist/routes/api/user/passkeys/_id/patch.d.ts +5 -5
  348. package/dist/routes/api/user/passkeys/_id/patch.js +6 -6
  349. package/dist/routes/api/user/passkeys/get.d.ts +2 -2
  350. package/dist/routes/api/user/passkeys/get.js +5 -5
  351. package/dist/routes/api/user/passkeys/register/options/post.d.ts +15 -15
  352. package/dist/routes/api/user/passkeys/register/options/post.js +5 -5
  353. package/dist/routes/api/user/passkeys/register/verify/post.d.ts +9 -9
  354. package/dist/routes/api/user/passkeys/register/verify/post.js +5 -5
  355. package/dist/routes/api/user/password/delete.d.ts +5 -5
  356. package/dist/routes/api/user/password/delete.js +6 -6
  357. package/dist/routes/api/user/password/post.d.ts +5 -5
  358. package/dist/routes/api/user/password/post.js +6 -6
  359. package/dist/routes/api/user/password/put.d.ts +5 -5
  360. package/dist/routes/api/user/password/put.js +6 -6
  361. package/dist/routes/api/user/session/get.d.ts +4 -4
  362. package/dist/routes/api/user/session/get.js +4 -4
  363. package/dist/routes/api/user/totp/confirm/post.d.ts +5 -5
  364. package/dist/routes/api/user/totp/confirm/post.js +5 -5
  365. package/dist/routes/api/user/totp/delete.d.ts +5 -5
  366. package/dist/routes/api/user/totp/delete.js +6 -6
  367. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +5 -5
  368. package/dist/routes/api/user/totp/recovery/regenerate/post.js +6 -6
  369. package/dist/routes/api/user/totp/setup/post.d.ts +1 -1
  370. package/dist/routes/api/user/totp/setup/post.js +5 -5
  371. package/dist/routes/api/user/totp/verify/post.d.ts +5 -5
  372. package/dist/routes/api/user/totp/verify/post.js +6 -6
  373. package/dist/routes/index.d.ts +1570 -1480
  374. package/dist/routes/index.d.ts.map +1 -1
  375. package/dist/routes/index.js +3 -3
  376. package/dist/routes/oauth/.well-known/jwks/get.d.ts +6 -6
  377. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +3 -3
  378. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -1
  379. package/dist/routes/oauth/authorize/get.d.ts +4 -4
  380. package/dist/routes/oauth/authorize/get.js +6 -6
  381. package/dist/routes/oauth/device/get-post.d.ts +7 -7
  382. package/dist/routes/oauth/device/get-post.js +3 -3
  383. package/dist/routes/oauth/device-authorization/post.d.ts +7 -7
  384. package/dist/routes/oauth/end-session/get.d.ts +9 -9
  385. package/dist/routes/oauth/index.d.ts +117 -117
  386. package/dist/routes/oauth/index.js +7 -7
  387. package/dist/routes/oauth/introspect/post.d.ts +14 -14
  388. package/dist/routes/oauth/introspect/post.js +4 -4
  389. package/dist/routes/oauth/revoke/post.d.ts +4 -4
  390. package/dist/routes/oauth/revoke/post.js +3 -3
  391. package/dist/routes/oauth/token/post.d.ts +10 -10
  392. package/dist/routes/oauth/token/post.js +4 -4
  393. package/dist/routes/oauth/userinfo/get.d.ts +2 -2
  394. package/dist/routes/oauth/userinfo/get.js +6 -6
  395. package/dist/schemas/error.d.ts +358 -283
  396. package/dist/schemas/error.d.ts.map +1 -1
  397. package/dist/schemas/error.js +3 -0
  398. package/dist/schemas/error.js.map +1 -1
  399. package/dist/schemas/field.d.ts +8 -8
  400. package/dist/schemas/field.d.ts.map +1 -1
  401. package/dist/schemas/field.js +2 -2
  402. package/dist/schemas/header.d.ts.map +1 -1
  403. package/dist/schemas/provider.d.ts +7 -1
  404. package/dist/schemas/provider.d.ts.map +1 -1
  405. package/dist/schemas/response.d.ts +42 -41
  406. package/dist/schemas/response.d.ts.map +1 -1
  407. package/dist/schemas/response.js +7 -3
  408. package/dist/schemas/response.js.map +1 -1
  409. package/dist/seeders/config.seeder.js +20 -17
  410. package/dist/seeders/config.seeder.js.map +1 -1
  411. package/dist/services/account-selection.service.d.ts.map +1 -1
  412. package/dist/services/admin-console.service.d.ts +73 -26
  413. package/dist/services/admin-console.service.d.ts.map +1 -1
  414. package/dist/services/admin-console.service.js +76 -7
  415. package/dist/services/admin-console.service.js.map +1 -1
  416. package/dist/services/cleanup.service.d.ts +2 -0
  417. package/dist/services/cleanup.service.d.ts.map +1 -1
  418. package/dist/services/cleanup.service.js +75 -14
  419. package/dist/services/cleanup.service.js.map +1 -1
  420. package/dist/services/container.d.ts +26 -23
  421. package/dist/services/container.d.ts.map +1 -1
  422. package/dist/services/container.js +20 -20
  423. package/dist/services/container.js.map +1 -1
  424. package/dist/services/email.service.d.ts.map +1 -1
  425. package/dist/services/email.service.js +3 -3
  426. package/dist/services/jwt.service.d.ts +2 -0
  427. package/dist/services/jwt.service.d.ts.map +1 -1
  428. package/dist/services/jwt.service.js +9 -3
  429. package/dist/services/jwt.service.js.map +1 -1
  430. package/dist/services/mikro.service.d.ts.map +1 -1
  431. package/dist/services/mikro.service.js +19 -19
  432. package/dist/services/oauth-authorize.service.d.ts.map +1 -1
  433. package/dist/services/oauth-authorize.service.js +3 -3
  434. package/dist/services/oauth-client.service.d.ts.map +1 -1
  435. package/dist/services/oauth-client.service.js +10 -6
  436. package/dist/services/oauth-client.service.js.map +1 -1
  437. package/dist/services/oauth-connect.service.d.ts +1 -1
  438. package/dist/services/oauth-connect.service.d.ts.map +1 -1
  439. package/dist/services/oauth-connect.service.js +3 -3
  440. package/dist/services/oauth-token.service.d.ts.map +1 -1
  441. package/dist/services/oauth-token.service.js +11 -4
  442. package/dist/services/oauth-token.service.js.map +1 -1
  443. package/dist/services/passkey.service.d.ts.map +1 -1
  444. package/dist/services/passkey.service.js +2 -2
  445. package/dist/services/password-auth.service.d.ts.map +1 -1
  446. package/dist/services/password-auth.service.js +2 -2
  447. package/dist/services/password-reset.service.d.ts.map +1 -1
  448. package/dist/services/password-reset.service.js +1 -1
  449. package/dist/services/scheduler.service.d.ts.map +1 -1
  450. package/dist/services/scheduler.service.js.map +1 -1
  451. package/dist/services/security.service.d.ts.map +1 -1
  452. package/dist/services/security.service.js +2 -2
  453. package/dist/services/terms.service.d.ts.map +1 -1
  454. package/dist/services/totp.service.d.ts.map +1 -1
  455. package/dist/services/totp.service.js +2 -2
  456. package/dist/services/user-consent.service.d.ts.map +1 -1
  457. package/dist/services/user.service.d.ts.map +1 -1
  458. package/dist/services/user.service.js +1 -1
  459. package/frontend/client/assets/CompositeItem-VmYWaHnv.js +1 -0
  460. package/frontend/client/assets/FieldControl-D6zWw018.js +1 -0
  461. package/frontend/client/assets/FieldItemContext-CPjig163.js +1 -0
  462. package/frontend/client/assets/HydrationBoundary-CGOTaz3j.js +1 -0
  463. package/frontend/client/assets/NullStore-BxU9yW8l.js +1 -0
  464. package/frontend/client/assets/Separator-eMrsmRws.js +1 -0
  465. package/frontend/client/assets/admin-console-BVGtfvzy.js +1 -0
  466. package/frontend/client/assets/admin-users-notice-DcKE5B43.js +1 -0
  467. package/frontend/client/assets/alert-B9BFeQs3.js +1 -0
  468. package/frontend/client/assets/alert-CFUBsmUN.js +1 -0
  469. package/frontend/client/assets/api-0SzZx6X7.js +1 -0
  470. package/frontend/client/assets/auth-choice-row-vQ3LzZiF.js +1 -0
  471. package/frontend/client/assets/auth-field-1EM9pnWe.js +1 -0
  472. package/frontend/client/assets/auth-footer-DgRsLHyD.js +1 -0
  473. package/frontend/client/assets/auth-layout-CFKu8bHI.js +1 -0
  474. package/frontend/client/assets/auth-outcome-B7tCCKZC.js +1 -0
  475. package/frontend/client/assets/auth-page-header-D5Z-EA6V.js +1 -0
  476. package/frontend/client/assets/authorization-context-banner-Cqtzj9A1.js +1 -0
  477. package/frontend/client/assets/avatar-BacTFLjX.js +1 -0
  478. package/frontend/client/assets/badge-BCQspax5.js +1 -0
  479. package/frontend/client/assets/card-CTv8DubK.js +1 -0
  480. package/frontend/client/assets/checkbox-OA4CFk-6.js +1 -0
  481. package/frontend/client/assets/circle-alert-DGTJ9B9k.js +1 -0
  482. package/frontend/client/assets/circle-check-CGasu2tI.js +1 -0
  483. package/frontend/client/assets/code-RrwtZcA2.js +1 -0
  484. package/frontend/client/assets/components-C1SipCbb.js +1 -0
  485. package/frontend/client/assets/document-navigation-Cnp3Alf0.js +1 -0
  486. package/frontend/client/assets/entry.client-wT_SpBr6.js +9 -0
  487. package/frontend/client/assets/errorBoundaries-BmdAyh9C.js +16 -0
  488. package/frontend/client/assets/field-DzNLNMM0.js +2 -0
  489. package/frontend/client/assets/fingerprint-pattern-V_eTEvnZ.js +1 -0
  490. package/frontend/client/assets/format-admin-user-BiqYL7ZT.js +1 -0
  491. package/frontend/client/assets/i18n-BY3irWek.js +1 -0
  492. package/frontend/client/assets/initial-avatar-D4aPMV9z.js +1 -0
  493. package/frontend/client/assets/input-BFJdEx8B.js +1 -0
  494. package/frontend/client/assets/jsx-runtime-BFZ_fnNJ.js +1 -0
  495. package/frontend/client/assets/key-round-DgCbGqQL.js +1 -0
  496. package/frontend/client/assets/labeled-separator-DkexQjxp.js +1 -0
  497. package/frontend/client/assets/language-selector-CGXk9vW_.js +1 -0
  498. package/frontend/client/assets/link-DcBltZGP.js +1 -0
  499. package/frontend/client/assets/link-button-qvSTUE1n.js +1 -0
  500. package/frontend/client/assets/lock-m97gMmUy.js +1 -0
  501. package/frontend/client/assets/logout-CBTnIosZ.js +1 -0
  502. package/frontend/client/assets/mail-tgQpWyoC.js +1 -0
  503. package/frontend/client/assets/manifest-4ae87899.js +1 -0
  504. package/frontend/client/assets/modal-LoTH9Ttl.js +1 -0
  505. package/frontend/client/assets/mutation-C0KT2UXZ.js +1 -0
  506. package/frontend/client/assets/mutationOptions-Dfvzj6n2.js +1 -0
  507. package/frontend/client/assets/oauth-search-BtLPTIS7.js +1 -0
  508. package/frontend/client/assets/passkey-C9bzur2Z.js +1 -0
  509. package/frontend/client/assets/passkey-error-CZnhXTc7.js +1 -0
  510. package/frontend/client/assets/password-reset-BuDycpfY.js +1 -0
  511. package/frontend/client/assets/password-strength-DLtV7dBZ.js +1 -0
  512. package/frontend/client/assets/pin-input-DtemAOnm.js +1 -0
  513. package/frontend/client/assets/progress-xdWpxn2G.js +1 -0
  514. package/frontend/client/assets/promise-CFWkfv2A.js +1 -0
  515. package/frontend/client/assets/provider-mark-B05f08GZ.js +1 -0
  516. package/frontend/client/assets/react-dom-BxmrrPTH.js +1 -0
  517. package/frontend/client/assets/root-DDLeooq1.js +1 -0
  518. package/frontend/client/assets/root-DxmAI0wD.css +2 -0
  519. package/frontend/client/assets/route-48mZ_bkD.js +1 -0
  520. package/frontend/client/assets/route-9i9rqQdx.js +4 -0
  521. package/frontend/client/assets/route-BIhwXFuk.js +1 -0
  522. package/frontend/client/assets/route-Bx9hz_OF.js +1 -0
  523. package/frontend/client/assets/route-C5Pe2AZT.js +1 -0
  524. package/frontend/client/assets/route-C9TWgUZf.js +1 -0
  525. package/frontend/client/assets/route-CBjporWj.js +1 -0
  526. package/frontend/client/assets/route-CLo3eo-R.js +1 -0
  527. package/frontend/client/assets/route-CPIXY7eE.js +1 -0
  528. package/frontend/client/assets/route-Caw4ohFV.js +1 -0
  529. package/frontend/client/assets/route-Ceht21dJ.js +1 -0
  530. package/frontend/client/assets/route-CkS9fAlL.js +1 -0
  531. package/frontend/client/assets/route-CsT5EJEh.js +1 -0
  532. package/frontend/client/assets/route-Cvob9_0Q.js +1 -0
  533. package/frontend/client/assets/route-D-ycfUyo.js +1 -0
  534. package/frontend/client/assets/route-DCfkikii.js +1 -0
  535. package/frontend/client/assets/route-DHEnEwHa.js +1 -0
  536. package/frontend/client/assets/route-DHQ_td-S.js +1 -0
  537. package/frontend/client/assets/route-DLNoCW7x.js +1 -0
  538. package/frontend/client/assets/route-DlKXugZV.js +1 -0
  539. package/frontend/client/assets/route-DokK6Iod.js +1 -0
  540. package/frontend/client/assets/route-ID67gqvy.js +1 -0
  541. package/frontend/client/assets/route-OWWRYmAT.js +1 -0
  542. package/frontend/client/assets/route-R-BJj3-W.js +1 -0
  543. package/frontend/client/assets/route-error-fallback-C2OHu3JW.js +1 -0
  544. package/frontend/client/assets/route-goGP2kXu.js +1 -0
  545. package/frontend/client/assets/route-module-Bm4sHkx9.js +1 -0
  546. package/frontend/client/assets/route-uV_qilhG.js +1 -0
  547. package/frontend/client/assets/route-xuoylbDO.js +1 -0
  548. package/frontend/client/assets/sanitized-rich-text-nFi_4i6F.js +3 -0
  549. package/frontend/client/assets/schemas-Dxi9xZo6.js +50 -0
  550. package/frontend/client/assets/search-DSkOjYwI.js +1 -0
  551. package/frontend/client/assets/select--ltVnlVl.js +1 -0
  552. package/frontend/client/assets/separator-C5dnwYaA.js +1 -0
  553. package/frontend/client/assets/shell-header-bar-C3KYib1D.js +1 -0
  554. package/frontend/client/assets/shield-check-93-WFkyJ.js +1 -0
  555. package/frontend/client/assets/standard-schema-C8Td_miB.js +3 -0
  556. package/frontend/client/assets/table-D2oRcUKc.js +1 -0
  557. package/frontend/client/assets/terms-BReb6uEz.js +1 -0
  558. package/frontend/client/assets/text-CGN4ZtUZ.js +1 -0
  559. package/frontend/client/assets/toast-_zV1SGz6.js +1 -0
  560. package/frontend/client/assets/totp-BW4BoCpi.js +1 -0
  561. package/frontend/client/assets/trash-2-BOsxjkzU.js +1 -0
  562. package/frontend/client/assets/triangle-alert-DSSurAZ_.js +1 -0
  563. package/frontend/client/assets/use-admin-selection-CAegSKw5.js +1 -0
  564. package/frontend/client/assets/use-totp-setup-BOSkSnYG.js +2 -0
  565. package/frontend/client/assets/useAriaLabelledBy-CYSspZIu.js +1 -0
  566. package/frontend/client/assets/useMutation-C4CmK9Sb.js +1 -0
  567. package/frontend/client/assets/usePositioner-DcBnB2-O.js +1 -0
  568. package/frontend/client/assets/useQuery-BtUeFnRt.js +1 -0
  569. package/frontend/client/assets/useRender-BF5_Ad3C.js +1 -0
  570. package/frontend/client/assets/valueToPercent-LgbY_prH.js +1 -0
  571. package/frontend/server/assets/hydration-yaDCGSA8.js +109 -0
  572. package/frontend/server/assets/root-loader.server-Cwm-l9OS.js +15 -0
  573. package/frontend/server/assets/route-runtime.server-CjDbp5w6.js +51 -0
  574. package/frontend/server/assets/session-CSnQWUgx.js +8285 -0
  575. package/frontend/server/index.js +73407 -0
  576. package/package.json +33 -43
  577. package/dist/entrypoints/frontend/index.d.ts +0 -4
  578. package/dist/entrypoints/frontend/index.d.ts.map +0 -1
  579. package/dist/entrypoints/frontend/index.js +0 -2
  580. package/dist/entrypoints/frontend/index.js.map +0 -1
  581. package/dist/entrypoints/frontend/proxy.d.ts +0 -2
  582. package/dist/entrypoints/frontend/proxy.d.ts.map +0 -1
  583. package/dist/entrypoints/frontend/proxy.js +0 -2
  584. package/dist/entrypoints/frontend/proxy.js.map +0 -1
  585. package/dist/entrypoints/frontend/static.d.ts +0 -2
  586. package/dist/entrypoints/frontend/static.d.ts.map +0 -1
  587. package/dist/entrypoints/frontend/static.js +0 -2
  588. package/dist/entrypoints/frontend/static.js.map +0 -1
  589. package/dist/lib/config/frontend.d.ts +0 -12
  590. package/dist/lib/config/frontend.d.ts.map +0 -1
  591. package/dist/lib/config/frontend.js +0 -7
  592. package/dist/lib/config/frontend.js.map +0 -1
  593. package/dist/lib/frontend/proxy.d.ts +0 -24
  594. package/dist/lib/frontend/proxy.d.ts.map +0 -1
  595. package/dist/lib/frontend/proxy.js +0 -38
  596. package/dist/lib/frontend/proxy.js.map +0 -1
  597. package/dist/lib/frontend/static.d.ts +0 -21
  598. package/dist/lib/frontend/static.d.ts.map +0 -1
  599. package/dist/lib/frontend/static.js +0 -108
  600. package/dist/lib/frontend/static.js.map +0 -1
  601. package/dist/lib/interpolate-html.d.ts +0 -34
  602. package/dist/lib/interpolate-html.d.ts.map +0 -1
  603. package/dist/lib/interpolate-html.js +0 -61
  604. package/dist/lib/interpolate-html.js.map +0 -1
  605. package/public/assets/2fa-BowFczF7.js +0 -2
  606. package/public/assets/2fa-BowFczF7.js.map +0 -1
  607. package/public/assets/2fa-C_pA-n2i.js +0 -2
  608. package/public/assets/2fa-C_pA-n2i.js.map +0 -1
  609. package/public/assets/2fa-Cpfhakvn.js +0 -2
  610. package/public/assets/2fa-Cpfhakvn.js.map +0 -1
  611. package/public/assets/2fa-o1a13VHx.js +0 -2
  612. package/public/assets/2fa-o1a13VHx.js.map +0 -1
  613. package/public/assets/FieldControl-ShLuCjvG.js +0 -2
  614. package/public/assets/FieldControl-ShLuCjvG.js.map +0 -1
  615. package/public/assets/Separator-C6MmGAmP.js +0 -2
  616. package/public/assets/Separator-C6MmGAmP.js.map +0 -1
  617. package/public/assets/admin-_jFLs8Ve.js +0 -2
  618. package/public/assets/admin-_jFLs8Ve.js.map +0 -1
  619. package/public/assets/admin-shell-B91U4-Ro.js +0 -2
  620. package/public/assets/admin-shell-B91U4-Ro.js.map +0 -1
  621. package/public/assets/alert-D3aaK-_3.js +0 -2
  622. package/public/assets/alert-D3aaK-_3.js.map +0 -1
  623. package/public/assets/alert-kRxM1xsM.js +0 -2
  624. package/public/assets/alert-kRxM1xsM.js.map +0 -1
  625. package/public/assets/auth-choice-row-h4heOMHs.js +0 -2
  626. package/public/assets/auth-choice-row-h4heOMHs.js.map +0 -1
  627. package/public/assets/auth-field-BpJ4AHtU.js +0 -2
  628. package/public/assets/auth-field-BpJ4AHtU.js.map +0 -1
  629. package/public/assets/auth-footer-Du6S-oDG.js +0 -2
  630. package/public/assets/auth-footer-Du6S-oDG.js.map +0 -1
  631. package/public/assets/auth-layout-BdRRr0vT.js +0 -2
  632. package/public/assets/auth-layout-BdRRr0vT.js.map +0 -1
  633. package/public/assets/auth-page-header-ChaCNNrn.js +0 -2
  634. package/public/assets/auth-page-header-ChaCNNrn.js.map +0 -1
  635. package/public/assets/authorization-context-banner-zVxGX5e8.js +0 -2
  636. package/public/assets/authorization-context-banner-zVxGX5e8.js.map +0 -1
  637. package/public/assets/avatar-BxTPQIDp.js +0 -2
  638. package/public/assets/avatar-BxTPQIDp.js.map +0 -1
  639. package/public/assets/badge-B8D0Q2qq.js +0 -2
  640. package/public/assets/badge-B8D0Q2qq.js.map +0 -1
  641. package/public/assets/checkbox-DTPGfvmq.js +0 -2
  642. package/public/assets/checkbox-DTPGfvmq.js.map +0 -1
  643. package/public/assets/circle-check-Cnzuu7xR.js +0 -2
  644. package/public/assets/circle-check-Cnzuu7xR.js.map +0 -1
  645. package/public/assets/clients-DLqy7K3N.js +0 -5
  646. package/public/assets/clients-DLqy7K3N.js.map +0 -1
  647. package/public/assets/config-C18-l7z7.js +0 -2
  648. package/public/assets/config-C18-l7z7.js.map +0 -1
  649. package/public/assets/consent-BWniDzI3.js +0 -2
  650. package/public/assets/consent-BWniDzI3.js.map +0 -1
  651. package/public/assets/consent-r_tX8DTb.js +0 -2
  652. package/public/assets/consent-r_tX8DTb.js.map +0 -1
  653. package/public/assets/createLucideIcon-D-yizrWN.js +0 -2
  654. package/public/assets/createLucideIcon-D-yizrWN.js.map +0 -1
  655. package/public/assets/design-system-rich-text-B3NzIRoJ.js +0 -2
  656. package/public/assets/design-system-rich-text-B3NzIRoJ.js.map +0 -1
  657. package/public/assets/email-Bx9JlWp3.js +0 -2
  658. package/public/assets/email-Bx9JlWp3.js.map +0 -1
  659. package/public/assets/email-Cpfhakvn.js +0 -2
  660. package/public/assets/email-Cpfhakvn.js.map +0 -1
  661. package/public/assets/error-DDY8m_Px.js +0 -2
  662. package/public/assets/error-DDY8m_Px.js.map +0 -1
  663. package/public/assets/field-CsrUbl__.js +0 -3
  664. package/public/assets/field-CsrUbl__.js.map +0 -1
  665. package/public/assets/fingerprint-pattern-BwUoN1_w.js +0 -2
  666. package/public/assets/fingerprint-pattern-BwUoN1_w.js.map +0 -1
  667. package/public/assets/forgot-Cpfhakvn.js +0 -2
  668. package/public/assets/forgot-Cpfhakvn.js.map +0 -1
  669. package/public/assets/forgot-u52JMu6e.js +0 -2
  670. package/public/assets/forgot-u52JMu6e.js.map +0 -1
  671. package/public/assets/form-sJw-V9wb.js +0 -2
  672. package/public/assets/form-sJw-V9wb.js.map +0 -1
  673. package/public/assets/index-8mX6CKcW.css +0 -2
  674. package/public/assets/index-lTEyHSus.js +0 -11
  675. package/public/assets/index-lTEyHSus.js.map +0 -1
  676. package/public/assets/initial-avatar-WMjxW3Zz.js +0 -2
  677. package/public/assets/initial-avatar-WMjxW3Zz.js.map +0 -1
  678. package/public/assets/input-QvBxPgy5.js +0 -2
  679. package/public/assets/input-QvBxPgy5.js.map +0 -1
  680. package/public/assets/key-round-BxWppK6h.js +0 -2
  681. package/public/assets/key-round-BxWppK6h.js.map +0 -1
  682. package/public/assets/labeled-separator-DdkyYDWH.js +0 -2
  683. package/public/assets/labeled-separator-DdkyYDWH.js.map +0 -1
  684. package/public/assets/link-BHmn75Zo.js +0 -2
  685. package/public/assets/link-BHmn75Zo.js.map +0 -1
  686. package/public/assets/lock-8wpR2C78.js +0 -2
  687. package/public/assets/lock-8wpR2C78.js.map +0 -1
  688. package/public/assets/login-Cpfhakvn.js +0 -2
  689. package/public/assets/login-Cpfhakvn.js.map +0 -1
  690. package/public/assets/login-DRcHjJ2-.js +0 -2
  691. package/public/assets/login-DRcHjJ2-.js.map +0 -1
  692. package/public/assets/logout-Dphj1d_0.js +0 -2
  693. package/public/assets/logout-Dphj1d_0.js.map +0 -1
  694. package/public/assets/mail-DVP_XMUi.js +0 -2
  695. package/public/assets/mail-DVP_XMUi.js.map +0 -1
  696. package/public/assets/modal-JuaLVSyx.js +0 -2
  697. package/public/assets/modal-JuaLVSyx.js.map +0 -1
  698. package/public/assets/mutationOptions-Cv_vJkJn.js +0 -2
  699. package/public/assets/mutationOptions-Cv_vJkJn.js.map +0 -1
  700. package/public/assets/passkey-CObBlfKK.js +0 -2
  701. package/public/assets/passkey-CObBlfKK.js.map +0 -1
  702. package/public/assets/passkey-CWTjw19S.js +0 -2
  703. package/public/assets/passkey-CWTjw19S.js.map +0 -1
  704. package/public/assets/passkey-CavITajY.js +0 -2
  705. package/public/assets/passkey-CavITajY.js.map +0 -1
  706. package/public/assets/passkey-Cpfhakvn.js +0 -2
  707. package/public/assets/passkey-Cpfhakvn.js.map +0 -1
  708. package/public/assets/passkey-error-CZ26Ss-I.js +0 -2
  709. package/public/assets/passkey-error-CZ26Ss-I.js.map +0 -1
  710. package/public/assets/password-Cpfhakvn.js +0 -2
  711. package/public/assets/password-Cpfhakvn.js.map +0 -1
  712. package/public/assets/password-Dk8PwtZN.js +0 -2
  713. package/public/assets/password-Dk8PwtZN.js.map +0 -1
  714. package/public/assets/password-reset-BcFpGOop.js +0 -2
  715. package/public/assets/password-reset-BcFpGOop.js.map +0 -1
  716. package/public/assets/password-strength-Bgvy7kz6.js +0 -2
  717. package/public/assets/password-strength-Bgvy7kz6.js.map +0 -1
  718. package/public/assets/pin-input-DhsRO4Ei.js +0 -2
  719. package/public/assets/pin-input-DhsRO4Ei.js.map +0 -1
  720. package/public/assets/profile-PjXEnzA-.js +0 -2
  721. package/public/assets/profile-PjXEnzA-.js.map +0 -1
  722. package/public/assets/profile-k66ruDWl.js +0 -2
  723. package/public/assets/profile-k66ruDWl.js.map +0 -1
  724. package/public/assets/promise-OpBtq8tG.js +0 -2
  725. package/public/assets/promise-OpBtq8tG.js.map +0 -1
  726. package/public/assets/provider-mark-CeYazOfu.js +0 -2
  727. package/public/assets/provider-mark-CeYazOfu.js.map +0 -1
  728. package/public/assets/recovery-hdRyezmb.js +0 -2
  729. package/public/assets/recovery-hdRyezmb.js.map +0 -1
  730. package/public/assets/register-Cpfhakvn.js +0 -2
  731. package/public/assets/register-Cpfhakvn.js.map +0 -1
  732. package/public/assets/register-DMgKT_fm.js +0 -2
  733. package/public/assets/register-DMgKT_fm.js.map +0 -1
  734. package/public/assets/reset-Cpfhakvn.js +0 -2
  735. package/public/assets/reset-Cpfhakvn.js.map +0 -1
  736. package/public/assets/reset-DBu3wYpE.js +0 -2
  737. package/public/assets/reset-DBu3wYpE.js.map +0 -1
  738. package/public/assets/routes-CAIeH5mq.js +0 -2
  739. package/public/assets/routes-CAIeH5mq.js.map +0 -1
  740. package/public/assets/select-5LheSsRl.js +0 -2
  741. package/public/assets/select-5LheSsRl.js.map +0 -1
  742. package/public/assets/select-Cpfhakvn.js +0 -2
  743. package/public/assets/select-Cpfhakvn.js.map +0 -1
  744. package/public/assets/separator-CMGc2Y1q.js +0 -2
  745. package/public/assets/separator-CMGc2Y1q.js.map +0 -1
  746. package/public/assets/settings-BVe4k3kJ.js +0 -2
  747. package/public/assets/settings-BVe4k3kJ.js.map +0 -1
  748. package/public/assets/shell-header-bar-CdOEWmCT.js +0 -2
  749. package/public/assets/shell-header-bar-CdOEWmCT.js.map +0 -1
  750. package/public/assets/shield-check-DpYF8yeI.js +0 -2
  751. package/public/assets/shield-check-DpYF8yeI.js.map +0 -1
  752. package/public/assets/standard-schema-C50nwAaQ.js +0 -2
  753. package/public/assets/standard-schema-C50nwAaQ.js.map +0 -1
  754. package/public/assets/system-BoUqxc5h.js +0 -2
  755. package/public/assets/system-BoUqxc5h.js.map +0 -1
  756. package/public/assets/table-Dl89o43x.js +0 -2
  757. package/public/assets/table-Dl89o43x.js.map +0 -1
  758. package/public/assets/terms-B2wWfx1d.js +0 -2
  759. package/public/assets/terms-B2wWfx1d.js.map +0 -1
  760. package/public/assets/terms-COr3cDw5.js +0 -2
  761. package/public/assets/terms-COr3cDw5.js.map +0 -1
  762. package/public/assets/terms-checkbox-list-C9TkDC8Y.js +0 -2
  763. package/public/assets/terms-checkbox-list-C9TkDC8Y.js.map +0 -1
  764. package/public/assets/terms-k66ruDWl.js +0 -2
  765. package/public/assets/terms-k66ruDWl.js.map +0 -1
  766. package/public/assets/totp-BJycMMTC.js +0 -2
  767. package/public/assets/totp-BJycMMTC.js.map +0 -1
  768. package/public/assets/totp-BhElob6P.js +0 -2
  769. package/public/assets/totp-BhElob6P.js.map +0 -1
  770. package/public/assets/totp-C1ba10Is.js +0 -2
  771. package/public/assets/totp-C1ba10Is.js.map +0 -1
  772. package/public/assets/trash-2-B3NVE8pR.js +0 -2
  773. package/public/assets/trash-2-B3NVE8pR.js.map +0 -1
  774. package/public/assets/triangle-alert-DATO9o3k.js +0 -2
  775. package/public/assets/triangle-alert-DATO9o3k.js.map +0 -1
  776. package/public/assets/use-admin-selection-D2b7jnym.js +0 -2
  777. package/public/assets/use-admin-selection-D2b7jnym.js.map +0 -1
  778. package/public/assets/use-totp-setup-KOVNS2DC.js +0 -3
  779. package/public/assets/use-totp-setup-KOVNS2DC.js.map +0 -1
  780. package/public/assets/useAriaLabelledBy-CF3crxLc.js +0 -2
  781. package/public/assets/useAriaLabelledBy-CF3crxLc.js.map +0 -1
  782. package/public/assets/useMutation-DqIIIiBW.js +0 -2
  783. package/public/assets/useMutation-DqIIIiBW.js.map +0 -1
  784. package/public/assets/useQuery-CLr9TaKA.js +0 -2
  785. package/public/assets/useQuery-CLr9TaKA.js.map +0 -1
  786. package/public/assets/users-BQQQm353.js +0 -2
  787. package/public/assets/users-BQQQm353.js.map +0 -1
  788. package/public/assets/valueToPercent-LgbY_prH.js +0 -2
  789. package/public/assets/valueToPercent-LgbY_prH.js.map +0 -1
  790. package/public/assets/zod-Dszyrytb.js +0 -66
  791. package/public/assets/zod-Dszyrytb.js.map +0 -1
  792. package/public/index.html +0 -31
  793. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  794. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  795. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  796. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  797. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  798. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  799. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  800. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  801. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  802. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  803. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
  804. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
  805. /package/{public → frontend/client}/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
  806. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-BLMYXIZq.woff2 +0 -0
  807. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-DJrewyrW.woff +0 -0
  808. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-B5S02aip.woff2 +0 -0
  809. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-DP69BzJV.woff +0 -0
  810. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-9JfFFKCo.woff +0 -0
  811. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-Blnt0RhT.woff2 +0 -0
  812. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-4_aXP0Hy.woff2 +0 -0
  813. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-DsMZ2scz.woff +0 -0
  814. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-Bolb9iqL.woff2 +0 -0
  815. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-nIl-leH5.woff +0 -0
  816. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-Bkd0xED8.woff +0 -0
  817. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-CvaNbDMd.woff2 +0 -0
  818. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-DoWmZlZj.woff +0 -0
  819. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-y2nxydha.woff2 +0 -0
  820. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BKchJvlk.woff2 +0 -0
  821. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BrpHYkNm.woff +0 -0
  822. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-CVueR0Vp.woff2 +0 -0
  823. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-DJ1MIwHY.woff +0 -0
  824. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-BQfFShQ1.woff2 +0 -0
  825. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-Ca0txE7W.woff +0 -0
  826. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-B1Puw4D2.woff2 +0 -0
  827. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-CUZjz5v8.woff +0 -0
  828. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-BkK1TRsE.woff2 +0 -0
  829. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-ZVcO00Fl.woff +0 -0
  830. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DHwmA74W.woff +0 -0
  831. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DNs9Omj-.woff2 +0 -0
  832. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-BW8Frffd.woff +0 -0
  833. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-tN_-CKym.woff2 +0 -0
  834. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-CXAkQppa.woff2 +0 -0
  835. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-DNgJaILb.woff +0 -0
  836. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-BmhZQdzl.woff +0 -0
  837. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-CuKiid_t.woff2 +0 -0
  838. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-2KjU-YTd.woff2 +0 -0
  839. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-Duw986jf.woff +0 -0
  840. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-CYzW5SnO.woff2 +0 -0
  841. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-Vn6i4czv.woff +0 -0
  842. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-BBf-_m9N.woff +0 -0
  843. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-CHWaGU9J.woff2 +0 -0
  844. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-CmUdXGK4.woff +0 -0
  845. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-Eel3dN7e.woff2 +0 -0
  846. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-Cv9j40LU.woff2 +0 -0
  847. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-DWwtLgxy.woff +0 -0
  848. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-CGlLvzZs.woff2 +0 -0
  849. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-foxE5hHG.woff +0 -0
  850. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-B1bzLzbH.woff2 +0 -0
  851. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-tHp1RYGF.woff +0 -0
  852. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-BtC5W1lQ.woff2 +0 -0
  853. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-DuUOTgvs.woff +0 -0
  854. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-2yW6cSNP.woff2 +0 -0
  855. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-Dh4QR9Sa.woff +0 -0
  856. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-3L-o-gNc.woff +0 -0
  857. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-JAonwJOj.woff2 +0 -0
  858. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-BPH5rI6C.woff +0 -0
  859. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-Cr7-iFW7.woff2 +0 -0
  860. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-BKXuaz7L.woff2 +0 -0
  861. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-CMeK7Yoj.woff +0 -0
  862. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-9ormcCnp.woff +0 -0
  863. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-CIZc2z7F.woff2 +0 -0
  864. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-BQqq_N37.woff +0 -0
  865. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-DKrl9gDv.woff2 +0 -0
  866. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-BYkYsUMr.woff +0 -0
  867. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-DLZ5N3wZ.woff2 +0 -0
  868. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-DgvmKVfh.woff +0 -0
  869. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-J_8d2uPX.woff2 +0 -0
  870. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-BKzoJI_l.woff +0 -0
  871. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-CgGmrF-h.woff2 +0 -0
  872. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-C0WskPfy.woff2 +0 -0
  873. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-D4F8GONb.woff +0 -0
  874. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-HVxl9urI.woff2 +0 -0
  875. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-U3d7dgox.woff +0 -0
  876. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-B_TMqNrG.woff +0 -0
  877. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-DUhgBhd7.woff2 +0 -0
  878. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-BiGMHdAV.woff2 +0 -0
  879. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-CWciHSky.woff +0 -0
  880. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-BXI508QN.woff2 +0 -0
  881. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-C3nYbUvy.woff +0 -0
  882. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-A9EL87rF.woff2 +0 -0
  883. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-DjakDWxK.woff +0 -0
  884. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-36IKJEvJ.woff +0 -0
  885. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-DwkaZ2wL.woff2 +0 -0
  886. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-B0FD3VdV.woff +0 -0
  887. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-DjZCOVOv.woff2 +0 -0
  888. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-B2j03kCB.woff2 +0 -0
  889. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-Dv5sal4h.woff +0 -0
  890. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DD55zx92.woff +0 -0
  891. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DpWOC24h.woff2 +0 -0
  892. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-BkM4GSUi.woff2 +0 -0
  893. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-C2q6NvAJ.woff +0 -0
  894. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Ci_Zf1oH.woff +0 -0
  895. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Fyn9YqrR.woff2 +0 -0
  896. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-C-SwPUxy.woff2 +0 -0
  897. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-ngLrg9Ph.woff +0 -0
  898. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-FVXa1K7W.woff2 +0 -0
  899. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-pSsmDa5a.woff +0 -0
  900. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-CmNR_-6d.woff2 +0 -0
  901. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-kzCap4I7.woff +0 -0
  902. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-D64L80iO.woff2 +0 -0
  903. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-DkNQ39Bm.woff +0 -0
  904. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-CfAYQkvR.woff +0 -0
  905. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-DradD0b_.woff2 +0 -0
  906. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-CXZm0WJV.woff +0 -0
  907. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-DSXuAVj8.woff2 +0 -0
  908. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-BA3oFlL7.woff +0 -0
  909. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-DGp_yQCO.woff2 +0 -0
  910. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-5l6N5_Bf.woff +0 -0
  911. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-Bf5qTwLg.woff2 +0 -0
  912. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-CCrS9Tpv.woff +0 -0
  913. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-DhiQdU1x.woff2 +0 -0
  914. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-BidJdmrW.woff +0 -0
  915. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-DcXtXIIt.woff2 +0 -0
  916. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-Bwb7m1tn.woff2 +0 -0
  917. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-DShPLUNp.woff +0 -0
  918. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C1DXoU6t.woff2 +0 -0
  919. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C2BwbuD6.woff +0 -0
  920. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-Bq_d-uLr.woff +0 -0
  921. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-hyG31T85.woff2 +0 -0
  922. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-CEeS0kan.woff +0 -0
  923. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-DJWr9iDJ.woff2 +0 -0
  924. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-C1ei5J70.woff2 +0 -0
  925. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-zPjtn9S1.woff +0 -0
  926. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-DFkHFeXA.woff2 +0 -0
  927. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-TSsLEGdp.woff +0 -0
  928. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-Cvx3jb5D.woff +0 -0
  929. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-o_AOMkHJ.woff2 +0 -0
  930. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-BRNin0K2.woff2 +0 -0
  931. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-DGkqcNAf.woff +0 -0
  932. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-BUYaH2_l.woff2 +0 -0
  933. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-aBgyJQOx.woff +0 -0
  934. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-55p1b1wa.woff +0 -0
  935. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-BTu0jZJ-.woff2 +0 -0
  936. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-3JOc_eI7.woff +0 -0
  937. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-BjmfPyZf.woff2 +0 -0
  938. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-BmG4MYox.woff +0 -0
  939. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-quRUVnCJ.woff2 +0 -0
  940. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-B-m8VoGm.woff2 +0 -0
  941. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-CxDfRaaH.woff +0 -0
  942. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-C3oRnDW6.woff2 +0 -0
  943. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-Dv1Y6qdB.woff +0 -0
  944. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-DBDHqw4h.woff2 +0 -0
  945. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-QmPj_vZd.woff +0 -0
  946. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CedQxG0H.woff +0 -0
  947. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CgJUuraA.woff2 +0 -0
  948. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DNIRDidW.woff2 +0 -0
  949. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DolJGsV8.woff +0 -0
  950. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-CP-jldkl.woff +0 -0
  951. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-DPGCrf4O.woff2 +0 -0
  952. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-36G4flWw.woff +0 -0
  953. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-aLRf_2tU.woff2 +0 -0
  954. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-CzLCWhzW.woff2 +0 -0
  955. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-IrHxc9AN.woff +0 -0
  956. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-D_ILNbWZ.woff2 +0 -0
  957. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-DhL4usAp.woff +0 -0
  958. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-CCiDkvZ0.woff +0 -0
  959. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-Cm8uzUfS.woff2 +0 -0
  960. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-CH_tD5KV.woff2 +0 -0
  961. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-qiD6EjpF.woff +0 -0
  962. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-CPpcNs7A.woff +0 -0
  963. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-DJJG1Tuz.woff2 +0 -0
  964. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DN27F9tO.woff +0 -0
  965. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DZNod9fx.woff2 +0 -0
  966. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-5x97iT4C.woff2 +0 -0
  967. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-Cjf1zCyl.woff +0 -0
  968. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Cz201O_t.woff2 +0 -0
  969. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Xd0EQnSI.woff +0 -0
  970. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-Dlo-tSr-.woff +0 -0
  971. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-GFEV0OtD.woff2 +0 -0
  972. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-CxMAaJ8J.woff +0 -0
  973. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-pN8BDQje.woff2 +0 -0
  974. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-BiRcNUnW.woff2 +0 -0
  975. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-DcRwXlcA.woff +0 -0
  976. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-DjoWpWpr.woff2 +0 -0
  977. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-ZWO03fli.woff +0 -0
  978. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-BRP-puz3.woff2 +0 -0
  979. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-C9acO00v.woff +0 -0
  980. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-BGI-mgYq.woff2 +0 -0
  981. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-CAilAALt.woff +0 -0
  982. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-DjYSyktj.woff2 +0 -0
  983. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-ce3oirTN.woff +0 -0
  984. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-D-Zw0iJQ.woff2 +0 -0
  985. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-DDYMc675.woff +0 -0
  986. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-2E5UN6VC.woff +0 -0
  987. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-BQfFM2B0.woff2 +0 -0
  988. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-CYRAtz-I.woff2 +0 -0
  989. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-DwptQupD.woff +0 -0
  990. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-80GIv_X2.woff +0 -0
  991. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-Ca_HRr3E.woff2 +0 -0
  992. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-BFnRtDEF.woff +0 -0
  993. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-Zr4ScQUF.woff2 +0 -0
  994. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-BA-omFPG.woff2 +0 -0
  995. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-CVckMbS4.woff +0 -0
  996. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-BPImLHVa.woff +0 -0
  997. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-CytBm2Nt.woff2 +0 -0
  998. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-IznGQDkP.woff2 +0 -0
  999. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-qTFopCxn.woff +0 -0
  1000. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-BWt9cZAr.woff2 +0 -0
  1001. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-DuqSwCFh.woff +0 -0
  1002. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal--3UpG_YA.woff2 +0 -0
  1003. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal-DnloFB68.woff +0 -0
  1004. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-Bdkhc9Iw.woff2 +0 -0
  1005. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-BtixcB0-.woff +0 -0
  1006. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-Dq8e8WbN.woff +0 -0
  1007. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-O2srJ8a2.woff2 +0 -0
  1008. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-C-Wvz07b.woff2 +0 -0
  1009. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-QWySKNit.woff +0 -0
  1010. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-B3OOo0lL.woff +0 -0
  1011. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-McxyvMnV.woff2 +0 -0
  1012. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-A46asPGd.woff +0 -0
  1013. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-CTyo1FsZ.woff2 +0 -0
  1014. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-Ira2Rc5z.woff2 +0 -0
  1015. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-dhK6LPCU.woff +0 -0
  1016. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-BFxbWz5n.woff +0 -0
  1017. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-DFuJhyl7.woff2 +0 -0
  1018. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-B2RU3Dvp.woff +0 -0
  1019. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-DJ9_bhYp.woff2 +0 -0
  1020. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-6YS9BiKL.woff +0 -0
  1021. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-CpbQwqpL.woff2 +0 -0
  1022. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-DNzE_dbG.woff2 +0 -0
  1023. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-D_cpF5EA.woff +0 -0
  1024. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-ByYIbTSk.woff +0 -0
  1025. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-Dblu0l-8.woff2 +0 -0
  1026. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-B-a8fp43.woff2 +0 -0
  1027. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-oM62RKsO.woff +0 -0
  1028. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-CG_CPqz1.woff +0 -0
  1029. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-c2jdwsOE.woff2 +0 -0
  1030. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-3axrvVxa.woff +0 -0
  1031. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-CffTHcnn.woff2 +0 -0
  1032. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-CFbifBY3.woff +0 -0
  1033. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-MrPgyLwW.woff2 +0 -0
  1034. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-C5RxoJ3V.woff +0 -0
  1035. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-DXIBRRx0.woff2 +0 -0
  1036. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-BHA5xHG-.woff2 +0 -0
  1037. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-t8w8Pigz.woff +0 -0
  1038. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-CfJC1veY.woff2 +0 -0
  1039. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-DuTXC6M7.woff +0 -0
  1040. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-4EOJmPpr.woff +0 -0
  1041. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-DPDbHGRJ.woff2 +0 -0
  1042. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-Ca71NnU-.woff +0 -0
  1043. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-jeFY9Hf_.woff2 +0 -0
  1044. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-C11KYH68.woff2 +0 -0
  1045. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-CzNKW3WB.woff +0 -0
  1046. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-BpFIRrIG.woff +0 -0
  1047. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-CSnRHPqi.woff2 +0 -0
  1048. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-C7pAJQf3.woff +0 -0
  1049. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-SFbjSSXG.woff2 +0 -0
  1050. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-57H5kXpk.woff +0 -0
  1051. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-BrLJmDFd.woff2 +0 -0
  1052. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CE7Y9E5I.woff2 +0 -0
  1053. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CkxUuY_J.woff +0 -0
  1054. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-B2Z1u9V0.woff +0 -0
  1055. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-BNiX9WYe.woff2 +0 -0
  1056. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BEFP-jPj.woff2 +0 -0
  1057. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BarKnue-.woff +0 -0
  1058. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-CaOERqUu.woff2 +0 -0
  1059. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-DQ8k7O-z.woff +0 -0
  1060. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-ChsH3Xz1.woff +0 -0
  1061. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-DfrgvMVe.woff2 +0 -0
  1062. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-9QmoGV7n.woff2 +0 -0
  1063. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-uPx24aJ3.woff +0 -0
  1064. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-DCgv6PbD.woff +0 -0
  1065. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-oBOpBx6K.woff2 +0 -0
  1066. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-BVvFPwh-.woff +0 -0
  1067. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-C6iWVt4P.woff2 +0 -0
  1068. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-BrzljjIv.woff +0 -0
  1069. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-Ck00YIbi.woff2 +0 -0
  1070. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-7syfOPuJ.woff +0 -0
  1071. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-CRgD0sTN.woff2 +0 -0
  1072. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-6C8BpThh.woff +0 -0
  1073. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-Di883cZY.woff2 +0 -0
  1074. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-BocR-vpi.woff +0 -0
  1075. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-CQH8I4uz.woff2 +0 -0
  1076. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-CW90qVjA.woff +0 -0
  1077. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-DteAo9_1.woff2 +0 -0
  1078. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BBai0ku9.woff +0 -0
  1079. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BUBreiOx.woff2 +0 -0
  1080. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BQMQzFvO.woff2 +0 -0
  1081. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BYKYx0HK.woff +0 -0
  1082. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-_GHhCQ5l.woff2 +0 -0
  1083. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-oyHCgG2o.woff +0 -0
  1084. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-B3Re-brg.woff +0 -0
  1085. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-DSSj8dPk.woff2 +0 -0
  1086. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-BoDC0KzR.woff2 +0 -0
  1087. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-CvQah7db.woff +0 -0
  1088. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-BizbVEtQ.woff2 +0 -0
  1089. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-D7gQSpeq.woff +0 -0
  1090. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-BiBUOoTN.woff +0 -0
  1091. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-CVgRkKvZ.woff2 +0 -0
  1092. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Cx600hZn.woff +0 -0
  1093. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Dxydenfw.woff2 +0 -0
  1094. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-B-iV2FCz.woff +0 -0
  1095. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-CrxhJitf.woff2 +0 -0
  1096. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-56davMJK.woff +0 -0
  1097. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-BMpyr2ZA.woff2 +0 -0
  1098. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-Cr4qQ6-_.woff2 +0 -0
  1099. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-D6fQD8s2.woff +0 -0
  1100. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-D1Vp2bgS.woff2 +0 -0
  1101. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-DH9qOlQO.woff +0 -0
  1102. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-BtzFMeyM.woff +0 -0
  1103. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-DgBl-sfZ.woff2 +0 -0
  1104. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-BnkgwyNC.woff2 +0 -0
  1105. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-DrLlCQdP.woff +0 -0
  1106. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-D5wsbWuV.woff2 +0 -0
  1107. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-Dk7rkHeG.woff +0 -0
  1108. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-CGMVkPUQ.woff +0 -0
  1109. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-D_kp1-X0.woff2 +0 -0
  1110. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-ADsZ937l.woff2 +0 -0
  1111. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-tkFC4Fme.woff +0 -0
  1112. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-400-normal-mGIBpTDA.woff +0 -0
  1113. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-600-normal-ItZEXAoj.woff +0 -0
  1114. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-700-normal-B2Sn8ODt.woff +0 -0
  1115. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-DRF-ZkFr.woff2 +0 -0
  1116. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-Dye9yGvg.woff +0 -0
  1117. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DD0bpqGF.woff2 +0 -0
  1118. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DSxToWDI.woff +0 -0
  1119. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-D9qdrR16.woff +0 -0
  1120. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-DJ9uBiDw.woff2 +0 -0
  1121. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-BqAaxgfH.woff2 +0 -0
  1122. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-CsmxKILz.woff +0 -0
  1123. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-BQOZ4bZi.woff2 +0 -0
  1124. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-Jx8Bp44x.woff +0 -0
  1125. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-BGJMzr3_.woff2 +0 -0
  1126. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-UuW3VIUX.woff +0 -0
  1127. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Bwv1VfH1.woff +0 -0
  1128. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Dl6WfOX3.woff2 +0 -0
  1129. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-Bpb5tt9_.woff +0 -0
  1130. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-DIFsJkow.woff2 +0 -0
  1131. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-BSSeJztI.woff +0 -0
  1132. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-DSVZ1AdV.woff2 +0 -0
  1133. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-BWVo0zWK.woff2 +0 -0
  1134. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-d-ngL4VK.woff +0 -0
  1135. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BQhDNXpW.woff2 +0 -0
  1136. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BcvVxmDS.woff +0 -0
  1137. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-BzUW0Dn4.woff +0 -0
  1138. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-DKxEyxqG.woff2 +0 -0
  1139. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-C6WuUhoa.woff2 +0 -0
  1140. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-Dpw9oVkY.woff +0 -0
  1141. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-BAOsDDVH.woff2 +0 -0
  1142. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-Bt-5iAy-.woff +0 -0
  1143. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-CKy2WdQj.woff2 +0 -0
  1144. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-DWwfiF2R.woff +0 -0
  1145. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-B9Y_v3iL.woff2 +0 -0
  1146. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-Cw08yPg4.woff +0 -0
  1147. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-C3VBxVTw.woff2 +0 -0
  1148. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-CPG32_M5.woff +0 -0
  1149. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-B2EBYgsw.woff2 +0 -0
  1150. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-CBBnYnrG.woff +0 -0
  1151. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Bo2fKdUV.woff2 +0 -0
  1152. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Dya4Xg3C.woff +0 -0
  1153. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BZxPnU9z.woff +0 -0
  1154. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BwyRFFoW.woff2 +0 -0
  1155. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-BWHZA6Va.woff +0 -0
  1156. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-DGQdaffJ.woff2 +0 -0
  1157. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-BaRCXue3.woff2 +0 -0
  1158. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-DWeXBY63.woff +0 -0
  1159. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-BJMJyZ3V.woff2 +0 -0
  1160. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-CyutRTf1.woff +0 -0
  1161. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-N6twIXlf.woff +0 -0
  1162. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-_dAzPdKJ.woff2 +0 -0
  1163. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-JS-IrZBF.woff +0 -0
  1164. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-ezIou-vd.woff2 +0 -0
  1165. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-BKUm06v8.woff +0 -0
  1166. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-SLeRHHzg.woff2 +0 -0
  1167. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-B5gMlKVs.woff2 +0 -0
  1168. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-DQ5H61GM.woff +0 -0
  1169. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-BGMyUOoF.woff2 +0 -0
  1170. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-CpOmgEj1.woff +0 -0
  1171. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DASryXO5.woff2 +0 -0
  1172. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DyDLcZM_.woff +0 -0
  1173. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-C2pGRKdb.woff2 +0 -0
  1174. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-dsyop0xt.woff +0 -0
  1175. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-CUIc6NHY.woff2 +0 -0
  1176. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-D2dVMMqj.woff +0 -0
  1177. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-7tGyeWfE.woff2 +0 -0
  1178. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-LSwIbfT4.woff +0 -0
  1179. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-4pOvaKVD.woff2 +0 -0
  1180. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-BdZNxX81.woff +0 -0
  1181. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DDJncqjC.woff +0 -0
  1182. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DU9yuSzL.woff2 +0 -0
  1183. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-KlXN5ii8.woff +0 -0
  1184. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-bZ0wMfTu.woff2 +0 -0
  1185. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-C3Bon6kP.woff +0 -0
  1186. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-CKBR3dTc.woff2 +0 -0
  1187. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-B6ntzhez.woff +0 -0
  1188. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-DxvfHPiZ.woff2 +0 -0
  1189. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-CxAqcrGJ.woff +0 -0
  1190. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-ofakrDYw.woff2 +0 -0
  1191. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-Bfs6gmfs.woff +0 -0
  1192. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-D9sJhzsn.woff2 +0 -0
  1193. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-BNzLW3gK.woff2 +0 -0
  1194. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-arm4ZLbG.woff +0 -0
  1195. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-BYo95wdR.woff2 +0 -0
  1196. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-CTWAZiwT.woff +0 -0
  1197. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-7icOh9fn.woff2 +0 -0
  1198. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-CXC3RG0Y.woff +0 -0
  1199. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CXMVQbir.woff +0 -0
  1200. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CgSa9olG.woff2 +0 -0
  1201. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-5IjjJd2s.woff2 +0 -0
  1202. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-Dp8k-UQr.woff +0 -0
  1203. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-eDLHHM6r.woff +0 -0
  1204. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-ecLDx596.woff2 +0 -0
  1205. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BImwtP9C.woff2 +0 -0
  1206. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BikO35BJ.woff +0 -0
  1207. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-DsSHHMYs.woff2 +0 -0
  1208. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-fFxOmumy.woff +0 -0
  1209. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-Dg77fDuG.woff2 +0 -0
  1210. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-DiUSRVIQ.woff +0 -0
  1211. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-Iyqdz6U_.woff +0 -0
  1212. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-jeWDsIkS.woff2 +0 -0
  1213. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-Bma8ReWy.woff2 +0 -0
  1214. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-D3LkCFqf.woff +0 -0
  1215. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-BgsgXhin.woff +0 -0
  1216. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-DQNvf_Pi.woff2 +0 -0
  1217. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-CkeNzekL.woff +0 -0
  1218. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-D7J9HacT.woff2 +0 -0
  1219. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-B0Hs_yqp.woff +0 -0
  1220. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-y8o2u47q.woff2 +0 -0
  1221. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-BEPxXZmH.woff2 +0 -0
  1222. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-CqOqqrqQ.woff +0 -0
  1223. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-CK1rBi2w.woff2 +0 -0
  1224. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-DQz22aVW.woff +0 -0
  1225. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-Bgp388lR.woff2 +0 -0
  1226. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-DZtAE4NN.woff +0 -0
  1227. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-BFaRWvXD.woff +0 -0
  1228. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-UVZzLgo1.woff2 +0 -0
  1229. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-Bc0pWfYQ.woff2 +0 -0
  1230. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-DU4X4cgu.woff +0 -0
  1231. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-D22FGjEf.woff +0 -0
  1232. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-DGaJXlcP.woff2 +0 -0
  1233. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-B4sph3s0.woff2 +0 -0
  1234. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-DBfqpTpp.woff +0 -0
  1235. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BTqxO8KS.woff2 +0 -0
  1236. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BZ_Lvmfb.woff +0 -0
  1237. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-BkIPCguy.woff +0 -0
  1238. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-D_Q2U_HY.woff2 +0 -0
  1239. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-BkfJ-_O-.woff +0 -0
  1240. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-CwN3DFq1.woff2 +0 -0
  1241. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-CRZQtL4e.woff +0 -0
  1242. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-DSLFRuBi.woff2 +0 -0
  1243. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-CAFV2WS-.woff2 +0 -0
  1244. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-DRBwH2wC.woff +0 -0
  1245. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-D9oj9FbO.woff +0 -0
  1246. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-gTii6YIK.woff2 +0 -0
  1247. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-BCOcqFvH.woff +0 -0
  1248. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-NWeXooWt.woff2 +0 -0
  1249. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-Dwsde-Vo.woff2 +0 -0
  1250. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-rFqEK_Cq.woff +0 -0
  1251. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-B4li38vl.woff +0 -0
  1252. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-DYsI6Aeh.woff2 +0 -0
  1253. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DjS9hHaA.woff +0 -0
  1254. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DplHNRWf.woff2 +0 -0
  1255. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-8FGNeBVO.woff +0 -0
  1256. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-BE-tQzc4.woff2 +0 -0
  1257. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-X_3qL3eD.woff +0 -0
  1258. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-_sOvmSPU.woff2 +0 -0
  1259. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-BIWHDE_t.woff2 +0 -0
  1260. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-DNiOFlC5.woff +0 -0
  1261. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-8ErTTni6.woff2 +0 -0
  1262. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-Ckksq6Um.woff +0 -0
  1263. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-9c1B3ugf.woff +0 -0
  1264. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-C2SAUond.woff2 +0 -0
  1265. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-BfKrnenI.woff +0 -0
  1266. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-CNxVmlv6.woff2 +0 -0
  1267. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-hyHZDzzP.woff2 +0 -0
  1268. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-nq1zdTbH.woff +0 -0
  1269. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-Ctdcjw58.woff +0 -0
  1270. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-D_FuIz1A.woff2 +0 -0
  1271. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-D3j6dBx3.woff +0 -0
  1272. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-lzlrdx0G.woff2 +0 -0
  1273. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-6KKBCWxa.woff2 +0 -0
  1274. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-DgWoOUUg.woff +0 -0
  1275. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-B3QY7F5h.woff2 +0 -0
  1276. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-Bk31nBaz.woff +0 -0
  1277. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-BpRgjvkz.woff +0 -0
  1278. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-CfTKk1Ti.woff2 +0 -0
  1279. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-BlYm4TE_.woff2 +0 -0
  1280. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-DiY9dfka.woff +0 -0
  1281. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-C6ZrhK66.woff +0 -0
  1282. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-Cb_onqwe.woff2 +0 -0
  1283. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-ClpMq853.woff2 +0 -0
  1284. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-DIRwnaAC.woff +0 -0
  1285. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-Bsq_ALiN.woff2 +0 -0
  1286. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-D5M2jRxh.woff +0 -0
  1287. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-D25giLXx.woff +0 -0
  1288. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-DJ24ly1p.woff2 +0 -0
  1289. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-BlNTLUxk.woff +0 -0
  1290. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-Ce6XQT-X.woff2 +0 -0
  1291. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-BIimYJ8p.woff2 +0 -0
  1292. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-u7RE7Vcl.woff +0 -0
  1293. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-BxRQ3DPg.woff +0 -0
  1294. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-DK5zmmDo.woff2 +0 -0
  1295. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BQZWkZap.woff2 +0 -0
  1296. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BvYVJLC-.woff +0 -0
  1297. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-COjhVT5P.woff +0 -0
  1298. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-D_nkzVDi.woff2 +0 -0
  1299. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-BJsNk892.woff +0 -0
  1300. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-D0rsZ7c1.woff2 +0 -0
  1301. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-BF8CoFgI.woff +0 -0
  1302. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-HbsCI6VV.woff2 +0 -0
  1303. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-CfPjA3xh.woff +0 -0
  1304. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-ChBeHVSC.woff2 +0 -0
  1305. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-B88Gnili.woff +0 -0
  1306. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-D9HVw03N.woff2 +0 -0
  1307. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-BKinYB31.woff +0 -0
  1308. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-D3NTG_Qr.woff2 +0 -0
  1309. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-BpU6wBwH.woff +0 -0
  1310. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-rfJ4c39Q.woff2 +0 -0
  1311. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DClz9Dhe.woff +0 -0
  1312. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DnfTuI4o.woff2 +0 -0
  1313. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-B9cHSeQ5.woff2 +0 -0
  1314. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-HVPdCDZ0.woff +0 -0
  1315. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-BL0EAwDJ.woff +0 -0
  1316. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-CoMSI1sj.woff2 +0 -0
  1317. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-5BseSrpV.woff +0 -0
  1318. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-DW-mflD2.woff2 +0 -0
  1319. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BM6YwLsn.woff2 +0 -0
  1320. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BTWjvuog.woff +0 -0
  1321. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-CxFvTzoC.woff2 +0 -0
  1322. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-D51sy90d.woff +0 -0
  1323. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-Bp0aGueO.woff2 +0 -0
  1324. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-CQdRArtb.woff +0 -0
  1325. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DX0jfUHx.woff +0 -0
  1326. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DrNdqo4y.woff2 +0 -0
  1327. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DvAVPJPm.woff +0 -0
  1328. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DzUkgy6d.woff2 +0 -0
  1329. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-BUGpoCPv.woff2 +0 -0
  1330. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-CbVTJJOJ.woff +0 -0
  1331. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-BtXAriso.woff2 +0 -0
  1332. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-DvZrEIB3.woff +0 -0
  1333. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-Bkns-GmL.woff +0 -0
  1334. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-XH04BMqX.woff2 +0 -0
  1335. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-BfaxMcpg.woff2 +0 -0
  1336. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-DC5DjlVx.woff +0 -0
  1337. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-C8x5jxqc.woff2 +0 -0
  1338. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-DIwXWqjG.woff +0 -0
  1339. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-Dst0n_2I.woff2 +0 -0
  1340. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-TveJi30r.woff +0 -0
  1341. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-BXcw4A5K.woff2 +0 -0
  1342. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-C5mt5pwb.woff +0 -0
  1343. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DUw4O9kJ.woff2 +0 -0
  1344. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DdAHar7U.woff +0 -0
  1345. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-CdDbCMo5.woff2 +0 -0
  1346. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-WSGX5G5j.woff +0 -0
  1347. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-BX4TFa2_.woff2 +0 -0
  1348. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-DQFNc6DE.woff +0 -0
  1349. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-CHV4cTl6.woff2 +0 -0
  1350. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-DKXEv0-8.woff +0 -0
  1351. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-BwemUgt7.woff2 +0 -0
  1352. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-jqoE6MSf.woff +0 -0
  1353. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-C7dv3Yp1.woff +0 -0
  1354. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-Dc8--5xr.woff2 +0 -0
  1355. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-SmEnIkYa.woff +0 -0
  1356. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-tFiGs3IA.woff2 +0 -0
  1357. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-BXRUM-0I.woff2 +0 -0
  1358. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-G3AQr80e.woff +0 -0
  1359. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-BJ-eyJFM.woff2 +0 -0
  1360. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-D8XNQCXr.woff +0 -0
  1361. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-B1EBYabM.woff +0 -0
  1362. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-boMeGYwE.woff2 +0 -0
  1363. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-5_89urOt.woff +0 -0
  1364. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-Cn0IXtFE.woff2 +0 -0
  1365. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-BOd0bDGO.woff +0 -0
  1366. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-C26YuVxL.woff2 +0 -0
  1367. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-BRtTCfUk.woff +0 -0
  1368. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-D32P0Vtu.woff2 +0 -0
  1369. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-BrNo5bPi.woff2 +0 -0
  1370. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-ic2OowiW.woff +0 -0
  1371. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-CVYiHbL6.woff +0 -0
  1372. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-u-vEkTpG.woff2 +0 -0
  1373. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-BQWp4BEz.woff +0 -0
  1374. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-DDpDjsGx.woff2 +0 -0
  1375. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-DajH-4xp.woff2 +0 -0
  1376. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-icuQ__PU.woff +0 -0
  1377. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-ClV-zSDt.woff +0 -0
  1378. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-CnyrRvpH.woff2 +0 -0
  1379. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-Bw_rXMEi.woff2 +0 -0
  1380. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-yc2U6i4H.woff +0 -0
  1381. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-C2uell5V.woff +0 -0
  1382. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-DsLbRz3E.woff2 +0 -0
  1383. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-2GacE3N5.woff +0 -0
  1384. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-EpYP79Ha.woff2 +0 -0
  1385. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C14BeeRx.woff2 +0 -0
  1386. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C_JCm1wG.woff +0 -0
  1387. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CCq3cWfr.woff2 +0 -0
  1388. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CNKfBGzf.woff +0 -0
  1389. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-DvPwdAi9.woff +0 -0
  1390. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-bReT13VI.woff2 +0 -0
  1391. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-CxNRCaXC.woff +0 -0
  1392. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-DIfXns4-.woff2 +0 -0
  1393. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-8jj6aRvF.woff2 +0 -0
  1394. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-DlyOX1Qf.woff +0 -0
  1395. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-D8sN10Nm.woff +0 -0
  1396. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-og8bjehs.woff2 +0 -0
  1397. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Bb5ShdOk.woff +0 -0
  1398. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Dwyie3Iv.woff2 +0 -0
  1399. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-CdiZE1rm.woff2 +0 -0
  1400. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-sZuKvaH0.woff +0 -0
  1401. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BTXGcZ1f.woff2 +0 -0
  1402. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BfB1Adps.woff +0 -0
  1403. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-9iA5aW6B.woff2 +0 -0
  1404. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-BlQLoLxo.woff +0 -0
  1405. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-CuP_sqvk.woff +0 -0
  1406. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-DJDdt009.woff2 +0 -0
  1407. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-T5FoFJ7Z.woff +0 -0
  1408. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-ZAIr8xfv.woff2 +0 -0
  1409. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-47Y8c3gi.woff +0 -0
  1410. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-Ce6Hc4-O.woff2 +0 -0
  1411. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-C0xzysV4.woff +0 -0
  1412. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-R7ba6CXY.woff2 +0 -0
  1413. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-BhgGw4mN.woff +0 -0
  1414. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-DqgQgYzO.woff2 +0 -0
  1415. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-BQ1quosg.woff +0 -0
  1416. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-DWWwgYkQ.woff2 +0 -0
  1417. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-C2tA-5LU.woff +0 -0
  1418. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-DhA0Dlsd.woff2 +0 -0
  1419. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-BhPAGixe.woff2 +0 -0
  1420. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-Q4Ct26U-.woff +0 -0
  1421. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal--2P0gMaE.woff2 +0 -0
  1422. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal-DOuCM5BV.woff +0 -0
  1423. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-BWVUGdkT.woff2 +0 -0
  1424. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-DKQ7A1j0.woff +0 -0
  1425. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-CeF5ynVi.woff +0 -0
  1426. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-U3Fi3Xkr.woff2 +0 -0
  1427. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-CfqeE6EG.woff +0 -0
  1428. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-D_k1n-D_.woff2 +0 -0
  1429. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-Bwsph-Eg.woff +0 -0
  1430. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-DhhMI-5X.woff2 +0 -0
  1431. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-B0dGlL2-.woff +0 -0
  1432. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-C8Hbz-dX.woff2 +0 -0
  1433. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Ciy4dQcd.woff +0 -0
  1434. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Dqn0gBBY.woff2 +0 -0
  1435. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-CMZZHiYs.woff2 +0 -0
  1436. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-D3h_qbuq.woff +0 -0
  1437. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-B1DETJv2.woff2 +0 -0
  1438. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-M5nVKp2A.woff +0 -0
  1439. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-BfkGgwSg.woff2 +0 -0
  1440. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-DoNv6QKI.woff +0 -0
  1441. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-9-dsEf5V.woff2 +0 -0
  1442. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-cJ6s0u50.woff +0 -0
  1443. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-ByHPz9kn.woff +0 -0
  1444. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-D6FBL1WO.woff2 +0 -0
  1445. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-B6WlHkvJ.woff +0 -0
  1446. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-CXc_m19k.woff2 +0 -0
  1447. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-BSK1xVrb.woff2 +0 -0
  1448. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-OQ8utWzT.woff +0 -0
  1449. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-B6i_9_xV.woff2 +0 -0
  1450. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-C0PiAt94.woff +0 -0
  1451. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-B4bajS3c.woff2 +0 -0
  1452. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-FBGzvyjM.woff +0 -0
  1453. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-Cl_ZMZu8.woff2 +0 -0
  1454. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-pqZtpQem.woff +0 -0
  1455. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-BhojjqGx.woff2 +0 -0
  1456. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-DWNWPMXr.woff +0 -0
  1457. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-BaY9CSq2.woff +0 -0
  1458. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-DPH1GVj3.woff2 +0 -0
  1459. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-BcydLyYe.woff +0 -0
  1460. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-DqzXikSS.woff2 +0 -0
  1461. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-0cKlfajM.woff +0 -0
  1462. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-BNFDc8MW.woff2 +0 -0
  1463. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-CXuQ_R0S.woff +0 -0
  1464. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-OCME7gOK.woff2 +0 -0
  1465. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-BgkVLddD.woff +0 -0
  1466. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-GzZNxGhs.woff2 +0 -0
  1467. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-Qh65nqz2.woff +0 -0
  1468. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-a40eS-gV.woff2 +0 -0
  1469. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-4k_rP24C.woff2 +0 -0
  1470. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-CP6Nx25U.woff +0 -0
  1471. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-CIqUzk_a.woff2 +0 -0
  1472. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-DCSYk_Yh.woff +0 -0
  1473. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-DnbCIk-O.woff +0 -0
  1474. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-zgPUJYJw.woff2 +0 -0
  1475. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-B515X6p6.woff2 +0 -0
  1476. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-Cf7sm02w.woff +0 -0
  1477. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-DugMp3FI.woff +0 -0
  1478. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-pBxafNws.woff2 +0 -0
  1479. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-7KdM18gu.woff +0 -0
  1480. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-CMi4ZY-h.woff2 +0 -0
  1481. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-BcrT9Fgn.woff +0 -0
  1482. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-DmQyl23y.woff2 +0 -0
  1483. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-CeMMRcA6.woff +0 -0
  1484. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-DnK7T1fc.woff2 +0 -0
  1485. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-CINNKEoN.woff +0 -0
  1486. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-sDTGjBrk.woff2 +0 -0
  1487. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-B9g1Ctqd.woff2 +0 -0
  1488. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-DJG00D-p.woff +0 -0
  1489. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-B4enfOPB.woff +0 -0
  1490. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-DCQl7zAm.woff2 +0 -0
  1491. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-CqLTajqw.woff2 +0 -0
  1492. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-hKVirjqK.woff +0 -0
  1493. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-CDdMl-oX.woff2 +0 -0
  1494. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-D5LEXcjN.woff +0 -0
  1495. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-DmCaZeJ-.woff2 +0 -0
  1496. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-Ds_Fb90o.woff +0 -0
  1497. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-8D2N3nxA.woff +0 -0
  1498. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-BTYOjzj6.woff2 +0 -0
  1499. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-COdVePwF.woff2 +0 -0
  1500. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-DEF_oZFa.woff +0 -0
  1501. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DLXpb0hq.woff +0 -0
  1502. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DuzcAQdo.woff2 +0 -0
  1503. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-BKXIEbM-.woff +0 -0
  1504. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-C-cy4WQL.woff2 +0 -0
  1505. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-BOnpTeYv.woff2 +0 -0
  1506. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-CRn7_mZz.woff +0 -0
  1507. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-BAjKvcG-.woff2 +0 -0
  1508. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-DIq7Gv9V.woff +0 -0
  1509. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CO8B564V.woff +0 -0
  1510. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CYiGY1Yb.woff2 +0 -0
  1511. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-3DeNbFry.woff2 +0 -0
  1512. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-BQdwTqgb.woff +0 -0
  1513. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-CcI0wmDd.woff2 +0 -0
  1514. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-ZYmKSXu1.woff +0 -0
  1515. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-BzrrxQTg.woff2 +0 -0
  1516. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-CMsSAe0_.woff +0 -0
  1517. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-CwhtzdGH.woff2 +0 -0
  1518. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-DQN8MKOE.woff +0 -0
  1519. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-Cf7HWvBM.woff2 +0 -0
  1520. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-DOUVV8ig.woff +0 -0
  1521. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-CByVAW_A.woff2 +0 -0
  1522. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-VIPXB5Il.woff +0 -0
  1523. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-BC0mCFX2.woff2 +0 -0
  1524. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-DHfan8x-.woff +0 -0
  1525. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-BIIL4Btv.woff +0 -0
  1526. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-CN8RaHGd.woff2 +0 -0
  1527. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-BMMLfFhV.woff2 +0 -0
  1528. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-DmfLM_GL.woff +0 -0
  1529. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-BQNnzD7b.woff +0 -0
  1530. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-CYHfi_5o.woff2 +0 -0
  1531. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-8oNp3a_g.woff2 +0 -0
  1532. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-BKXxr4Vf.woff +0 -0
  1533. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-BcdoKDVA.woff +0 -0
  1534. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-Dxy_7wWe.woff2 +0 -0
  1535. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-BrHR60F5.woff2 +0 -0
  1536. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-kn3L8mkz.woff +0 -0
  1537. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DHHBh9NH.woff2 +0 -0
  1538. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DbfrFOKo.woff +0 -0
  1539. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-BBQprcoA.woff +0 -0
  1540. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-DIYBHFGo.woff2 +0 -0
  1541. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-BY6JiZG_.woff2 +0 -0
  1542. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-D20hKn8x.woff +0 -0
  1543. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-Bdo6QjXy.woff2 +0 -0
  1544. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-DU6215sy.woff +0 -0
  1545. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-CNeD7cKc.woff +0 -0
  1546. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-D4WgQZhf.woff2 +0 -0
  1547. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-CKM4EqLH.woff2 +0 -0
  1548. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-DRimGseV.woff +0 -0
  1549. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-CIkK4pwL.woff +0 -0
  1550. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-o84Tuavw.woff2 +0 -0
  1551. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-DKK03KYp.woff2 +0 -0
  1552. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-Sq9FhKgR.woff +0 -0
  1553. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-9_m442uC.woff +0 -0
  1554. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-DFBsPAhk.woff2 +0 -0
  1555. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-Bj6Oga3u.woff2 +0 -0
  1556. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-IB6GFZTf.woff +0 -0
  1557. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-BPp3kOId.woff2 +0 -0
  1558. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-CXE0S75n.woff +0 -0
  1559. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-D7nsD7Wm.woff +0 -0
  1560. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-DbmD_Owd.woff2 +0 -0
  1561. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-C5FnASlc.woff +0 -0
  1562. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-Cz9v4gjx.woff2 +0 -0
  1563. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-BeBTa0LV.woff2 +0 -0
  1564. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-DblVcY4a.woff +0 -0
  1565. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-Ch-uxywT.woff +0 -0
  1566. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-ChZ2CLi-.woff2 +0 -0
  1567. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-BkGpNJKI.woff2 +0 -0
  1568. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-CG9-PeCF.woff +0 -0
  1569. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CZW29fAQ.woff +0 -0
  1570. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CkMuXuOj.woff2 +0 -0
  1571. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-CN_UQa3U.woff +0 -0
  1572. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-DY57wkwV.woff2 +0 -0
  1573. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-BUarw7E5.woff +0 -0
  1574. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-Ds-mjTNk.woff2 +0 -0
  1575. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-BntN_kys.woff2 +0 -0
  1576. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-DoPFrHSK.woff +0 -0
  1577. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-D259vsJ_.woff +0 -0
  1578. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-DvUF8GMi.woff2 +0 -0
  1579. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-CisRgCMg.woff2 +0 -0
  1580. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-ReaqIn5m.woff +0 -0
  1581. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BIiZFSUQ.woff2 +0 -0
  1582. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BylngM58.woff +0 -0
  1583. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-BqppHOeA.woff +0 -0
  1584. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-DaCXFUcH.woff2 +0 -0
  1585. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-2DkYfPPb.woff +0 -0
  1586. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-DN6cN55_.woff2 +0 -0
  1587. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-DjiLTpOV.woff +0 -0
  1588. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-zUtSBhiX.woff2 +0 -0
  1589. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-B8TcbMdb.woff +0 -0
  1590. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-BJLUyYDo.woff2 +0 -0
  1591. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-lS3UdozO.woff +0 -0
  1592. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-nFX-cMXi.woff2 +0 -0
  1593. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-DYzxzB3U.woff +0 -0
  1594. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-NT-G-2lC.woff2 +0 -0
  1595. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-CEDRAc_f.woff2 +0 -0
  1596. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-DlThbTsi.woff +0 -0
  1597. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-C_RUWM8I.woff +0 -0
  1598. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-Dhfyy0ky.woff2 +0 -0
  1599. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-CdI89zbS.woff2 +0 -0
  1600. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-DRor3NKv.woff +0 -0
  1601. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-5bMSGSar.woff +0 -0
  1602. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-Bpqw4_PX.woff2 +0 -0
  1603. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-BKj6RBZ7.woff +0 -0
  1604. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-CjRp-Iz4.woff2 +0 -0
  1605. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-BXC27J9C.woff +0 -0
  1606. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-JtZooioR.woff2 +0 -0
  1607. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-6-qa9Uj4.woff2 +0 -0
  1608. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-CM7tVCiU.woff +0 -0
  1609. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-CokKDsRY.woff2 +0 -0
  1610. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-c6nUiZEv.woff +0 -0
  1611. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-BCRYVYbj.woff +0 -0
  1612. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-C4o110v7.woff2 +0 -0
  1613. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-BCjvaIwI.woff +0 -0
  1614. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-CPQAppG5.woff2 +0 -0
  1615. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-2NuQXMn5.woff +0 -0
  1616. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-pwYieqoq.woff2 +0 -0
  1617. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-DTiOP-RD.woff +0 -0
  1618. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-J2K8ygE7.woff2 +0 -0
  1619. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-Bqi1rgUh.woff2 +0 -0
  1620. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-CAkrqKEd.woff +0 -0
  1621. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-BUVowAmE.woff +0 -0
  1622. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-CVV1AoIy.woff2 +0 -0
  1623. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-B_WqVFu8.woff2 +0 -0
  1624. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-C-GRhBDF.woff +0 -0
  1625. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-BvkVX0xm.woff +0 -0
  1626. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-CPvF_U24.woff2 +0 -0
  1627. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-BKNr8HaE.woff +0 -0
  1628. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-SYUuQfwq.woff2 +0 -0
  1629. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-6t-D5P6M.woff +0 -0
  1630. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-Cwb_HiV8.woff2 +0 -0
  1631. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-BVAYXEqw.woff +0 -0
  1632. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-CF0EWuft.woff2 +0 -0
  1633. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CSej5QVJ.woff +0 -0
  1634. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CWNURXbv.woff2 +0 -0
  1635. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DqmD0X2I.woff +0 -0
  1636. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DvZpuW9q.woff2 +0 -0
  1637. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-AF35YmmH.woff2 +0 -0
  1638. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-J5xWG5gS.woff +0 -0
  1639. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Ba8rnT7_.woff2 +0 -0
  1640. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Cdi7mG90.woff +0 -0
  1641. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-4ZbirUQU.woff2 +0 -0
  1642. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-Coj3Y2Vv.woff +0 -0
  1643. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-CpXdOOTc.woff2 +0 -0
  1644. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-eM8eMXyQ.woff +0 -0
  1645. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-DXBEl0OU.woff +0 -0
  1646. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-ON8tPSnT.woff2 +0 -0
  1647. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-Bbz7lyAG.woff2 +0 -0
  1648. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-DfbGPVVb.woff +0 -0
  1649. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-C-oyfrUa.woff2 +0 -0
  1650. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-DPe2AXol.woff +0 -0
  1651. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BEKBLOkr.woff2 +0 -0
  1652. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BZRywIXe.woff +0 -0
  1653. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-DChZSEXi.woff2 +0 -0
  1654. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-JLAmA7_6.woff +0 -0
  1655. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-CBiEIaz5.woff2 +0 -0
  1656. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-D-mZ9inR.woff +0 -0
  1657. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-CAapLUyl.woff2 +0 -0
  1658. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-Dl-orC8M.woff +0 -0
  1659. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-JEDfv4vZ.woff2 +0 -0
  1660. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-xL2psWlD.woff +0 -0
  1661. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-CKSk9toV.woff2 +0 -0
  1662. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-DNGmaJIL.woff +0 -0
  1663. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DDZagcz1.woff +0 -0
  1664. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DloGa7SL.woff2 +0 -0
  1665. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-Bv7EAOP1.woff +0 -0
  1666. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-CCA2fInu.woff2 +0 -0
  1667. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BDhrvRnL.woff2 +0 -0
  1668. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BOjgDpon.woff +0 -0
  1669. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-BeTmwP_K.woff2 +0 -0
  1670. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-uD_8VqjX.woff +0 -0
  1671. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-C-NBohiT.woff2 +0 -0
  1672. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-sVUIRMKd.woff +0 -0
  1673. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-BTtbRNyU.woff +0 -0
  1674. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-Bs1zlN0G.woff2 +0 -0
  1675. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-3CkcYQgr.woff2 +0 -0
  1676. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-C0tjZHt0.woff +0 -0
  1677. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-DjrHhANL.woff +0 -0
  1678. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-UPAurMge.woff2 +0 -0
  1679. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-CCVU2G9b.woff2 +0 -0
  1680. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-dcW_ilWW.woff +0 -0
  1681. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-DcS6irVl.woff2 +0 -0
  1682. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-w0hsbhoe.woff +0 -0
  1683. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CazBSycC.woff2 +0 -0
  1684. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CvRuq6Vw.woff +0 -0
  1685. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-CnxhIj-f.woff2 +0 -0
  1686. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-ZCEqhetZ.woff +0 -0
  1687. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-BBWiOGe2.woff +0 -0
  1688. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-i3phtpOA.woff2 +0 -0
  1689. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-DO0ByKpJ.woff2 +0 -0
  1690. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-Dei1Gj2q.woff +0 -0
  1691. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-2BRpmgCV.woff2 +0 -0
  1692. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-B2cWSh78.woff +0 -0
  1693. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CKeHRgKb.woff +0 -0
  1694. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CXFU6tjk.woff2 +0 -0
  1695. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-CTtpPuSd.woff2 +0 -0
  1696. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-N5V03xjS.woff +0 -0
  1697. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Cv3FeIij.woff2 +0 -0
  1698. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Dml5TFym.woff +0 -0
  1699. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-CJHvMuEH.woff2 +0 -0
  1700. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-ChXV0eBj.woff +0 -0
  1701. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-BR1fDv7I.woff +0 -0
  1702. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-kWux5vbT.woff2 +0 -0
  1703. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-3CnvMMD7.woff2 +0 -0
  1704. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-TNl1bUeL.woff +0 -0
  1705. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-B4PQFGba.woff2 +0 -0
  1706. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-bBSJai_o.woff +0 -0
  1707. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-BAbSphgc.woff2 +0 -0
  1708. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-HHyMEHBJ.woff +0 -0
  1709. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-CUhld-kf.woff2 +0 -0
  1710. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-DTBYTMn7.woff +0 -0
  1711. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-CR-CWSvQ.woff2 +0 -0
  1712. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-Cq5mpPr_.woff +0 -0
  1713. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-D-oyN10X.woff +0 -0
  1714. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-DQNF9HpE.woff2 +0 -0
  1715. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-BCEQWDh5.woff2 +0 -0
  1716. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-DDVUYQLq.woff +0 -0
  1717. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DL0LF1av.woff +0 -0
  1718. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DyaIQrhK.woff2 +0 -0
  1719. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-B0AxqRZO.woff2 +0 -0
  1720. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-Inz-d5-8.woff +0 -0
  1721. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-C5hUXC4y.woff2 +0 -0
  1722. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-CSCHltyB.woff +0 -0
  1723. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-ClJ2q6nT.woff +0 -0
  1724. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-CpgWTSx7.woff2 +0 -0
  1725. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BSArHqh9.woff2 +0 -0
  1726. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BVRIUm2S.woff +0 -0
  1727. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BDNWBg-b.woff +0 -0
  1728. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BnV7FV79.woff2 +0 -0
  1729. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-BQpAkNz5.woff2 +0 -0
  1730. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-bxA4bluv.woff +0 -0
  1731. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-95lB4fwA.woff +0 -0
  1732. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-VgtqRBM7.woff2 +0 -0
  1733. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-B5ZhKYLO.woff2 +0 -0
  1734. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-Dy5-YEOY.woff +0 -0
  1735. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C07c5If1.woff +0 -0
  1736. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C6bVD75P.woff2 +0 -0
  1737. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-_7qWVHie.woff2 +0 -0
  1738. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-h3oxUHXv.woff +0 -0
  1739. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-Bwghrgjh.woff2 +0 -0
  1740. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-DNnelfuN.woff +0 -0
  1741. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BBQsSgWd.woff2 +0 -0
  1742. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BeDPvyp8.woff +0 -0
  1743. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-Cjg_wNSB.woff +0 -0
  1744. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-DY_bvrHQ.woff2 +0 -0
  1745. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-Dj7VksMf.woff +0 -0
  1746. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-gP3qcvie.woff2 +0 -0
  1747. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-B0Nsm10J.woff +0 -0
  1748. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-Dn9kzegM.woff2 +0 -0
  1749. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-BaagHPlF.woff2 +0 -0
  1750. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-sM5sErEE.woff +0 -0
  1751. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-01r-uCGK.woff +0 -0
  1752. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-MpgNCYqt.woff2 +0 -0
  1753. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-CuyoBBEp.woff2 +0 -0
  1754. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-OOnXi3dj.woff +0 -0
  1755. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-GjYjPFRF.woff +0 -0
  1756. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-Vr7CPe4d.woff2 +0 -0
  1757. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-4H84KBjL.woff +0 -0
  1758. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-D9W6fT0U.woff2 +0 -0
  1759. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-CHYuKtvD.woff +0 -0
  1760. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-DAX8ENIb.woff2 +0 -0
  1761. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-DvDs5GHe.woff2 +0 -0
  1762. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-kGpxnFlG.woff +0 -0
  1763. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-BnpH2dyr.woff +0 -0
  1764. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-DhPplA2S.woff2 +0 -0
  1765. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-BDIwmQD2.woff +0 -0
  1766. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-DWFfqfVJ.woff2 +0 -0
  1767. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BEM3LLr5.woff +0 -0
  1768. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BH_9UzMR.woff2 +0 -0
  1769. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-BkNndOiq.woff2 +0 -0
  1770. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-GRBsq_TQ.woff +0 -0
  1771. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-Dc31ixSD.woff2 +0 -0
  1772. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-qBGKeeZh.woff +0 -0
  1773. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-CKh4-8lS.woff +0 -0
  1774. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-SEF2IUu4.woff2 +0 -0
  1775. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-BEJcB5Pj.woff +0 -0
  1776. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-DOnua0XC.woff2 +0 -0
  1777. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-Dk43PWfK.woff +0 -0
  1778. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-_9rnVtrt.woff2 +0 -0
  1779. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-BkaB_Reu.woff +0 -0
  1780. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-DbnutdYp.woff2 +0 -0
  1781. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-BFI-kcuc.woff +0 -0
  1782. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-b_F-aCuz.woff2 +0 -0
  1783. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-BwgNjnnm.woff2 +0 -0
  1784. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-Dkhx4lxu.woff +0 -0
  1785. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-UpohLQJI.woff2 +0 -0
  1786. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-Yul5WPNb.woff +0 -0
  1787. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-CHpiv9C7.woff2 +0 -0
  1788. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-D8XpW-jV.woff +0 -0
  1789. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-CD4ArYzM.woff2 +0 -0
  1790. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-M066d6gr.woff +0 -0
  1791. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-DV4atPPn.woff2 +0 -0
  1792. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-hjVn7kub.woff +0 -0
  1793. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-BT6SwwtR.woff2 +0 -0
  1794. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-Cd-eoA5H.woff +0 -0
  1795. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-DsGroCqE.woff +0 -0
  1796. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-kFFPHZH9.woff2 +0 -0
  1797. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-CO6mIiJi.woff +0 -0
  1798. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-DfKrXTUN.woff2 +0 -0
  1799. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-BiWBJPQ7.woff2 +0 -0
  1800. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-Bj7jp-Iz.woff +0 -0
  1801. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-CnPg-4RZ.woff2 +0 -0
  1802. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-Cvgtdz7H.woff +0 -0
  1803. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-BtF0jwlF.woff +0 -0
  1804. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-C4IDZ9L-.woff2 +0 -0
  1805. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-B4UIE9Zj.woff +0 -0
  1806. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-CLr3K58D.woff2 +0 -0
  1807. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Dln3mVPi.woff +0 -0
  1808. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Uy8tuoQH.woff2 +0 -0
  1809. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DClAUGO7.woff +0 -0
  1810. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DHBmduQt.woff2 +0 -0
  1811. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-BzR2eDWi.woff2 +0 -0
  1812. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-WTG9_11D.woff +0 -0
  1813. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DHmemGdc.woff +0 -0
  1814. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DxNgVy70.woff2 +0 -0
  1815. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-B7V6NyLX.woff +0 -0
  1816. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-CijZ21_m.woff2 +0 -0
  1817. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-1GfpLFeR.woff +0 -0
  1818. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-BSOJFi3M.woff2 +0 -0
  1819. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-BGAcZoa5.woff +0 -0
  1820. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-DP-OzMv8.woff2 +0 -0
  1821. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-BTl2LovL.woff +0 -0
  1822. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-PLU2uOG6.woff2 +0 -0
  1823. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-BJCaISym.woff +0 -0
  1824. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-DxlOKNb6.woff2 +0 -0
  1825. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-D79iYZbh.woff +0 -0
  1826. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-DyMFY3yG.woff2 +0 -0
  1827. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-BOSqPgLZ.woff2 +0 -0
  1828. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-Bs7eQneK.woff +0 -0
  1829. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-Ce6_8B6O.woff +0 -0
  1830. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-THO3jy3s.woff2 +0 -0
  1831. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Ck2K5Ulf.woff2 +0 -0
  1832. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Df3Wep6L.woff +0 -0
  1833. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-B-9pR0B0.woff2 +0 -0
  1834. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-vrmrQol7.woff +0 -0
  1835. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-Cgyyi6Mk.woff2 +0 -0
  1836. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-mWRC9cE4.woff +0 -0
  1837. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-BIw3yp_o.woff +0 -0
  1838. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-CgHlrSUg.woff2 +0 -0
  1839. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-CE4g_Vnr.woff2 +0 -0
  1840. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-OHitFFYG.woff +0 -0
  1841. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-DofKP3XM.woff2 +0 -0
  1842. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-rklqUmDh.woff +0 -0
  1843. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-BPJjrS1c.woff2 +0 -0
  1844. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-Dl6BB-Lj.woff +0 -0
  1845. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-B4zrRhmq.woff2 +0 -0
  1846. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-Vq2Xt21W.woff +0 -0
  1847. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BPQ_BGOm.woff +0 -0
  1848. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BvoXxhh-.woff2 +0 -0
  1849. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1scqjS5.woff2 +0 -0
  1850. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1vhjtxY.woff +0 -0
  1851. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CdiYya7N.woff +0 -0
  1852. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CizxTCTp.woff2 +0 -0
  1853. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-BN1x-JCl.woff +0 -0
  1854. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-DMKz6H_F.woff2 +0 -0
  1855. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-D74kcLg1.woff +0 -0
  1856. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-DNXvxDIf.woff2 +0 -0
  1857. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-BdAAndOM.woff2 +0 -0
  1858. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-DeYHlTSC.woff +0 -0
  1859. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-K8yMYku4.woff +0 -0
  1860. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-Z0YZvJMA.woff2 +0 -0
  1861. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-CfEBl86K.woff2 +0 -0
  1862. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-Yu7W5Ur_.woff +0 -0
  1863. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-C2i6qX8o.woff2 +0 -0
  1864. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-Ck28wpb6.woff +0 -0
  1865. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-BHD-6hCF.woff +0 -0
  1866. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-DapCxPvn.woff2 +0 -0
  1867. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-CxMB4f1K.woff +0 -0
  1868. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-tmv6xC_z.woff2 +0 -0
  1869. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-ByTiuiZy.woff +0 -0
  1870. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-C_LnNwcx.woff2 +0 -0
  1871. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-5VJWa5C8.woff +0 -0
  1872. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-CBCdCJJN.woff2 +0 -0
  1873. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-DAbbVYEi.woff +0 -0
  1874. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-QEQJ2vNg.woff2 +0 -0
  1875. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-D9NnIF6F.woff2 +0 -0
  1876. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-gCAr-9Ui.woff +0 -0
  1877. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-BENNdZwd.woff2 +0 -0
  1878. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-DrUErJVA.woff +0 -0
  1879. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-B9kwAyIi.woff2 +0 -0
  1880. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-DHvPm2NF.woff +0 -0
  1881. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C7LprN_f.woff2 +0 -0
  1882. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C80RxHso.woff +0 -0
  1883. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-B1Nb7Dqt.woff +0 -0
  1884. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-BBWPbJ8R.woff2 +0 -0
  1885. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-BV1Q-ya9.woff2 +0 -0
  1886. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-vSSmYEgt.woff +0 -0
  1887. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-88k3u19j.woff2 +0 -0
  1888. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-Bm4AIB4W.woff +0 -0
  1889. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-DSyr09Pi.woff +0 -0
  1890. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-wVEmJJbn.woff2 +0 -0
  1891. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-CNwgbPME.woff2 +0 -0
  1892. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-DwlyYo3O.woff +0 -0
  1893. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-BpuC-Ja2.woff2 +0 -0
  1894. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-DJ4qrNjm.woff +0 -0
  1895. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-CI8zKOiq.woff2 +0 -0
  1896. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-Nb_ATV55.woff +0 -0
  1897. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-D1q9iZG9.woff2 +0 -0
  1898. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-DCKOx3do.woff +0 -0
  1899. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CDxcnlps.woff2 +0 -0
  1900. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CrbVhrAy.woff +0 -0
  1901. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-DgbfUacv.woff +0 -0
  1902. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-Dqrwgacb.woff2 +0 -0
  1903. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-DpEHO2lx.woff +0 -0
  1904. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-HtoGXJPD.woff2 +0 -0
  1905. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-6UeGb2y_.woff +0 -0
  1906. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-Cj2MbqkN.woff2 +0 -0
  1907. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-BPlmQmyN.woff +0 -0
  1908. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-uFBOSatZ.woff2 +0 -0
  1909. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-3e73VLox.woff2 +0 -0
  1910. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-CHFWjDbo.woff +0 -0
  1911. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-BtF7lJZ6.woff2 +0 -0
  1912. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-D1_BFs6r.woff +0 -0
  1913. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-B_JBM8HP.woff2 +0 -0
  1914. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-DShvO3nx.woff +0 -0
  1915. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-CIir-_6C.woff2 +0 -0
  1916. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-HSAnxCQg.woff +0 -0
  1917. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DOcpS_k9.woff2 +0 -0
  1918. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DR_NIHG9.woff +0 -0
  1919. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-BIBVbLNo.woff2 +0 -0
  1920. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-DACpgdpL.woff +0 -0
  1921. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-ByArDHHI.woff2 +0 -0
  1922. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-CNKcN-Ig.woff +0 -0
  1923. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-9BGvVFJG.woff +0 -0
  1924. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-DCUUt7cX.woff2 +0 -0
  1925. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-D6a133Nk.woff +0 -0
  1926. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-E_0UP4jm.woff2 +0 -0
  1927. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-DScuu4Uu.woff2 +0 -0
  1928. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-hzikha37.woff +0 -0
  1929. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-BCQXFjgs.woff +0 -0
  1930. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-CfjdYZM4.woff2 +0 -0
  1931. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-CBQftTJt.woff +0 -0
  1932. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-F8LL-J5_.woff2 +0 -0
  1933. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-BR6Du0PQ.woff +0 -0
  1934. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-CQ1redVd.woff2 +0 -0
  1935. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-DQEJ1-LS.woff2 +0 -0
  1936. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-FH-ttKed.woff +0 -0
  1937. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-DqIzdKrV.woff +0 -0
  1938. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-i71EDyfV.woff2 +0 -0
  1939. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bpgq8MX2.woff +0 -0
  1940. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bqgrv0lo.woff2 +0 -0
  1941. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-Bj2HnGEw.woff +0 -0
  1942. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-DYsLBu1T.woff2 +0 -0
  1943. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-B-8F2Uet.woff +0 -0
  1944. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-BHAiqXEM.woff2 +0 -0
  1945. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-B-CGe3sL.woff2 +0 -0
  1946. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-BuQf4YmM.woff +0 -0
  1947. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-BZ9z_FHx.woff +0 -0
  1948. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-CWSgjf9c.woff2 +0 -0
  1949. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-AY_mybA2.woff +0 -0
  1950. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-CTPxjOYB.woff2 +0 -0
  1951. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-CdfPYwdk.woff2 +0 -0
  1952. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-oGadQOpD.woff +0 -0
  1953. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-DLe2ZT_Q.woff2 +0 -0
  1954. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-bXRUCZKE.woff +0 -0
  1955. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-CEDE9rS0.woff +0 -0
  1956. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-z5dDoQx9.woff2 +0 -0
  1957. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-Bl94dFYa.woff2 +0 -0
  1958. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-OLqttnKu.woff +0 -0
  1959. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-CYME5EXY.woff2 +0 -0
  1960. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-I1XysYDt.woff +0 -0
  1961. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-Ci1tC2DE.woff +0 -0
  1962. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-DnyFjM_B.woff2 +0 -0
  1963. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-BZxjTCO5.woff +0 -0
  1964. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-ChG7s6jj.woff2 +0 -0
  1965. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-Bi5bgOa-.woff +0 -0
  1966. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-CCHPFSSV.woff2 +0 -0
  1967. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BIF8JT4K.woff2 +0 -0
  1968. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BMQQOADr.woff +0 -0
  1969. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-BwPZY4No.woff +0 -0
  1970. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-CCy9m1Yi.woff2 +0 -0
  1971. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-CUKZrRn4.woff +0 -0
  1972. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-PUE26tsV.woff2 +0 -0
  1973. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-Bi-DePsy.woff +0 -0
  1974. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-DbEg4X6i.woff2 +0 -0
  1975. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-B_hznMYb.woff2 +0 -0
  1976. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-DXp5U46T.woff +0 -0
  1977. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-CdRKaRR8.woff +0 -0
  1978. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-d_p4qgBI.woff2 +0 -0
  1979. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-BoOvEFVR.woff2 +0 -0
  1980. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-DhttFBeF.woff +0 -0
  1981. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DdDi5wpQ.woff2 +0 -0
  1982. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DnHS-nmP.woff +0 -0
  1983. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-DvcYr3Tg.woff2 +0 -0
  1984. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-Z-oKOpcu.woff +0 -0
  1985. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-600-normal-CuB_ApqX.woff2 +0 -0
  1986. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-700-normal-OQGIHpUr.woff2 +0 -0
  1987. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-CDkAi-IU.woff2 +0 -0
  1988. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-VZ_YUdPy.woff +0 -0
  1989. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-CeGVp1rD.woff +0 -0
  1990. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-Dh7JSXz4.woff2 +0 -0
  1991. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-C-GGubNS.woff +0 -0
  1992. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-DkDnzNv2.woff2 +0 -0
  1993. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-BmMhoS32.woff2 +0 -0
  1994. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-Ci0W5IWz.woff +0 -0
  1995. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-B0rxBWNc.woff2 +0 -0
  1996. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-BJjl00Le.woff +0 -0
  1997. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-5jYiHHRz.woff2 +0 -0
  1998. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-BEKQdV0c.woff +0 -0
  1999. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-CeBwsqAD.woff +0 -0
  2000. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-DJinq116.woff2 +0 -0
  2001. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DWoOSbq5.woff +0 -0
  2002. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DraA-1Zl.woff2 +0 -0
  2003. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-BkZ1vv2G.woff +0 -0
  2004. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-CymJjnAS.woff2 +0 -0
  2005. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-5J6UR9CM.woff2 +0 -0
  2006. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-Cdi-IBra.woff +0 -0
  2007. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-4KzAAJzD.woff +0 -0
  2008. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-C3ObUrek.woff2 +0 -0
  2009. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-BEo_xrjH.woff +0 -0
  2010. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-DYlKYBEL.woff2 +0 -0
  2011. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CLS33fqM.woff +0 -0
  2012. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CsJn1kPf.woff2 +0 -0
  2013. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-BqkCATJS.woff2 +0 -0
  2014. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-DGs8D_d9.woff +0 -0
  2015. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-BcAowvjY.woff2 +0 -0
  2016. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-Rande0GP.woff +0 -0
  2017. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-DqxPcneT.woff2 +0 -0
  2018. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-m9r3xH18.woff +0 -0
  2019. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-E6j9XpvP.woff +0 -0
  2020. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-qnNrW3Df.woff2 +0 -0
  2021. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-D_kcIWRN.woff +0 -0
  2022. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-DafuQoH3.woff2 +0 -0
  2023. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-DOlHHts_.woff2 +0 -0
  2024. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-TWLDWHgL.woff +0 -0
  2025. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CHxkMEAU.woff2 +0 -0
  2026. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CXVo40nf.woff +0 -0
  2027. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-BdFpzIjS.woff2 +0 -0
  2028. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-C5vPlSUB.woff +0 -0
  2029. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-CyxDRXqs.woff2 +0 -0
  2030. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-D-_zohjb.woff +0 -0
  2031. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-CizO16Ew.woff +0 -0
  2032. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-D-SBD5Hk.woff2 +0 -0
  2033. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-BArUuixv.woff2 +0 -0
  2034. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-O_rp84MR.woff +0 -0
  2035. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-400-normal-COuj214s.woff2 +0 -0
  2036. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-600-normal-j_ccRvHi.woff2 +0 -0
  2037. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-700-normal-BGCe6SPX.woff2 +0 -0
  2038. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-7kwLL-e3.woff +0 -0
  2039. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-Bc7vhvxM.woff2 +0 -0
  2040. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-n-2PV5Ut.woff2 +0 -0
  2041. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-yks4z4wu.woff +0 -0
  2042. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-Bj41MRxQ.woff +0 -0
  2043. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-CIbXnLaA.woff2 +0 -0
  2044. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  2045. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  2046. /package/{public → frontend/client}/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
  2047. /package/{public → frontend/client}/issuary-app-icon-512.png +0 -0
  2048. /package/{public → frontend/client}/issuary-app-icon.svg +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"passkey-CWTjw19S.js","names":[],"sources":["../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/identifyRegistrationError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/methods/startRegistration.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js","../../../frontend/src/queries/passkey.ts"],"sourcesContent":["/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex was originally sourced from here, then remixed to add punycode support:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n // Support punycode (ACE) or ascii labels and domains\n /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(hostname));\n}\n","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.create()`\n */\nexport function identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 4)\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n options.mediation === 'conditional' &&\n publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://w3c.github.io/webauthn/#sctn-createCredential (Step 22.4)\n return new WebAuthnError({\n message: 'User verification was required during automatic registration but it could not be performed',\n code: 'ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 5)\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 20)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 3)\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 10)\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 2)\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 7)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 8)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 5)\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 8)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyRegistrationError } from '../helpers/identifyRegistrationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"registration\" via WebAuthn attestation\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateRegistrationOptions()`\n * @param useAutoRegister (Optional) Try to silently create a passkey with the password manager that the user just signed in with. Defaults to `false`.\n */\nexport async function startRegistration(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useAutoRegister = false } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n // Prepare options for `.create()`\n const createOptions = {};\n /**\n * Try to use conditional create to register a passkey for the user with the password manager\n * the user just used to authenticate with. The user won't be shown any prominent UI by the\n * browser.\n */\n if (useAutoRegister) {\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n createOptions.mediation = 'conditional';\n }\n // Finalize options\n createOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n createOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete attestation\n let credential;\n try {\n credential = (await navigator.credentials.create(createOptions));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options: createOptions });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n // Continue to play it safe with `getTransports()` for now, even when L3 types say it's required\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n/**\n * Visibly warn when we detect an issue related to a passkey provider intercepting WebAuthn API\n * calls\n */\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `<input>` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an <input> with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No <input> with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import {\n startAuthentication,\n startRegistration,\n} from '@simplewebauthn/browser';\nimport { mutationOptions, queryOptions } from '@tanstack/react-query';\nimport type { InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\nimport { queryKeys } from './keys';\nimport type { AuthResponse } from './session';\n\nexport type PasskeysResponse = InferResponseType<\n (typeof client.api.user.passkeys)['$get'],\n 200\n>;\n\nexport type PasskeyInfo = PasskeysResponse['passkeys'][number];\n\nexport type PasskeySetupVerifyResponse = InferResponseType<\n (typeof client.api.user.passkeys.register.verify)['$post'],\n 200\n>;\n\n/**\n * Get all passkeys for current user\n */\nexport const getPasskeysQueryOptions = queryOptions({\n queryKey: queryKeys.passkeys(),\n queryFn: async () => {\n const res = await client.api.user.passkeys.$get();\n return jsonOk(res);\n },\n});\n\n/**\n * Register a new passkey\n */\nexport type RegisterPasskeyParams = {\n name?: string;\n};\n\nexport const registerPasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: RegisterPasskeyParams) => {\n // Step 1: Get registration options from server\n const optionsRes = await client.api.user.passkeys.register.options.$post();\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn registration in browser\n const registrationResponse = await startRegistration({\n optionsJSON: options,\n });\n\n // Step 3: Send registration response to server\n const verifyRes = await client.api.user.passkeys.register.verify.$post({\n json: {\n response: registrationResponse,\n name: params.name,\n },\n });\n return jsonOk(verifyRes);\n },\n});\n\n/**\n * Delete a passkey\n */\nexport type DeletePasskeyParams = {\n id: string;\n};\n\nexport const deletePasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: DeletePasskeyParams) => {\n const res = await client.api.user.passkeys[':id'].$delete({\n param: { id: params.id },\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Rename a passkey\n */\nexport type RenamePasskeyParams = {\n id: string;\n name: string;\n};\n\nexport const renamePasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: RenamePasskeyParams) => {\n const res = await client.api.user.passkeys[':id'].$patch({\n param: { id: params.id },\n json: { name: params.name },\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Authenticate with passkey (supports both passwordless\n * and 2FA)\n *\n * The server automatically determines the mode based on\n * session state:\n * - If pending2FAUser session exists: 2FA mode\n * - Otherwise: Passwordless mode (discoverable\n * credentials)\n */\nexport const authenticateWithPasskeyMutationOptions = mutationOptions({\n mutationFn: async () => {\n // Step 1: Get authentication options from server\n const optionsRes = await client.api.auth.passkey.options.$post();\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn authentication in browser\n const authenticationResponse = await startAuthentication({\n optionsJSON: options,\n });\n\n // Step 3: Send authentication response to server\n const verifyRes = await client.api.auth.passkey.verify.$post({\n json: {\n response: {\n ...authenticationResponse,\n clientExtensionResults: {\n ...authenticationResponse.clientExtensionResults,\n },\n },\n },\n });\n return jsonOk(verifyRes);\n },\n});\n\n/**\n * Start conditional passkey authentication (browser\n * autofill / Conditional UI)\n *\n * This enables the browser to suggest passkeys in the\n * autofill dropdown when the user focuses on an input\n * with autocomplete=\"username webauthn\".\n *\n * Should be called on page load and runs in the background\n * until:\n * - User selects a passkey from the autofill dropdown\n * - The AbortController is aborted (e.g., on component\n * unmount)\n *\n * @param onSuccess - Callback when passkey authentication\n * succeeds\n * @param abortSignal - AbortSignal to cancel the\n * conditional authentication\n */\nexport const startConditionalPasskeyAuth = async (\n onSuccess: (data: AuthResponse) => void,\n abortSignal: AbortSignal,\n): Promise<void> => {\n try {\n // Step 1: Get authentication options from server\n const optionsRes = await client.api.auth.passkey.options.$post(\n {},\n { init: { signal: abortSignal } },\n );\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn with conditional mediation\n const authenticationResponse = await startAuthentication({\n optionsJSON: options,\n useBrowserAutofill: true,\n });\n\n // Step 3: Send authentication response to server\n const verifyRes = await client.api.auth.passkey.verify.$post(\n {\n json: {\n response: {\n ...authenticationResponse,\n clientExtensionResults: {\n ...authenticationResponse.clientExtensionResults,\n },\n },\n },\n },\n { init: { signal: abortSignal } },\n );\n const data = await jsonOk(verifyRes);\n onSuccess(data);\n } catch (error) {\n // AbortError is expected when component unmounts\n if (error instanceof Error && error.name !== 'AbortError') {\n // Non-abort error - could be handled here in the future\n }\n }\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,n as i,s as a,t as o}from"./createLucideIcon-D-yizrWN.js";import{An as s,Ar as c,In as l,t as u}from"./config-C18-l7z7.js";import{t as d}from"./useMutation-DqIIIiBW.js";import{Dt as f}from"./shell-header-bar-CdOEWmCT.js";import{t as p}from"./auth-field-BpJ4AHtU.js";import{t as m}from"./fingerprint-pattern-BwUoN1_w.js";import{t as h}from"./shield-check-DpYF8yeI.js";import{c as g,o as _}from"./zod-Dszyrytb.js";import{E as v,F as y,H as b,L as x,U as S,m as C,z as w}from"./index-lTEyHSus.js";import{t as T}from"./auth-page-header-ChaCNNrn.js";import{t as E}from"./alert-D3aaK-_3.js";import{t as D}from"./auth-layout-BdRRr0vT.js";import{t as O}from"./form-sJw-V9wb.js";import{t as k}from"./promise-OpBtq8tG.js";import{n as A,t as j}from"./auth-footer-Du6S-oDG.js";import{t as M}from"./passkey-error-CZ26Ss-I.js";import{i as N}from"./passkey-CWTjw19S.js";import{r as P,t as F}from"./standard-schema-C50nwAaQ.js";var I=o(`tag`,[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]),L=n(t()),R=e();function z(){let{t:e}=r(),t=l(),n=c(),o=C.useSearch(),{data:z}=f(u),[B,V]=(0,L.useState)(o.passkey_name?`registering`:`form`),[H,U]=(0,L.useState)(``),W=(0,L.useRef)(!1),G=z.auth.password.enabled&&z.auth.password.two_factor.enrollment_required&&z.auth.password.totp.enabled,{register:K,handleSubmit:q,formState:{errors:J}}=P({defaultValues:{name:``},resolver:F((0,L.useMemo)(()=>_({name:g().max(100,e(`validation.passkey.name.max`))}),[e]))}),Y=d({...N,onSuccess:async e=>{e.second_factor_setup_completed&&e.user?(n.setQueryData(v.queryKey,{user:e.user}),await k(),w(o)?window.location.href=y(o):t.navigate({to:`/profile`})):(n.invalidateQueries({queryKey:v.queryKey}),t.navigate({to:`/profile`}))},onError:t=>{switch(V(`error`),M(t)){case`unsupported`:U(e(`setupPasskey.error.unsupported`));return;case`not_allowed`:U(e(`setupPasskey.error.notAllowed`));return;case`expired`:U(e(`setupPasskey.error.expired`));return;case`user_mismatch`:case`verification_failed`:U(e(`setupPasskey.error.failed`));return}},onSettled:()=>{n.invalidateQueries({queryKey:v.queryKey})}});return(0,L.useEffect)(()=>{o.passkey_name&&!W.current&&(W.current=!0,Y.mutate({name:o.passkey_name}))},[Y,o.passkey_name]),B===`registering`?(0,R.jsxs)(D,{children:[(0,R.jsx)(T,{subtitle:e(`setupPasskey.subtitle`),title:e(`setupPasskey.title`)}),(0,R.jsxs)(`div`,{className:`flex flex-col items-center gap-tinyrack-lg py-tinyrack-xl`,children:[(0,R.jsx)(m,{"aria-hidden":!0,className:`size-tinyrack-3xl animate-pulse text-tinyrack-primary-foreground`}),(0,R.jsx)(i,{align:`center`,as:`p`,color:`muted`,variant:`body`,children:e(`setupPasskey.waiting`)})]})]}):B===`error`?(0,R.jsxs)(D,{children:[(0,R.jsx)(T,{subtitle:e(`setupPasskey.subtitle`),title:e(`setupPasskey.title`)}),(0,R.jsx)(E,{icon:b,type:`error`,children:H}),(0,R.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-sm`,children:[G&&(0,R.jsxs)(S,{className:`w-full gap-tinyrack-sm`,intent:`primary`,render:(0,R.jsx)(s,{search:x(o),to:`/setup/totp`}),uiSize:`lg`,children:[(0,R.jsx)(h,{"aria-hidden":!0,className:`size-tinyrack-xl`}),e(`setupPasskey.useTotp`)]}),(0,R.jsx)(a,{appearance:G?`outline`:`solid`,className:`w-full`,intent:G?`neutral`:`primary`,onClick:()=>{o.passkey_name?(V(`registering`),U(``),Y.mutate({name:o.passkey_name})):V(`form`)},type:`button`,uiSize:`lg`,children:e(`setupPasskey.retry`)})]}),(0,R.jsx)(j,{children:(0,R.jsx)(A,{link:(0,R.jsx)(s,{search:x(o),to:`/login`,children:e(`setupPasskey.backToLogin`)})})})]}):(0,R.jsxs)(D,{children:[(0,R.jsx)(T,{subtitle:e(`setupPasskey.subtitle`),title:e(`setupPasskey.title`)}),(0,R.jsx)(E,{icon:h,type:`info`,children:e(`setupPasskey.required`)}),(0,R.jsx)(i,{align:`center`,as:`p`,color:`muted`,variant:`bodySm`,children:e(`setupPasskey.description`)}),(0,R.jsxs)(O,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:q(e=>{V(`registering`),U(``),Y.mutate({name:e.name||void 0})}),children:[(0,R.jsx)(p,{error:J.name,hint:e(`setupPasskey.name.hint`),icon:I,id:`passkey-name`,label:e(`setupPasskey.name.label`),placeholder:e(`setupPasskey.name.placeholder`),...K(`name`),type:`text`}),(0,R.jsx)(a,{className:`w-full`,intent:`primary`,loading:Y.isPending,loadingLabel:e(`setupPasskey.registering`),type:`submit`,uiSize:`lg`,children:e(`setupPasskey.continue`)})]}),(0,R.jsx)(j,{children:(0,R.jsx)(A,{link:(0,R.jsx)(s,{search:x(o),to:`/login`,children:e(`setupPasskey.backToLogin`)})})})]})}export{z as component};
2
- //# sourceMappingURL=passkey-CavITajY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"passkey-CavITajY.js","names":["standardSchemaResolver","useMutation","useQueryClient","useSuspenseQuery","Link","useRouter","TRButton","TRForm","TRLinkButton","TRText","CircleAlertIcon","FingerprintIcon","ShieldCheckIcon","TagIcon","useEffect","useMemo","useRef","useState","useForm","useTranslation","z","AuthField","AuthFooter","AuthFooterLink","AuthPageHeader","Alert","AuthLayout","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","classifyPasskeyError","tick","appConfigQueryOptions","registerPasskeyMutationOptions","getSessionQueryOptions","Route","SetupStep","SetupPasskey","t","router","queryClient","search","useSearch","data","appConfig","step","setStep","passkey_name","errorMessage","setErrorMessage","autoRegisterCalledRef","canUseTotpSetup","auth","password","enabled","two_factor","enrollment_required","totp","formSchema","object","name","string","max","FormValues","infer","register","handleSubmit","formState","errors","defaultValues","resolver","registerMutation","onSuccess","second_factor_setup_completed","user","setQueryData","queryKey","window","location","href","navigate","to","invalidateQueries","onError","error","reason","onSettled","current","mutate","onSubmit","values","undefined","isPending","component"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/tag.mjs","../../../frontend/src/routes/setup/passkey/index.tsx?tsr-split=component"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\",\n key: \"vktsd0\"\n }\n ],\n [\"circle\", { cx: \"7.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"kqv944\" }]\n];\nconst Tag = createLucideIcon(\"tag\", __iconNode);\n\nexport { __iconNode, Tag as default };\n//# sourceMappingURL=tag.mjs.map\n","import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport {\n CircleAlertIcon,\n FingerprintIcon,\n ShieldCheckIcon,\n TagIcon,\n} from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n isOAuthFlow,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport { classifyPasskeyError } from '#frontend/libs/passkey-error.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { registerPasskeyMutationOptions } from '#frontend/queries/passkey.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema.extend({\n passkey_name: z.string().optional(),\n});\n\nexport const Route = createFileRoute('/setup/passkey/')({\n component: SetupPasskey,\n errorComponent: RouteErrorFallback,\n loader: async ({ context }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n },\n validateSearch: SearchSchema,\n});\n\ntype SetupStep = 'form' | 'registering' | 'error';\n\nfunction SetupPasskey() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const { data: appConfig } = useSuspenseQuery(appConfigQueryOptions);\n\n const [step, setStep] = useState<SetupStep>(\n search.passkey_name ? 'registering' : 'form',\n );\n const [errorMessage, setErrorMessage] = useState<string>('');\n const autoRegisterCalledRef = useRef(false);\n const canUseTotpSetup =\n appConfig.auth.password.enabled &&\n appConfig.auth.password.two_factor.enrollment_required &&\n appConfig.auth.password.totp.enabled;\n\n const formSchema = useMemo(\n () =>\n z.object({\n name: z.string().max(100, t('validation.passkey.name.max')),\n }),\n [t],\n );\n\n type FormValues = z.infer<typeof formSchema>;\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<FormValues>({\n defaultValues: { name: '' },\n resolver: standardSchemaResolver(formSchema),\n });\n\n const registerMutation = useMutation({\n ...registerPasskeyMutationOptions,\n onSuccess: async (data) => {\n if (data.second_factor_setup_completed && data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: data.user,\n });\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href = buildAuthenticatedAuthorizeUrl(search);\n } else {\n router.navigate({ to: '/profile' });\n }\n } else {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n router.navigate({ to: '/profile' });\n }\n },\n onError: (error) => {\n setStep('error');\n const reason = classifyPasskeyError(error);\n\n switch (reason) {\n case 'unsupported':\n setErrorMessage(t('setupPasskey.error.unsupported'));\n return;\n case 'not_allowed':\n setErrorMessage(t('setupPasskey.error.notAllowed'));\n return;\n case 'expired':\n setErrorMessage(t('setupPasskey.error.expired'));\n return;\n case 'user_mismatch':\n case 'verification_failed':\n setErrorMessage(t('setupPasskey.error.failed'));\n return;\n }\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n useEffect(() => {\n if (search.passkey_name && !autoRegisterCalledRef.current) {\n autoRegisterCalledRef.current = true;\n registerMutation.mutate({ name: search.passkey_name });\n }\n }, [registerMutation, search.passkey_name]);\n\n const onSubmit = (values: FormValues) => {\n setStep('registering');\n setErrorMessage('');\n registerMutation.mutate({ name: values.name || undefined });\n };\n\n // Registering state - waiting for WebAuthn\n if (step === 'registering') {\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n <div className=\"flex flex-col items-center gap-tinyrack-lg py-tinyrack-xl\">\n <FingerprintIcon\n aria-hidden\n className=\"size-tinyrack-3xl animate-pulse text-tinyrack-primary-foreground\"\n />\n <TRText align=\"center\" as=\"p\" color=\"muted\" variant=\"body\">\n {t('setupPasskey.waiting')}\n </TRText>\n </div>\n </AuthLayout>\n );\n }\n\n // Error state\n if (step === 'error') {\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n <Alert icon={CircleAlertIcon} type=\"error\">\n {errorMessage}\n </Alert>\n\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural action stack; controls own their typography. */}\n <div className=\"flex flex-col gap-tinyrack-sm\">\n {canUseTotpSetup && (\n <TRLinkButton\n className=\"w-full gap-tinyrack-sm\"\n intent=\"primary\"\n render={\n <Link search={extractOAuthParams(search)} to=\"/setup/totp\" />\n }\n uiSize=\"lg\"\n >\n <ShieldCheckIcon aria-hidden className=\"size-tinyrack-xl\" />\n {t('setupPasskey.useTotp')}\n </TRLinkButton>\n )}\n <TRButton\n appearance={canUseTotpSetup ? 'outline' : 'solid'}\n className=\"w-full\"\n intent={canUseTotpSetup ? 'neutral' : 'primary'}\n onClick={() => {\n if (search.passkey_name) {\n setStep('registering');\n setErrorMessage('');\n registerMutation.mutate({ name: search.passkey_name });\n } else {\n setStep('form');\n }\n }}\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('setupPasskey.retry')}\n </TRButton>\n </div>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('setupPasskey.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n }\n\n // Form state\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n\n <Alert icon={ShieldCheckIcon} type=\"info\">\n {t('setupPasskey.required')}\n </Alert>\n\n <TRText align=\"center\" as=\"p\" color=\"muted\" variant=\"bodySm\">\n {t('setupPasskey.description')}\n </TRText>\n\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n error={errors.name}\n hint={t('setupPasskey.name.hint')}\n icon={TagIcon}\n id=\"passkey-name\"\n label={t('setupPasskey.name.label')}\n placeholder={t('setupPasskey.name.placeholder')}\n {...register('name')}\n type=\"text\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={registerMutation.isPending}\n loadingLabel={t('setupPasskey.registering')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('setupPasskey.continue')}\n </TRButton>\n </TRForm>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('setupPasskey.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{B as e}from"./index-lTEyHSus.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=passkey-Cpfhakvn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"passkey-Cpfhakvn.js","names":["RouteErrorFallback","SetupStep","SplitErrorComponent","errorComponent"],"sources":["../../../frontend/src/routes/setup/passkey/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport {\n CircleAlertIcon,\n FingerprintIcon,\n ShieldCheckIcon,\n TagIcon,\n} from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n isOAuthFlow,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport { classifyPasskeyError } from '#frontend/libs/passkey-error.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { registerPasskeyMutationOptions } from '#frontend/queries/passkey.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema.extend({\n passkey_name: z.string().optional(),\n});\n\nexport const Route = createFileRoute('/setup/passkey/')({\n component: SetupPasskey,\n errorComponent: RouteErrorFallback,\n loader: async ({ context }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n },\n validateSearch: SearchSchema,\n});\n\ntype SetupStep = 'form' | 'registering' | 'error';\n\nfunction SetupPasskey() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const { data: appConfig } = useSuspenseQuery(appConfigQueryOptions);\n\n const [step, setStep] = useState<SetupStep>(\n search.passkey_name ? 'registering' : 'form',\n );\n const [errorMessage, setErrorMessage] = useState<string>('');\n const autoRegisterCalledRef = useRef(false);\n const canUseTotpSetup =\n appConfig.auth.password.enabled &&\n appConfig.auth.password.two_factor.enrollment_required &&\n appConfig.auth.password.totp.enabled;\n\n const formSchema = useMemo(\n () =>\n z.object({\n name: z.string().max(100, t('validation.passkey.name.max')),\n }),\n [t],\n );\n\n type FormValues = z.infer<typeof formSchema>;\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<FormValues>({\n defaultValues: { name: '' },\n resolver: standardSchemaResolver(formSchema),\n });\n\n const registerMutation = useMutation({\n ...registerPasskeyMutationOptions,\n onSuccess: async (data) => {\n if (data.second_factor_setup_completed && data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: data.user,\n });\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href = buildAuthenticatedAuthorizeUrl(search);\n } else {\n router.navigate({ to: '/profile' });\n }\n } else {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n router.navigate({ to: '/profile' });\n }\n },\n onError: (error) => {\n setStep('error');\n const reason = classifyPasskeyError(error);\n\n switch (reason) {\n case 'unsupported':\n setErrorMessage(t('setupPasskey.error.unsupported'));\n return;\n case 'not_allowed':\n setErrorMessage(t('setupPasskey.error.notAllowed'));\n return;\n case 'expired':\n setErrorMessage(t('setupPasskey.error.expired'));\n return;\n case 'user_mismatch':\n case 'verification_failed':\n setErrorMessage(t('setupPasskey.error.failed'));\n return;\n }\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n useEffect(() => {\n if (search.passkey_name && !autoRegisterCalledRef.current) {\n autoRegisterCalledRef.current = true;\n registerMutation.mutate({ name: search.passkey_name });\n }\n }, [registerMutation, search.passkey_name]);\n\n const onSubmit = (values: FormValues) => {\n setStep('registering');\n setErrorMessage('');\n registerMutation.mutate({ name: values.name || undefined });\n };\n\n // Registering state - waiting for WebAuthn\n if (step === 'registering') {\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n <div className=\"flex flex-col items-center gap-tinyrack-lg py-tinyrack-xl\">\n <FingerprintIcon\n aria-hidden\n className=\"size-tinyrack-3xl animate-pulse text-tinyrack-primary-foreground\"\n />\n <TRText align=\"center\" as=\"p\" color=\"muted\" variant=\"body\">\n {t('setupPasskey.waiting')}\n </TRText>\n </div>\n </AuthLayout>\n );\n }\n\n // Error state\n if (step === 'error') {\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n <Alert icon={CircleAlertIcon} type=\"error\">\n {errorMessage}\n </Alert>\n\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural action stack; controls own their typography. */}\n <div className=\"flex flex-col gap-tinyrack-sm\">\n {canUseTotpSetup && (\n <TRLinkButton\n className=\"w-full gap-tinyrack-sm\"\n intent=\"primary\"\n render={\n <Link search={extractOAuthParams(search)} to=\"/setup/totp\" />\n }\n uiSize=\"lg\"\n >\n <ShieldCheckIcon aria-hidden className=\"size-tinyrack-xl\" />\n {t('setupPasskey.useTotp')}\n </TRLinkButton>\n )}\n <TRButton\n appearance={canUseTotpSetup ? 'outline' : 'solid'}\n className=\"w-full\"\n intent={canUseTotpSetup ? 'neutral' : 'primary'}\n onClick={() => {\n if (search.passkey_name) {\n setStep('registering');\n setErrorMessage('');\n registerMutation.mutate({ name: search.passkey_name });\n } else {\n setStep('form');\n }\n }}\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('setupPasskey.retry')}\n </TRButton>\n </div>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('setupPasskey.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n }\n\n // Form state\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('setupPasskey.subtitle')}\n title={t('setupPasskey.title')}\n />\n\n <Alert icon={ShieldCheckIcon} type=\"info\">\n {t('setupPasskey.required')}\n </Alert>\n\n <TRText align=\"center\" as=\"p\" color=\"muted\" variant=\"bodySm\">\n {t('setupPasskey.description')}\n </TRText>\n\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n error={errors.name}\n hint={t('setupPasskey.name.hint')}\n icon={TagIcon}\n id=\"passkey-name\"\n label={t('setupPasskey.name.label')}\n placeholder={t('setupPasskey.name.placeholder')}\n {...register('name')}\n type=\"text\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={registerMutation.isPending}\n loadingLabel={t('setupPasskey.registering')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('setupPasskey.continue')}\n </TRButton>\n </TRForm>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('setupPasskey.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n}\n"],"mappings":"wCAuDkD,IAAAE,EA3BzCF"}
@@ -1,2 +0,0 @@
1
- import{r as e}from"./createLucideIcon-D-yizrWN.js";var t=new Set([`NotSupportedError`,`SecurityError`]),n=new Set([`AbortError`,`NotAllowedError`,`InvalidStateError`]),r=new Set([`PASSKEY_CHALLENGE_EXPIRED`,`PASSKEY_CHALLENGE_NOT_FOUND`,`PASSKEY_NOT_FOUND`,`PASSKEY_NOT_ENABLED`,`PASSKEY_VERIFICATION_FAILED`,`UNKNOWN_ERROR`]);function i(){return typeof window>`u`||window.isSecureContext===!1?!0:!(`PublicKeyCredential`in window)}function a(e){return e instanceof Error?e.name:null}function o(o){if(o instanceof e){if(o.code===`SECOND_FACTOR_SESSION_EXPIRED`)return`expired`;if(o.code===`PASSKEY_USER_MISMATCH`)return`user_mismatch`;if(r.has(o.code))return`verification_failed`}let s=a(o);return s&&t.has(s)?`unsupported`:s&&n.has(s)?`not_allowed`:i()?`unsupported`:`verification_failed`}export{o as t};
2
- //# sourceMappingURL=passkey-error-CZ26Ss-I.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"passkey-error-CZ26Ss-I.js","names":[],"sources":["../../../frontend/src/libs/passkey-error.ts"],"sourcesContent":["import { IssuaryError } from './error.ts';\n\nexport type PasskeyErrorReason =\n | 'unsupported'\n | 'not_allowed'\n | 'expired'\n | 'user_mismatch'\n | 'verification_failed';\n\nconst UNSUPPORTED_ERROR_NAMES = new Set(['NotSupportedError', 'SecurityError']);\n\nconst NOT_ALLOWED_ERROR_NAMES = new Set([\n 'AbortError',\n 'NotAllowedError',\n 'InvalidStateError',\n]);\n\nconst VERIFICATION_FAILED_CODES = new Set([\n 'PASSKEY_CHALLENGE_EXPIRED',\n 'PASSKEY_CHALLENGE_NOT_FOUND',\n 'PASSKEY_NOT_FOUND',\n 'PASSKEY_NOT_ENABLED',\n 'PASSKEY_VERIFICATION_FAILED',\n 'UNKNOWN_ERROR',\n]);\n\nfunction browserCannotUsePasskeys(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (window.isSecureContext === false) {\n return true;\n }\n\n return !('PublicKeyCredential' in window);\n}\n\nfunction errorName(error: unknown): string | null {\n if (error instanceof Error) {\n return error.name;\n }\n\n return null;\n}\n\nexport function classifyPasskeyError(error: unknown): PasskeyErrorReason {\n if (error instanceof IssuaryError) {\n if (error.code === 'SECOND_FACTOR_SESSION_EXPIRED') {\n return 'expired';\n }\n\n if (error.code === 'PASSKEY_USER_MISMATCH') {\n return 'user_mismatch';\n }\n\n if (VERIFICATION_FAILED_CODES.has(error.code)) {\n return 'verification_failed';\n }\n }\n\n const name = errorName(error);\n if (name && UNSUPPORTED_ERROR_NAMES.has(name)) {\n return 'unsupported';\n }\n\n if (name && NOT_ALLOWED_ERROR_NAMES.has(name)) {\n return 'not_allowed';\n }\n\n if (browserCannotUsePasskeys()) {\n return 'unsupported';\n }\n\n return 'verification_failed';\n}\n"],"mappings":"mDASA,IAAM,EAA0B,IAAI,IAAI,CAAC,oBAAqB,eAAe,CAAC,EAExE,EAA0B,IAAI,IAAI,CACtC,aACA,kBACA,mBACF,CAAC,EAEK,EAA4B,IAAI,IAAI,CACxC,4BACA,8BACA,oBACA,sBACA,8BACA,eACF,CAAC,EAED,SAAS,GAAoC,CAS3C,OARI,OAAO,OAAW,KAIlB,OAAO,kBAAoB,GACtB,GAGF,EAAE,wBAAyB,OACpC,CAEA,SAAS,EAAU,EAA+B,CAKhD,OAJI,aAAiB,MACZ,EAAM,KAGR,IACT,CAEA,SAAgB,EAAqB,EAAoC,CACvE,GAAI,aAAiB,EAAc,CACjC,GAAI,EAAM,OAAS,gCACjB,MAAO,UAGT,GAAI,EAAM,OAAS,wBACjB,MAAO,gBAGT,GAAI,EAA0B,IAAI,EAAM,IAAI,EAC1C,MAAO,qBAEX,CAEA,IAAM,EAAO,EAAU,CAAK,EAa5B,OAZI,GAAQ,EAAwB,IAAI,CAAI,EACnC,cAGL,GAAQ,EAAwB,IAAI,CAAI,EACnC,cAGL,EAAyB,EACpB,cAGF,qBACT"}
@@ -1,2 +0,0 @@
1
- import{B as e}from"./index-lTEyHSus.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=password-Cpfhakvn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-Cpfhakvn.js","names":["RouteErrorFallback","SplitErrorComponent","errorComponent"],"sources":["../../../frontend/src/routes/login/password/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRLink } from '@tinyrack/ui/components/link';\nimport { LockIcon, MailIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.tsx';\nimport { DesignSystemRichText } from '#frontend/components/ui/design-system-rich-text.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n hasAuthorizationContext,\n isOAuthFlow,\n type OAuthSearch,\n OAuthSearchSchema,\n type SecondFactorMethod,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getAuthorizationContextQueryOptions } from '#frontend/queries/authorization-context.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { loginMutationOptions } from '#frontend/queries/login.ts';\nimport { startConditionalPasskeyAuth } from '#frontend/queries/passkey.ts';\nimport {\n type AuthResponse,\n getSessionQueryOptions,\n} from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/login/password/')({\n component: LoginPassword,\n errorComponent: RouteErrorFallback,\n validateSearch: SearchSchema,\n loaderDeps: ({ search }) => ({\n search,\n }),\n loader: async ({ context, deps }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n if (hasAuthorizationContext(deps.search)) {\n await context.queryClient.ensureQueryData(\n getAuthorizationContextQueryOptions(deps.search),\n );\n }\n },\n});\n\nfunction LoginPassword() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const authorizeSearch: OAuthSearch =\n search.account_selection_state &&\n search.prompt?.split(' ').includes('login')\n ? { ...search, account_selected: 1 }\n : search;\n const lang = search.lang ?? i18n.language;\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n const isPasswordAuthEnabled = configData.auth.password.enabled;\n const isPasskeyEnabled = configData.auth.passkey.enabled;\n const hasMultipleLoginMethods =\n configData.identity_providers.length +\n (isPasswordAuthEnabled ? 1 : 0) +\n (isPasskeyEnabled ? 1 : 0) >\n 1;\n\n const loginSchema = useMemo(\n () =>\n z.object({\n email: z\n .string()\n .min(1, t('validation.email.required'))\n .pipe(z.email(t('validation.email.invalid'))),\n password: z.string().min(1, t('validation.password.required')),\n }),\n [t],\n );\n\n const loginMutation = useMutation({\n ...loginMutationOptions,\n onSuccess: async (data, params) => {\n const user = data.user;\n\n if (user.email_verification_required && !user.email_verified) {\n router.navigate({\n to: '/verify/email',\n search: {\n email: params.email,\n ...extractOAuthParams(search),\n },\n });\n return;\n }\n\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: user,\n });\n await tick();\n\n const registered_2fa_methods: SecondFactorMethod[] = [];\n if (configData.auth.password.totp.enabled && user.totp_registered) {\n registered_2fa_methods.push('totp');\n }\n if (configData.auth.passkey.enabled && user.passkey_count > 0) {\n registered_2fa_methods.push('passkey');\n }\n\n if (user.second_factor_required && registered_2fa_methods.length === 0) {\n if (configData.available_2fa_setup_methods.length > 1) {\n return router.navigate({\n to: '/setup/2fa',\n search: extractOAuthParams(search),\n });\n } else if (configData.available_2fa_setup_methods.length === 1) {\n const method = configData.available_2fa_setup_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/setup/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/setup/passkey',\n search: {\n ...extractOAuthParams(search),\n passkey_name: 'default',\n },\n });\n }\n }\n }\n\n if (registered_2fa_methods.length > 1) {\n return router.navigate({\n to: '/verify/2fa',\n search: extractOAuthParams(search),\n });\n } else if (registered_2fa_methods.length === 1) {\n const method = registered_2fa_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/verify/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/verify/passkey',\n search: extractOAuthParams(search),\n });\n }\n } else {\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n return router.navigate({ to: '/profile' });\n }\n }\n },\n onError: (_error) => {\n setError('email', {\n type: 'manual',\n message: t('login.error.failed'),\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const handlePasskeySuccess = useCallback(\n async (data: AuthResponse) => {\n if (data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, data);\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n router.navigate({ to: '/profile' });\n }\n }\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n [queryClient, router, search, authorizeSearch],\n );\n\n // Conditional UI: Start passkey autofill on page load\n const abortControllerRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (!isPasskeyEnabled || !isPasswordAuthEnabled) {\n return;\n }\n\n abortControllerRef.current = new AbortController();\n startConditionalPasskeyAuth(\n handlePasskeySuccess,\n abortControllerRef.current.signal,\n );\n\n return () => {\n abortControllerRef.current?.abort();\n };\n }, [isPasskeyEnabled, isPasswordAuthEnabled, handlePasskeySuccess]);\n\n const {\n register,\n setError,\n handleSubmit,\n formState: { errors },\n } = useForm({\n defaultValues: {\n email: '',\n password: '',\n },\n resolver: standardSchemaResolver(loginSchema),\n });\n\n const onSubmit = async (values: z.infer<typeof loginSchema>) => {\n loginMutation.mutate(values);\n };\n\n return (\n <AuthLayout showBrandSubtitle>\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n autoComplete=\"username webauthn\"\n error={errors.email}\n icon={MailIcon}\n label={t('login.email.label')}\n placeholder={t('login.email.placeholder')}\n {...register('email')}\n type=\"email\"\n />\n\n <AuthField\n autoComplete=\"current-password\"\n error={errors.password}\n icon={LockIcon}\n label={t('login.password.label')}\n /*\n * On the label row rather than under the field: it belongs to the\n * password, and putting it between the field and the submit button\n * separated the two things the user is actually trying to do.\n */\n labelAction={\n configData.email.enabled ? (\n <TRLink\n className=\"text-tinyrack-xs\"\n render={<Link to=\"/password/forgot\" />}\n >\n {t('login.link.forgotPassword')}\n </TRLink>\n ) : undefined\n }\n placeholder={t('login.password.placeholder')}\n {...register('password')}\n type=\"password\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={loginMutation.isPending}\n loadingLabel={t('login.submitting')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('login.submit')}\n </TRButton>\n </TRForm>\n )}\n\n {implicitNotice && (\n <DesignSystemRichText html={implicitNotice} variant=\"notice\" />\n )}\n\n {(configData.registration.public_registration ||\n hasMultipleLoginMethods) && (\n <AuthFooter>\n {configData.registration.public_registration && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/register\">\n {t('login.link.register')}\n </Link>\n }\n text={t('login.footer.noAccount')}\n />\n )}\n {hasMultipleLoginMethods && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('login.password.backToMethods')}\n </Link>\n }\n />\n )}\n </AuthFooter>\n )}\n </AuthLayout>\n );\n}\n"],"mappings":"wCAsBsF,IAAAC,EAA7ED"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,s as i}from"./createLucideIcon-D-yizrWN.js";import{An as a,Ar as o,In as s,i as c,r as l,t as u}from"./config-C18-l7z7.js";import{t as d}from"./mutationOptions-Cv_vJkJn.js";import{t as f}from"./useMutation-DqIIIiBW.js";import{Dt as p}from"./shell-header-bar-CdOEWmCT.js";import{t as m}from"./auth-field-BpJ4AHtU.js";import{t as h}from"./authorization-context-banner-zVxGX5e8.js";import{t as g}from"./lock-8wpR2C78.js";import{t as _}from"./mail-DVP_XMUi.js";import{c as v,i as y,o as b}from"./zod-Dszyrytb.js";import{E as x,F as S,L as C,d as w,z as T}from"./index-lTEyHSus.js";import{t as E}from"./auth-layout-BdRRr0vT.js";import{t as D}from"./form-sJw-V9wb.js";import{t as O}from"./promise-OpBtq8tG.js";import{t as k}from"./link-BHmn75Zo.js";import{n as A,t as j}from"./auth-footer-Du6S-oDG.js";import{t as M}from"./design-system-rich-text-B3NzIRoJ.js";import{o as N}from"./passkey-CWTjw19S.js";import{r as P,t as F}from"./standard-schema-C50nwAaQ.js";var I=n(t()),L=d({mutationFn:async e=>c(await l.api.auth.login.$post({json:e}))}),R=e();function z(){let{t:e,i18n:t}=r(),n=s(),c=o(),l=w.useSearch(),d=l.account_selection_state&&l.prompt?.split(` `).includes(`login`)?{...l,account_selected:1}:l,z=l.lang??t.language,{data:B}=p(u),V=B.registration.signup_notice?.[z]??B.registration.signup_notice?.[B.i18n.fallback_language],H=B.auth.password.enabled,U=B.auth.passkey.enabled,W=B.identity_providers.length+ +!!H+ +!!U>1,G=(0,I.useMemo)(()=>b({email:v().min(1,e(`validation.email.required`)).pipe(y(e(`validation.email.invalid`))),password:v().min(1,e(`validation.password.required`))}),[e]),K=f({...L,onSuccess:async(e,t)=>{let r=e.user;if(r.email_verification_required&&!r.email_verified){n.navigate({to:`/verify/email`,search:{email:t.email,...C(l)}});return}c.setQueryData(x.queryKey,{user:r}),await O();let i=[];if(B.auth.password.totp.enabled&&r.totp_registered&&i.push(`totp`),B.auth.passkey.enabled&&r.passkey_count>0&&i.push(`passkey`),r.second_factor_required&&i.length===0){if(B.available_2fa_setup_methods.length>1)return n.navigate({to:`/setup/2fa`,search:C(l)});if(B.available_2fa_setup_methods.length===1)return B.available_2fa_setup_methods[0]===`totp`?n.navigate({to:`/setup/totp`,search:C(l)}):n.navigate({to:`/setup/passkey`,search:{...C(l),passkey_name:`default`}})}if(i.length>1)return n.navigate({to:`/verify/2fa`,search:C(l)});if(i.length===1)return i[0]===`totp`?n.navigate({to:`/verify/totp`,search:C(l)}):n.navigate({to:`/verify/passkey`,search:C(l)});if(T(l))window.location.href=S(d);else return n.navigate({to:`/profile`})},onError:t=>{X(`email`,{type:`manual`,message:e(`login.error.failed`)})},onSettled:()=>{c.invalidateQueries({queryKey:x.queryKey})}}),q=(0,I.useCallback)(async e=>{e.user&&(c.setQueryData(x.queryKey,e),await O(),T(l)?window.location.href=S(d):n.navigate({to:`/profile`})),c.invalidateQueries({queryKey:x.queryKey})},[c,n,l,d]),J=(0,I.useRef)(null);(0,I.useEffect)(()=>{if(!(!U||!H))return J.current=new AbortController,N(q,J.current.signal),()=>{J.current?.abort()}},[U,H,q]);let{register:Y,setError:X,handleSubmit:Z,formState:{errors:Q}}=P({defaultValues:{email:``,password:``},resolver:F(G)});return(0,R.jsxs)(E,{showBrandSubtitle:!0,children:[(0,R.jsx)(h,{search:l}),H&&(0,R.jsxs)(D,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:Z(async e=>{K.mutate(e)}),children:[(0,R.jsx)(m,{autoComplete:`username webauthn`,error:Q.email,icon:_,label:e(`login.email.label`),placeholder:e(`login.email.placeholder`),...Y(`email`),type:`email`}),(0,R.jsx)(m,{autoComplete:`current-password`,error:Q.password,icon:g,label:e(`login.password.label`),labelAction:B.email.enabled?(0,R.jsx)(k,{className:`text-tinyrack-xs`,render:(0,R.jsx)(a,{to:`/password/forgot`}),children:e(`login.link.forgotPassword`)}):void 0,placeholder:e(`login.password.placeholder`),...Y(`password`),type:`password`}),(0,R.jsx)(i,{className:`w-full`,intent:`primary`,loading:K.isPending,loadingLabel:e(`login.submitting`),type:`submit`,uiSize:`lg`,children:e(`login.submit`)})]}),V&&(0,R.jsx)(M,{html:V,variant:`notice`}),(B.registration.public_registration||W)&&(0,R.jsxs)(j,{children:[B.registration.public_registration&&(0,R.jsx)(A,{link:(0,R.jsx)(a,{search:C(l),to:`/register`,children:e(`login.link.register`)}),text:e(`login.footer.noAccount`)}),W&&(0,R.jsx)(A,{link:(0,R.jsx)(a,{search:C(l),to:`/login`,children:e(`login.password.backToMethods`)})})]})]})}export{z as component};
2
- //# sourceMappingURL=password-Dk8PwtZN.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-Dk8PwtZN.js","names":["standardSchemaResolver","useMutation","useQueryClient","useSuspenseQuery","Link","useRouter","TRButton","TRForm","TRLink","LockIcon","MailIcon","useCallback","useEffect","useMemo","useRef","useForm","useTranslation","z","AuthField","AuthFooter","AuthFooterLink","AuthorizationContextBanner","DesignSystemRichText","AuthLayout","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","tick","appConfigQueryOptions","loginMutationOptions","startConditionalPasskeyAuth","getSessionQueryOptions","Route","LoginPassword","t","i18n","router","queryClient","search","useSearch","authorizeSearch","OAuthSearch","account_selection_state","prompt","split","includes","account_selected","lang","language","data","configData","implicitNotice","registration","signup_notice","fallback_language","isPasswordAuthEnabled","auth","password","enabled","isPasskeyEnabled","passkey","hasMultipleLoginMethods","identity_providers","length","loginSchema","object","email","string","min","pipe","loginMutation","onSuccess","params","user","email_verification_required","email_verified","navigate","to","setQueryData","queryKey","registered_2fa_methods","SecondFactorMethod","totp","totp_registered","push","passkey_count","second_factor_required","available_2fa_setup_methods","method","passkey_name","window","location","href","onError","_error","setError","type","message","onSettled","invalidateQueries","handlePasskeySuccess","AuthResponse","abortControllerRef","AbortController","current","signal","abort","register","handleSubmit","formState","errors","defaultValues","resolver","onSubmit","values","infer","mutate","undefined","isPending","public_registration","component"],"sources":["../../../frontend/src/queries/login.ts","../../../frontend/src/routes/login/password/index.tsx?tsr-split=component"],"sourcesContent":["import { mutationOptions } from '@tanstack/react-query';\nimport type { InferRequestType, InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\n\nexport type LoginParams = InferRequestType<\n (typeof client.api.auth.login)['$post']\n>['json'];\n\nexport type LoginResponse = InferResponseType<\n (typeof client.api.auth.login)['$post'],\n 200\n>;\n\nexport const loginMutationOptions = mutationOptions({\n mutationFn: async (values: LoginParams) => {\n const res = await client.api.auth.login.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n","import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRLink } from '@tinyrack/ui/components/link';\nimport { LockIcon, MailIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.tsx';\nimport { DesignSystemRichText } from '#frontend/components/ui/design-system-rich-text.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n hasAuthorizationContext,\n isOAuthFlow,\n type OAuthSearch,\n OAuthSearchSchema,\n type SecondFactorMethod,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getAuthorizationContextQueryOptions } from '#frontend/queries/authorization-context.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { loginMutationOptions } from '#frontend/queries/login.ts';\nimport { startConditionalPasskeyAuth } from '#frontend/queries/passkey.ts';\nimport {\n type AuthResponse,\n getSessionQueryOptions,\n} from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/login/password/')({\n component: LoginPassword,\n errorComponent: RouteErrorFallback,\n validateSearch: SearchSchema,\n loaderDeps: ({ search }) => ({\n search,\n }),\n loader: async ({ context, deps }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n if (hasAuthorizationContext(deps.search)) {\n await context.queryClient.ensureQueryData(\n getAuthorizationContextQueryOptions(deps.search),\n );\n }\n },\n});\n\nfunction LoginPassword() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const authorizeSearch: OAuthSearch =\n search.account_selection_state &&\n search.prompt?.split(' ').includes('login')\n ? { ...search, account_selected: 1 }\n : search;\n const lang = search.lang ?? i18n.language;\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n const isPasswordAuthEnabled = configData.auth.password.enabled;\n const isPasskeyEnabled = configData.auth.passkey.enabled;\n const hasMultipleLoginMethods =\n configData.identity_providers.length +\n (isPasswordAuthEnabled ? 1 : 0) +\n (isPasskeyEnabled ? 1 : 0) >\n 1;\n\n const loginSchema = useMemo(\n () =>\n z.object({\n email: z\n .string()\n .min(1, t('validation.email.required'))\n .pipe(z.email(t('validation.email.invalid'))),\n password: z.string().min(1, t('validation.password.required')),\n }),\n [t],\n );\n\n const loginMutation = useMutation({\n ...loginMutationOptions,\n onSuccess: async (data, params) => {\n const user = data.user;\n\n if (user.email_verification_required && !user.email_verified) {\n router.navigate({\n to: '/verify/email',\n search: {\n email: params.email,\n ...extractOAuthParams(search),\n },\n });\n return;\n }\n\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: user,\n });\n await tick();\n\n const registered_2fa_methods: SecondFactorMethod[] = [];\n if (configData.auth.password.totp.enabled && user.totp_registered) {\n registered_2fa_methods.push('totp');\n }\n if (configData.auth.passkey.enabled && user.passkey_count > 0) {\n registered_2fa_methods.push('passkey');\n }\n\n if (user.second_factor_required && registered_2fa_methods.length === 0) {\n if (configData.available_2fa_setup_methods.length > 1) {\n return router.navigate({\n to: '/setup/2fa',\n search: extractOAuthParams(search),\n });\n } else if (configData.available_2fa_setup_methods.length === 1) {\n const method = configData.available_2fa_setup_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/setup/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/setup/passkey',\n search: {\n ...extractOAuthParams(search),\n passkey_name: 'default',\n },\n });\n }\n }\n }\n\n if (registered_2fa_methods.length > 1) {\n return router.navigate({\n to: '/verify/2fa',\n search: extractOAuthParams(search),\n });\n } else if (registered_2fa_methods.length === 1) {\n const method = registered_2fa_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/verify/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/verify/passkey',\n search: extractOAuthParams(search),\n });\n }\n } else {\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n return router.navigate({ to: '/profile' });\n }\n }\n },\n onError: (_error) => {\n setError('email', {\n type: 'manual',\n message: t('login.error.failed'),\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const handlePasskeySuccess = useCallback(\n async (data: AuthResponse) => {\n if (data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, data);\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n router.navigate({ to: '/profile' });\n }\n }\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n [queryClient, router, search, authorizeSearch],\n );\n\n // Conditional UI: Start passkey autofill on page load\n const abortControllerRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (!isPasskeyEnabled || !isPasswordAuthEnabled) {\n return;\n }\n\n abortControllerRef.current = new AbortController();\n startConditionalPasskeyAuth(\n handlePasskeySuccess,\n abortControllerRef.current.signal,\n );\n\n return () => {\n abortControllerRef.current?.abort();\n };\n }, [isPasskeyEnabled, isPasswordAuthEnabled, handlePasskeySuccess]);\n\n const {\n register,\n setError,\n handleSubmit,\n formState: { errors },\n } = useForm({\n defaultValues: {\n email: '',\n password: '',\n },\n resolver: standardSchemaResolver(loginSchema),\n });\n\n const onSubmit = async (values: z.infer<typeof loginSchema>) => {\n loginMutation.mutate(values);\n };\n\n return (\n <AuthLayout showBrandSubtitle>\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n autoComplete=\"username webauthn\"\n error={errors.email}\n icon={MailIcon}\n label={t('login.email.label')}\n placeholder={t('login.email.placeholder')}\n {...register('email')}\n type=\"email\"\n />\n\n <AuthField\n autoComplete=\"current-password\"\n error={errors.password}\n icon={LockIcon}\n label={t('login.password.label')}\n /*\n * On the label row rather than under the field: it belongs to the\n * password, and putting it between the field and the submit button\n * separated the two things the user is actually trying to do.\n */\n labelAction={\n configData.email.enabled ? (\n <TRLink\n className=\"text-tinyrack-xs\"\n render={<Link to=\"/password/forgot\" />}\n >\n {t('login.link.forgotPassword')}\n </TRLink>\n ) : undefined\n }\n placeholder={t('login.password.placeholder')}\n {...register('password')}\n type=\"password\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={loginMutation.isPending}\n loadingLabel={t('login.submitting')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('login.submit')}\n </TRButton>\n </TRForm>\n )}\n\n {implicitNotice && (\n <DesignSystemRichText html={implicitNotice} variant=\"notice\" />\n )}\n\n {(configData.registration.public_registration ||\n hasMultipleLoginMethods) && (\n <AuthFooter>\n {configData.registration.public_registration && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/register\">\n {t('login.link.register')}\n </Link>\n }\n text={t('login.footer.noAccount')}\n />\n )}\n {hasMultipleLoginMethods && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('login.password.backToMethods')}\n </Link>\n }\n />\n )}\n </AuthFooter>\n )}\n </AuthLayout>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{i as e,r as t}from"./config-C18-l7z7.js";import{t as n}from"./mutationOptions-Cv_vJkJn.js";var r=n({mutationFn:async n=>e(await t.api.auth.password.forgot.$post({json:n,header:{}}))}),i=n({mutationFn:async n=>e(await t.api.auth.password.reset.$post({json:n}))});export{i as n,r as t};
2
- //# sourceMappingURL=password-reset-BcFpGOop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-reset-BcFpGOop.js","names":[],"sources":["../../../frontend/src/queries/password-reset.ts"],"sourcesContent":["import { mutationOptions } from '@tanstack/react-query';\nimport type { InferRequestType, InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\n\nexport type ForgotPasswordParams = InferRequestType<\n (typeof client.api.auth.password.forgot)['$post']\n>['json'];\n\nexport type ForgotPasswordResponse = InferResponseType<\n (typeof client.api.auth.password.forgot)['$post'],\n 200\n>;\n\nexport const forgotPasswordMutationOptions = mutationOptions({\n mutationFn: async (values: ForgotPasswordParams) => {\n const res = await client.api.auth.password.forgot.$post({\n json: values,\n header: {},\n });\n return jsonOk(res);\n },\n});\n\nexport type ResetPasswordParams = InferRequestType<\n (typeof client.api.auth.password.reset)['$post']\n>['json'];\n\nexport type ResetPasswordResponse = InferResponseType<\n (typeof client.api.auth.password.reset)['$post'],\n 200\n>;\n\nexport const resetPasswordMutationOptions = mutationOptions({\n mutationFn: async (values: ResetPasswordParams) => {\n const res = await client.api.auth.password.reset.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n"],"mappings":"kGAaA,IAAa,EAAgC,EAAgB,CAC3D,WAAY,KAAO,IAKV,EAAO,MAJI,EAAO,IAAI,KAAK,SAAS,OAAO,MAAM,CACtD,KAAM,EACN,OAAQ,CAAC,CACX,CAAC,CACgB,CAErB,CAAC,EAWY,EAA+B,EAAgB,CAC1D,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,SAAS,MAAM,MAAM,CACrD,KAAM,CACR,CAAC,CACgB,CAErB,CAAC"}
@@ -1,2 +0,0 @@
1
- import{J as e,X as t,Z as n,c as r,et as i,i as a,n as o,x as s}from"./createLucideIcon-D-yizrWN.js";import{On as c,Tt as l,ft as u}from"./config-C18-l7z7.js";import{k as d}from"./shell-header-bar-CdOEWmCT.js";import{n as f,t as p}from"./valueToPercent-LgbY_prH.js";var m=i(n(),1),h=m.createContext(void 0);function g(){let e=m.useContext(h);if(e===void 0)throw Error(s(38));return e}var _=t(),v=m.forwardRef(function(e,t){let{format:n,getAriaValueText:i,locale:a,max:o=100,min:s=0,value:c,render:d,className:g,children:v,style:y,...b}=e,[x,S]=m.useState(),C=p(c,s,o),w=u(Number.isNaN(C)?0:C,0,100),T=u(Number.isNaN(c)?s:c,s,o),E=n?f(T,a,n):f(w/100,a,{style:`percent`}),D=E;i&&(D=i(E,c));let O={"aria-labelledby":x,"aria-valuemax":o,"aria-valuemin":s,"aria-valuenow":T,"aria-valuetext":D,role:`meter`,children:(0,_.jsxs)(m.Fragment,{children:[v,(0,_.jsx)(`span`,{role:`presentation`,style:l,children:`x`})]})},k=m.useMemo(()=>({formattedValue:E,percentageValue:w,setLabelId:S,value:c}),[E,w,S,c]),A=r(`div`,e,{ref:t,props:[O,b]});return(0,_.jsx)(h.Provider,{value:k,children:A})}),y=m.forwardRef(function(e,t){let{render:n,className:i,style:a,...o}=e;return r(`div`,e,{ref:t,props:o})}),b=m.forwardRef(function(e,t){let{render:n,className:i,style:a,...o}=e,{percentageValue:s}=g();return r(`div`,e,{ref:t,props:[{style:{insetInlineStart:0,height:`inherit`,width:`${s}%`}},o]})}),x=m.forwardRef(function(e,t){let{className:n,render:i,children:a,style:o,...s}=e,{value:c,formattedValue:l}=g();return r(`span`,e,{ref:t,props:[{"aria-hidden":!0,children:typeof a==`function`?a(l,c):l},s]})}),S=m.forwardRef(function(e,t){let{render:n,className:i,style:a,id:o,...s}=e,{setLabelId:c}=g();return r(`span`,e,{ref:t,props:[{id:d(o,c),role:`presentation`},s]})}),C=c(b,`tr-meter-indicator`),w=c(S,`tr-meter-label`);function T({className:t,max:n=100,min:r=0,value:i,variant:a=`neutral`,...o}){let s=Math.min(n,Math.max(r,Number.isNaN(i)?r:i));return(0,_.jsx)(v,{...o,className:e(`tr-meter`,t),"data-variant":a,max:n,min:r,value:s})}var E={Root:T,Track:c(y,`tr-meter-track`),Indicator:C,Value:c(x,`tr-meter-value`),Label:w},D=[`weak`,`fair`,`good`,`strong`],O={weak:`danger`,fair:`warning`,good:`info`,strong:`success`};function k(e,t){if(e.length===0)return 0;if(e.length<t.min_length)return 1;let n=[/[a-z]/,/[A-Z]/,/\d/,/[^a-zA-Z0-9]/].filter(t=>t.test(e)).length,r=e.length>=t.min_length+4;return n>=3&&r?4:n>=2&&r?3:2}function A({password:e,policy:t}){let{t:n}=a(),r=k(e,t);if(r===0)return null;let i=D[r-1];return(0,_.jsxs)(E.Root,{"aria-live":`polite`,className:`flex flex-col gap-tinyrack-xs`,max:4,min:0,value:r,variant:O[i],children:[(0,_.jsxs)(`div`,{className:`flex items-baseline justify-between gap-tinyrack-sm`,children:[(0,_.jsx)(E.Label,{render:(0,_.jsx)(o,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.label`)})}),(0,_.jsx)(E.Value,{render:(0,_.jsx)(o,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.${i}`)})})]}),(0,_.jsx)(E.Track,{children:(0,_.jsx)(E.Indicator,{})})]})}export{A as t};
2
- //# sourceMappingURL=password-strength-Bgvy7kz6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-strength-Bgvy7kz6.js","names":["_formatErrorMessage","Meter.Indicator","Meter.Label","Meter.Root","Meter.Track","Meter.Value"],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/root/MeterRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/root/MeterRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/track/MeterTrack.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/indicator/MeterIndicator.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/value/MeterValue.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/label/MeterLabel.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-indicator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-label.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-track.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-value.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/index.js","../../../frontend/src/components/auth/password-strength.tsx"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const MeterRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") MeterRootContext.displayName = \"MeterRootContext\";\nexport function useMeterRootContext() {\n const context = React.useContext(MeterRootContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: MeterRootContext is missing. Meter parts must be placed within <Meter.Root>.' : _formatErrorMessage(38));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { visuallyHidden } from '@base-ui/utils/visuallyHidden';\nimport { MeterRootContext } from \"./MeterRootContext.mjs\";\nimport { formatNumber } from \"../../utils/formatNumber.mjs\";\nimport { valueToPercent } from \"../../utils/valueToPercent.mjs\";\nimport { clamp } from \"../../internals/clamp.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups all parts of the meter and provides the value for screen readers.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const MeterRoot = /*#__PURE__*/React.forwardRef(function MeterRoot(componentProps, forwardedRef) {\n const {\n format,\n getAriaValueText,\n locale,\n max = 100,\n min = 0,\n value: valueProp,\n render,\n className,\n children,\n style,\n ...elementProps\n } = componentProps;\n const [labelId, setLabelId] = React.useState();\n\n // `clamp` handles infinity, but NaN needs an explicit fallback before normalizing range outputs.\n const rawPercentage = valueToPercent(valueProp, min, max);\n const percentageValue = clamp(Number.isNaN(rawPercentage) ? 0 : rawPercentage, 0, 100);\n const clampedValue = clamp(Number.isNaN(valueProp) ? min : valueProp, min, max);\n\n // Format the clamped value so visible and accessible text stay in sync with `aria-valuenow` and\n // the indicator fill. The raw value remains available as the second `getAriaValueText` argument.\n const formattedValue = format ? formatNumber(clampedValue, locale, format) : formatNumber(percentageValue / 100, locale, {\n style: 'percent'\n });\n let ariaValuetext = formattedValue;\n if (getAriaValueText) {\n ariaValuetext = getAriaValueText(formattedValue, valueProp);\n }\n const defaultProps = {\n 'aria-labelledby': labelId,\n 'aria-valuemax': max,\n 'aria-valuemin': min,\n 'aria-valuenow': clampedValue,\n 'aria-valuetext': ariaValuetext,\n role: 'meter',\n children: /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children, /*#__PURE__*/_jsx(\"span\", {\n role: \"presentation\",\n style: visuallyHidden,\n children: \"x\"\n })]\n })\n };\n const contextValue = React.useMemo(() => ({\n formattedValue,\n percentageValue,\n setLabelId,\n value: valueProp\n }), [formattedValue, percentageValue, setLabelId, valueProp]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [defaultProps, elementProps]\n });\n return /*#__PURE__*/_jsx(MeterRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterRoot.displayName = \"MeterRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Contains the meter indicator and represents the entire range of the meter.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterTrack = /*#__PURE__*/React.forwardRef(function MeterTrack(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: elementProps\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterTrack.displayName = \"MeterTrack\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Visualizes the position of the value along the range.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterIndicator = /*#__PURE__*/React.forwardRef(function MeterIndicator(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n percentageValue\n } = useMeterRootContext();\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [{\n style: {\n insetInlineStart: 0,\n height: 'inherit',\n width: `${percentageValue}%`\n }\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterIndicator.displayName = \"MeterIndicator\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * A text element displaying the current value.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterValue = /*#__PURE__*/React.forwardRef(function MeterValue(componentProps, forwardedRef) {\n const {\n className,\n render,\n children,\n style,\n ...elementProps\n } = componentProps;\n const {\n value,\n formattedValue\n } = useMeterRootContext();\n return useRenderElement('span', componentProps, {\n ref: forwardedRef,\n props: [{\n 'aria-hidden': true,\n children: typeof children === 'function' ? children(formattedValue, value) : formattedValue\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterValue.displayName = \"MeterValue\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\n\n/**\n * An accessible label for the meter.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterLabel = /*#__PURE__*/React.forwardRef(function MeterLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n setLabelId\n } = useMeterRootContext();\n const id = useRegisteredLabelId(idProp, setLabelId);\n return useRenderElement('span', componentProps, {\n ref: forwardedRef,\n props: [{\n id,\n role: 'presentation'\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterLabel.displayName = \"MeterLabel\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-indicator.tsx\nconst TRMeterIndicator = createComponentPart(Meter.Indicator, \"tr-meter-indicator\");\n//#endregion\nexport { TRMeterIndicator };\n\n//# sourceMappingURL=meter-indicator.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-label.tsx\nconst TRMeterLabel = createComponentPart(Meter.Label, \"tr-meter-label\");\n//#endregion\nexport { TRMeterLabel };\n\n//# sourceMappingURL=meter-label.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-root.tsx\nfunction TRMeterRoot({ className, max = 100, min = 0, value, variant = \"neutral\", ...props }) {\n\tconst clampedValue = Math.min(max, Math.max(min, Number.isNaN(value) ? min : value));\n\treturn /* @__PURE__ */ jsx(Meter.Root, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-meter\", className),\n\t\t\"data-variant\": variant,\n\t\tmax,\n\t\tmin,\n\t\tvalue: clampedValue\n\t});\n}\n//#endregion\nexport { TRMeterRoot };\n\n//# sourceMappingURL=meter-root.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-track.tsx\nconst TRMeterTrack = createComponentPart(Meter.Track, \"tr-meter-track\");\n//#endregion\nexport { TRMeterTrack };\n\n//# sourceMappingURL=meter-track.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-value.tsx\nconst TRMeterValue = createComponentPart(Meter.Value, \"tr-meter-value\");\n//#endregion\nexport { TRMeterValue };\n\n//# sourceMappingURL=meter-value.js.map","import { TRMeterIndicator } from \"./meter-indicator.js\";\nimport { TRMeterLabel } from \"./meter-label.js\";\nimport { TRMeterRoot } from \"./meter-root.js\";\nimport { TRMeterTrack } from \"./meter-track.js\";\nimport { TRMeterValue } from \"./meter-value.js\";\n//#region src/components/meter/index.tsx\nconst TRMeter = {\n\tRoot: TRMeterRoot,\n\tTrack: TRMeterTrack,\n\tIndicator: TRMeterIndicator,\n\tValue: TRMeterValue,\n\tLabel: TRMeterLabel\n};\n//#endregion\nexport { TRMeter, TRMeterIndicator, TRMeterLabel, TRMeterRoot, TRMeterTrack, TRMeterValue };\n\n//# sourceMappingURL=index.js.map","import { TRMeter } from '@tinyrack/ui/components/meter';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { useTranslation } from 'react-i18next';\n\ntype PasswordPolicy = {\n min_length: number;\n max_length: number;\n};\n\ntype PasswordStrengthProps = {\n password: string;\n policy: PasswordPolicy;\n};\n\nconst LEVELS = ['weak', 'fair', 'good', 'strong'] as const;\n\nconst VARIANTS = {\n weak: 'danger',\n fair: 'warning',\n good: 'info',\n strong: 'success',\n} as const;\n\n/**\n * Scores a password 1-4 for feedback only.\n *\n * Deliberately simple: length against the deployment's own policy plus\n * character-class variety. The server is the authority on what is acceptable,\n * so this only needs to steer the user, and a full entropy estimator would be\n * a large dependency for a hint bar.\n *\n * Returns 0 for \"nothing to say yet\" so the caller can stay silent.\n */\nfunction scorePassword(password: string, policy: PasswordPolicy): number {\n if (password.length === 0) {\n return 0;\n }\n if (password.length < policy.min_length) {\n return 1;\n }\n\n const classes = [/[a-z]/, /[A-Z]/, /\\d/, /[^a-zA-Z0-9]/].filter((pattern) =>\n pattern.test(password),\n ).length;\n\n const isLong = password.length >= policy.min_length + 4;\n\n if (classes >= 3 && isLong) {\n return 4;\n }\n if (classes >= 2 && isLong) {\n return 3;\n }\n return 2;\n}\n\n/**\n * Strength hint under a new-password field.\n *\n * Renders nothing for an empty field so the form does not shift as soon as it\n * is focused. Announced politely rather than assertively — it updates on every\n * keystroke and should not interrupt typing.\n */\nexport function PasswordStrength({ password, policy }: PasswordStrengthProps) {\n const { t } = useTranslation();\n const score = scorePassword(password, policy);\n\n if (score === 0) {\n return null;\n }\n\n const level = LEVELS[score - 1];\n\n return (\n <TRMeter.Root\n aria-live=\"polite\"\n className=\"flex flex-col gap-tinyrack-xs\"\n max={4}\n min={0}\n value={score}\n variant={VARIANTS[level]}\n >\n <div className=\"flex items-baseline justify-between gap-tinyrack-sm\">\n <TRMeter.Label\n render={\n <TRText color=\"muted\" variant=\"caption\">\n {t('validation.password.strength.label')}\n </TRText>\n }\n />\n <TRMeter.Value\n render={\n <TRText color=\"muted\" variant=\"caption\">\n {t(`validation.password.strength.${level}`)}\n </TRText>\n }\n />\n </div>\n <TRMeter.Track>\n <TRMeter.Indicator />\n </TRMeter.Track>\n </TRMeter.Root>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{C as e,J as t,X as n,Z as r,_ as i,c as a,et as o,i as s,n as c,w as l,x as u}from"./createLucideIcon-D-yizrWN.js";import{Et as d,J as f,Jt as p,N as m,On as h,R as g,S as _,Tt as v,Y as y,Z as ee,in as te,q as b,z as x}from"./config-C18-l7z7.js";import{B as ne,E as re,F as ie,G as ae,H as oe,I as S,N as se,R as ce,W as C,l as w}from"./shell-header-bar-CdOEWmCT.js";import{t as T}from"./useAriaLabelledBy-CF3crxLc.js";import{t as E}from"./field-CsrUbl__.js";import{t as D}from"./separator-CMGc2Y1q.js";var O=o(r(),1),k=O.createContext(void 0);function A(){let e=O.useContext(k);if(e===void 0)throw Error(u(98));return e}function j(e,t,n){return{...e,value:t,index:n,filled:t!==``}}var le={value:()=>null,length:()=>null,...C},ue={value:()=>null,index:()=>null,...C},M={numeric:{slotPattern:`\\d{1}`,getRootPattern:e=>`\\d{${e}}`,regexp:/[^\d]/g,inputMode:`numeric`},alpha:{slotPattern:`[a-zA-Z]{1}`,getRootPattern:e=>`[a-zA-Z]{${e}}`,regexp:/[^a-zA-Z]/g,inputMode:`text`},alphanumeric:{slotPattern:`[a-zA-Z0-9]{1}`,getRootPattern:e=>`[a-zA-Z0-9]{${e}}`,regexp:/[^a-zA-Z0-9]/g,inputMode:`text`}};function N(e){return e===`none`?null:M[e]}function de(e){return(e??``).replace(/\s/g,``)}function P(e,t){return t?e.replace(t.regexp,``):e}function F(e,t,n,r){let i=de(e),a=N(n),o=P(i,a),s=i.length>o.length;if(r){let e=r(o);s||=o.length>e.length,o=P(e,a),s||=e.length>o.length}let c=t<0?0:t,l=Array.from(o);return[l.slice(0,c).join(``),s||l.length>c]}function I(e,t,n,r){return F(e,t,n,r)[0]}function fe(e,t,n,r,i,a){let o=I(n,r,i,a);return I(`${e.slice(0,t)}${o}${e.slice(t+o.length)}`,r,i,a)}function L(e,t){return t<0||t>=e.length?e:`${e.slice(0,t)}${e.slice(t+1)}`}var R=n(),z=O.forwardRef(function(t,n){let{"aria-describedby":r,"aria-labelledby":o,id:s,autoComplete:c=`one-time-code`,defaultValue:u,value:f,onValueChange:p,onValueComplete:h,form:_,length:y,autoSubmit:ee=!1,mask:b=!1,inputMode:C,validationType:w=`numeric`,normalizeValue:E,disabled:D=!1,readOnly:A=!1,required:j=!1,name:ue,onValueInvalid:M,render:de,className:P,style:fe,...L}=t,{setDirty:z,validityData:B,disabled:me,setFilled:V,invalid:H,name:he,state:ge,validation:U,validationMode:_e,setFocused:ve,setTouched:ye}=oe(),{clearErrors:be}=ie(),{getDescriptionProps:xe,labelId:Se}=ce(),W=me||D,G=he??ue,[Ce,we]=ae({controlled:f,default:u,name:`OTPField`,state:`value`}),Te=O.useRef(null),K=O.useRef([]),Ee=O.useRef(null),q=O.useRef(null),De=O.useMemo(()=>({get current(){return K.current[0]??null}}),[]),J=S({id:s}),Oe=T(o,Se,De,!0,J),ke=o==null?Oe:void 0,Ae=pe(r,xe({})[`aria-describedby`]),je=N(w),Me=je?.slotPattern,Ne=je?.getRootPattern(y),Pe=C??je?.inputMode,Fe=Number.isInteger(y)&&y>0,Y=I(Ce,y,w,E),X=m(Y),Z=Y!==``,[Ie,Le]=O.useState(0),[Re,ze]=O.useState(()=>Math.min(Y.length,y-1)),[Be,Ve]=O.useState(!1),He=Be?Math.min(Re,Math.max(y-1,0)):Math.min(Y.length,y-1);e(()=>{V(Z)},[Z,V]),ne(De,J,Y,void 0,!W,ue);let Q=l(e=>{let t=Math.min(Math.max(e,0),Math.max(K.current.length-1,0)),n=K.current[t];n?.focus(),n?.select()}),Ue=l((e,t)=>{Ee.current={index:e,value:t}});function We(){let e=U.inputRef.current?.form??K.current[0]?.form??null;if(_){let t=i(Te.current).getElementById(_);t?.tagName===`FORM`&&(e=t)}e&&typeof e.requestSubmit==`function`&&e.requestSubmit()}function Ge(e,t){h?.(e,t),ee&&We()}se(Y,()=>{be(G),z(Y!==B.initialValue),U.change(Y);let e=Ee.current;e!=null&&(Ee.current=null,e.value===Y&&Q(e.index));let t=q.current;t!=null&&(q.current=null,t.value===Y&&Ge(Y,t.eventDetails))});let Ke=l((e,t)=>{let n=I(e,y,w,E),r=(t.reason===`input-change`||t.reason===`input-paste`)&&n.length===y&&(X.current.length!==y||t.reason===`input-paste`)?x(t.reason,t.event):null;return n===X.current?(r!=null&&Ge(n,r),null):(p?.(n,t),t.isCanceled?null:(we(n),r==null?n.length!==y&&(q.current=null):q.current={value:n,eventDetails:r},n))}),qe=l((e,t)=>{M?.(e,t)}),Je=l((e,t)=>{if(e>X.current.length){Q(Math.min(X.current.length,y-1));return}ze(e),Ve(!0),ve(!0),t.currentTarget.select()}),Ye=l(e=>{te(Te.current,e.relatedTarget)||(ye(!0),Ve(!1),ve(!1),_e===`onBlur`&&U.commit(X.current))}),Xe=O.useCallback(e=>{if(J!=null)return e===0?J:`${J}-${e+1}`},[J]),$=O.useMemo(()=>({...ge,complete:Y.length===y,disabled:W,filled:Z,focused:Be,length:y,readOnly:A,required:j,value:Y}),[W,ge,Z,Be,y,A,j,Y]),Ze=O.useMemo(()=>({autoComplete:c,activeIndex:He,disabled:W,form:_,focusInput:Q,queueFocusInput:Ue,getInputId:Xe,handleInputBlur:Ye,handleInputFocus:Je,inputMode:Pe,inputAriaLabelledBy:ke,invalid:H,length:y,mask:b,pattern:Me,reportValueInvalid:qe,readOnly:A,required:j,normalizeValue:E,setValue:Ke,state:$,validationType:w,value:Y}),[He,c,W,Q,_,Xe,Ye,Je,Pe,ke,H,y,b,Me,Ue,A,qe,j,E,Ke,$,w,Y]),Qe=a(`div`,t,{ref:[n,Te],state:$,props:[{role:`group`,"aria-describedby":Ae,"aria-labelledby":Oe},L],stateAttributesMapping:le});return(0,R.jsx)(re,{elementsRef:K,onMapChange:e=>{Le(e.size)},children:(0,R.jsxs)(k.Provider,{value:Ze,children:[Qe,Fe&&(0,R.jsx)(`input`,{...U.getValidationProps(W,{onFocus(){Q(0)},onChange(e){if(e.nativeEvent.defaultPrevented||W||A)return;let t=e.currentTarget.value,[n,r]=F(t,y,w,E);r&&qe(t,x(`input-change`,e.nativeEvent));let i=Ke(n,g(`input-change`,e.nativeEvent));i!=null&&i!==``&&Ue(i.length-1,i)}}),ref:U.inputRef,type:`text`,id:J&&G==null?`${J}-hidden-input`:void 0,form:_,name:G,value:Y,autoComplete:c,inputMode:Pe,minLength:y,maxLength:y,pattern:Ne,disabled:W,readOnly:A,required:j,"aria-hidden":!0,tabIndex:-1,style:G?d:v})]})})});function pe(...e){let t=e.flatMap(e=>e?.split(/\s+/).filter(Boolean)??[]);return t.length>0?Array.from(new Set(t)).join(` `):void 0}var B=h(O.forwardRef(function(e,t){let{"aria-label":n,"aria-labelledby":r,render:i,className:o,style:s,...c}=e,{activeIndex:l,autoComplete:u,disabled:d,form:m,focusInput:h,queueFocusInput:v,getInputId:te,handleInputBlur:ne,handleInputFocus:re,inputMode:ie,inputAriaLabelledBy:ae,invalid:oe,length:S,mask:se,pattern:ce,reportValueInvalid:C,readOnly:T,required:E,normalizeValue:D,setValue:k,state:le,validationType:M,value:N}=A(),{ref:de,index:P}=w({guess:!0}),I=O.useRef(null),R=_(),z=N[P]??``,pe=j(le,z,P),B=n,me=r??ae,V=P===0?void 0:B,H={id:te(P),value:z,type:se?`password`:`text`,inputMode:ie,autoComplete:P===0?u:`off`,autoCorrect:`off`,spellCheck:`false`,enterKeyHint:P===S-1?`done`:`next`,maxLength:P===0?S:void 0,tabIndex:l===P?0:-1,disabled:d,form:m,pattern:ce,readOnly:T,required:E,"aria-labelledby":V==null?me:void 0,"aria-invalid":!d&&oe?!0:void 0,"aria-label":V,onMouseDown(e){e.defaultPrevented||d||(e.preventDefault(),h(P))},onFocus(e){e.defaultPrevented||d||re(P,e)},onBlur(e){e.defaultPrevented||ne(e)},onChange(e){if(e.defaultPrevented||d||T)return;let t=e.currentTarget.value,[n,r]=F(t,S,M,D);if(r&&C(t,x(b,e.nativeEvent)),n===``){t===``?k(L(N,P),g(f,e.nativeEvent)):z!==``&&(e.currentTarget.value=z,e.currentTarget.select());return}let i=fe(N,P,n,S,M,D),a=k(i,g(b,e.nativeEvent));if(a!=null){let e=Math.min(P+n.length,S-1);v(e,a)}},onKeyDown(e){if(e.defaultPrevented||d)return;let t=Math.max(S-1,0),n=Math.min(N.length,t),r=(e.ctrlKey||e.metaKey)&&!e.altKey,i=R===`rtl`,a=i?`ArrowRight`:`ArrowLeft`,o=i?`ArrowLeft`:`ArrowRight`;if(e.key===a){p(e),h(r?0:Math.max(0,P-1));return}if(e.key===o){p(e),h(r?n:Math.min(t,P+1));return}if(e.key===`Home`||e.key===`ArrowUp`){p(e),h(0);return}if(e.key===`End`||e.key===`ArrowDown`){p(e),h(n);return}if(T)return;function s(t,n){let r=k(t,g(ee,e.nativeEvent));r!=null&&v(n,r)}if(e.key===`Backspace`&&r){p(e),s(``,0);return}if(e.key===`Delete`){p(e),s(L(N,P),P);return}let c=e.currentTarget.value,l=e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===c.length;if(e.key.length===1&&l&&z===e.key){p(e),P<S-1&&h(P+1);return}if(e.key===`Backspace`){p(e);let t=Math.max(0,P-1);s(L(N,z===``?t:P),t)}},onPaste(e){if(e.defaultPrevented||d||T)return;let t=``;try{t=e.clipboardData?.getData(`text/plain`)??``}catch{return}e.preventDefault();let[n,r]=F(t,S,M,D);if(r&&C(t,x(y,e.nativeEvent)),n===``)return;let i=k(fe(N,P,n,S,M,D),g(y,e.nativeEvent));if(i!=null){let e=Math.min(P+n.length,S-1);v(e,i)}}};return a(`input`,e,{ref:[t,de,I],state:pe,props:[H,c],stateAttributesMapping:ue})}),`tr-otp-field-digit`,{tracksFocusModality:!0});function me({appearance:e=`solid`,className:n,layout:r=`compact`,uiSize:i=`md`,...a}){return(0,R.jsx)(z,{...a,className:t(`tr-otp-field`,n),"data-appearance":e,"data-layout":r,"data-ui-size":i})}function V({className:e,orientation:n=`vertical`,...r}){return(0,R.jsx)(D,{...r,className:t(`tr-otp-field-separator`,e),orientation:n})}var H={Root:me,Input:B,Separator:V},he=(0,O.forwardRef)(function({length:e=6,error:t,disabled:n=!1,onComplete:r,onChange:i,value:a,autoFocus:o=!1,className:l=``},u){let{t:d}=s(),f=(0,O.useId)(),p=(0,O.useRef)(null),[m,h]=(0,O.useState)(a??``);(0,O.useEffect)(()=>{a!==void 0&&h(a)},[a]),(0,O.useImperativeHandle)(u,()=>({focus:()=>{(p.current?.querySelector(`input`))?.focus()},clear:()=>{h(``),(p.current?.querySelector(`input`))?.focus()}}),[]);let g=(0,O.useCallback)(e=>{h(e),i?.(e)},[i]),_=(0,O.useCallback)(e=>{r?.(e)},[r]);return(0,R.jsxs)(E.Root,{className:`w-full ${l}`,ref:p,children:[(0,R.jsx)(E.Label,{className:`sr-only`,htmlFor:f,children:d(`common.otp.label`)}),(0,R.jsx)(H.Root,{disabled:n,id:f,layout:`stretch`,length:e,onValueChange:g,onValueComplete:_,uiSize:`lg`,validationType:`numeric`,value:m,children:Array.from({length:e},(t,n)=>(0,R.jsx)(H.Input,{"aria-label":n===0?void 0:d(`common.otp.digit`,{label:d(`common.otp.label`),position:n+1,total:e}),autoFocus:o&&n===0},n))}),t&&(0,R.jsx)(c,{align:`center`,as:`p`,className:`mt-tinyrack-sm`,color:`danger`,"data-testid":`pin-input-error`,variant:`bodySm`,children:t.message})]})});export{he as t};
2
- //# sourceMappingURL=pin-input-DhsRO4Ei.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pin-input-DhsRO4Ei.js","names":["_formatErrorMessage","REASONS.inputChange","REASONS.inputClear","REASONS.keyboard","REASONS.inputPaste","OTPField.Input","OTPField.Root"],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/root/OTPFieldRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/utils/stateAttributesMapping.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/utils/otp.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/root/OTPFieldRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/input/OTPFieldInput.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-input.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-separator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/index.js","../../../frontend/src/components/ui/pin-input.tsx"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const OTPFieldRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") OTPFieldRootContext.displayName = \"OTPFieldRootContext\";\nexport function useOTPFieldRootContext() {\n const context = React.useContext(OTPFieldRootContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: OTPFieldRootContext is missing. OTPField parts must be placed within <OTPField.Root>.' : _formatErrorMessage(98));\n }\n return context;\n}\nexport function getOTPFieldInputState(state, value, index) {\n return {\n ...state,\n value,\n index,\n filled: value !== ''\n };\n}","import { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nexport const rootStateAttributesMapping = {\n value: () => null,\n length: () => null,\n ...fieldValidityMapping\n};\nexport const inputStateAttributesMapping = {\n value: () => null,\n index: () => null,\n ...fieldValidityMapping\n};","const OTP_VALIDATION_CONFIG = {\n numeric: {\n slotPattern: '\\\\d{1}',\n getRootPattern: length => `\\\\d{${length}}`,\n regexp: /[^\\d]/g,\n inputMode: 'numeric'\n },\n alpha: {\n slotPattern: '[a-zA-Z]{1}',\n getRootPattern: length => `[a-zA-Z]{${length}}`,\n regexp: /[^a-zA-Z]/g,\n inputMode: 'text'\n },\n alphanumeric: {\n slotPattern: '[a-zA-Z0-9]{1}',\n getRootPattern: length => `[a-zA-Z0-9]{${length}}`,\n regexp: /[^a-zA-Z0-9]/g,\n inputMode: 'text'\n }\n};\nexport function getOTPValidationConfig(validationType) {\n if (validationType === 'none') {\n return null;\n }\n return OTP_VALIDATION_CONFIG[validationType];\n}\nexport function stripOTPWhitespace(value) {\n return (value ?? '').replace(/\\s/g, '');\n}\nfunction applyOTPValidation(value, validation) {\n return validation ? value.replace(validation.regexp, '') : value;\n}\n\n/**\n * Normalizes user-entered OTP text by stripping whitespace, applying validation and custom\n * normalization, and clamping the final value to the configured slot count.\n */\nexport function normalizeOTPValueWithDetails(value, length, validationType, normalizeValue) {\n const strippedValue = stripOTPWhitespace(value);\n const validation = getOTPValidationConfig(validationType);\n let normalizedValue = applyOTPValidation(strippedValue, validation);\n let didRejectCharacters = strippedValue.length > normalizedValue.length;\n if (normalizeValue) {\n const customNormalizedValue = normalizeValue(normalizedValue);\n didRejectCharacters ||= normalizedValue.length > customNormalizedValue.length;\n normalizedValue = applyOTPValidation(customNormalizedValue, validation);\n didRejectCharacters ||= customNormalizedValue.length > normalizedValue.length;\n }\n\n // Slice by Unicode code points so multi-byte characters do not split across OTP slots.\n const maxLength = length < 0 ? 0 : length;\n const normalizedCharacters = Array.from(normalizedValue);\n return [normalizedCharacters.slice(0, maxLength).join(''), didRejectCharacters || normalizedCharacters.length > maxLength];\n}\nexport function normalizeOTPValue(value, length, validationType, normalizeValue) {\n return normalizeOTPValueWithDetails(value, length, validationType, normalizeValue)[0];\n}\n\n/**\n * Replaces characters starting at the provided slot index, then re-normalizes the final OTP value\n * so paste and multi-character edits stay contiguous and length-bounded.\n */\nexport function replaceOTPValue(currentValue, index, nextValue, length, validationType, normalizeValue) {\n const normalizedValue = normalizeOTPValue(nextValue, length, validationType, normalizeValue);\n const prefix = currentValue.slice(0, index);\n const suffix = currentValue.slice(index + normalizedValue.length);\n return normalizeOTPValue(`${prefix}${normalizedValue}${suffix}`, length, validationType, normalizeValue);\n}\nexport function removeOTPCharacter(currentValue, index) {\n if (index < 0 || index >= currentValue.length) {\n return currentValue;\n }\n return `${currentValue.slice(0, index)}${currentValue.slice(index + 1)}`;\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { warn } from '@base-ui/utils/warn';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { contains } from \"../../floating-ui-react/utils.mjs\";\nimport { CompositeList } from \"../../internals/composite/list/CompositeList.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useRegisterFieldControl } from \"../../internals/field-register-control/useRegisterFieldControl.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useAriaLabelledBy } from \"../../internals/labelable-provider/useAriaLabelledBy.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useValueChanged } from \"../../internals/useValueChanged.mjs\";\nimport { createChangeEventDetails, createGenericEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { OTPFieldRootContext } from \"./OTPFieldRootContext.mjs\";\nimport { rootStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { getOTPValidationConfig, normalizeOTPValue, normalizeOTPValueWithDetails } from \"../utils/otp.mjs\";\n\n/**\n * Groups all OTP field parts and manages their state.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI OTP Field](https://base-ui.com/react/components/otp-field)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const OTPFieldRoot = /*#__PURE__*/React.forwardRef(function OTPFieldRoot(componentProps, forwardedRef) {\n const {\n 'aria-describedby': ariaDescribedByProp,\n 'aria-labelledby': ariaLabelledByProp,\n id: idProp,\n autoComplete = 'one-time-code',\n defaultValue,\n value: valueProp,\n onValueChange,\n onValueComplete: onValueCompleteProp,\n form,\n length,\n autoSubmit = false,\n mask = false,\n inputMode: inputModeProp,\n validationType = 'numeric',\n normalizeValue,\n disabled: disabledProp = false,\n readOnly = false,\n required = false,\n name: nameProp,\n onValueInvalid,\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n setDirty,\n validityData,\n disabled: fieldDisabled,\n setFilled,\n invalid,\n name: fieldName,\n state: fieldState,\n validation,\n validationMode,\n setFocused,\n setTouched\n } = useFieldRootContext();\n const {\n clearErrors\n } = useFormContext();\n const {\n getDescriptionProps,\n labelId\n } = useLabelableContext();\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const [valueUnwrapped, setValueUnwrapped] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'OTPField',\n state: 'value'\n });\n const rootRef = React.useRef(null);\n const inputRefs = React.useRef([]);\n const pendingFocusRef = React.useRef(null);\n const pendingCompleteValueRef = React.useRef(null);\n const firstInputRef = React.useMemo(() => ({\n get current() {\n return inputRefs.current[0] ?? null;\n }\n }), []);\n const id = useLabelableId({\n id: idProp\n });\n const ariaLabelledBy = useAriaLabelledBy(ariaLabelledByProp, labelId, firstInputRef, true, id);\n const inputAriaLabelledBy = ariaLabelledByProp == null ? ariaLabelledBy : undefined;\n const fieldDescriptionProps = getDescriptionProps({});\n const ariaDescribedBy = mergeAriaIds(ariaDescribedByProp, fieldDescriptionProps['aria-describedby']);\n const validationConfig = getOTPValidationConfig(validationType);\n const pattern = validationConfig?.slotPattern;\n const hiddenInputPattern = validationConfig?.getRootPattern(length);\n const inputMode = inputModeProp ?? validationConfig?.inputMode;\n const hasValidLength = Number.isInteger(length) && length > 0;\n const value = normalizeOTPValue(valueUnwrapped, length, validationType, normalizeValue);\n const valueRef = useValueAsRef(value);\n const filled = value !== '';\n const [inputCount, setInputCount] = React.useState(0);\n const [focusedIndex, setFocusedIndex] = React.useState(() => Math.min(value.length, length - 1));\n const [focused, setFocusedState] = React.useState(false);\n const activeIndex = focused ? Math.min(focusedIndex, Math.max(length - 1, 0)) : Math.min(value.length, length - 1);\n useIsoLayoutEffect(() => {\n setFilled(filled);\n }, [filled, setFilled]);\n\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useOTPFieldRootDevWarnings({\n inputCount,\n length\n });\n }\n useRegisterFieldControl(firstInputRef, id, value, undefined, !disabled, nameProp);\n const focusInput = useStableCallback(index => {\n const targetIndex = Math.min(Math.max(index, 0), Math.max(inputRefs.current.length - 1, 0));\n const target = inputRefs.current[targetIndex];\n target?.focus();\n target?.select();\n });\n const queueFocusInput = useStableCallback((index, nextValue) => {\n pendingFocusRef.current = {\n index,\n value: nextValue\n };\n });\n function requestSubmit() {\n // The hidden validation input only renders for a valid `length`, but the slots always do,\n // so fall back to the owning form of the first slot.\n let formElement = validation.inputRef.current?.form ?? inputRefs.current[0]?.form ?? null;\n if (form) {\n const associatedElement = ownerDocument(rootRef.current).getElementById(form);\n if (associatedElement?.tagName === 'FORM') {\n formElement = associatedElement;\n }\n }\n if (formElement && typeof formElement.requestSubmit === 'function') {\n formElement.requestSubmit();\n }\n }\n function completeValue(completedValue, eventDetails) {\n onValueCompleteProp?.(completedValue, eventDetails);\n if (autoSubmit) {\n requestSubmit();\n }\n }\n useValueChanged(value, () => {\n clearErrors(name);\n setDirty(value !== validityData.initialValue);\n validation.change(value);\n const pendingFocus = pendingFocusRef.current;\n if (pendingFocus != null) {\n pendingFocusRef.current = null;\n if (pendingFocus.value === value) {\n focusInput(pendingFocus.index);\n }\n }\n const pendingCompleteValue = pendingCompleteValueRef.current;\n if (pendingCompleteValue != null) {\n pendingCompleteValueRef.current = null;\n if (pendingCompleteValue.value === value) {\n completeValue(value, pendingCompleteValue.eventDetails);\n }\n }\n });\n const setValue = useStableCallback((nextValue, details) => {\n const normalizedValue = normalizeOTPValue(nextValue, length, validationType, normalizeValue);\n const canComplete = details.reason === REASONS.inputChange || details.reason === REASONS.inputPaste;\n const completeEventDetails = canComplete && normalizedValue.length === length && (valueRef.current.length !== length || details.reason === REASONS.inputPaste) ? createGenericEventDetails(details.reason, details.event) : null;\n if (normalizedValue === valueRef.current) {\n if (completeEventDetails != null) {\n completeValue(normalizedValue, completeEventDetails);\n }\n return null;\n }\n onValueChange?.(normalizedValue, details);\n if (details.isCanceled) {\n return null;\n }\n setValueUnwrapped(normalizedValue);\n if (completeEventDetails != null) {\n pendingCompleteValueRef.current = {\n value: normalizedValue,\n eventDetails: completeEventDetails\n };\n } else if (normalizedValue.length !== length) {\n pendingCompleteValueRef.current = null;\n }\n return normalizedValue;\n });\n const reportValueInvalid = useStableCallback((invalidValue, details) => {\n onValueInvalid?.(invalidValue, details);\n });\n const handleInputFocus = useStableCallback((index, event) => {\n if (index > valueRef.current.length) {\n focusInput(Math.min(valueRef.current.length, length - 1));\n return;\n }\n setFocusedIndex(index);\n setFocusedState(true);\n setFocused(true);\n event.currentTarget.select();\n });\n const handleInputBlur = useStableCallback(event => {\n if (contains(rootRef.current, event.relatedTarget)) {\n return;\n }\n setTouched(true);\n setFocusedState(false);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(valueRef.current);\n }\n });\n const getInputId = React.useCallback(index => {\n if (id == null) {\n return undefined;\n }\n return index === 0 ? id : `${id}-${index + 1}`;\n }, [id]);\n const state = React.useMemo(() => ({\n ...fieldState,\n complete: value.length === length,\n disabled,\n filled,\n focused,\n length,\n readOnly,\n required,\n value\n }), [disabled, fieldState, filled, focused, length, readOnly, required, value]);\n const contextValue = React.useMemo(() => ({\n autoComplete,\n activeIndex,\n disabled,\n form,\n focusInput,\n queueFocusInput,\n getInputId,\n handleInputBlur,\n handleInputFocus,\n inputMode,\n inputAriaLabelledBy,\n invalid,\n length,\n mask,\n pattern,\n reportValueInvalid,\n readOnly,\n required,\n normalizeValue,\n setValue,\n state,\n validationType,\n value\n }), [activeIndex, autoComplete, disabled, focusInput, form, getInputId, handleInputBlur, handleInputFocus, inputMode, inputAriaLabelledBy, invalid, length, mask, pattern, queueFocusInput, readOnly, reportValueInvalid, required, normalizeValue, setValue, state, validationType, value]);\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, rootRef],\n state,\n props: [{\n role: 'group',\n 'aria-describedby': ariaDescribedBy,\n 'aria-labelledby': ariaLabelledBy\n }, elementProps],\n stateAttributesMapping: rootStateAttributesMapping\n });\n return /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: inputRefs,\n onMapChange: newMap => {\n setInputCount(newMap.size);\n },\n children: /*#__PURE__*/_jsxs(OTPFieldRootContext.Provider, {\n value: contextValue,\n children: [element, hasValidLength && /*#__PURE__*/_jsx(\"input\", {\n ...validation.getValidationProps(disabled, {\n onFocus() {\n focusInput(0);\n },\n onChange(event) {\n if (event.nativeEvent.defaultPrevented || disabled || readOnly) {\n return;\n }\n const rawValue = event.currentTarget.value;\n const [normalizedValue, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputChange, event.nativeEvent));\n }\n const committedValue = setValue(normalizedValue, createChangeEventDetails(REASONS.inputChange, event.nativeEvent));\n if (committedValue != null && committedValue !== '') {\n queueFocusInput(committedValue.length - 1, committedValue);\n }\n }\n }),\n ref: validation.inputRef,\n type: \"text\",\n id: id && name == null ? `${id}-hidden-input` : undefined,\n form: form,\n name: name,\n value: value,\n autoComplete: autoComplete,\n inputMode: inputMode,\n minLength: length,\n maxLength: length,\n pattern: hiddenInputPattern,\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-hidden\": true,\n tabIndex: -1,\n style: name ? visuallyHiddenInput : visuallyHidden\n })]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") OTPFieldRoot.displayName = \"OTPFieldRoot\";\nfunction mergeAriaIds(...values) {\n const ids = values.flatMap(value => value?.split(/\\s+/).filter(Boolean) ?? []);\n return ids.length > 0 ? Array.from(new Set(ids)).join(' ') : undefined;\n}\nfunction useOTPFieldRootDevWarnings(parameters) {\n const {\n inputCount,\n length\n } = parameters;\n React.useEffect(() => {\n if (!Number.isInteger(length) || length <= 0 || inputCount === 0 || inputCount === length) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<OTPField.Root> `length` must match the number of rendered ' + `<OTPField.Input /> parts. Received \\`length={${length}}\\` but rendered ` + `${inputCount} input${inputCount === 1 ? '' : 's'}.`;\n warn(message, ownerStackMessage);\n }, [inputCount, length]);\n React.useEffect(() => {\n if (Number.isInteger(length) && length > 0) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn(`<OTPField.Root> \\`length\\` must be a positive integer. Received \\`length={${String(length)}}\\`.`, ownerStackMessage);\n }, [length]);\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { warn } from '@base-ui/utils/warn';\nimport { stopEvent } from \"../../floating-ui-react/utils.mjs\";\nimport { useCompositeListItem } from \"../../internals/composite/list/useCompositeListItem.mjs\";\nimport { useDirection } from \"../../internals/direction-context/DirectionContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { createChangeEventDetails, createGenericEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useOTPFieldRootContext, getOTPFieldInputState } from \"../root/OTPFieldRootContext.mjs\";\nimport { inputStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { normalizeOTPValueWithDetails, removeOTPCharacter, replaceOTPValue } from \"../utils/otp.mjs\";\n\n/**\n * An individual OTP character input.\n * Renders an `<input>` element.\n *\n * Documentation: [Base UI OTP Field](https://base-ui.com/react/components/otp-field)\n */\nexport const OTPFieldInput = /*#__PURE__*/React.forwardRef(function OTPFieldInput(componentProps, forwardedRef) {\n const {\n 'aria-label': externalAriaLabel,\n 'aria-labelledby': externalAriaLabelledBy,\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n activeIndex,\n autoComplete,\n disabled,\n form,\n focusInput,\n queueFocusInput,\n getInputId,\n handleInputBlur,\n handleInputFocus,\n inputMode,\n inputAriaLabelledBy,\n invalid,\n length,\n mask,\n pattern,\n reportValueInvalid,\n readOnly,\n required,\n normalizeValue,\n setValue,\n state,\n validationType,\n value\n } = useOTPFieldRootContext();\n const {\n ref: listItemRef,\n index\n } = useCompositeListItem({\n guess: true\n });\n const inputRef = React.useRef(null);\n const direction = useDirection();\n const slotValue = value[index] ?? '';\n const inputState = getOTPFieldInputState(state, slotValue, index);\n const slotAriaLabel = externalAriaLabel;\n const inheritedLabel = externalAriaLabelledBy ?? inputAriaLabelledBy;\n const ariaLabel = index === 0 ? undefined : slotAriaLabel;\n\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (index !== 0 || slotAriaLabel == null || inputRef.current?.labels?.length) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn('<OTPField.Input> ignores `aria-label` on the first input. Use a `<label>` or `<Field.Label>` to label the OTP field.', ownerStackMessage);\n }, [index, slotAriaLabel]);\n }\n const inputProps = {\n id: getInputId(index),\n value: slotValue,\n type: mask ? 'password' : 'text',\n inputMode,\n autoComplete: index === 0 ? autoComplete : 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n enterKeyHint: index === length - 1 ? 'done' : 'next',\n // Only the first slot has a max length to avoid password manager bubbles appearing after later inputs.\n maxLength: index === 0 ? length : undefined,\n tabIndex: activeIndex === index ? 0 : -1,\n disabled,\n form,\n pattern,\n readOnly,\n required,\n 'aria-labelledby': ariaLabel == null ? inheritedLabel : undefined,\n 'aria-invalid': !disabled && invalid ? true : undefined,\n 'aria-label': ariaLabel,\n onMouseDown(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n event.preventDefault();\n focusInput(index);\n },\n onFocus(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n handleInputFocus(index, event);\n },\n onBlur(event) {\n if (event.defaultPrevented) {\n return;\n }\n handleInputBlur(event);\n },\n onChange(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n const rawValue = event.currentTarget.value;\n const [nextDigits, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputChange, event.nativeEvent));\n }\n if (nextDigits === '') {\n if (rawValue === '') {\n setValue(removeOTPCharacter(value, index), createChangeEventDetails(REASONS.inputClear, event.nativeEvent));\n } else if (slotValue !== '') {\n event.currentTarget.value = slotValue;\n event.currentTarget.select();\n }\n return;\n }\n const nextValue = replaceOTPValue(value, index, nextDigits, length, validationType, normalizeValue);\n const committedValue = setValue(nextValue, createChangeEventDetails(REASONS.inputChange, event.nativeEvent));\n if (committedValue != null) {\n const nextInput = Math.min(index + nextDigits.length, length - 1);\n queueFocusInput(nextInput, committedValue);\n }\n },\n onKeyDown(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n const firstIndex = 0;\n const lastIndex = Math.max(length - 1, firstIndex);\n const endTargetIndex = Math.min(value.length, lastIndex);\n const hasBoundaryModifier = (event.ctrlKey || event.metaKey) && !event.altKey;\n const isRtl = direction === 'rtl';\n const previousKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n if (event.key === previousKey) {\n stopEvent(event);\n focusInput(hasBoundaryModifier ? firstIndex : Math.max(firstIndex, index - 1));\n return;\n }\n if (event.key === nextKey) {\n stopEvent(event);\n focusInput(hasBoundaryModifier ? endTargetIndex : Math.min(lastIndex, index + 1));\n return;\n }\n if (event.key === 'Home' || event.key === 'ArrowUp') {\n stopEvent(event);\n focusInput(firstIndex);\n return;\n }\n if (event.key === 'End' || event.key === 'ArrowDown') {\n stopEvent(event);\n focusInput(endTargetIndex);\n return;\n }\n if (readOnly) {\n return;\n }\n function setKeyboardValue(nextValue, targetIndex) {\n const committedValue = setValue(nextValue, createChangeEventDetails(REASONS.keyboard, event.nativeEvent));\n if (committedValue != null) {\n queueFocusInput(targetIndex, committedValue);\n }\n }\n if (event.key === 'Backspace' && hasBoundaryModifier) {\n stopEvent(event);\n setKeyboardValue('', firstIndex);\n return;\n }\n if (event.key === 'Delete') {\n stopEvent(event);\n setKeyboardValue(removeOTPCharacter(value, index), index);\n return;\n }\n const inputValue = event.currentTarget.value;\n const fullSelection = event.currentTarget.selectionStart === 0 && event.currentTarget.selectionEnd === inputValue.length;\n if (event.key.length === 1 && fullSelection && slotValue === event.key) {\n stopEvent(event);\n if (index < length - 1) {\n focusInput(index + 1);\n }\n return;\n }\n if (event.key === 'Backspace') {\n stopEvent(event);\n const targetIndex = Math.max(firstIndex, index - 1);\n const deleteIndex = slotValue === '' ? targetIndex : index;\n setKeyboardValue(removeOTPCharacter(value, deleteIndex), targetIndex);\n }\n },\n onPaste(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n let rawValue = '';\n try {\n rawValue = event.clipboardData?.getData('text/plain') ?? '';\n } catch {\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn('<OTPField.Input> could not read clipboard text during paste handling.', ownerStackMessage);\n }\n return;\n }\n event.preventDefault();\n const [nextDigits, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputPaste, event.nativeEvent));\n }\n if (nextDigits === '') {\n return;\n }\n const committedValue = setValue(replaceOTPValue(value, index, nextDigits, length, validationType, normalizeValue), createChangeEventDetails(REASONS.inputPaste, event.nativeEvent));\n if (committedValue != null) {\n const nextInput = Math.min(index + nextDigits.length, length - 1);\n queueFocusInput(nextInput, committedValue);\n }\n }\n };\n const element = useRenderElement('input', componentProps, {\n ref: [forwardedRef, listItemRef, inputRef],\n state: inputState,\n props: [inputProps, elementProps],\n stateAttributesMapping: inputStateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") OTPFieldInput.displayName = \"OTPFieldInput\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { OTPField } from \"@base-ui/react/otp-field\";\n//#region src/components/otp-field/otp-field-input.tsx\nconst TROTPFieldInput = createComponentPart(OTPField.Input, \"tr-otp-field-digit\", { tracksFocusModality: true });\n//#endregion\nexport { TROTPFieldInput };\n\n//# sourceMappingURL=otp-field-input.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { OTPField } from \"@base-ui/react/otp-field\";\n//#region src/components/otp-field/otp-field-root.tsx\nfunction TROTPFieldRoot({ appearance = \"solid\", className, layout = \"compact\", uiSize = \"md\", ...props }) {\n\treturn /* @__PURE__ */ jsx(OTPField.Root, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-otp-field\", className),\n\t\t\"data-appearance\": appearance,\n\t\t\"data-layout\": layout,\n\t\t\"data-ui-size\": uiSize\n\t});\n}\n//#endregion\nexport { TROTPFieldRoot };\n\n//# sourceMappingURL=otp-field-root.js.map","import { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { TRSeparator } from \"../separator/separator.js\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/otp-field/otp-field-separator.tsx\nfunction TROTPFieldSeparator({ className, orientation = \"vertical\", ...props }) {\n\treturn /* @__PURE__ */ jsx(TRSeparator, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-otp-field-separator\", className),\n\t\torientation\n\t});\n}\n//#endregion\nexport { TROTPFieldSeparator };\n\n//# sourceMappingURL=otp-field-separator.js.map","import { TROTPFieldInput } from \"./otp-field-input.js\";\nimport { TROTPFieldRoot } from \"./otp-field-root.js\";\nimport { TROTPFieldSeparator } from \"./otp-field-separator.js\";\n//#region src/components/otp-field/index.tsx\nconst TROTPField = {\n\tRoot: TROTPFieldRoot,\n\tInput: TROTPFieldInput,\n\tSeparator: TROTPFieldSeparator\n};\n//#endregion\nexport { TROTPField, TROTPFieldInput, TROTPFieldRoot, TROTPFieldSeparator };\n\n//# sourceMappingURL=index.js.map","import { TRField } from '@tinyrack/ui/components/field';\nimport { TROTPField } from '@tinyrack/ui/components/otp-field';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport type { FieldError } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nexport type PinInputRef = {\n focus: () => void;\n clear: () => void;\n};\n\ntype PinInputProps = {\n length?: number;\n error?: FieldError;\n disabled?: boolean;\n onComplete?: (value: string) => void;\n onChange?: (value: string) => void;\n value?: string;\n autoFocus?: boolean;\n className?: string;\n};\n\nexport const PinInput = forwardRef<PinInputRef, PinInputProps>(\n function PinInput(\n {\n length = 6,\n error,\n disabled = false,\n onComplete,\n onChange,\n value: controlledValue,\n autoFocus = false,\n className = '',\n },\n ref,\n ) {\n const { t } = useTranslation();\n const otpId = useId();\n const containerRef = useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = useState(controlledValue ?? '');\n\n useEffect(() => {\n if (controlledValue !== undefined) {\n setInternalValue(controlledValue);\n }\n }, [controlledValue]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n const firstInput = containerRef.current?.querySelector('input');\n firstInput?.focus();\n },\n clear: () => {\n setInternalValue('');\n const firstInput = containerRef.current?.querySelector('input');\n firstInput?.focus();\n },\n }),\n [],\n );\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [onChange],\n );\n\n const handleValueComplete = useCallback(\n (completedValue: string) => {\n onComplete?.(completedValue);\n },\n [onComplete],\n );\n\n return (\n <TRField.Root className={`w-full ${className}`} ref={containerRef}>\n {/*\n A real label, not `aria-label`: Base UI deliberately ignores\n `aria-label` on the first OTP input and warns to use a label instead,\n because that input is also the one password managers autofill.\n Visually hidden — the screen's own heading already says what the code\n is, so showing it twice would be noise.\n */}\n <TRField.Label className=\"sr-only\" htmlFor={otpId}>\n {t('common.otp.label')}\n </TRField.Label>\n <TROTPField.Root\n disabled={disabled}\n /*\n * Base UI gives the first slot the root's own id and derives the\n * rest from it, so naming the root is what lets the label point at\n * a real input rather than at the wrapping group.\n */\n id={otpId}\n layout=\"stretch\"\n length={length}\n onValueChange={handleValueChange}\n onValueComplete={handleValueComplete}\n uiSize=\"lg\"\n validationType=\"numeric\"\n value={internalValue}\n >\n {/*\n Each box is a separate input, so each needs to say which position\n it is. Two Base UI behaviours shape this: the first box ignores\n `aria-label` outright (it is the one password managers autofill, so\n it takes the field's own label), and on the rest an `aria-label`\n *replaces* the inherited field name rather than adding to it. So\n the field name is folded into the per-box string, and box one is\n left to the label above.\n */}\n {Array.from({ length }, (_, index) => (\n <TROTPField.Input\n aria-label={\n index === 0\n ? undefined\n : t('common.otp.digit', {\n label: t('common.otp.label'),\n position: index + 1,\n total: length,\n })\n }\n autoFocus={autoFocus && index === 0}\n key={index}\n />\n ))}\n </TROTPField.Root>\n {error && (\n <TRText\n align=\"center\"\n as=\"p\"\n className=\"mt-tinyrack-sm\"\n color=\"danger\"\n data-testid=\"pin-input-error\"\n variant=\"bodySm\"\n >\n {error.message}\n </TRText>\n )}\n </TRField.Root>\n );\n },\n);\n\nexport default PinInput;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}