@tinyrack/issuary-server 0.26.0 → 0.28.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 (2035) 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 +639 -639
  30. package/dist/entities/oauth-client.entity.d.ts.map +1 -1
  31. package/dist/entities/oauth-client.entity.js +6 -6
  32. package/dist/entities/oauth-code.entity.d.ts +641 -641
  33. package/dist/entities/oauth-code.entity.d.ts.map +1 -1
  34. package/dist/entities/oauth-code.entity.js +4 -4
  35. package/dist/entities/oauth-device-code.entity.d.ts +639 -639
  36. package/dist/entities/oauth-device-code.entity.d.ts.map +1 -1
  37. package/dist/entities/oauth-device-code.entity.js +4 -4
  38. package/dist/entities/password-reset.entity.d.ts +27 -27
  39. package/dist/entities/password-reset.entity.d.ts.map +1 -1
  40. package/dist/entities/password-reset.entity.js +3 -3
  41. package/dist/entities/pending-oauth-registration.entity.d.ts +39 -39
  42. package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -1
  43. package/dist/entities/pending-oauth-registration.entity.js +2 -2
  44. package/dist/entities/revoked-token.entity.d.ts +641 -641
  45. package/dist/entities/revoked-token.entity.d.ts.map +1 -1
  46. package/dist/entities/revoked-token.entity.js +4 -4
  47. package/dist/entities/scheduler-job.entity.d.ts +48 -48
  48. package/dist/entities/scheduler-job.entity.d.ts.map +1 -1
  49. package/dist/entities/scheduler-job.entity.js +2 -2
  50. package/dist/entities/terms-content.entity.d.ts +311 -302
  51. package/dist/entities/terms-content.entity.d.ts.map +1 -1
  52. package/dist/entities/terms-content.entity.js +3 -3
  53. package/dist/entities/terms.entity.d.ts +311 -302
  54. package/dist/entities/terms.entity.d.ts.map +1 -1
  55. package/dist/entities/terms.entity.js +8 -4
  56. package/dist/entities/terms.entity.js.map +1 -1
  57. package/dist/entities/user-consent.entity.d.ts +639 -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 +311 -302
  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 +1403 -806
  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 +19 -16
  86. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  87. package/dist/entrypoints/database/postgres/compiled-functions.js +134 -77
  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 +19 -16
  93. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  94. package/dist/entrypoints/database/sqlite/compiled-functions.js +134 -77
  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 +6 -1
  116. package/dist/lib/config/branding.d.ts.map +1 -1
  117. package/dist/lib/config/branding.js +23 -1
  118. package/dist/lib/config/branding.js.map +1 -1
  119. package/dist/lib/config/cleanup.d.ts +6 -6
  120. package/dist/lib/config/cleanup.d.ts.map +1 -1
  121. package/dist/lib/config/cleanup.js +2 -2
  122. package/dist/lib/config/client.d.ts +10 -10
  123. package/dist/lib/config/client.d.ts.map +1 -1
  124. package/dist/lib/config/i18n.d.ts +7 -7
  125. package/dist/lib/config/i18n.d.ts.map +1 -1
  126. package/dist/lib/config/i18n.js +1 -1
  127. package/dist/lib/config/identity-providers.d.ts +8 -8
  128. package/dist/lib/config/identity-providers.d.ts.map +1 -1
  129. package/dist/lib/config/index.d.ts +0 -2
  130. package/dist/lib/config/index.d.ts.map +1 -1
  131. package/dist/lib/config/index.js +20 -21
  132. package/dist/lib/config/index.js.map +1 -1
  133. package/dist/lib/config/logging.d.ts +9 -9
  134. package/dist/lib/config/logging.d.ts.map +1 -1
  135. package/dist/lib/config/openapi.d.ts +4 -4
  136. package/dist/lib/config/openapi.d.ts.map +1 -1
  137. package/dist/lib/config/openapi.js +1 -1
  138. package/dist/lib/config/registration.d.ts +1 -1
  139. package/dist/lib/config/registration.d.ts.map +1 -1
  140. package/dist/lib/config/registration.js +1 -1
  141. package/dist/lib/config/resolved.d.ts +57 -55
  142. package/dist/lib/config/resolved.d.ts.map +1 -1
  143. package/dist/lib/config/resolved.js +19 -21
  144. package/dist/lib/config/resolved.js.map +1 -1
  145. package/dist/lib/config/security.d.ts +1 -1
  146. package/dist/lib/config/security.d.ts.map +1 -1
  147. package/dist/lib/config/security.js +2 -2
  148. package/dist/lib/config/server.d.ts +2 -2
  149. package/dist/lib/config/server.d.ts.map +1 -1
  150. package/dist/lib/config/server.js +2 -2
  151. package/dist/lib/config/terms.d.ts +6 -6
  152. package/dist/lib/config/terms.d.ts.map +1 -1
  153. package/dist/lib/config/terms.js +1 -1
  154. package/dist/lib/config/tokens.d.ts +3 -3
  155. package/dist/lib/config/tokens.d.ts.map +1 -1
  156. package/dist/lib/config/tokens.js +1 -1
  157. package/dist/lib/config/user.d.ts +4 -4
  158. package/dist/lib/config/user.d.ts.map +1 -1
  159. package/dist/lib/crypto.js +2 -2
  160. package/dist/lib/database/entities.js +20 -20
  161. package/dist/lib/frontend/react-router.d.ts +8 -0
  162. package/dist/lib/frontend/react-router.d.ts.map +1 -0
  163. package/dist/lib/frontend/react-router.js +92 -0
  164. package/dist/lib/frontend/react-router.js.map +1 -0
  165. package/dist/lib/frontend/runtime-context.d.ts +6 -0
  166. package/dist/lib/frontend/runtime-context.d.ts.map +1 -0
  167. package/dist/lib/frontend/runtime-context.js +3 -0
  168. package/dist/lib/frontend/runtime-context.js.map +1 -0
  169. package/dist/lib/locale.d.ts +1 -1
  170. package/dist/lib/locale.d.ts.map +1 -1
  171. package/dist/lib/logger.js +1 -1
  172. package/dist/lib/openapi.d.ts +4 -4
  173. package/dist/lib/openapi.d.ts.map +1 -1
  174. package/dist/lib/password-policy.d.ts.map +1 -1
  175. package/dist/lib/password-policy.js +1 -1
  176. package/dist/lib/password-policy.js.map +1 -1
  177. package/dist/lib/pkce.js +1 -1
  178. package/dist/lib/pkce.js.map +1 -1
  179. package/dist/lib/scopes.d.ts.map +1 -1
  180. package/dist/lib/swagger-tags.d.ts +8 -8
  181. package/dist/lib/swagger-tags.d.ts.map +1 -1
  182. package/dist/middleware/auth.d.ts +6 -6
  183. package/dist/middleware/auth.d.ts.map +1 -1
  184. package/dist/middleware/auth.js +1 -1
  185. package/dist/middleware/csrf.js +1 -1
  186. package/dist/middleware/session.js +1 -1
  187. package/dist/middleware/trusted-proxy-guard.js +2 -2
  188. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -1
  189. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -1
  190. package/dist/migrations/postgres/Migration20260619075007.d.ts.map +1 -1
  191. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -1
  192. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -1
  193. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -1
  194. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -1
  195. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -1
  196. package/dist/migrations/postgres/Migration20260825110000_add_password_reset_required.d.ts.map +1 -1
  197. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -1
  198. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts +6 -0
  199. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts.map +1 -0
  200. package/dist/migrations/postgres/Migration20260827090000_archive_terms.js +12 -0
  201. package/dist/migrations/postgres/Migration20260827090000_archive_terms.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 +6 -0
  216. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.d.ts.map +1 -0
  217. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.js +12 -0
  218. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.js.map +1 -0
  219. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  220. package/dist/migrations/sqlite/index.js +2 -0
  221. package/dist/migrations/sqlite/index.js.map +1 -1
  222. package/dist/repositories/email-verification.repository.d.ts.map +1 -1
  223. package/dist/repositories/email-verification.repository.js +1 -1
  224. package/dist/repositories/jwt-key.repository.d.ts.map +1 -1
  225. package/dist/repositories/jwt-key.repository.js +1 -1
  226. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  227. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  228. package/dist/repositories/password-reset.repository.d.ts.map +1 -1
  229. package/dist/repositories/password-reset.repository.js +1 -1
  230. package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -1
  231. package/dist/repositories/revoked-token.repository.d.ts.map +1 -1
  232. package/dist/repositories/terms.repository.d.ts.map +1 -1
  233. package/dist/repositories/terms.repository.js +1 -1
  234. package/dist/repositories/terms.repository.js.map +1 -1
  235. package/dist/repositories/user-consent.repository.d.ts.map +1 -1
  236. package/dist/repositories/user-consent.repository.js +1 -1
  237. package/dist/repositories/user-oauth.repository.d.ts.map +1 -1
  238. package/dist/repositories/user-oauth.repository.js +1 -1
  239. package/dist/repositories/user-passkey.repository.d.ts +42 -42
  240. package/dist/repositories/user-passkey.repository.d.ts.map +1 -1
  241. package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -1
  242. package/dist/repositories/user-terms-consent.repository.js +1 -1
  243. package/dist/repositories/user-totp-recovery-code.repository.d.ts +124 -124
  244. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  245. package/dist/repositories/user-totp.repository.d.ts +186 -186
  246. package/dist/repositories/user-totp.repository.d.ts.map +1 -1
  247. package/dist/repositories/user.repository.d.ts.map +1 -1
  248. package/dist/repositories/user.repository.js +1 -1
  249. package/dist/routes/.well-known/index.d.ts +2 -2
  250. package/dist/routes/.well-known/openid-configuration/get.d.ts +2 -2
  251. package/dist/routes/api/admin/console/index.d.ts +523 -0
  252. package/dist/routes/api/admin/console/index.d.ts.map +1 -0
  253. package/dist/routes/api/admin/console/index.js +212 -0
  254. package/dist/routes/api/admin/console/index.js.map +1 -0
  255. package/dist/routes/api/admin/index.d.ts +631 -47
  256. package/dist/routes/api/admin/index.d.ts.map +1 -1
  257. package/dist/routes/api/admin/index.js +5 -3
  258. package/dist/routes/api/admin/index.js.map +1 -1
  259. package/dist/routes/api/admin/me/get.d.ts +3 -3
  260. package/dist/routes/api/admin/me/get.js +4 -4
  261. package/dist/routes/api/admin/users/index.d.ts +108 -44
  262. package/dist/routes/api/admin/users/index.d.ts.map +1 -1
  263. package/dist/routes/api/admin/users/index.js +53 -6
  264. package/dist/routes/api/admin/users/index.js.map +1 -1
  265. package/dist/routes/api/auth/2fa/methods/get.d.ts +2 -2
  266. package/dist/routes/api/auth/2fa/methods/get.js +4 -4
  267. package/dist/routes/api/auth/accounts/get.d.ts +6 -6
  268. package/dist/routes/api/auth/accounts/remove.post.d.ts +6 -6
  269. package/dist/routes/api/auth/accounts/remove.post.js +2 -2
  270. package/dist/routes/api/auth/accounts/select.post.d.ts +6 -6
  271. package/dist/routes/api/auth/accounts/select.post.js +1 -1
  272. package/dist/routes/api/auth/email/resend/post.d.ts +5 -5
  273. package/dist/routes/api/auth/email/resend/post.js +4 -4
  274. package/dist/routes/api/auth/email/verify/post.d.ts +7 -7
  275. package/dist/routes/api/auth/email/verify/post.js +4 -4
  276. package/dist/routes/api/auth/index.d.ts +140 -140
  277. package/dist/routes/api/auth/index.js +15 -15
  278. package/dist/routes/api/auth/login/post.d.ts +8 -8
  279. package/dist/routes/api/auth/login/post.js +4 -4
  280. package/dist/routes/api/auth/logout/post.d.ts +1 -1
  281. package/dist/routes/api/auth/logout/post.js +2 -2
  282. package/dist/routes/api/auth/passkey/options/post.d.ts +10 -10
  283. package/dist/routes/api/auth/passkey/options/post.js +4 -4
  284. package/dist/routes/api/auth/passkey/verify/post.d.ts +18 -18
  285. package/dist/routes/api/auth/passkey/verify/post.js +5 -5
  286. package/dist/routes/api/auth/password/forgot/post.d.ts +5 -5
  287. package/dist/routes/api/auth/password/forgot/post.js +4 -4
  288. package/dist/routes/api/auth/password/reset/post.d.ts +5 -5
  289. package/dist/routes/api/auth/password/reset/post.js +4 -4
  290. package/dist/routes/api/auth/register/post.d.ts +17 -17
  291. package/dist/routes/api/auth/register/post.js +6 -6
  292. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +7 -7
  293. package/dist/routes/api/auth/totp/recovery/verify/post.js +6 -6
  294. package/dist/routes/api/auth/totp/verify/post.d.ts +7 -7
  295. package/dist/routes/api/auth/totp/verify/post.js +6 -6
  296. package/dist/routes/api/config/get.d.ts +11 -4
  297. package/dist/routes/api/config/get.d.ts.map +1 -1
  298. package/dist/routes/api/config/get.js +4 -1
  299. package/dist/routes/api/config/get.js.map +1 -1
  300. package/dist/routes/api/config/index.d.ts +11 -4
  301. package/dist/routes/api/config/index.d.ts.map +1 -1
  302. package/dist/routes/api/config/index.js +1 -1
  303. package/dist/routes/api/consent/get.d.ts +6 -6
  304. package/dist/routes/api/consent/get.d.ts.map +1 -1
  305. package/dist/routes/api/consent/get.js +7 -7
  306. package/dist/routes/api/consent/index.d.ts +13 -13
  307. package/dist/routes/api/consent/index.js +2 -2
  308. package/dist/routes/api/consent/post.d.ts +7 -7
  309. package/dist/routes/api/consent/post.js +6 -6
  310. package/dist/routes/api/docs/get.d.ts +1 -1
  311. package/dist/routes/api/docs/index.d.ts +1 -1
  312. package/dist/routes/api/docs/index.js +1 -1
  313. package/dist/routes/api/health/get.d.ts +5 -5
  314. package/dist/routes/api/health/get.d.ts.map +1 -1
  315. package/dist/routes/api/health/get.js +2 -2
  316. package/dist/routes/api/health/index.d.ts +12 -12
  317. package/dist/routes/api/health/index.js +3 -3
  318. package/dist/routes/api/health/live/get.d.ts +2 -2
  319. package/dist/routes/api/health/live/get.d.ts.map +1 -1
  320. package/dist/routes/api/health/live/get.js +2 -2
  321. package/dist/routes/api/health/ready/get.d.ts +5 -5
  322. package/dist/routes/api/health/ready/get.d.ts.map +1 -1
  323. package/dist/routes/api/health/ready/get.js +2 -2
  324. package/dist/routes/api/index.d.ts +1234 -643
  325. package/dist/routes/api/index.d.ts.map +1 -1
  326. package/dist/routes/api/index.js +9 -9
  327. package/dist/routes/api/oauth/_provider/authorize/get.d.ts +4 -4
  328. package/dist/routes/api/oauth/_provider/authorize/get.js +6 -6
  329. package/dist/routes/api/oauth/_provider/callback/get.d.ts +9 -9
  330. package/dist/routes/api/oauth/_provider/callback/get.js +5 -5
  331. package/dist/routes/api/oauth/_provider/callback/post.d.ts +9 -9
  332. package/dist/routes/api/oauth/_provider/callback/post.js +6 -6
  333. package/dist/routes/api/oauth/_provider/delete.d.ts +5 -5
  334. package/dist/routes/api/oauth/_provider/delete.js +6 -6
  335. package/dist/routes/api/oauth/authorization-context/get.d.ts +8 -8
  336. package/dist/routes/api/oauth/authorization-context/get.d.ts.map +1 -1
  337. package/dist/routes/api/oauth/authorization-context/get.js +4 -4
  338. package/dist/routes/api/oauth/index.d.ts +56 -56
  339. package/dist/routes/api/oauth/index.js +5 -5
  340. package/dist/routes/api/terms/consent/post.d.ts +6 -6
  341. package/dist/routes/api/terms/consent/post.js +5 -5
  342. package/dist/routes/api/terms/get.d.ts +13 -13
  343. package/dist/routes/api/terms/get.js +5 -5
  344. package/dist/routes/api/terms/index.d.ts +19 -19
  345. package/dist/routes/api/terms/index.js +2 -2
  346. package/dist/routes/api/user/delete.d.ts +1 -1
  347. package/dist/routes/api/user/delete.js +6 -6
  348. package/dist/routes/api/user/index.d.ts +103 -103
  349. package/dist/routes/api/user/index.js +16 -16
  350. package/dist/routes/api/user/oauth-accounts/get.d.ts +1 -1
  351. package/dist/routes/api/user/oauth-accounts/get.js +5 -5
  352. package/dist/routes/api/user/passkeys/_id/delete.d.ts +5 -5
  353. package/dist/routes/api/user/passkeys/_id/delete.js +6 -6
  354. package/dist/routes/api/user/passkeys/_id/patch.d.ts +5 -5
  355. package/dist/routes/api/user/passkeys/_id/patch.js +6 -6
  356. package/dist/routes/api/user/passkeys/get.d.ts +2 -2
  357. package/dist/routes/api/user/passkeys/get.js +5 -5
  358. package/dist/routes/api/user/passkeys/register/options/post.d.ts +15 -15
  359. package/dist/routes/api/user/passkeys/register/options/post.js +5 -5
  360. package/dist/routes/api/user/passkeys/register/verify/post.d.ts +9 -9
  361. package/dist/routes/api/user/passkeys/register/verify/post.js +5 -5
  362. package/dist/routes/api/user/password/delete.d.ts +5 -5
  363. package/dist/routes/api/user/password/delete.js +6 -6
  364. package/dist/routes/api/user/password/post.d.ts +5 -5
  365. package/dist/routes/api/user/password/post.js +6 -6
  366. package/dist/routes/api/user/password/put.d.ts +5 -5
  367. package/dist/routes/api/user/password/put.js +6 -6
  368. package/dist/routes/api/user/session/get.d.ts +4 -4
  369. package/dist/routes/api/user/session/get.js +4 -4
  370. package/dist/routes/api/user/totp/confirm/post.d.ts +5 -5
  371. package/dist/routes/api/user/totp/confirm/post.js +5 -5
  372. package/dist/routes/api/user/totp/delete.d.ts +5 -5
  373. package/dist/routes/api/user/totp/delete.js +6 -6
  374. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +5 -5
  375. package/dist/routes/api/user/totp/recovery/regenerate/post.js +6 -6
  376. package/dist/routes/api/user/totp/setup/post.d.ts +1 -1
  377. package/dist/routes/api/user/totp/setup/post.js +5 -5
  378. package/dist/routes/api/user/totp/verify/post.d.ts +5 -5
  379. package/dist/routes/api/user/totp/verify/post.js +6 -6
  380. package/dist/routes/index.d.ts +1581 -990
  381. package/dist/routes/index.d.ts.map +1 -1
  382. package/dist/routes/index.js +3 -3
  383. package/dist/routes/oauth/.well-known/jwks/get.d.ts +6 -6
  384. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +3 -3
  385. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -1
  386. package/dist/routes/oauth/authorize/get.d.ts +4 -4
  387. package/dist/routes/oauth/authorize/get.js +6 -6
  388. package/dist/routes/oauth/device/get-post.d.ts +7 -7
  389. package/dist/routes/oauth/device/get-post.js +3 -3
  390. package/dist/routes/oauth/device-authorization/post.d.ts +7 -7
  391. package/dist/routes/oauth/end-session/get.d.ts +9 -9
  392. package/dist/routes/oauth/index.d.ts +117 -117
  393. package/dist/routes/oauth/index.js +7 -7
  394. package/dist/routes/oauth/introspect/post.d.ts +14 -14
  395. package/dist/routes/oauth/introspect/post.js +4 -4
  396. package/dist/routes/oauth/revoke/post.d.ts +4 -4
  397. package/dist/routes/oauth/revoke/post.js +3 -3
  398. package/dist/routes/oauth/token/post.d.ts +10 -10
  399. package/dist/routes/oauth/token/post.js +4 -4
  400. package/dist/routes/oauth/userinfo/get.d.ts +2 -2
  401. package/dist/routes/oauth/userinfo/get.js +6 -6
  402. package/dist/schemas/error.d.ts +284 -284
  403. package/dist/schemas/error.d.ts.map +1 -1
  404. package/dist/schemas/field.d.ts +8 -8
  405. package/dist/schemas/field.d.ts.map +1 -1
  406. package/dist/schemas/field.js +2 -2
  407. package/dist/schemas/header.d.ts.map +1 -1
  408. package/dist/schemas/provider.d.ts +7 -1
  409. package/dist/schemas/provider.d.ts.map +1 -1
  410. package/dist/schemas/response.d.ts +45 -42
  411. package/dist/schemas/response.d.ts.map +1 -1
  412. package/dist/schemas/response.js +14 -5
  413. package/dist/schemas/response.js.map +1 -1
  414. package/dist/seeders/config.seeder.js +6 -6
  415. package/dist/seeders/config.seeder.js.map +1 -1
  416. package/dist/services/account-selection.service.d.ts.map +1 -1
  417. package/dist/services/admin-console.service.d.ts +407 -0
  418. package/dist/services/admin-console.service.d.ts.map +1 -0
  419. package/dist/services/admin-console.service.js +377 -0
  420. package/dist/services/admin-console.service.js.map +1 -0
  421. package/dist/services/cleanup.service.d.ts.map +1 -1
  422. package/dist/services/cleanup.service.js +14 -14
  423. package/dist/services/container.d.ts +26 -22
  424. package/dist/services/container.d.ts.map +1 -1
  425. package/dist/services/container.js +22 -19
  426. package/dist/services/container.js.map +1 -1
  427. package/dist/services/email.service.d.ts.map +1 -1
  428. package/dist/services/email.service.js +3 -3
  429. package/dist/services/jwt.service.d.ts.map +1 -1
  430. package/dist/services/jwt.service.js +3 -3
  431. package/dist/services/mikro.service.d.ts.map +1 -1
  432. package/dist/services/mikro.service.js +19 -19
  433. package/dist/services/oauth-authorize.service.d.ts.map +1 -1
  434. package/dist/services/oauth-authorize.service.js +3 -3
  435. package/dist/services/oauth-client.service.d.ts.map +1 -1
  436. package/dist/services/oauth-client.service.js +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 +3 -3
  442. package/dist/services/passkey.service.d.ts.map +1 -1
  443. package/dist/services/passkey.service.js +2 -2
  444. package/dist/services/password-auth.service.d.ts.map +1 -1
  445. package/dist/services/password-auth.service.js +2 -2
  446. package/dist/services/password-reset.service.d.ts.map +1 -1
  447. package/dist/services/password-reset.service.js +1 -1
  448. package/dist/services/scheduler.service.d.ts.map +1 -1
  449. package/dist/services/scheduler.service.js.map +1 -1
  450. package/dist/services/security.service.d.ts.map +1 -1
  451. package/dist/services/security.service.js +2 -2
  452. package/dist/services/terms.service.d.ts.map +1 -1
  453. package/dist/services/totp.service.d.ts.map +1 -1
  454. package/dist/services/totp.service.js +2 -2
  455. package/dist/services/user-consent.service.d.ts.map +1 -1
  456. package/dist/services/user.service.d.ts +21 -0
  457. package/dist/services/user.service.d.ts.map +1 -1
  458. package/dist/services/user.service.js +66 -2
  459. package/dist/services/user.service.js.map +1 -1
  460. package/frontend/client/assets/CompositeItem-VmYWaHnv.js +1 -0
  461. package/frontend/client/assets/FieldControl-D6zWw018.js +1 -0
  462. package/frontend/client/assets/FieldItemContext-CPjig163.js +1 -0
  463. package/frontend/client/assets/HydrationBoundary-CGOTaz3j.js +1 -0
  464. package/frontend/client/assets/NullStore-BxU9yW8l.js +1 -0
  465. package/frontend/client/assets/Separator-eMrsmRws.js +1 -0
  466. package/frontend/client/assets/admin-console-DL8Kf5fu.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-BFD6Jwkd.js +1 -0
  474. package/frontend/client/assets/auth-outcome-B7tCCKZC.js +1 -0
  475. package/frontend/client/assets/auth-page-header-DWIuRJtG.js +1 -0
  476. package/frontend/client/assets/authorization-context-banner-WE0b3j97.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-wAvPXBC2.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-BZipfWXO.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-6d4cda98.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-DoR9gw8n.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-C4eJsjRN.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-DxmAI0wD.css +2 -0
  518. package/frontend/client/assets/root-sdYEeZVs.js +1 -0
  519. package/frontend/client/assets/route--ygtU3xf.js +1 -0
  520. package/frontend/client/assets/route-B1MD0P12.js +1 -0
  521. package/frontend/client/assets/route-B4n6iLak.js +1 -0
  522. package/frontend/client/assets/route-BA8SLA-y.js +1 -0
  523. package/frontend/client/assets/route-BI7lRSrf.js +1 -0
  524. package/frontend/client/assets/route-BLq7NTd1.js +1 -0
  525. package/frontend/client/assets/route-BPss6aNC.js +1 -0
  526. package/frontend/client/assets/route-BUTlt8Ui.js +1 -0
  527. package/frontend/client/assets/route-BbumhNTg.js +1 -0
  528. package/frontend/client/assets/route-BukKUAfo.js +1 -0
  529. package/frontend/client/assets/route-CCs0-fO0.js +1 -0
  530. package/frontend/client/assets/route-CEunl4H1.js +1 -0
  531. package/frontend/client/assets/route-CZFY6zgn.js +4 -0
  532. package/frontend/client/assets/route-CgqKzu4o.js +1 -0
  533. package/frontend/client/assets/route-Cmo_MXuL.js +1 -0
  534. package/frontend/client/assets/route-D-ycfUyo.js +1 -0
  535. package/frontend/client/assets/route-D98zlsIA.js +1 -0
  536. package/frontend/client/assets/route-D9cK2_2t.js +1 -0
  537. package/frontend/client/assets/route-DCxEMgcG.js +1 -0
  538. package/frontend/client/assets/route-DHyl9fg6.js +1 -0
  539. package/frontend/client/assets/route-DQlEYlRT.js +1 -0
  540. package/frontend/client/assets/route-DUp2lTDn.js +1 -0
  541. package/frontend/client/assets/route-DitctEyz.js +1 -0
  542. package/frontend/client/assets/route-DtL-KJ0k.js +1 -0
  543. package/frontend/client/assets/route-O04gqlmz.js +1 -0
  544. package/frontend/client/assets/route-OeZDuFSb.js +1 -0
  545. package/frontend/client/assets/route-WG7qPhB_.js +1 -0
  546. package/frontend/client/assets/route-error-fallback-C2OHu3JW.js +1 -0
  547. package/frontend/client/assets/route-module-Bm4sHkx9.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-CtUdWFmD.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-BEja7rHN.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-BwOsP75D.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/client/issuary-app-icon-512.png +0 -0
  572. package/frontend/client/issuary-app-icon.svg +8 -0
  573. package/frontend/server/assets/hydration-CzMpuxhN.js +109 -0
  574. package/frontend/server/assets/root-loader.server-BjcO3GtR.js +15 -0
  575. package/frontend/server/assets/route-runtime.server-DnkciJ0v.js +51 -0
  576. package/frontend/server/assets/session-CEJThdQg.js +8255 -0
  577. package/frontend/server/index.js +73303 -0
  578. package/package.json +33 -43
  579. package/dist/entrypoints/frontend/index.d.ts +0 -4
  580. package/dist/entrypoints/frontend/index.d.ts.map +0 -1
  581. package/dist/entrypoints/frontend/index.js +0 -2
  582. package/dist/entrypoints/frontend/index.js.map +0 -1
  583. package/dist/entrypoints/frontend/proxy.d.ts +0 -2
  584. package/dist/entrypoints/frontend/proxy.d.ts.map +0 -1
  585. package/dist/entrypoints/frontend/proxy.js +0 -2
  586. package/dist/entrypoints/frontend/proxy.js.map +0 -1
  587. package/dist/entrypoints/frontend/static.d.ts +0 -2
  588. package/dist/entrypoints/frontend/static.d.ts.map +0 -1
  589. package/dist/entrypoints/frontend/static.js +0 -2
  590. package/dist/entrypoints/frontend/static.js.map +0 -1
  591. package/dist/lib/config/frontend.d.ts +0 -12
  592. package/dist/lib/config/frontend.d.ts.map +0 -1
  593. package/dist/lib/config/frontend.js +0 -7
  594. package/dist/lib/config/frontend.js.map +0 -1
  595. package/dist/lib/frontend/proxy.d.ts +0 -24
  596. package/dist/lib/frontend/proxy.d.ts.map +0 -1
  597. package/dist/lib/frontend/proxy.js +0 -38
  598. package/dist/lib/frontend/proxy.js.map +0 -1
  599. package/dist/lib/frontend/static.d.ts +0 -21
  600. package/dist/lib/frontend/static.d.ts.map +0 -1
  601. package/dist/lib/frontend/static.js +0 -108
  602. package/dist/lib/frontend/static.js.map +0 -1
  603. package/dist/lib/interpolate-html.d.ts +0 -34
  604. package/dist/lib/interpolate-html.d.ts.map +0 -1
  605. package/dist/lib/interpolate-html.js +0 -61
  606. package/dist/lib/interpolate-html.js.map +0 -1
  607. package/public/assets/2fa-C9wUlSBS.js +0 -2
  608. package/public/assets/2fa-C9wUlSBS.js.map +0 -1
  609. package/public/assets/2fa-DFTcWEMb.js +0 -2
  610. package/public/assets/2fa-DFTcWEMb.js.map +0 -1
  611. package/public/assets/2fa-TtshNxXv.js +0 -2
  612. package/public/assets/2fa-TtshNxXv.js.map +0 -1
  613. package/public/assets/2fa-huNZDYU9.js +0 -2
  614. package/public/assets/2fa-huNZDYU9.js.map +0 -1
  615. package/public/assets/DialogHandle-DICBMcjK.js +0 -2
  616. package/public/assets/DialogHandle-DICBMcjK.js.map +0 -1
  617. package/public/assets/FieldItemContext-BeNfhOsU.js +0 -2
  618. package/public/assets/FieldItemContext-BeNfhOsU.js.map +0 -1
  619. package/public/assets/admin-CFZaO1bM.js +0 -2
  620. package/public/assets/admin-CFZaO1bM.js.map +0 -1
  621. package/public/assets/admin-users-BK_BN8jm.js +0 -2
  622. package/public/assets/admin-users-BK_BN8jm.js.map +0 -1
  623. package/public/assets/alert-leqyvHOp.js +0 -2
  624. package/public/assets/alert-leqyvHOp.js.map +0 -1
  625. package/public/assets/auth-choice-row-CXuyJgkR.js +0 -2
  626. package/public/assets/auth-choice-row-CXuyJgkR.js.map +0 -1
  627. package/public/assets/auth-field-CWyXGKoC.js +0 -2
  628. package/public/assets/auth-field-CWyXGKoC.js.map +0 -1
  629. package/public/assets/auth-footer-Cz5ivsDc.js +0 -2
  630. package/public/assets/auth-footer-Cz5ivsDc.js.map +0 -1
  631. package/public/assets/auth-layout-CiNn2-Nb.js +0 -2
  632. package/public/assets/auth-layout-CiNn2-Nb.js.map +0 -1
  633. package/public/assets/auth-page-header-DgGAaIiP.js +0 -2
  634. package/public/assets/auth-page-header-DgGAaIiP.js.map +0 -1
  635. package/public/assets/authorization-context-banner-DznMDPOX.js +0 -2
  636. package/public/assets/authorization-context-banner-DznMDPOX.js.map +0 -1
  637. package/public/assets/avatar-D-FRGa1m.js +0 -2
  638. package/public/assets/avatar-D-FRGa1m.js.map +0 -1
  639. package/public/assets/badge-CsOfUji0.js +0 -2
  640. package/public/assets/badge-CsOfUji0.js.map +0 -1
  641. package/public/assets/checkbox-C90dDDza.js +0 -2
  642. package/public/assets/checkbox-C90dDDza.js.map +0 -1
  643. package/public/assets/chevron-right-CN0jUyV0.js +0 -2
  644. package/public/assets/chevron-right-CN0jUyV0.js.map +0 -1
  645. package/public/assets/circle-check-6QTLhwM_.js +0 -2
  646. package/public/assets/circle-check-6QTLhwM_.js.map +0 -1
  647. package/public/assets/config-DTQCUlfZ.js +0 -2
  648. package/public/assets/config-DTQCUlfZ.js.map +0 -1
  649. package/public/assets/consent-B9sQEyO8.js +0 -2
  650. package/public/assets/consent-B9sQEyO8.js.map +0 -1
  651. package/public/assets/consent-RtCi_85E.js +0 -2
  652. package/public/assets/consent-RtCi_85E.js.map +0 -1
  653. package/public/assets/createLucideIcon-BPpAIXR_.js +0 -2
  654. package/public/assets/createLucideIcon-BPpAIXR_.js.map +0 -1
  655. package/public/assets/email-8RKQzeig.js +0 -2
  656. package/public/assets/email-8RKQzeig.js.map +0 -1
  657. package/public/assets/email-huNZDYU9.js +0 -2
  658. package/public/assets/email-huNZDYU9.js.map +0 -1
  659. package/public/assets/error-BYe3gUMO.js +0 -2
  660. package/public/assets/error-BYe3gUMO.js.map +0 -1
  661. package/public/assets/field-BMT214_m.js +0 -3
  662. package/public/assets/field-BMT214_m.js.map +0 -1
  663. package/public/assets/fingerprint-pattern-DP62Vk8x.js +0 -2
  664. package/public/assets/fingerprint-pattern-DP62Vk8x.js.map +0 -1
  665. package/public/assets/forgot-BenoOUxC.js +0 -2
  666. package/public/assets/forgot-BenoOUxC.js.map +0 -1
  667. package/public/assets/forgot-huNZDYU9.js +0 -2
  668. package/public/assets/forgot-huNZDYU9.js.map +0 -1
  669. package/public/assets/index-CKpnrw9M.js +0 -11
  670. package/public/assets/index-CKpnrw9M.js.map +0 -1
  671. package/public/assets/index-Ct9o0oCZ.css +0 -2
  672. package/public/assets/initial-avatar-E5DK9Igm.js +0 -2
  673. package/public/assets/initial-avatar-E5DK9Igm.js.map +0 -1
  674. package/public/assets/input-CxVeC8Pn.js +0 -2
  675. package/public/assets/input-CxVeC8Pn.js.map +0 -1
  676. package/public/assets/key-round-CdvHb8vT.js +0 -2
  677. package/public/assets/key-round-CdvHb8vT.js.map +0 -1
  678. package/public/assets/labeled-separator-CV7nb0XW.js +0 -2
  679. package/public/assets/labeled-separator-CV7nb0XW.js.map +0 -1
  680. package/public/assets/link-C-WdTj3F.js +0 -2
  681. package/public/assets/link-C-WdTj3F.js.map +0 -1
  682. package/public/assets/lock-7NRyvXBS.js +0 -2
  683. package/public/assets/lock-7NRyvXBS.js.map +0 -1
  684. package/public/assets/login-1YuiZD30.js +0 -2
  685. package/public/assets/login-1YuiZD30.js.map +0 -1
  686. package/public/assets/login-huNZDYU9.js +0 -2
  687. package/public/assets/login-huNZDYU9.js.map +0 -1
  688. package/public/assets/logout-B5T52P8u.js +0 -2
  689. package/public/assets/logout-B5T52P8u.js.map +0 -1
  690. package/public/assets/mail-D0B_1Dzd.js +0 -2
  691. package/public/assets/mail-D0B_1Dzd.js.map +0 -1
  692. package/public/assets/modal-tByFpy18.js +0 -2
  693. package/public/assets/modal-tByFpy18.js.map +0 -1
  694. package/public/assets/mutationOptions-DyYFUbyn.js +0 -2
  695. package/public/assets/mutationOptions-DyYFUbyn.js.map +0 -1
  696. package/public/assets/passkey-CgAHaQ1p.js +0 -2
  697. package/public/assets/passkey-CgAHaQ1p.js.map +0 -1
  698. package/public/assets/passkey-J1qnYp9A.js +0 -2
  699. package/public/assets/passkey-J1qnYp9A.js.map +0 -1
  700. package/public/assets/passkey-error-ZqqPQUta.js +0 -2
  701. package/public/assets/passkey-error-ZqqPQUta.js.map +0 -1
  702. package/public/assets/passkey-huNZDYU9.js +0 -2
  703. package/public/assets/passkey-huNZDYU9.js.map +0 -1
  704. package/public/assets/passkey-v9Pzv-4A.js +0 -2
  705. package/public/assets/passkey-v9Pzv-4A.js.map +0 -1
  706. package/public/assets/password-Cuh9Hnjp.js +0 -2
  707. package/public/assets/password-Cuh9Hnjp.js.map +0 -1
  708. package/public/assets/password-huNZDYU9.js +0 -2
  709. package/public/assets/password-huNZDYU9.js.map +0 -1
  710. package/public/assets/password-reset-sU5KkBKi.js +0 -2
  711. package/public/assets/password-reset-sU5KkBKi.js.map +0 -1
  712. package/public/assets/password-strength-BIPcWiM_.js +0 -2
  713. package/public/assets/password-strength-BIPcWiM_.js.map +0 -1
  714. package/public/assets/pin-input-CITrr-Yc.js +0 -2
  715. package/public/assets/pin-input-CITrr-Yc.js.map +0 -1
  716. package/public/assets/plus-DSBBSrgj.js +0 -2
  717. package/public/assets/plus-DSBBSrgj.js.map +0 -1
  718. package/public/assets/profile-BHPL9Px_.js +0 -2
  719. package/public/assets/profile-BHPL9Px_.js.map +0 -1
  720. package/public/assets/profile-C8KaELVe.js +0 -2
  721. package/public/assets/profile-C8KaELVe.js.map +0 -1
  722. package/public/assets/promise-OpBtq8tG.js +0 -2
  723. package/public/assets/promise-OpBtq8tG.js.map +0 -1
  724. package/public/assets/provider-logos-u1YURWQr.js +0 -2
  725. package/public/assets/provider-logos-u1YURWQr.js.map +0 -1
  726. package/public/assets/recovery-CVROV9nj.js +0 -2
  727. package/public/assets/recovery-CVROV9nj.js.map +0 -1
  728. package/public/assets/register-cpxjX3qr.js +0 -2
  729. package/public/assets/register-cpxjX3qr.js.map +0 -1
  730. package/public/assets/register-huNZDYU9.js +0 -2
  731. package/public/assets/register-huNZDYU9.js.map +0 -1
  732. package/public/assets/reset-huNZDYU9.js +0 -2
  733. package/public/assets/reset-huNZDYU9.js.map +0 -1
  734. package/public/assets/reset-iNqYdsoa.js +0 -2
  735. package/public/assets/reset-iNqYdsoa.js.map +0 -1
  736. package/public/assets/routes-CAIeH5mq.js +0 -2
  737. package/public/assets/routes-CAIeH5mq.js.map +0 -1
  738. package/public/assets/select-DdjQtcLJ.js +0 -2
  739. package/public/assets/select-DdjQtcLJ.js.map +0 -1
  740. package/public/assets/select-huNZDYU9.js +0 -2
  741. package/public/assets/select-huNZDYU9.js.map +0 -1
  742. package/public/assets/separator-B0Bvh1he.js +0 -2
  743. package/public/assets/separator-B0Bvh1he.js.map +0 -1
  744. package/public/assets/shell-header-bar-JcFhS7mb.js +0 -2
  745. package/public/assets/shell-header-bar-JcFhS7mb.js.map +0 -1
  746. package/public/assets/shield-check-D_p8H0ni.js +0 -2
  747. package/public/assets/shield-check-D_p8H0ni.js.map +0 -1
  748. package/public/assets/standard-schema-e8gtSzGE.js +0 -2
  749. package/public/assets/standard-schema-e8gtSzGE.js.map +0 -1
  750. package/public/assets/terms-BHPL9Px_.js +0 -2
  751. package/public/assets/terms-BHPL9Px_.js.map +0 -1
  752. package/public/assets/terms-BjwMWDFp.js +0 -2
  753. package/public/assets/terms-BjwMWDFp.js.map +0 -1
  754. package/public/assets/terms-checkbox-list-DNOq4Pb2.js +0 -2
  755. package/public/assets/terms-checkbox-list-DNOq4Pb2.js.map +0 -1
  756. package/public/assets/totp-BNZ904Zm.js +0 -2
  757. package/public/assets/totp-BNZ904Zm.js.map +0 -1
  758. package/public/assets/totp-D_EWG1h8.js +0 -2
  759. package/public/assets/totp-D_EWG1h8.js.map +0 -1
  760. package/public/assets/totp-DetFwOkk.js +0 -2
  761. package/public/assets/totp-DetFwOkk.js.map +0 -1
  762. package/public/assets/trash-2-DZdKBLvC.js +0 -2
  763. package/public/assets/trash-2-DZdKBLvC.js.map +0 -1
  764. package/public/assets/triangle-alert-CqNn0kPs.js +0 -2
  765. package/public/assets/triangle-alert-CqNn0kPs.js.map +0 -1
  766. package/public/assets/use-totp-setup-DtlgPUPJ.js +0 -3
  767. package/public/assets/use-totp-setup-DtlgPUPJ.js.map +0 -1
  768. package/public/assets/useAriaLabelledBy-IIwdHUss.js +0 -2
  769. package/public/assets/useAriaLabelledBy-IIwdHUss.js.map +0 -1
  770. package/public/assets/useMutation-BWZ0G4Td.js +0 -2
  771. package/public/assets/useMutation-BWZ0G4Td.js.map +0 -1
  772. package/public/assets/useQuery-Ccv_nzQl.js +0 -2
  773. package/public/assets/useQuery-Ccv_nzQl.js.map +0 -1
  774. package/public/assets/users-B1gvPM_x.js +0 -2
  775. package/public/assets/users-B1gvPM_x.js.map +0 -1
  776. package/public/assets/valueToPercent-LgbY_prH.js +0 -2
  777. package/public/assets/valueToPercent-LgbY_prH.js.map +0 -1
  778. package/public/assets/zod-C87S6Tec.js +0 -66
  779. package/public/assets/zod-C87S6Tec.js.map +0 -1
  780. package/public/index.html +0 -31
  781. package/public/vite.svg +0 -1
  782. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  783. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  784. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  785. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  786. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  787. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  788. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  789. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  790. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  791. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  792. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
  793. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
  794. /package/{public → frontend/client}/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
  795. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-BLMYXIZq.woff2 +0 -0
  796. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-DJrewyrW.woff +0 -0
  797. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-B5S02aip.woff2 +0 -0
  798. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-DP69BzJV.woff +0 -0
  799. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-9JfFFKCo.woff +0 -0
  800. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-Blnt0RhT.woff2 +0 -0
  801. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-4_aXP0Hy.woff2 +0 -0
  802. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-DsMZ2scz.woff +0 -0
  803. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-Bolb9iqL.woff2 +0 -0
  804. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-nIl-leH5.woff +0 -0
  805. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-Bkd0xED8.woff +0 -0
  806. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-CvaNbDMd.woff2 +0 -0
  807. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-DoWmZlZj.woff +0 -0
  808. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-y2nxydha.woff2 +0 -0
  809. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BKchJvlk.woff2 +0 -0
  810. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BrpHYkNm.woff +0 -0
  811. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-CVueR0Vp.woff2 +0 -0
  812. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-DJ1MIwHY.woff +0 -0
  813. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-BQfFShQ1.woff2 +0 -0
  814. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-Ca0txE7W.woff +0 -0
  815. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-B1Puw4D2.woff2 +0 -0
  816. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-CUZjz5v8.woff +0 -0
  817. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-BkK1TRsE.woff2 +0 -0
  818. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-ZVcO00Fl.woff +0 -0
  819. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DHwmA74W.woff +0 -0
  820. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DNs9Omj-.woff2 +0 -0
  821. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-BW8Frffd.woff +0 -0
  822. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-tN_-CKym.woff2 +0 -0
  823. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-CXAkQppa.woff2 +0 -0
  824. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-DNgJaILb.woff +0 -0
  825. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-BmhZQdzl.woff +0 -0
  826. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-CuKiid_t.woff2 +0 -0
  827. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-2KjU-YTd.woff2 +0 -0
  828. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-Duw986jf.woff +0 -0
  829. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-CYzW5SnO.woff2 +0 -0
  830. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-Vn6i4czv.woff +0 -0
  831. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-BBf-_m9N.woff +0 -0
  832. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-CHWaGU9J.woff2 +0 -0
  833. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-CmUdXGK4.woff +0 -0
  834. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-Eel3dN7e.woff2 +0 -0
  835. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-Cv9j40LU.woff2 +0 -0
  836. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-DWwtLgxy.woff +0 -0
  837. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-CGlLvzZs.woff2 +0 -0
  838. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-foxE5hHG.woff +0 -0
  839. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-B1bzLzbH.woff2 +0 -0
  840. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-tHp1RYGF.woff +0 -0
  841. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-BtC5W1lQ.woff2 +0 -0
  842. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-DuUOTgvs.woff +0 -0
  843. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-2yW6cSNP.woff2 +0 -0
  844. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-Dh4QR9Sa.woff +0 -0
  845. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-3L-o-gNc.woff +0 -0
  846. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-JAonwJOj.woff2 +0 -0
  847. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-BPH5rI6C.woff +0 -0
  848. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-Cr7-iFW7.woff2 +0 -0
  849. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-BKXuaz7L.woff2 +0 -0
  850. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-CMeK7Yoj.woff +0 -0
  851. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-9ormcCnp.woff +0 -0
  852. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-CIZc2z7F.woff2 +0 -0
  853. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-BQqq_N37.woff +0 -0
  854. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-DKrl9gDv.woff2 +0 -0
  855. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-BYkYsUMr.woff +0 -0
  856. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-DLZ5N3wZ.woff2 +0 -0
  857. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-DgvmKVfh.woff +0 -0
  858. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-J_8d2uPX.woff2 +0 -0
  859. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-BKzoJI_l.woff +0 -0
  860. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-CgGmrF-h.woff2 +0 -0
  861. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-C0WskPfy.woff2 +0 -0
  862. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-D4F8GONb.woff +0 -0
  863. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-HVxl9urI.woff2 +0 -0
  864. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-U3d7dgox.woff +0 -0
  865. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-B_TMqNrG.woff +0 -0
  866. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-DUhgBhd7.woff2 +0 -0
  867. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-BiGMHdAV.woff2 +0 -0
  868. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-CWciHSky.woff +0 -0
  869. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-BXI508QN.woff2 +0 -0
  870. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-C3nYbUvy.woff +0 -0
  871. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-A9EL87rF.woff2 +0 -0
  872. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-DjakDWxK.woff +0 -0
  873. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-36IKJEvJ.woff +0 -0
  874. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-DwkaZ2wL.woff2 +0 -0
  875. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-B0FD3VdV.woff +0 -0
  876. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-DjZCOVOv.woff2 +0 -0
  877. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-B2j03kCB.woff2 +0 -0
  878. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-Dv5sal4h.woff +0 -0
  879. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DD55zx92.woff +0 -0
  880. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DpWOC24h.woff2 +0 -0
  881. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-BkM4GSUi.woff2 +0 -0
  882. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-C2q6NvAJ.woff +0 -0
  883. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Ci_Zf1oH.woff +0 -0
  884. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Fyn9YqrR.woff2 +0 -0
  885. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-C-SwPUxy.woff2 +0 -0
  886. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-ngLrg9Ph.woff +0 -0
  887. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-FVXa1K7W.woff2 +0 -0
  888. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-pSsmDa5a.woff +0 -0
  889. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-CmNR_-6d.woff2 +0 -0
  890. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-kzCap4I7.woff +0 -0
  891. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-D64L80iO.woff2 +0 -0
  892. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-DkNQ39Bm.woff +0 -0
  893. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-CfAYQkvR.woff +0 -0
  894. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-DradD0b_.woff2 +0 -0
  895. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-CXZm0WJV.woff +0 -0
  896. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-DSXuAVj8.woff2 +0 -0
  897. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-BA3oFlL7.woff +0 -0
  898. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-DGp_yQCO.woff2 +0 -0
  899. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-5l6N5_Bf.woff +0 -0
  900. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-Bf5qTwLg.woff2 +0 -0
  901. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-CCrS9Tpv.woff +0 -0
  902. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-DhiQdU1x.woff2 +0 -0
  903. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-BidJdmrW.woff +0 -0
  904. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-DcXtXIIt.woff2 +0 -0
  905. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-Bwb7m1tn.woff2 +0 -0
  906. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-DShPLUNp.woff +0 -0
  907. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C1DXoU6t.woff2 +0 -0
  908. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C2BwbuD6.woff +0 -0
  909. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-Bq_d-uLr.woff +0 -0
  910. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-hyG31T85.woff2 +0 -0
  911. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-CEeS0kan.woff +0 -0
  912. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-DJWr9iDJ.woff2 +0 -0
  913. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-C1ei5J70.woff2 +0 -0
  914. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-zPjtn9S1.woff +0 -0
  915. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-DFkHFeXA.woff2 +0 -0
  916. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-TSsLEGdp.woff +0 -0
  917. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-Cvx3jb5D.woff +0 -0
  918. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-o_AOMkHJ.woff2 +0 -0
  919. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-BRNin0K2.woff2 +0 -0
  920. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-DGkqcNAf.woff +0 -0
  921. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-BUYaH2_l.woff2 +0 -0
  922. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-aBgyJQOx.woff +0 -0
  923. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-55p1b1wa.woff +0 -0
  924. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-BTu0jZJ-.woff2 +0 -0
  925. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-3JOc_eI7.woff +0 -0
  926. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-BjmfPyZf.woff2 +0 -0
  927. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-BmG4MYox.woff +0 -0
  928. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-quRUVnCJ.woff2 +0 -0
  929. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-B-m8VoGm.woff2 +0 -0
  930. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-CxDfRaaH.woff +0 -0
  931. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-C3oRnDW6.woff2 +0 -0
  932. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-Dv1Y6qdB.woff +0 -0
  933. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-DBDHqw4h.woff2 +0 -0
  934. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-QmPj_vZd.woff +0 -0
  935. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CedQxG0H.woff +0 -0
  936. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CgJUuraA.woff2 +0 -0
  937. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DNIRDidW.woff2 +0 -0
  938. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DolJGsV8.woff +0 -0
  939. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-CP-jldkl.woff +0 -0
  940. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-DPGCrf4O.woff2 +0 -0
  941. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-36G4flWw.woff +0 -0
  942. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-aLRf_2tU.woff2 +0 -0
  943. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-CzLCWhzW.woff2 +0 -0
  944. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-IrHxc9AN.woff +0 -0
  945. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-D_ILNbWZ.woff2 +0 -0
  946. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-DhL4usAp.woff +0 -0
  947. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-CCiDkvZ0.woff +0 -0
  948. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-Cm8uzUfS.woff2 +0 -0
  949. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-CH_tD5KV.woff2 +0 -0
  950. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-qiD6EjpF.woff +0 -0
  951. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-CPpcNs7A.woff +0 -0
  952. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-DJJG1Tuz.woff2 +0 -0
  953. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DN27F9tO.woff +0 -0
  954. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DZNod9fx.woff2 +0 -0
  955. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-5x97iT4C.woff2 +0 -0
  956. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-Cjf1zCyl.woff +0 -0
  957. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Cz201O_t.woff2 +0 -0
  958. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Xd0EQnSI.woff +0 -0
  959. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-Dlo-tSr-.woff +0 -0
  960. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-GFEV0OtD.woff2 +0 -0
  961. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-CxMAaJ8J.woff +0 -0
  962. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-pN8BDQje.woff2 +0 -0
  963. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-BiRcNUnW.woff2 +0 -0
  964. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-DcRwXlcA.woff +0 -0
  965. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-DjoWpWpr.woff2 +0 -0
  966. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-ZWO03fli.woff +0 -0
  967. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-BRP-puz3.woff2 +0 -0
  968. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-C9acO00v.woff +0 -0
  969. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-BGI-mgYq.woff2 +0 -0
  970. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-CAilAALt.woff +0 -0
  971. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-DjYSyktj.woff2 +0 -0
  972. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-ce3oirTN.woff +0 -0
  973. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-D-Zw0iJQ.woff2 +0 -0
  974. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-DDYMc675.woff +0 -0
  975. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-2E5UN6VC.woff +0 -0
  976. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-BQfFM2B0.woff2 +0 -0
  977. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-CYRAtz-I.woff2 +0 -0
  978. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-DwptQupD.woff +0 -0
  979. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-80GIv_X2.woff +0 -0
  980. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-Ca_HRr3E.woff2 +0 -0
  981. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-BFnRtDEF.woff +0 -0
  982. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-Zr4ScQUF.woff2 +0 -0
  983. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-BA-omFPG.woff2 +0 -0
  984. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-CVckMbS4.woff +0 -0
  985. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-BPImLHVa.woff +0 -0
  986. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-CytBm2Nt.woff2 +0 -0
  987. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-IznGQDkP.woff2 +0 -0
  988. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-qTFopCxn.woff +0 -0
  989. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-BWt9cZAr.woff2 +0 -0
  990. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-DuqSwCFh.woff +0 -0
  991. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal--3UpG_YA.woff2 +0 -0
  992. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal-DnloFB68.woff +0 -0
  993. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-Bdkhc9Iw.woff2 +0 -0
  994. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-BtixcB0-.woff +0 -0
  995. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-Dq8e8WbN.woff +0 -0
  996. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-O2srJ8a2.woff2 +0 -0
  997. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-C-Wvz07b.woff2 +0 -0
  998. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-QWySKNit.woff +0 -0
  999. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-B3OOo0lL.woff +0 -0
  1000. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-McxyvMnV.woff2 +0 -0
  1001. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-A46asPGd.woff +0 -0
  1002. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-CTyo1FsZ.woff2 +0 -0
  1003. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-Ira2Rc5z.woff2 +0 -0
  1004. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-dhK6LPCU.woff +0 -0
  1005. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-BFxbWz5n.woff +0 -0
  1006. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-DFuJhyl7.woff2 +0 -0
  1007. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-B2RU3Dvp.woff +0 -0
  1008. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-DJ9_bhYp.woff2 +0 -0
  1009. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-6YS9BiKL.woff +0 -0
  1010. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-CpbQwqpL.woff2 +0 -0
  1011. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-DNzE_dbG.woff2 +0 -0
  1012. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-D_cpF5EA.woff +0 -0
  1013. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-ByYIbTSk.woff +0 -0
  1014. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-Dblu0l-8.woff2 +0 -0
  1015. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-B-a8fp43.woff2 +0 -0
  1016. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-oM62RKsO.woff +0 -0
  1017. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-CG_CPqz1.woff +0 -0
  1018. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-c2jdwsOE.woff2 +0 -0
  1019. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-3axrvVxa.woff +0 -0
  1020. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-CffTHcnn.woff2 +0 -0
  1021. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-CFbifBY3.woff +0 -0
  1022. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-MrPgyLwW.woff2 +0 -0
  1023. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-C5RxoJ3V.woff +0 -0
  1024. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-DXIBRRx0.woff2 +0 -0
  1025. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-BHA5xHG-.woff2 +0 -0
  1026. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-t8w8Pigz.woff +0 -0
  1027. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-CfJC1veY.woff2 +0 -0
  1028. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-DuTXC6M7.woff +0 -0
  1029. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-4EOJmPpr.woff +0 -0
  1030. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-DPDbHGRJ.woff2 +0 -0
  1031. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-Ca71NnU-.woff +0 -0
  1032. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-jeFY9Hf_.woff2 +0 -0
  1033. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-C11KYH68.woff2 +0 -0
  1034. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-CzNKW3WB.woff +0 -0
  1035. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-BpFIRrIG.woff +0 -0
  1036. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-CSnRHPqi.woff2 +0 -0
  1037. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-C7pAJQf3.woff +0 -0
  1038. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-SFbjSSXG.woff2 +0 -0
  1039. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-57H5kXpk.woff +0 -0
  1040. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-BrLJmDFd.woff2 +0 -0
  1041. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CE7Y9E5I.woff2 +0 -0
  1042. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CkxUuY_J.woff +0 -0
  1043. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-B2Z1u9V0.woff +0 -0
  1044. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-BNiX9WYe.woff2 +0 -0
  1045. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BEFP-jPj.woff2 +0 -0
  1046. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BarKnue-.woff +0 -0
  1047. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-CaOERqUu.woff2 +0 -0
  1048. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-DQ8k7O-z.woff +0 -0
  1049. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-ChsH3Xz1.woff +0 -0
  1050. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-DfrgvMVe.woff2 +0 -0
  1051. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-9QmoGV7n.woff2 +0 -0
  1052. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-uPx24aJ3.woff +0 -0
  1053. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-DCgv6PbD.woff +0 -0
  1054. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-oBOpBx6K.woff2 +0 -0
  1055. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-BVvFPwh-.woff +0 -0
  1056. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-C6iWVt4P.woff2 +0 -0
  1057. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-BrzljjIv.woff +0 -0
  1058. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-Ck00YIbi.woff2 +0 -0
  1059. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-7syfOPuJ.woff +0 -0
  1060. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-CRgD0sTN.woff2 +0 -0
  1061. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-6C8BpThh.woff +0 -0
  1062. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-Di883cZY.woff2 +0 -0
  1063. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-BocR-vpi.woff +0 -0
  1064. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-CQH8I4uz.woff2 +0 -0
  1065. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-CW90qVjA.woff +0 -0
  1066. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-DteAo9_1.woff2 +0 -0
  1067. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BBai0ku9.woff +0 -0
  1068. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BUBreiOx.woff2 +0 -0
  1069. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BQMQzFvO.woff2 +0 -0
  1070. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BYKYx0HK.woff +0 -0
  1071. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-_GHhCQ5l.woff2 +0 -0
  1072. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-oyHCgG2o.woff +0 -0
  1073. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-B3Re-brg.woff +0 -0
  1074. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-DSSj8dPk.woff2 +0 -0
  1075. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-BoDC0KzR.woff2 +0 -0
  1076. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-CvQah7db.woff +0 -0
  1077. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-BizbVEtQ.woff2 +0 -0
  1078. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-D7gQSpeq.woff +0 -0
  1079. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-BiBUOoTN.woff +0 -0
  1080. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-CVgRkKvZ.woff2 +0 -0
  1081. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Cx600hZn.woff +0 -0
  1082. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Dxydenfw.woff2 +0 -0
  1083. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-B-iV2FCz.woff +0 -0
  1084. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-CrxhJitf.woff2 +0 -0
  1085. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-56davMJK.woff +0 -0
  1086. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-BMpyr2ZA.woff2 +0 -0
  1087. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-Cr4qQ6-_.woff2 +0 -0
  1088. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-D6fQD8s2.woff +0 -0
  1089. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-D1Vp2bgS.woff2 +0 -0
  1090. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-DH9qOlQO.woff +0 -0
  1091. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-BtzFMeyM.woff +0 -0
  1092. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-DgBl-sfZ.woff2 +0 -0
  1093. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-BnkgwyNC.woff2 +0 -0
  1094. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-DrLlCQdP.woff +0 -0
  1095. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-D5wsbWuV.woff2 +0 -0
  1096. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-Dk7rkHeG.woff +0 -0
  1097. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-CGMVkPUQ.woff +0 -0
  1098. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-D_kp1-X0.woff2 +0 -0
  1099. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-ADsZ937l.woff2 +0 -0
  1100. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-tkFC4Fme.woff +0 -0
  1101. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-400-normal-mGIBpTDA.woff +0 -0
  1102. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-600-normal-ItZEXAoj.woff +0 -0
  1103. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-700-normal-B2Sn8ODt.woff +0 -0
  1104. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-DRF-ZkFr.woff2 +0 -0
  1105. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-Dye9yGvg.woff +0 -0
  1106. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DD0bpqGF.woff2 +0 -0
  1107. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DSxToWDI.woff +0 -0
  1108. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-D9qdrR16.woff +0 -0
  1109. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-DJ9uBiDw.woff2 +0 -0
  1110. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-BqAaxgfH.woff2 +0 -0
  1111. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-CsmxKILz.woff +0 -0
  1112. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-BQOZ4bZi.woff2 +0 -0
  1113. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-Jx8Bp44x.woff +0 -0
  1114. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-BGJMzr3_.woff2 +0 -0
  1115. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-UuW3VIUX.woff +0 -0
  1116. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Bwv1VfH1.woff +0 -0
  1117. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Dl6WfOX3.woff2 +0 -0
  1118. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-Bpb5tt9_.woff +0 -0
  1119. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-DIFsJkow.woff2 +0 -0
  1120. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-BSSeJztI.woff +0 -0
  1121. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-DSVZ1AdV.woff2 +0 -0
  1122. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-BWVo0zWK.woff2 +0 -0
  1123. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-d-ngL4VK.woff +0 -0
  1124. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BQhDNXpW.woff2 +0 -0
  1125. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BcvVxmDS.woff +0 -0
  1126. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-BzUW0Dn4.woff +0 -0
  1127. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-DKxEyxqG.woff2 +0 -0
  1128. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-C6WuUhoa.woff2 +0 -0
  1129. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-Dpw9oVkY.woff +0 -0
  1130. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-BAOsDDVH.woff2 +0 -0
  1131. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-Bt-5iAy-.woff +0 -0
  1132. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-CKy2WdQj.woff2 +0 -0
  1133. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-DWwfiF2R.woff +0 -0
  1134. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-B9Y_v3iL.woff2 +0 -0
  1135. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-Cw08yPg4.woff +0 -0
  1136. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-C3VBxVTw.woff2 +0 -0
  1137. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-CPG32_M5.woff +0 -0
  1138. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-B2EBYgsw.woff2 +0 -0
  1139. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-CBBnYnrG.woff +0 -0
  1140. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Bo2fKdUV.woff2 +0 -0
  1141. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Dya4Xg3C.woff +0 -0
  1142. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BZxPnU9z.woff +0 -0
  1143. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BwyRFFoW.woff2 +0 -0
  1144. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-BWHZA6Va.woff +0 -0
  1145. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-DGQdaffJ.woff2 +0 -0
  1146. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-BaRCXue3.woff2 +0 -0
  1147. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-DWeXBY63.woff +0 -0
  1148. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-BJMJyZ3V.woff2 +0 -0
  1149. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-CyutRTf1.woff +0 -0
  1150. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-N6twIXlf.woff +0 -0
  1151. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-_dAzPdKJ.woff2 +0 -0
  1152. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-JS-IrZBF.woff +0 -0
  1153. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-ezIou-vd.woff2 +0 -0
  1154. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-BKUm06v8.woff +0 -0
  1155. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-SLeRHHzg.woff2 +0 -0
  1156. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-B5gMlKVs.woff2 +0 -0
  1157. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-DQ5H61GM.woff +0 -0
  1158. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-BGMyUOoF.woff2 +0 -0
  1159. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-CpOmgEj1.woff +0 -0
  1160. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DASryXO5.woff2 +0 -0
  1161. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DyDLcZM_.woff +0 -0
  1162. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-C2pGRKdb.woff2 +0 -0
  1163. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-dsyop0xt.woff +0 -0
  1164. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-CUIc6NHY.woff2 +0 -0
  1165. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-D2dVMMqj.woff +0 -0
  1166. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-7tGyeWfE.woff2 +0 -0
  1167. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-LSwIbfT4.woff +0 -0
  1168. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-4pOvaKVD.woff2 +0 -0
  1169. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-BdZNxX81.woff +0 -0
  1170. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DDJncqjC.woff +0 -0
  1171. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DU9yuSzL.woff2 +0 -0
  1172. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-KlXN5ii8.woff +0 -0
  1173. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-bZ0wMfTu.woff2 +0 -0
  1174. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-C3Bon6kP.woff +0 -0
  1175. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-CKBR3dTc.woff2 +0 -0
  1176. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-B6ntzhez.woff +0 -0
  1177. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-DxvfHPiZ.woff2 +0 -0
  1178. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-CxAqcrGJ.woff +0 -0
  1179. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-ofakrDYw.woff2 +0 -0
  1180. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-Bfs6gmfs.woff +0 -0
  1181. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-D9sJhzsn.woff2 +0 -0
  1182. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-BNzLW3gK.woff2 +0 -0
  1183. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-arm4ZLbG.woff +0 -0
  1184. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-BYo95wdR.woff2 +0 -0
  1185. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-CTWAZiwT.woff +0 -0
  1186. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-7icOh9fn.woff2 +0 -0
  1187. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-CXC3RG0Y.woff +0 -0
  1188. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CXMVQbir.woff +0 -0
  1189. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CgSa9olG.woff2 +0 -0
  1190. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-5IjjJd2s.woff2 +0 -0
  1191. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-Dp8k-UQr.woff +0 -0
  1192. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-eDLHHM6r.woff +0 -0
  1193. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-ecLDx596.woff2 +0 -0
  1194. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BImwtP9C.woff2 +0 -0
  1195. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BikO35BJ.woff +0 -0
  1196. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-DsSHHMYs.woff2 +0 -0
  1197. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-fFxOmumy.woff +0 -0
  1198. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-Dg77fDuG.woff2 +0 -0
  1199. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-DiUSRVIQ.woff +0 -0
  1200. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-Iyqdz6U_.woff +0 -0
  1201. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-jeWDsIkS.woff2 +0 -0
  1202. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-Bma8ReWy.woff2 +0 -0
  1203. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-D3LkCFqf.woff +0 -0
  1204. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-BgsgXhin.woff +0 -0
  1205. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-DQNvf_Pi.woff2 +0 -0
  1206. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-CkeNzekL.woff +0 -0
  1207. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-D7J9HacT.woff2 +0 -0
  1208. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-B0Hs_yqp.woff +0 -0
  1209. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-y8o2u47q.woff2 +0 -0
  1210. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-BEPxXZmH.woff2 +0 -0
  1211. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-CqOqqrqQ.woff +0 -0
  1212. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-CK1rBi2w.woff2 +0 -0
  1213. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-DQz22aVW.woff +0 -0
  1214. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-Bgp388lR.woff2 +0 -0
  1215. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-DZtAE4NN.woff +0 -0
  1216. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-BFaRWvXD.woff +0 -0
  1217. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-UVZzLgo1.woff2 +0 -0
  1218. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-Bc0pWfYQ.woff2 +0 -0
  1219. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-DU4X4cgu.woff +0 -0
  1220. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-D22FGjEf.woff +0 -0
  1221. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-DGaJXlcP.woff2 +0 -0
  1222. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-B4sph3s0.woff2 +0 -0
  1223. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-DBfqpTpp.woff +0 -0
  1224. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BTqxO8KS.woff2 +0 -0
  1225. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BZ_Lvmfb.woff +0 -0
  1226. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-BkIPCguy.woff +0 -0
  1227. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-D_Q2U_HY.woff2 +0 -0
  1228. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-BkfJ-_O-.woff +0 -0
  1229. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-CwN3DFq1.woff2 +0 -0
  1230. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-CRZQtL4e.woff +0 -0
  1231. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-DSLFRuBi.woff2 +0 -0
  1232. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-CAFV2WS-.woff2 +0 -0
  1233. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-DRBwH2wC.woff +0 -0
  1234. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-D9oj9FbO.woff +0 -0
  1235. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-gTii6YIK.woff2 +0 -0
  1236. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-BCOcqFvH.woff +0 -0
  1237. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-NWeXooWt.woff2 +0 -0
  1238. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-Dwsde-Vo.woff2 +0 -0
  1239. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-rFqEK_Cq.woff +0 -0
  1240. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-B4li38vl.woff +0 -0
  1241. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-DYsI6Aeh.woff2 +0 -0
  1242. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DjS9hHaA.woff +0 -0
  1243. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DplHNRWf.woff2 +0 -0
  1244. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-8FGNeBVO.woff +0 -0
  1245. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-BE-tQzc4.woff2 +0 -0
  1246. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-X_3qL3eD.woff +0 -0
  1247. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-_sOvmSPU.woff2 +0 -0
  1248. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-BIWHDE_t.woff2 +0 -0
  1249. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-DNiOFlC5.woff +0 -0
  1250. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-8ErTTni6.woff2 +0 -0
  1251. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-Ckksq6Um.woff +0 -0
  1252. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-9c1B3ugf.woff +0 -0
  1253. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-C2SAUond.woff2 +0 -0
  1254. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-BfKrnenI.woff +0 -0
  1255. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-CNxVmlv6.woff2 +0 -0
  1256. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-hyHZDzzP.woff2 +0 -0
  1257. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-nq1zdTbH.woff +0 -0
  1258. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-Ctdcjw58.woff +0 -0
  1259. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-D_FuIz1A.woff2 +0 -0
  1260. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-D3j6dBx3.woff +0 -0
  1261. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-lzlrdx0G.woff2 +0 -0
  1262. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-6KKBCWxa.woff2 +0 -0
  1263. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-DgWoOUUg.woff +0 -0
  1264. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-B3QY7F5h.woff2 +0 -0
  1265. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-Bk31nBaz.woff +0 -0
  1266. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-BpRgjvkz.woff +0 -0
  1267. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-CfTKk1Ti.woff2 +0 -0
  1268. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-BlYm4TE_.woff2 +0 -0
  1269. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-DiY9dfka.woff +0 -0
  1270. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-C6ZrhK66.woff +0 -0
  1271. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-Cb_onqwe.woff2 +0 -0
  1272. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-ClpMq853.woff2 +0 -0
  1273. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-DIRwnaAC.woff +0 -0
  1274. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-Bsq_ALiN.woff2 +0 -0
  1275. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-D5M2jRxh.woff +0 -0
  1276. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-D25giLXx.woff +0 -0
  1277. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-DJ24ly1p.woff2 +0 -0
  1278. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-BlNTLUxk.woff +0 -0
  1279. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-Ce6XQT-X.woff2 +0 -0
  1280. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-BIimYJ8p.woff2 +0 -0
  1281. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-u7RE7Vcl.woff +0 -0
  1282. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-BxRQ3DPg.woff +0 -0
  1283. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-DK5zmmDo.woff2 +0 -0
  1284. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BQZWkZap.woff2 +0 -0
  1285. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BvYVJLC-.woff +0 -0
  1286. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-COjhVT5P.woff +0 -0
  1287. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-D_nkzVDi.woff2 +0 -0
  1288. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-BJsNk892.woff +0 -0
  1289. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-D0rsZ7c1.woff2 +0 -0
  1290. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-BF8CoFgI.woff +0 -0
  1291. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-HbsCI6VV.woff2 +0 -0
  1292. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-CfPjA3xh.woff +0 -0
  1293. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-ChBeHVSC.woff2 +0 -0
  1294. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-B88Gnili.woff +0 -0
  1295. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-D9HVw03N.woff2 +0 -0
  1296. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-BKinYB31.woff +0 -0
  1297. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-D3NTG_Qr.woff2 +0 -0
  1298. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-BpU6wBwH.woff +0 -0
  1299. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-rfJ4c39Q.woff2 +0 -0
  1300. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DClz9Dhe.woff +0 -0
  1301. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DnfTuI4o.woff2 +0 -0
  1302. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-B9cHSeQ5.woff2 +0 -0
  1303. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-HVPdCDZ0.woff +0 -0
  1304. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-BL0EAwDJ.woff +0 -0
  1305. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-CoMSI1sj.woff2 +0 -0
  1306. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-5BseSrpV.woff +0 -0
  1307. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-DW-mflD2.woff2 +0 -0
  1308. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BM6YwLsn.woff2 +0 -0
  1309. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BTWjvuog.woff +0 -0
  1310. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-CxFvTzoC.woff2 +0 -0
  1311. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-D51sy90d.woff +0 -0
  1312. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-Bp0aGueO.woff2 +0 -0
  1313. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-CQdRArtb.woff +0 -0
  1314. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DX0jfUHx.woff +0 -0
  1315. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DrNdqo4y.woff2 +0 -0
  1316. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DvAVPJPm.woff +0 -0
  1317. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DzUkgy6d.woff2 +0 -0
  1318. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-BUGpoCPv.woff2 +0 -0
  1319. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-CbVTJJOJ.woff +0 -0
  1320. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-BtXAriso.woff2 +0 -0
  1321. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-DvZrEIB3.woff +0 -0
  1322. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-Bkns-GmL.woff +0 -0
  1323. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-XH04BMqX.woff2 +0 -0
  1324. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-BfaxMcpg.woff2 +0 -0
  1325. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-DC5DjlVx.woff +0 -0
  1326. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-C8x5jxqc.woff2 +0 -0
  1327. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-DIwXWqjG.woff +0 -0
  1328. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-Dst0n_2I.woff2 +0 -0
  1329. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-TveJi30r.woff +0 -0
  1330. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-BXcw4A5K.woff2 +0 -0
  1331. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-C5mt5pwb.woff +0 -0
  1332. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DUw4O9kJ.woff2 +0 -0
  1333. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DdAHar7U.woff +0 -0
  1334. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-CdDbCMo5.woff2 +0 -0
  1335. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-WSGX5G5j.woff +0 -0
  1336. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-BX4TFa2_.woff2 +0 -0
  1337. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-DQFNc6DE.woff +0 -0
  1338. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-CHV4cTl6.woff2 +0 -0
  1339. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-DKXEv0-8.woff +0 -0
  1340. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-BwemUgt7.woff2 +0 -0
  1341. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-jqoE6MSf.woff +0 -0
  1342. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-C7dv3Yp1.woff +0 -0
  1343. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-Dc8--5xr.woff2 +0 -0
  1344. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-SmEnIkYa.woff +0 -0
  1345. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-tFiGs3IA.woff2 +0 -0
  1346. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-BXRUM-0I.woff2 +0 -0
  1347. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-G3AQr80e.woff +0 -0
  1348. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-BJ-eyJFM.woff2 +0 -0
  1349. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-D8XNQCXr.woff +0 -0
  1350. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-B1EBYabM.woff +0 -0
  1351. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-boMeGYwE.woff2 +0 -0
  1352. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-5_89urOt.woff +0 -0
  1353. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-Cn0IXtFE.woff2 +0 -0
  1354. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-BOd0bDGO.woff +0 -0
  1355. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-C26YuVxL.woff2 +0 -0
  1356. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-BRtTCfUk.woff +0 -0
  1357. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-D32P0Vtu.woff2 +0 -0
  1358. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-BrNo5bPi.woff2 +0 -0
  1359. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-ic2OowiW.woff +0 -0
  1360. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-CVYiHbL6.woff +0 -0
  1361. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-u-vEkTpG.woff2 +0 -0
  1362. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-BQWp4BEz.woff +0 -0
  1363. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-DDpDjsGx.woff2 +0 -0
  1364. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-DajH-4xp.woff2 +0 -0
  1365. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-icuQ__PU.woff +0 -0
  1366. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-ClV-zSDt.woff +0 -0
  1367. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-CnyrRvpH.woff2 +0 -0
  1368. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-Bw_rXMEi.woff2 +0 -0
  1369. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-yc2U6i4H.woff +0 -0
  1370. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-C2uell5V.woff +0 -0
  1371. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-DsLbRz3E.woff2 +0 -0
  1372. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-2GacE3N5.woff +0 -0
  1373. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-EpYP79Ha.woff2 +0 -0
  1374. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C14BeeRx.woff2 +0 -0
  1375. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C_JCm1wG.woff +0 -0
  1376. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CCq3cWfr.woff2 +0 -0
  1377. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CNKfBGzf.woff +0 -0
  1378. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-DvPwdAi9.woff +0 -0
  1379. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-bReT13VI.woff2 +0 -0
  1380. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-CxNRCaXC.woff +0 -0
  1381. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-DIfXns4-.woff2 +0 -0
  1382. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-8jj6aRvF.woff2 +0 -0
  1383. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-DlyOX1Qf.woff +0 -0
  1384. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-D8sN10Nm.woff +0 -0
  1385. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-og8bjehs.woff2 +0 -0
  1386. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Bb5ShdOk.woff +0 -0
  1387. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Dwyie3Iv.woff2 +0 -0
  1388. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-CdiZE1rm.woff2 +0 -0
  1389. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-sZuKvaH0.woff +0 -0
  1390. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BTXGcZ1f.woff2 +0 -0
  1391. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BfB1Adps.woff +0 -0
  1392. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-9iA5aW6B.woff2 +0 -0
  1393. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-BlQLoLxo.woff +0 -0
  1394. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-CuP_sqvk.woff +0 -0
  1395. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-DJDdt009.woff2 +0 -0
  1396. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-T5FoFJ7Z.woff +0 -0
  1397. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-ZAIr8xfv.woff2 +0 -0
  1398. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-47Y8c3gi.woff +0 -0
  1399. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-Ce6Hc4-O.woff2 +0 -0
  1400. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-C0xzysV4.woff +0 -0
  1401. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-R7ba6CXY.woff2 +0 -0
  1402. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-BhgGw4mN.woff +0 -0
  1403. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-DqgQgYzO.woff2 +0 -0
  1404. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-BQ1quosg.woff +0 -0
  1405. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-DWWwgYkQ.woff2 +0 -0
  1406. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-C2tA-5LU.woff +0 -0
  1407. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-DhA0Dlsd.woff2 +0 -0
  1408. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-BhPAGixe.woff2 +0 -0
  1409. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-Q4Ct26U-.woff +0 -0
  1410. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal--2P0gMaE.woff2 +0 -0
  1411. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal-DOuCM5BV.woff +0 -0
  1412. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-BWVUGdkT.woff2 +0 -0
  1413. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-DKQ7A1j0.woff +0 -0
  1414. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-CeF5ynVi.woff +0 -0
  1415. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-U3Fi3Xkr.woff2 +0 -0
  1416. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-CfqeE6EG.woff +0 -0
  1417. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-D_k1n-D_.woff2 +0 -0
  1418. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-Bwsph-Eg.woff +0 -0
  1419. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-DhhMI-5X.woff2 +0 -0
  1420. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-B0dGlL2-.woff +0 -0
  1421. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-C8Hbz-dX.woff2 +0 -0
  1422. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Ciy4dQcd.woff +0 -0
  1423. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Dqn0gBBY.woff2 +0 -0
  1424. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-CMZZHiYs.woff2 +0 -0
  1425. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-D3h_qbuq.woff +0 -0
  1426. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-B1DETJv2.woff2 +0 -0
  1427. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-M5nVKp2A.woff +0 -0
  1428. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-BfkGgwSg.woff2 +0 -0
  1429. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-DoNv6QKI.woff +0 -0
  1430. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-9-dsEf5V.woff2 +0 -0
  1431. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-cJ6s0u50.woff +0 -0
  1432. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-ByHPz9kn.woff +0 -0
  1433. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-D6FBL1WO.woff2 +0 -0
  1434. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-B6WlHkvJ.woff +0 -0
  1435. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-CXc_m19k.woff2 +0 -0
  1436. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-BSK1xVrb.woff2 +0 -0
  1437. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-OQ8utWzT.woff +0 -0
  1438. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-B6i_9_xV.woff2 +0 -0
  1439. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-C0PiAt94.woff +0 -0
  1440. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-B4bajS3c.woff2 +0 -0
  1441. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-FBGzvyjM.woff +0 -0
  1442. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-Cl_ZMZu8.woff2 +0 -0
  1443. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-pqZtpQem.woff +0 -0
  1444. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-BhojjqGx.woff2 +0 -0
  1445. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-DWNWPMXr.woff +0 -0
  1446. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-BaY9CSq2.woff +0 -0
  1447. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-DPH1GVj3.woff2 +0 -0
  1448. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-BcydLyYe.woff +0 -0
  1449. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-DqzXikSS.woff2 +0 -0
  1450. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-0cKlfajM.woff +0 -0
  1451. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-BNFDc8MW.woff2 +0 -0
  1452. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-CXuQ_R0S.woff +0 -0
  1453. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-OCME7gOK.woff2 +0 -0
  1454. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-BgkVLddD.woff +0 -0
  1455. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-GzZNxGhs.woff2 +0 -0
  1456. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-Qh65nqz2.woff +0 -0
  1457. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-a40eS-gV.woff2 +0 -0
  1458. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-4k_rP24C.woff2 +0 -0
  1459. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-CP6Nx25U.woff +0 -0
  1460. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-CIqUzk_a.woff2 +0 -0
  1461. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-DCSYk_Yh.woff +0 -0
  1462. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-DnbCIk-O.woff +0 -0
  1463. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-zgPUJYJw.woff2 +0 -0
  1464. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-B515X6p6.woff2 +0 -0
  1465. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-Cf7sm02w.woff +0 -0
  1466. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-DugMp3FI.woff +0 -0
  1467. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-pBxafNws.woff2 +0 -0
  1468. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-7KdM18gu.woff +0 -0
  1469. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-CMi4ZY-h.woff2 +0 -0
  1470. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-BcrT9Fgn.woff +0 -0
  1471. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-DmQyl23y.woff2 +0 -0
  1472. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-CeMMRcA6.woff +0 -0
  1473. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-DnK7T1fc.woff2 +0 -0
  1474. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-CINNKEoN.woff +0 -0
  1475. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-sDTGjBrk.woff2 +0 -0
  1476. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-B9g1Ctqd.woff2 +0 -0
  1477. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-DJG00D-p.woff +0 -0
  1478. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-B4enfOPB.woff +0 -0
  1479. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-DCQl7zAm.woff2 +0 -0
  1480. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-CqLTajqw.woff2 +0 -0
  1481. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-hKVirjqK.woff +0 -0
  1482. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-CDdMl-oX.woff2 +0 -0
  1483. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-D5LEXcjN.woff +0 -0
  1484. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-DmCaZeJ-.woff2 +0 -0
  1485. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-Ds_Fb90o.woff +0 -0
  1486. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-8D2N3nxA.woff +0 -0
  1487. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-BTYOjzj6.woff2 +0 -0
  1488. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-COdVePwF.woff2 +0 -0
  1489. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-DEF_oZFa.woff +0 -0
  1490. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DLXpb0hq.woff +0 -0
  1491. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DuzcAQdo.woff2 +0 -0
  1492. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-BKXIEbM-.woff +0 -0
  1493. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-C-cy4WQL.woff2 +0 -0
  1494. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-BOnpTeYv.woff2 +0 -0
  1495. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-CRn7_mZz.woff +0 -0
  1496. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-BAjKvcG-.woff2 +0 -0
  1497. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-DIq7Gv9V.woff +0 -0
  1498. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CO8B564V.woff +0 -0
  1499. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CYiGY1Yb.woff2 +0 -0
  1500. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-3DeNbFry.woff2 +0 -0
  1501. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-BQdwTqgb.woff +0 -0
  1502. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-CcI0wmDd.woff2 +0 -0
  1503. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-ZYmKSXu1.woff +0 -0
  1504. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-BzrrxQTg.woff2 +0 -0
  1505. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-CMsSAe0_.woff +0 -0
  1506. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-CwhtzdGH.woff2 +0 -0
  1507. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-DQN8MKOE.woff +0 -0
  1508. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-Cf7HWvBM.woff2 +0 -0
  1509. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-DOUVV8ig.woff +0 -0
  1510. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-CByVAW_A.woff2 +0 -0
  1511. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-VIPXB5Il.woff +0 -0
  1512. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-BC0mCFX2.woff2 +0 -0
  1513. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-DHfan8x-.woff +0 -0
  1514. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-BIIL4Btv.woff +0 -0
  1515. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-CN8RaHGd.woff2 +0 -0
  1516. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-BMMLfFhV.woff2 +0 -0
  1517. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-DmfLM_GL.woff +0 -0
  1518. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-BQNnzD7b.woff +0 -0
  1519. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-CYHfi_5o.woff2 +0 -0
  1520. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-8oNp3a_g.woff2 +0 -0
  1521. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-BKXxr4Vf.woff +0 -0
  1522. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-BcdoKDVA.woff +0 -0
  1523. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-Dxy_7wWe.woff2 +0 -0
  1524. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-BrHR60F5.woff2 +0 -0
  1525. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-kn3L8mkz.woff +0 -0
  1526. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DHHBh9NH.woff2 +0 -0
  1527. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DbfrFOKo.woff +0 -0
  1528. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-BBQprcoA.woff +0 -0
  1529. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-DIYBHFGo.woff2 +0 -0
  1530. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-BY6JiZG_.woff2 +0 -0
  1531. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-D20hKn8x.woff +0 -0
  1532. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-Bdo6QjXy.woff2 +0 -0
  1533. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-DU6215sy.woff +0 -0
  1534. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-CNeD7cKc.woff +0 -0
  1535. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-D4WgQZhf.woff2 +0 -0
  1536. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-CKM4EqLH.woff2 +0 -0
  1537. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-DRimGseV.woff +0 -0
  1538. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-CIkK4pwL.woff +0 -0
  1539. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-o84Tuavw.woff2 +0 -0
  1540. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-DKK03KYp.woff2 +0 -0
  1541. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-Sq9FhKgR.woff +0 -0
  1542. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-9_m442uC.woff +0 -0
  1543. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-DFBsPAhk.woff2 +0 -0
  1544. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-Bj6Oga3u.woff2 +0 -0
  1545. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-IB6GFZTf.woff +0 -0
  1546. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-BPp3kOId.woff2 +0 -0
  1547. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-CXE0S75n.woff +0 -0
  1548. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-D7nsD7Wm.woff +0 -0
  1549. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-DbmD_Owd.woff2 +0 -0
  1550. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-C5FnASlc.woff +0 -0
  1551. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-Cz9v4gjx.woff2 +0 -0
  1552. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-BeBTa0LV.woff2 +0 -0
  1553. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-DblVcY4a.woff +0 -0
  1554. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-Ch-uxywT.woff +0 -0
  1555. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-ChZ2CLi-.woff2 +0 -0
  1556. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-BkGpNJKI.woff2 +0 -0
  1557. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-CG9-PeCF.woff +0 -0
  1558. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CZW29fAQ.woff +0 -0
  1559. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CkMuXuOj.woff2 +0 -0
  1560. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-CN_UQa3U.woff +0 -0
  1561. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-DY57wkwV.woff2 +0 -0
  1562. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-BUarw7E5.woff +0 -0
  1563. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-Ds-mjTNk.woff2 +0 -0
  1564. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-BntN_kys.woff2 +0 -0
  1565. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-DoPFrHSK.woff +0 -0
  1566. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-D259vsJ_.woff +0 -0
  1567. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-DvUF8GMi.woff2 +0 -0
  1568. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-CisRgCMg.woff2 +0 -0
  1569. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-ReaqIn5m.woff +0 -0
  1570. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BIiZFSUQ.woff2 +0 -0
  1571. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BylngM58.woff +0 -0
  1572. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-BqppHOeA.woff +0 -0
  1573. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-DaCXFUcH.woff2 +0 -0
  1574. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-2DkYfPPb.woff +0 -0
  1575. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-DN6cN55_.woff2 +0 -0
  1576. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-DjiLTpOV.woff +0 -0
  1577. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-zUtSBhiX.woff2 +0 -0
  1578. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-B8TcbMdb.woff +0 -0
  1579. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-BJLUyYDo.woff2 +0 -0
  1580. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-lS3UdozO.woff +0 -0
  1581. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-nFX-cMXi.woff2 +0 -0
  1582. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-DYzxzB3U.woff +0 -0
  1583. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-NT-G-2lC.woff2 +0 -0
  1584. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-CEDRAc_f.woff2 +0 -0
  1585. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-DlThbTsi.woff +0 -0
  1586. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-C_RUWM8I.woff +0 -0
  1587. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-Dhfyy0ky.woff2 +0 -0
  1588. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-CdI89zbS.woff2 +0 -0
  1589. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-DRor3NKv.woff +0 -0
  1590. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-5bMSGSar.woff +0 -0
  1591. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-Bpqw4_PX.woff2 +0 -0
  1592. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-BKj6RBZ7.woff +0 -0
  1593. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-CjRp-Iz4.woff2 +0 -0
  1594. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-BXC27J9C.woff +0 -0
  1595. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-JtZooioR.woff2 +0 -0
  1596. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-6-qa9Uj4.woff2 +0 -0
  1597. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-CM7tVCiU.woff +0 -0
  1598. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-CokKDsRY.woff2 +0 -0
  1599. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-c6nUiZEv.woff +0 -0
  1600. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-BCRYVYbj.woff +0 -0
  1601. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-C4o110v7.woff2 +0 -0
  1602. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-BCjvaIwI.woff +0 -0
  1603. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-CPQAppG5.woff2 +0 -0
  1604. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-2NuQXMn5.woff +0 -0
  1605. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-pwYieqoq.woff2 +0 -0
  1606. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-DTiOP-RD.woff +0 -0
  1607. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-J2K8ygE7.woff2 +0 -0
  1608. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-Bqi1rgUh.woff2 +0 -0
  1609. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-CAkrqKEd.woff +0 -0
  1610. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-BUVowAmE.woff +0 -0
  1611. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-CVV1AoIy.woff2 +0 -0
  1612. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-B_WqVFu8.woff2 +0 -0
  1613. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-C-GRhBDF.woff +0 -0
  1614. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-BvkVX0xm.woff +0 -0
  1615. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-CPvF_U24.woff2 +0 -0
  1616. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-BKNr8HaE.woff +0 -0
  1617. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-SYUuQfwq.woff2 +0 -0
  1618. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-6t-D5P6M.woff +0 -0
  1619. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-Cwb_HiV8.woff2 +0 -0
  1620. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-BVAYXEqw.woff +0 -0
  1621. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-CF0EWuft.woff2 +0 -0
  1622. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CSej5QVJ.woff +0 -0
  1623. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CWNURXbv.woff2 +0 -0
  1624. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DqmD0X2I.woff +0 -0
  1625. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DvZpuW9q.woff2 +0 -0
  1626. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-AF35YmmH.woff2 +0 -0
  1627. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-J5xWG5gS.woff +0 -0
  1628. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Ba8rnT7_.woff2 +0 -0
  1629. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Cdi7mG90.woff +0 -0
  1630. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-4ZbirUQU.woff2 +0 -0
  1631. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-Coj3Y2Vv.woff +0 -0
  1632. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-CpXdOOTc.woff2 +0 -0
  1633. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-eM8eMXyQ.woff +0 -0
  1634. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-DXBEl0OU.woff +0 -0
  1635. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-ON8tPSnT.woff2 +0 -0
  1636. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-Bbz7lyAG.woff2 +0 -0
  1637. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-DfbGPVVb.woff +0 -0
  1638. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-C-oyfrUa.woff2 +0 -0
  1639. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-DPe2AXol.woff +0 -0
  1640. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BEKBLOkr.woff2 +0 -0
  1641. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BZRywIXe.woff +0 -0
  1642. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-DChZSEXi.woff2 +0 -0
  1643. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-JLAmA7_6.woff +0 -0
  1644. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-CBiEIaz5.woff2 +0 -0
  1645. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-D-mZ9inR.woff +0 -0
  1646. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-CAapLUyl.woff2 +0 -0
  1647. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-Dl-orC8M.woff +0 -0
  1648. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-JEDfv4vZ.woff2 +0 -0
  1649. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-xL2psWlD.woff +0 -0
  1650. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-CKSk9toV.woff2 +0 -0
  1651. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-DNGmaJIL.woff +0 -0
  1652. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DDZagcz1.woff +0 -0
  1653. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DloGa7SL.woff2 +0 -0
  1654. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-Bv7EAOP1.woff +0 -0
  1655. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-CCA2fInu.woff2 +0 -0
  1656. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BDhrvRnL.woff2 +0 -0
  1657. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BOjgDpon.woff +0 -0
  1658. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-BeTmwP_K.woff2 +0 -0
  1659. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-uD_8VqjX.woff +0 -0
  1660. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-C-NBohiT.woff2 +0 -0
  1661. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-sVUIRMKd.woff +0 -0
  1662. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-BTtbRNyU.woff +0 -0
  1663. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-Bs1zlN0G.woff2 +0 -0
  1664. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-3CkcYQgr.woff2 +0 -0
  1665. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-C0tjZHt0.woff +0 -0
  1666. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-DjrHhANL.woff +0 -0
  1667. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-UPAurMge.woff2 +0 -0
  1668. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-CCVU2G9b.woff2 +0 -0
  1669. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-dcW_ilWW.woff +0 -0
  1670. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-DcS6irVl.woff2 +0 -0
  1671. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-w0hsbhoe.woff +0 -0
  1672. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CazBSycC.woff2 +0 -0
  1673. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CvRuq6Vw.woff +0 -0
  1674. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-CnxhIj-f.woff2 +0 -0
  1675. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-ZCEqhetZ.woff +0 -0
  1676. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-BBWiOGe2.woff +0 -0
  1677. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-i3phtpOA.woff2 +0 -0
  1678. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-DO0ByKpJ.woff2 +0 -0
  1679. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-Dei1Gj2q.woff +0 -0
  1680. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-2BRpmgCV.woff2 +0 -0
  1681. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-B2cWSh78.woff +0 -0
  1682. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CKeHRgKb.woff +0 -0
  1683. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CXFU6tjk.woff2 +0 -0
  1684. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-CTtpPuSd.woff2 +0 -0
  1685. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-N5V03xjS.woff +0 -0
  1686. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Cv3FeIij.woff2 +0 -0
  1687. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Dml5TFym.woff +0 -0
  1688. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-CJHvMuEH.woff2 +0 -0
  1689. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-ChXV0eBj.woff +0 -0
  1690. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-BR1fDv7I.woff +0 -0
  1691. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-kWux5vbT.woff2 +0 -0
  1692. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-3CnvMMD7.woff2 +0 -0
  1693. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-TNl1bUeL.woff +0 -0
  1694. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-B4PQFGba.woff2 +0 -0
  1695. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-bBSJai_o.woff +0 -0
  1696. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-BAbSphgc.woff2 +0 -0
  1697. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-HHyMEHBJ.woff +0 -0
  1698. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-CUhld-kf.woff2 +0 -0
  1699. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-DTBYTMn7.woff +0 -0
  1700. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-CR-CWSvQ.woff2 +0 -0
  1701. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-Cq5mpPr_.woff +0 -0
  1702. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-D-oyN10X.woff +0 -0
  1703. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-DQNF9HpE.woff2 +0 -0
  1704. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-BCEQWDh5.woff2 +0 -0
  1705. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-DDVUYQLq.woff +0 -0
  1706. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DL0LF1av.woff +0 -0
  1707. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DyaIQrhK.woff2 +0 -0
  1708. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-B0AxqRZO.woff2 +0 -0
  1709. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-Inz-d5-8.woff +0 -0
  1710. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-C5hUXC4y.woff2 +0 -0
  1711. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-CSCHltyB.woff +0 -0
  1712. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-ClJ2q6nT.woff +0 -0
  1713. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-CpgWTSx7.woff2 +0 -0
  1714. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BSArHqh9.woff2 +0 -0
  1715. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BVRIUm2S.woff +0 -0
  1716. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BDNWBg-b.woff +0 -0
  1717. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BnV7FV79.woff2 +0 -0
  1718. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-BQpAkNz5.woff2 +0 -0
  1719. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-bxA4bluv.woff +0 -0
  1720. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-95lB4fwA.woff +0 -0
  1721. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-VgtqRBM7.woff2 +0 -0
  1722. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-B5ZhKYLO.woff2 +0 -0
  1723. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-Dy5-YEOY.woff +0 -0
  1724. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C07c5If1.woff +0 -0
  1725. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C6bVD75P.woff2 +0 -0
  1726. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-_7qWVHie.woff2 +0 -0
  1727. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-h3oxUHXv.woff +0 -0
  1728. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-Bwghrgjh.woff2 +0 -0
  1729. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-DNnelfuN.woff +0 -0
  1730. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BBQsSgWd.woff2 +0 -0
  1731. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BeDPvyp8.woff +0 -0
  1732. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-Cjg_wNSB.woff +0 -0
  1733. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-DY_bvrHQ.woff2 +0 -0
  1734. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-Dj7VksMf.woff +0 -0
  1735. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-gP3qcvie.woff2 +0 -0
  1736. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-B0Nsm10J.woff +0 -0
  1737. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-Dn9kzegM.woff2 +0 -0
  1738. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-BaagHPlF.woff2 +0 -0
  1739. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-sM5sErEE.woff +0 -0
  1740. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-01r-uCGK.woff +0 -0
  1741. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-MpgNCYqt.woff2 +0 -0
  1742. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-CuyoBBEp.woff2 +0 -0
  1743. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-OOnXi3dj.woff +0 -0
  1744. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-GjYjPFRF.woff +0 -0
  1745. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-Vr7CPe4d.woff2 +0 -0
  1746. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-4H84KBjL.woff +0 -0
  1747. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-D9W6fT0U.woff2 +0 -0
  1748. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-CHYuKtvD.woff +0 -0
  1749. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-DAX8ENIb.woff2 +0 -0
  1750. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-DvDs5GHe.woff2 +0 -0
  1751. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-kGpxnFlG.woff +0 -0
  1752. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-BnpH2dyr.woff +0 -0
  1753. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-DhPplA2S.woff2 +0 -0
  1754. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-BDIwmQD2.woff +0 -0
  1755. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-DWFfqfVJ.woff2 +0 -0
  1756. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BEM3LLr5.woff +0 -0
  1757. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BH_9UzMR.woff2 +0 -0
  1758. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-BkNndOiq.woff2 +0 -0
  1759. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-GRBsq_TQ.woff +0 -0
  1760. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-Dc31ixSD.woff2 +0 -0
  1761. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-qBGKeeZh.woff +0 -0
  1762. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-CKh4-8lS.woff +0 -0
  1763. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-SEF2IUu4.woff2 +0 -0
  1764. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-BEJcB5Pj.woff +0 -0
  1765. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-DOnua0XC.woff2 +0 -0
  1766. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-Dk43PWfK.woff +0 -0
  1767. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-_9rnVtrt.woff2 +0 -0
  1768. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-BkaB_Reu.woff +0 -0
  1769. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-DbnutdYp.woff2 +0 -0
  1770. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-BFI-kcuc.woff +0 -0
  1771. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-b_F-aCuz.woff2 +0 -0
  1772. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-BwgNjnnm.woff2 +0 -0
  1773. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-Dkhx4lxu.woff +0 -0
  1774. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-UpohLQJI.woff2 +0 -0
  1775. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-Yul5WPNb.woff +0 -0
  1776. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-CHpiv9C7.woff2 +0 -0
  1777. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-D8XpW-jV.woff +0 -0
  1778. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-CD4ArYzM.woff2 +0 -0
  1779. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-M066d6gr.woff +0 -0
  1780. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-DV4atPPn.woff2 +0 -0
  1781. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-hjVn7kub.woff +0 -0
  1782. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-BT6SwwtR.woff2 +0 -0
  1783. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-Cd-eoA5H.woff +0 -0
  1784. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-DsGroCqE.woff +0 -0
  1785. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-kFFPHZH9.woff2 +0 -0
  1786. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-CO6mIiJi.woff +0 -0
  1787. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-DfKrXTUN.woff2 +0 -0
  1788. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-BiWBJPQ7.woff2 +0 -0
  1789. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-Bj7jp-Iz.woff +0 -0
  1790. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-CnPg-4RZ.woff2 +0 -0
  1791. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-Cvgtdz7H.woff +0 -0
  1792. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-BtF0jwlF.woff +0 -0
  1793. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-C4IDZ9L-.woff2 +0 -0
  1794. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-B4UIE9Zj.woff +0 -0
  1795. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-CLr3K58D.woff2 +0 -0
  1796. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Dln3mVPi.woff +0 -0
  1797. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Uy8tuoQH.woff2 +0 -0
  1798. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DClAUGO7.woff +0 -0
  1799. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DHBmduQt.woff2 +0 -0
  1800. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-BzR2eDWi.woff2 +0 -0
  1801. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-WTG9_11D.woff +0 -0
  1802. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DHmemGdc.woff +0 -0
  1803. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DxNgVy70.woff2 +0 -0
  1804. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-B7V6NyLX.woff +0 -0
  1805. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-CijZ21_m.woff2 +0 -0
  1806. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-1GfpLFeR.woff +0 -0
  1807. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-BSOJFi3M.woff2 +0 -0
  1808. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-BGAcZoa5.woff +0 -0
  1809. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-DP-OzMv8.woff2 +0 -0
  1810. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-BTl2LovL.woff +0 -0
  1811. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-PLU2uOG6.woff2 +0 -0
  1812. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-BJCaISym.woff +0 -0
  1813. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-DxlOKNb6.woff2 +0 -0
  1814. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-D79iYZbh.woff +0 -0
  1815. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-DyMFY3yG.woff2 +0 -0
  1816. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-BOSqPgLZ.woff2 +0 -0
  1817. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-Bs7eQneK.woff +0 -0
  1818. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-Ce6_8B6O.woff +0 -0
  1819. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-THO3jy3s.woff2 +0 -0
  1820. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Ck2K5Ulf.woff2 +0 -0
  1821. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Df3Wep6L.woff +0 -0
  1822. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-B-9pR0B0.woff2 +0 -0
  1823. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-vrmrQol7.woff +0 -0
  1824. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-Cgyyi6Mk.woff2 +0 -0
  1825. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-mWRC9cE4.woff +0 -0
  1826. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-BIw3yp_o.woff +0 -0
  1827. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-CgHlrSUg.woff2 +0 -0
  1828. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-CE4g_Vnr.woff2 +0 -0
  1829. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-OHitFFYG.woff +0 -0
  1830. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-DofKP3XM.woff2 +0 -0
  1831. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-rklqUmDh.woff +0 -0
  1832. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-BPJjrS1c.woff2 +0 -0
  1833. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-Dl6BB-Lj.woff +0 -0
  1834. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-B4zrRhmq.woff2 +0 -0
  1835. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-Vq2Xt21W.woff +0 -0
  1836. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BPQ_BGOm.woff +0 -0
  1837. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BvoXxhh-.woff2 +0 -0
  1838. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1scqjS5.woff2 +0 -0
  1839. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1vhjtxY.woff +0 -0
  1840. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CdiYya7N.woff +0 -0
  1841. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CizxTCTp.woff2 +0 -0
  1842. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-BN1x-JCl.woff +0 -0
  1843. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-DMKz6H_F.woff2 +0 -0
  1844. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-D74kcLg1.woff +0 -0
  1845. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-DNXvxDIf.woff2 +0 -0
  1846. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-BdAAndOM.woff2 +0 -0
  1847. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-DeYHlTSC.woff +0 -0
  1848. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-K8yMYku4.woff +0 -0
  1849. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-Z0YZvJMA.woff2 +0 -0
  1850. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-CfEBl86K.woff2 +0 -0
  1851. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-Yu7W5Ur_.woff +0 -0
  1852. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-C2i6qX8o.woff2 +0 -0
  1853. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-Ck28wpb6.woff +0 -0
  1854. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-BHD-6hCF.woff +0 -0
  1855. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-DapCxPvn.woff2 +0 -0
  1856. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-CxMB4f1K.woff +0 -0
  1857. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-tmv6xC_z.woff2 +0 -0
  1858. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-ByTiuiZy.woff +0 -0
  1859. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-C_LnNwcx.woff2 +0 -0
  1860. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-5VJWa5C8.woff +0 -0
  1861. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-CBCdCJJN.woff2 +0 -0
  1862. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-DAbbVYEi.woff +0 -0
  1863. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-QEQJ2vNg.woff2 +0 -0
  1864. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-D9NnIF6F.woff2 +0 -0
  1865. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-gCAr-9Ui.woff +0 -0
  1866. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-BENNdZwd.woff2 +0 -0
  1867. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-DrUErJVA.woff +0 -0
  1868. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-B9kwAyIi.woff2 +0 -0
  1869. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-DHvPm2NF.woff +0 -0
  1870. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C7LprN_f.woff2 +0 -0
  1871. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C80RxHso.woff +0 -0
  1872. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-B1Nb7Dqt.woff +0 -0
  1873. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-BBWPbJ8R.woff2 +0 -0
  1874. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-BV1Q-ya9.woff2 +0 -0
  1875. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-vSSmYEgt.woff +0 -0
  1876. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-88k3u19j.woff2 +0 -0
  1877. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-Bm4AIB4W.woff +0 -0
  1878. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-DSyr09Pi.woff +0 -0
  1879. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-wVEmJJbn.woff2 +0 -0
  1880. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-CNwgbPME.woff2 +0 -0
  1881. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-DwlyYo3O.woff +0 -0
  1882. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-BpuC-Ja2.woff2 +0 -0
  1883. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-DJ4qrNjm.woff +0 -0
  1884. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-CI8zKOiq.woff2 +0 -0
  1885. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-Nb_ATV55.woff +0 -0
  1886. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-D1q9iZG9.woff2 +0 -0
  1887. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-DCKOx3do.woff +0 -0
  1888. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CDxcnlps.woff2 +0 -0
  1889. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CrbVhrAy.woff +0 -0
  1890. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-DgbfUacv.woff +0 -0
  1891. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-Dqrwgacb.woff2 +0 -0
  1892. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-DpEHO2lx.woff +0 -0
  1893. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-HtoGXJPD.woff2 +0 -0
  1894. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-6UeGb2y_.woff +0 -0
  1895. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-Cj2MbqkN.woff2 +0 -0
  1896. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-BPlmQmyN.woff +0 -0
  1897. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-uFBOSatZ.woff2 +0 -0
  1898. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-3e73VLox.woff2 +0 -0
  1899. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-CHFWjDbo.woff +0 -0
  1900. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-BtF7lJZ6.woff2 +0 -0
  1901. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-D1_BFs6r.woff +0 -0
  1902. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-B_JBM8HP.woff2 +0 -0
  1903. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-DShvO3nx.woff +0 -0
  1904. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-CIir-_6C.woff2 +0 -0
  1905. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-HSAnxCQg.woff +0 -0
  1906. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DOcpS_k9.woff2 +0 -0
  1907. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DR_NIHG9.woff +0 -0
  1908. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-BIBVbLNo.woff2 +0 -0
  1909. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-DACpgdpL.woff +0 -0
  1910. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-ByArDHHI.woff2 +0 -0
  1911. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-CNKcN-Ig.woff +0 -0
  1912. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-9BGvVFJG.woff +0 -0
  1913. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-DCUUt7cX.woff2 +0 -0
  1914. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-D6a133Nk.woff +0 -0
  1915. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-E_0UP4jm.woff2 +0 -0
  1916. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-DScuu4Uu.woff2 +0 -0
  1917. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-hzikha37.woff +0 -0
  1918. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-BCQXFjgs.woff +0 -0
  1919. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-CfjdYZM4.woff2 +0 -0
  1920. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-CBQftTJt.woff +0 -0
  1921. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-F8LL-J5_.woff2 +0 -0
  1922. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-BR6Du0PQ.woff +0 -0
  1923. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-CQ1redVd.woff2 +0 -0
  1924. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-DQEJ1-LS.woff2 +0 -0
  1925. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-FH-ttKed.woff +0 -0
  1926. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-DqIzdKrV.woff +0 -0
  1927. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-i71EDyfV.woff2 +0 -0
  1928. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bpgq8MX2.woff +0 -0
  1929. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bqgrv0lo.woff2 +0 -0
  1930. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-Bj2HnGEw.woff +0 -0
  1931. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-DYsLBu1T.woff2 +0 -0
  1932. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-B-8F2Uet.woff +0 -0
  1933. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-BHAiqXEM.woff2 +0 -0
  1934. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-B-CGe3sL.woff2 +0 -0
  1935. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-BuQf4YmM.woff +0 -0
  1936. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-BZ9z_FHx.woff +0 -0
  1937. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-CWSgjf9c.woff2 +0 -0
  1938. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-AY_mybA2.woff +0 -0
  1939. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-CTPxjOYB.woff2 +0 -0
  1940. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-CdfPYwdk.woff2 +0 -0
  1941. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-oGadQOpD.woff +0 -0
  1942. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-DLe2ZT_Q.woff2 +0 -0
  1943. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-bXRUCZKE.woff +0 -0
  1944. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-CEDE9rS0.woff +0 -0
  1945. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-z5dDoQx9.woff2 +0 -0
  1946. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-Bl94dFYa.woff2 +0 -0
  1947. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-OLqttnKu.woff +0 -0
  1948. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-CYME5EXY.woff2 +0 -0
  1949. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-I1XysYDt.woff +0 -0
  1950. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-Ci1tC2DE.woff +0 -0
  1951. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-DnyFjM_B.woff2 +0 -0
  1952. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-BZxjTCO5.woff +0 -0
  1953. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-ChG7s6jj.woff2 +0 -0
  1954. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-Bi5bgOa-.woff +0 -0
  1955. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-CCHPFSSV.woff2 +0 -0
  1956. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BIF8JT4K.woff2 +0 -0
  1957. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BMQQOADr.woff +0 -0
  1958. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-BwPZY4No.woff +0 -0
  1959. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-CCy9m1Yi.woff2 +0 -0
  1960. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-CUKZrRn4.woff +0 -0
  1961. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-PUE26tsV.woff2 +0 -0
  1962. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-Bi-DePsy.woff +0 -0
  1963. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-DbEg4X6i.woff2 +0 -0
  1964. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-B_hznMYb.woff2 +0 -0
  1965. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-DXp5U46T.woff +0 -0
  1966. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-CdRKaRR8.woff +0 -0
  1967. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-d_p4qgBI.woff2 +0 -0
  1968. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-BoOvEFVR.woff2 +0 -0
  1969. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-DhttFBeF.woff +0 -0
  1970. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DdDi5wpQ.woff2 +0 -0
  1971. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DnHS-nmP.woff +0 -0
  1972. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-DvcYr3Tg.woff2 +0 -0
  1973. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-Z-oKOpcu.woff +0 -0
  1974. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-600-normal-CuB_ApqX.woff2 +0 -0
  1975. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-700-normal-OQGIHpUr.woff2 +0 -0
  1976. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-CDkAi-IU.woff2 +0 -0
  1977. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-VZ_YUdPy.woff +0 -0
  1978. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-CeGVp1rD.woff +0 -0
  1979. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-Dh7JSXz4.woff2 +0 -0
  1980. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-C-GGubNS.woff +0 -0
  1981. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-DkDnzNv2.woff2 +0 -0
  1982. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-BmMhoS32.woff2 +0 -0
  1983. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-Ci0W5IWz.woff +0 -0
  1984. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-B0rxBWNc.woff2 +0 -0
  1985. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-BJjl00Le.woff +0 -0
  1986. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-5jYiHHRz.woff2 +0 -0
  1987. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-BEKQdV0c.woff +0 -0
  1988. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-CeBwsqAD.woff +0 -0
  1989. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-DJinq116.woff2 +0 -0
  1990. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DWoOSbq5.woff +0 -0
  1991. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DraA-1Zl.woff2 +0 -0
  1992. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-BkZ1vv2G.woff +0 -0
  1993. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-CymJjnAS.woff2 +0 -0
  1994. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-5J6UR9CM.woff2 +0 -0
  1995. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-Cdi-IBra.woff +0 -0
  1996. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-4KzAAJzD.woff +0 -0
  1997. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-C3ObUrek.woff2 +0 -0
  1998. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-BEo_xrjH.woff +0 -0
  1999. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-DYlKYBEL.woff2 +0 -0
  2000. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CLS33fqM.woff +0 -0
  2001. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CsJn1kPf.woff2 +0 -0
  2002. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-BqkCATJS.woff2 +0 -0
  2003. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-DGs8D_d9.woff +0 -0
  2004. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-BcAowvjY.woff2 +0 -0
  2005. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-Rande0GP.woff +0 -0
  2006. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-DqxPcneT.woff2 +0 -0
  2007. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-m9r3xH18.woff +0 -0
  2008. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-E6j9XpvP.woff +0 -0
  2009. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-qnNrW3Df.woff2 +0 -0
  2010. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-D_kcIWRN.woff +0 -0
  2011. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-DafuQoH3.woff2 +0 -0
  2012. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-DOlHHts_.woff2 +0 -0
  2013. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-TWLDWHgL.woff +0 -0
  2014. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CHxkMEAU.woff2 +0 -0
  2015. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CXVo40nf.woff +0 -0
  2016. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-BdFpzIjS.woff2 +0 -0
  2017. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-C5vPlSUB.woff +0 -0
  2018. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-CyxDRXqs.woff2 +0 -0
  2019. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-D-_zohjb.woff +0 -0
  2020. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-CizO16Ew.woff +0 -0
  2021. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-D-SBD5Hk.woff2 +0 -0
  2022. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-BArUuixv.woff2 +0 -0
  2023. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-O_rp84MR.woff +0 -0
  2024. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-400-normal-COuj214s.woff2 +0 -0
  2025. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-600-normal-j_ccRvHi.woff2 +0 -0
  2026. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-700-normal-BGCe6SPX.woff2 +0 -0
  2027. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-7kwLL-e3.woff +0 -0
  2028. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-Bc7vhvxM.woff2 +0 -0
  2029. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-n-2PV5Ut.woff2 +0 -0
  2030. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-yks4z4wu.woff +0 -0
  2031. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-Bj41MRxQ.woff +0 -0
  2032. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-CIbXnLaA.woff2 +0 -0
  2033. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  2034. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  2035. /package/{public → frontend/client}/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
@@ -1,2 +0,0 @@
1
- import{J as e,U as t,Z as n,i as r,q as i,s as a}from"./createLucideIcon-BPpAIXR_.js";import{On as o,Sn as s,Sr as c,i as l,n as u,r as d,ur as f}from"./config-DTQCUlfZ.js";import{t as p}from"./useMutation-BWZ0G4Td.js";import{t as m}from"./useQuery-Ccv_nzQl.js";import{t as h}from"./fingerprint-pattern-DP62Vk8x.js";import{F as g,N as _,R as v,S as y,j as b,m as x,z as S}from"./index-CKpnrw9M.js";import{t as C}from"./auth-page-header-DgGAaIiP.js";import{t as w}from"./alert-leqyvHOp.js";import{t as T}from"./auth-layout-CiNn2-Nb.js";import{t as E}from"./promise-OpBtq8tG.js";import{n as D,t as O}from"./auth-footer-Cz5ivsDc.js";import{t as k}from"./passkey-error-ZqqPQUta.js";import{t as A}from"./passkey-J1qnYp9A.js";var j=n(e()),M=f({queryKey:u.pendingSecondFactorMethods(),queryFn:async()=>l(await d.api.auth[`2fa`].methods.$get()),retry:!1}),N=i();function P(){let{t:e}=r(),n=o(),i=c(),l=x.useSearch(),[u,d]=(0,j.useState)(null),f=(0,j.useRef)(!1),P=m({...M,enabled:u!==null}).data?.methods.includes(`totp`)??!1,F=t=>{switch(t){case`unsupported`:return e(`verifyPasskey.error.unsupported`);case`not_allowed`:return e(`verifyPasskey.error.notAllowed`);case`expired`:return e(`verifyPasskey.error.expired`);case`user_mismatch`:return e(`verifyPasskey.error.userMismatch`);case`verification_failed`:return e(`verifyPasskey.error.failed`)}},I=p({...A,onSuccess:async e=>{e.user&&(i.setQueryData(y.queryKey,{user:e.user}),await E(),g(l)?window.location.href=b(l):n.navigate({to:`/profile`}))},onError:async e=>{let t=k(e);d({message:F(t),reason:t})},onSettled:()=>{i.invalidateQueries({queryKey:y.queryKey})}});return(0,j.useEffect)(()=>{f.current||(f.current=!0,I.mutate())},[I]),(0,N.jsxs)(T,{children:[(0,N.jsx)(C,{align:`center`,subtitle:e(`verifyPasskey.subtitle`),title:e(`verifyPasskey.title`)}),(0,N.jsxs)(`div`,{className:`flex flex-col items-center gap-tinyrack-lg`,children:[(0,N.jsx)(`div`,{className:`flex size-tinyrack-3xl items-center justify-center rounded-tinyrack-full bg-tinyrack-surface-muted`,children:(0,N.jsx)(h,{"aria-hidden":!0,className:`size-tinyrack-2xl text-tinyrack-text-muted`})}),I.isPending&&(0,N.jsxs)(`div`,{className:`flex flex-col items-center gap-tinyrack-sm`,children:[(0,N.jsx)(t,{uiSize:`md`}),(0,N.jsx)(`p`,{className:`text-center text-tinyrack-sm text-tinyrack-text-muted`,children:e(`verifyPasskey.waiting`)})]}),u&&(0,N.jsxs)(`div`,{className:`flex w-full flex-col items-center gap-tinyrack-md`,children:[(0,N.jsx)(w,{className:`w-full`,icon:v,type:`error`,children:u.message}),P&&(0,N.jsx)(S,{className:`w-full`,intent:`primary`,render:(0,N.jsx)(s,{search:_(l),to:`/verify/totp`}),uiSize:`lg`,children:e(`verifyPasskey.useTotp`)}),(0,N.jsx)(a,{appearance:P?`outline`:`solid`,className:`w-full`,intent:P?`neutral`:`primary`,onClick:()=>{d(null),I.mutate()},type:`button`,uiSize:`lg`,children:e(`verifyPasskey.retry`)})]})]}),(0,N.jsx)(O,{children:(0,N.jsx)(D,{link:(0,N.jsx)(s,{search:l,to:`/login`,children:e(`verifyPasskey.backToLogin`)})})})]})}export{P as component};
2
- //# sourceMappingURL=passkey-v9Pzv-4A.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"passkey-v9Pzv-4A.js","names":["useMutation","useQuery","useQueryClient","Link","useRouter","TRButton","TRLinkButton","TRSpinner","CircleAlertIcon","FingerprintIcon","useEffect","useRef","useState","useTranslation","AuthFooter","AuthFooterLink","AuthPageHeader","Alert","AuthLayout","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","classifyPasskeyError","tick","authenticateWithPasskeyMutationOptions","getPendingSecondFactorMethodsQueryOptions","getSessionQueryOptions","Route","VerifyPasskey","t","router","queryClient","search","useSearch","error","setError","message","reason","PasskeyErrorReason","hasStarted","pendingMethodsQuery","enabled","canUseTotp","data","methods","includes","getErrorMessage","verifyMutation","onSuccess","user","setQueryData","queryKey","window","location","href","navigate","to","onError","err","onSettled","invalidateQueries","current","mutate","isPending","component"],"sources":["../../../frontend/src/queries/second-factor.ts","../../../frontend/src/routes/verify/passkey/index.tsx?tsr-split=component"],"sourcesContent":["import { queryOptions } from '@tanstack/react-query';\nimport type { InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\nimport { queryKeys } from './keys';\n\nexport type PendingSecondFactorMethodsResponse = InferResponseType<\n (typeof client.api.auth)['2fa']['methods']['$get'],\n 200\n>;\n\nexport const getPendingSecondFactorMethodsQueryOptions = queryOptions({\n queryKey: queryKeys.pendingSecondFactorMethods(),\n queryFn: async () => {\n const res = await client.api.auth['2fa'].methods.$get();\n return jsonOk(res);\n },\n retry: false,\n});\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport { TRSpinner } from '@tinyrack/ui/components/spinner';\nimport { CircleAlertIcon, FingerprintIcon } from 'lucide-react';\nimport { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\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 { 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 {\n classifyPasskeyError,\n type PasskeyErrorReason,\n} from '#frontend/libs/passkey-error.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { authenticateWithPasskeyMutationOptions } from '#frontend/queries/passkey.ts';\nimport { getPendingSecondFactorMethodsQueryOptions } from '#frontend/queries/second-factor.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/verify/passkey/')({\n component: VerifyPasskey,\n validateSearch: SearchSchema,\n});\n\nfunction VerifyPasskey() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const [error, setError] = useState<{\n message: string;\n reason: PasskeyErrorReason;\n } | null>(null);\n const hasStarted = useRef(false);\n const pendingMethodsQuery = useQuery({\n ...getPendingSecondFactorMethodsQueryOptions,\n enabled: error !== null,\n });\n const canUseTotp =\n pendingMethodsQuery.data?.methods.includes('totp') ?? false;\n\n const getErrorMessage = (reason: PasskeyErrorReason) => {\n switch (reason) {\n case 'unsupported':\n return t('verifyPasskey.error.unsupported');\n case 'not_allowed':\n return t('verifyPasskey.error.notAllowed');\n case 'expired':\n return t('verifyPasskey.error.expired');\n case 'user_mismatch':\n return t('verifyPasskey.error.userMismatch');\n case 'verification_failed':\n return t('verifyPasskey.error.failed');\n }\n };\n\n const verifyMutation = useMutation({\n ...authenticateWithPasskeyMutationOptions,\n onSuccess: async (data) => {\n if (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 }\n },\n onError: async (err) => {\n const reason = classifyPasskeyError(err);\n setError({\n message: getErrorMessage(reason),\n reason,\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n // Auto-start passkey authentication on mount (with guard for StrictMode)\n useEffect(() => {\n if (hasStarted.current) return;\n hasStarted.current = true;\n verifyMutation.mutate();\n }, [verifyMutation]);\n\n return (\n <AuthLayout>\n {/*\n Centred: this screen has no form to scan, only a device prompt to wait\n on, so the eye has nothing to follow down a left edge.\n */}\n <AuthPageHeader\n align=\"center\"\n subtitle={t('verifyPasskey.subtitle')}\n title={t('verifyPasskey.title')}\n />\n\n <div className=\"flex flex-col items-center gap-tinyrack-lg\">\n <div className=\"flex size-tinyrack-3xl items-center justify-center rounded-tinyrack-full bg-tinyrack-surface-muted\">\n <FingerprintIcon\n aria-hidden\n className=\"size-tinyrack-2xl text-tinyrack-text-muted\"\n />\n </div>\n\n {verifyMutation.isPending && (\n <div className=\"flex flex-col items-center gap-tinyrack-sm\">\n <TRSpinner uiSize=\"md\" />\n <p className=\"text-center text-tinyrack-sm text-tinyrack-text-muted\">\n {t('verifyPasskey.waiting')}\n </p>\n </div>\n )}\n\n {error && (\n <div className=\"flex w-full flex-col items-center gap-tinyrack-md\">\n <Alert className=\"w-full\" icon={CircleAlertIcon} type=\"error\">\n {error.message}\n </Alert>\n {canUseTotp && (\n <TRLinkButton\n className=\"w-full\"\n intent=\"primary\"\n render={\n <Link search={extractOAuthParams(search)} to=\"/verify/totp\" />\n }\n uiSize=\"lg\"\n >\n {t('verifyPasskey.useTotp')}\n </TRLinkButton>\n )}\n <TRButton\n appearance={canUseTotp ? 'outline' : 'solid'}\n className=\"w-full\"\n intent={canUseTotp ? 'neutral' : 'primary'}\n onClick={() => {\n setError(null);\n verifyMutation.mutate();\n }}\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('verifyPasskey.retry')}\n </TRButton>\n </div>\n )}\n </div>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={search} to=\"/login\">\n {t('verifyPasskey.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{J as e,Z as t,i as n,q as r,s as i}from"./createLucideIcon-BPpAIXR_.js";import{On as a,Sn as o,Sr as s,i as c,r as l,t as u}from"./config-DTQCUlfZ.js";import{t as d}from"./mutationOptions-DyYFUbyn.js";import{t as f}from"./useMutation-BWZ0G4Td.js";import{nt as p}from"./shell-header-bar-JcFhS7mb.js";import{t as m}from"./auth-field-CWyXGKoC.js";import{t as h}from"./authorization-context-banner-DznMDPOX.js";import{t as g}from"./lock-7NRyvXBS.js";import{t as _}from"./mail-D0B_1Dzd.js";import{c as v,i as y,o as b}from"./zod-C87S6Tec.js";import{F as x,N as S,S as C,j as w,s as T}from"./index-CKpnrw9M.js";import{t as E}from"./auth-page-header-DgGAaIiP.js";import{t as D}from"./auth-layout-CiNn2-Nb.js";import{t as O}from"./promise-OpBtq8tG.js";import{t as k}from"./link-C-WdTj3F.js";import{n as A,t as j}from"./auth-footer-Cz5ivsDc.js";import{o as M}from"./passkey-J1qnYp9A.js";import{r as N,t as P}from"./standard-schema-e8gtSzGE.js";var F=t(e()),I=d({mutationFn:async e=>c(await l.api.auth.login.$post({json:e}))}),L=r();function R(){let{t:e,i18n:t}=n(),r=a(),c=s(),l=T.useSearch(),d=l.account_selection_state&&l.prompt?.split(` `).includes(`login`)?{...l,account_selected:1}:l,R=l.lang??t.language,{data:z}=p(u),B=z.registration.signup_notice?.[R]??z.registration.signup_notice?.[z.i18n.fallback_language],V=z.auth.password.enabled,H=z.auth.passkey.enabled,U=z.identity_providers.length+ +!!V+ +!!H>1,W=(0,F.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]),G=f({...I,onSuccess:async(e,t)=>{let n=e.user;if(n.email_verification_required&&!n.email_verified){r.navigate({to:`/verify/email`,search:{email:t.email,...S(l)}});return}c.setQueryData(C.queryKey,{user:n}),await O();let i=[];if(z.auth.password.totp.enabled&&n.totp_registered&&i.push(`totp`),z.auth.passkey.enabled&&n.passkey_count>0&&i.push(`passkey`),n.second_factor_required&&i.length===0){if(z.available_2fa_setup_methods.length>1)return r.navigate({to:`/setup/2fa`,search:S(l)});if(z.available_2fa_setup_methods.length===1)return z.available_2fa_setup_methods[0]===`totp`?r.navigate({to:`/setup/totp`,search:S(l)}):r.navigate({to:`/setup/passkey`,search:{...S(l),passkey_name:`default`}})}if(i.length>1)return r.navigate({to:`/verify/2fa`,search:S(l)});if(i.length===1)return i[0]===`totp`?r.navigate({to:`/verify/totp`,search:S(l)}):r.navigate({to:`/verify/passkey`,search:S(l)});if(x(l))window.location.href=w(d);else return r.navigate({to:`/profile`})},onError:t=>{Y(`email`,{type:`manual`,message:e(`login.error.failed`)})},onSettled:()=>{c.invalidateQueries({queryKey:C.queryKey})}}),K=(0,F.useCallback)(async e=>{e.user&&(c.setQueryData(C.queryKey,e),await O(),x(l)?window.location.href=w(d):r.navigate({to:`/profile`})),c.invalidateQueries({queryKey:C.queryKey})},[c,r,l,d]),q=(0,F.useRef)(null);(0,F.useEffect)(()=>{if(!(!H||!V))return q.current=new AbortController,M(K,q.current.signal),()=>{q.current?.abort()}},[H,V,K]);let{register:J,setError:Y,handleSubmit:X,formState:{errors:Z}}=N({defaultValues:{email:``,password:``},resolver:P(W)});return(0,L.jsxs)(D,{children:[(0,L.jsx)(E,{subtitle:e(`login.selectMethod.subtitle`)||void 0,title:e(`login.title`)}),(0,L.jsx)(h,{search:l}),V&&(0,L.jsxs)(`form`,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:X(async e=>{G.mutate(e)}),children:[(0,L.jsx)(m,{autoComplete:`username webauthn`,error:Z.email,icon:_,label:e(`login.email.label`),placeholder:e(`login.email.placeholder`),...J(`email`),type:`email`}),(0,L.jsx)(m,{autoComplete:`current-password`,error:Z.password,icon:g,label:e(`login.password.label`),labelAction:z.email.enabled?(0,L.jsx)(k,{className:`text-tinyrack-xs`,render:(0,L.jsx)(o,{to:`/password/forgot`}),children:e(`login.link.forgotPassword`)}):void 0,placeholder:e(`login.password.placeholder`),...J(`password`),type:`password`}),(0,L.jsx)(i,{className:`w-full`,intent:`primary`,loading:G.isPending,loadingLabel:e(`login.submitting`),type:`submit`,uiSize:`lg`,children:e(`login.submit`)})]}),B&&(0,L.jsx)(`div`,{className:`prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!`,dangerouslySetInnerHTML:{__html:B}}),(z.registration.public_registration||U)&&(0,L.jsxs)(j,{children:[z.registration.public_registration&&(0,L.jsx)(A,{link:(0,L.jsx)(o,{search:S(l),to:`/register`,children:e(`login.link.register`)}),text:e(`login.footer.noAccount`)}),U&&(0,L.jsx)(A,{link:(0,L.jsx)(o,{search:S(l),to:`/login`,children:e(`login.password.backToMethods`)})})]})]})}export{R as component};
2
- //# sourceMappingURL=password-Cuh9Hnjp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-Cuh9Hnjp.js","names":["standardSchemaResolver","useMutation","useQueryClient","useSuspenseQuery","Link","useRouter","TRButton","TRLink","LockIcon","MailIcon","useCallback","useEffect","useMemo","useRef","useForm","useTranslation","z","AuthField","AuthFooter","AuthFooterLink","AuthPageHeader","AuthorizationContextBanner","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","__html","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 { 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 { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.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>\n {/* Branding lives in the layout's brand panel — see /login. */}\n <AuthPageHeader\n subtitle={t('login.selectMethod.subtitle') || undefined}\n title={t('login.title')}\n />\n\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <form\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 </form>\n )}\n\n {implicitNotice && (\n <div\n className=\"prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!\"\n dangerouslySetInnerHTML={{ __html: implicitNotice }}\n />\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}from"./index-CKpnrw9M.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=password-huNZDYU9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-huNZDYU9.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 { 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 { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.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>\n {/* Branding lives in the layout's brand panel — see /login. */}\n <AuthPageHeader\n subtitle={t('login.selectMethod.subtitle') || undefined}\n title={t('login.title')}\n />\n\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <form\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 </form>\n )}\n\n {implicitNotice && (\n <div\n className=\"prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!\"\n dangerouslySetInnerHTML={{ __html: implicitNotice }}\n />\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":"wCAqBsF,IAAAC,EAA7ED"}
@@ -1,2 +0,0 @@
1
- import{i as e,r as t}from"./config-DTQCUlfZ.js";import{t as n}from"./mutationOptions-DyYFUbyn.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-sU5KkBKi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-reset-sU5KkBKi.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{G as e,J as t,Z as n,c as r,i,n as a,q as o,v as s}from"./createLucideIcon-BPpAIXR_.js";import{bn as c,bt as l,st as u}from"./config-DTQCUlfZ.js";import{g as d}from"./shell-header-bar-JcFhS7mb.js";import{n as f,t as p}from"./valueToPercent-LgbY_prH.js";var m=n(t(),1),h=m.createContext(void 0);function g(){let e=m.useContext(h);if(e===void 0)throw Error(s(38));return e}var _=o(),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}=i(),r=k(e,t);if(r===0)return null;let o=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[o],children:[(0,_.jsxs)(`div`,{className:`flex items-baseline justify-between gap-tinyrack-sm`,children:[(0,_.jsx)(E.Label,{render:(0,_.jsx)(a,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.label`)})}),(0,_.jsx)(E.Value,{render:(0,_.jsx)(a,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.${o}`)})})]}),(0,_.jsx)(E.Track,{children:(0,_.jsx)(E.Indicator,{})})]})}export{A as t};
2
- //# sourceMappingURL=password-strength-BIPcWiM_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"password-strength-BIPcWiM_.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.29.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.29.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.29.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.29.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.29.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.29.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{G as e,J as t,Z as n,_ as r,b as i,c as a,i as o,q as s,v as c,x as l}from"./createLucideIcon-BPpAIXR_.js";import{F as u,G as d,P as f,S as ee,U as p,Vt as m,W as h,Zt as te,bn as g,bt as ne,k as _,q as re,xt as v}from"./config-DTQCUlfZ.js";import{A as ie,C as ae,D as oe,T as se,b as ce,c as le,k as y,m as b,x as ue,y as de}from"./shell-header-bar-JcFhS7mb.js";import{t as x}from"./useAriaLabelledBy-IIwdHUss.js";import{t as S}from"./field-BMT214_m.js";import{t as C}from"./separator-B0Bvh1he.js";var w=n(t(),1),T=w.createContext(void 0);function fe(){let e=w.useContext(T);if(e===void 0)throw Error(c(98));return e}function E(e,t,n){return{...e,value:t,index:n,filled:t!==``}}var D={value:()=>null,length:()=>null,...y},O={value:()=>null,index:()=>null,...y},k={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 A(e){return e===`none`?null:k[e]}function j(e){return(e??``).replace(/\s/g,``)}function pe(e,t){return t?e.replace(t.regexp,``):e}function M(e,t,n,r){let i=j(e),a=A(n),o=pe(i,a),s=i.length>o.length;if(r){let e=r(o);s||=o.length>e.length,o=pe(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 N(e,t,n,r){return M(e,t,n,r)[0]}function me(e,t,n,r,i,a){let o=N(n,r,i,a);return N(`${e.slice(0,t)}${o}${e.slice(t+o.length)}`,r,i,a)}function P(e,t){return t<0||t>=e.length?e:`${e.slice(0,t)}${e.slice(t+1)}`}var F=s(),I=w.forwardRef(function(e,t){let{"aria-describedby":n,"aria-labelledby":o,id:s,autoComplete:c=`one-time-code`,defaultValue:d,value:ee,onValueChange:p,onValueComplete:m,form:h,length:g,autoSubmit:re=!1,mask:le=!1,inputMode:y,validationType:S=`numeric`,normalizeValue:C,disabled:fe=!1,readOnly:E=!1,required:O=!1,name:k,onValueInvalid:j,render:pe,className:me,style:P,...I}=e,{setDirty:R,validityData:z,disabled:B,setFilled:V,invalid:H,name:he,state:ge,validation:U,validationMode:_e,setFocused:ve,setTouched:ye}=oe(),{clearErrors:be}=ce(),{getDescriptionProps:xe,labelId:Se}=ae(),W=B||fe,G=he??k,[Ce,we]=ie({controlled:ee,default:d,name:`OTPField`,state:`value`}),K=w.useRef(null),q=w.useRef([]),Te=w.useRef(null),J=w.useRef(null),Ee=w.useMemo(()=>({get current(){return q.current[0]??null}}),[]),Y=ue({id:s}),De=x(o,Se,Ee,!0,Y),Oe=o==null?De:void 0,ke=L(n,xe({})[`aria-describedby`]),Ae=A(S),je=Ae?.slotPattern,Me=Ae?.getRootPattern(g),Ne=y??Ae?.inputMode,Pe=Number.isInteger(g)&&g>0,X=N(Ce,g,S,C),Z=_(X),Q=X!==``,[Fe,Ie]=w.useState(0),[Le,Re]=w.useState(()=>Math.min(X.length,g-1)),[ze,Be]=w.useState(!1),Ve=ze?Math.min(Le,Math.max(g-1,0)):Math.min(X.length,g-1);i(()=>{V(Q)},[Q,V]),se(Ee,Y,X,void 0,!W,k);let $=l(e=>{let t=Math.min(Math.max(e,0),Math.max(q.current.length-1,0)),n=q.current[t];n?.focus(),n?.select()}),He=l((e,t)=>{Te.current={index:e,value:t}});function Ue(){let e=U.inputRef.current?.form??q.current[0]?.form??null;if(h){let t=r(K.current).getElementById(h);t?.tagName===`FORM`&&(e=t)}e&&typeof e.requestSubmit==`function`&&e.requestSubmit()}function We(e,t){m?.(e,t),re&&Ue()}de(X,()=>{be(G),R(X!==z.initialValue),U.change(X);let e=Te.current;e!=null&&(Te.current=null,e.value===X&&$(e.index));let t=J.current;t!=null&&(J.current=null,t.value===X&&We(X,t.eventDetails))});let Ge=l((e,t)=>{let n=N(e,g,S,C),r=(t.reason===`input-change`||t.reason===`input-paste`)&&n.length===g&&(Z.current.length!==g||t.reason===`input-paste`)?u(t.reason,t.event):null;return n===Z.current?(r!=null&&We(n,r),null):(p?.(n,t),t.isCanceled?null:(we(n),r==null?n.length!==g&&(J.current=null):J.current={value:n,eventDetails:r},n))}),Ke=l((e,t)=>{j?.(e,t)}),qe=l((e,t)=>{if(e>Z.current.length){$(Math.min(Z.current.length,g-1));return}Re(e),Be(!0),ve(!0),t.currentTarget.select()}),Je=l(e=>{te(K.current,e.relatedTarget)||(ye(!0),Be(!1),ve(!1),_e===`onBlur`&&U.commit(Z.current))}),Ye=w.useCallback(e=>{if(Y!=null)return e===0?Y:`${Y}-${e+1}`},[Y]),Xe=w.useMemo(()=>({...ge,complete:X.length===g,disabled:W,filled:Q,focused:ze,length:g,readOnly:E,required:O,value:X}),[W,ge,Q,ze,g,E,O,X]),Ze=w.useMemo(()=>({autoComplete:c,activeIndex:Ve,disabled:W,form:h,focusInput:$,queueFocusInput:He,getInputId:Ye,handleInputBlur:Je,handleInputFocus:qe,inputMode:Ne,inputAriaLabelledBy:Oe,invalid:H,length:g,mask:le,pattern:je,reportValueInvalid:Ke,readOnly:E,required:O,normalizeValue:C,setValue:Ge,state:Xe,validationType:S,value:X}),[Ve,c,W,$,h,Ye,Je,qe,Ne,Oe,H,g,le,je,He,E,Ke,O,C,Ge,Xe,S,X]),Qe=a(`div`,e,{ref:[t,K],state:Xe,props:[{role:`group`,"aria-describedby":ke,"aria-labelledby":De},I],stateAttributesMapping:D});return(0,F.jsx)(b,{elementsRef:q,onMapChange:e=>{Ie(e.size)},children:(0,F.jsxs)(T.Provider,{value:Ze,children:[Qe,Pe&&(0,F.jsx)(`input`,{...U.getValidationProps(W,{onFocus(){$(0)},onChange(e){if(e.nativeEvent.defaultPrevented||W||E)return;let t=e.currentTarget.value,[n,r]=M(t,g,S,C);r&&Ke(t,u(`input-change`,e.nativeEvent));let i=Ge(n,f(`input-change`,e.nativeEvent));i!=null&&i!==``&&He(i.length-1,i)}}),ref:U.inputRef,type:`text`,id:Y&&G==null?`${Y}-hidden-input`:void 0,form:h,name:G,value:X,autoComplete:c,inputMode:Ne,minLength:g,maxLength:g,pattern:Me,disabled:W,readOnly:E,required:O,"aria-hidden":!0,tabIndex:-1,style:G?v:ne})]})})});function L(...e){let t=e.flatMap(e=>e?.split(/\s+/).filter(Boolean)??[]);return t.length>0?Array.from(new Set(t)).join(` `):void 0}var R=g(w.forwardRef(function(e,t){let{"aria-label":n,"aria-labelledby":r,render:i,className:o,style:s,...c}=e,{activeIndex:l,autoComplete:te,disabled:g,form:ne,focusInput:_,queueFocusInput:v,getInputId:ie,handleInputBlur:ae,handleInputFocus:oe,inputMode:se,inputAriaLabelledBy:ce,invalid:y,length:b,mask:ue,pattern:de,reportValueInvalid:x,readOnly:S,required:C,normalizeValue:T,setValue:D,state:k,validationType:A,value:j}=fe(),{ref:pe,index:N}=le({guess:!0}),F=w.useRef(null),I=ee(),L=j[N]??``,R=E(k,L,N),z=n,B=r??ce,V=N===0?void 0:z,H={id:ie(N),value:L,type:ue?`password`:`text`,inputMode:se,autoComplete:N===0?te:`off`,autoCorrect:`off`,spellCheck:`false`,enterKeyHint:N===b-1?`done`:`next`,maxLength:N===0?b:void 0,tabIndex:l===N?0:-1,disabled:g,form:ne,pattern:de,readOnly:S,required:C,"aria-labelledby":V==null?B:void 0,"aria-invalid":!g&&y?!0:void 0,"aria-label":V,onMouseDown(e){e.defaultPrevented||g||(e.preventDefault(),_(N))},onFocus(e){e.defaultPrevented||g||oe(N,e)},onBlur(e){e.defaultPrevented||ae(e)},onChange(e){if(e.defaultPrevented||g||S)return;let t=e.currentTarget.value,[n,r]=M(t,b,A,T);if(r&&x(t,u(p,e.nativeEvent)),n===``){t===``?D(P(j,N),f(h,e.nativeEvent)):L!==``&&(e.currentTarget.value=L,e.currentTarget.select());return}let i=me(j,N,n,b,A,T),a=D(i,f(p,e.nativeEvent));if(a!=null){let e=Math.min(N+n.length,b-1);v(e,a)}},onKeyDown(e){if(e.defaultPrevented||g)return;let t=Math.max(b-1,0),n=Math.min(j.length,t),r=(e.ctrlKey||e.metaKey)&&!e.altKey,i=I===`rtl`,a=i?`ArrowRight`:`ArrowLeft`,o=i?`ArrowLeft`:`ArrowRight`;if(e.key===a){m(e),_(r?0:Math.max(0,N-1));return}if(e.key===o){m(e),_(r?n:Math.min(t,N+1));return}if(e.key===`Home`||e.key===`ArrowUp`){m(e),_(0);return}if(e.key===`End`||e.key===`ArrowDown`){m(e),_(n);return}if(S)return;function s(t,n){let r=D(t,f(re,e.nativeEvent));r!=null&&v(n,r)}if(e.key===`Backspace`&&r){m(e),s(``,0);return}if(e.key===`Delete`){m(e),s(P(j,N),N);return}let c=e.currentTarget.value,l=e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===c.length;if(e.key.length===1&&l&&L===e.key){m(e),N<b-1&&_(N+1);return}if(e.key===`Backspace`){m(e);let t=Math.max(0,N-1);s(P(j,L===``?t:N),t)}},onPaste(e){if(e.defaultPrevented||g||S)return;let t=``;try{t=e.clipboardData?.getData(`text/plain`)??``}catch{return}e.preventDefault();let[n,r]=M(t,b,A,T);if(r&&x(t,u(d,e.nativeEvent)),n===``)return;let i=D(me(j,N,n,b,A,T),f(d,e.nativeEvent));if(i!=null){let e=Math.min(N+n.length,b-1);v(e,i)}}};return a(`input`,e,{ref:[t,pe,F],state:R,props:[H,c],stateAttributesMapping:O})}),`tr-otp-field-digit`,{tracksFocusModality:!0});function z({appearance:t=`solid`,className:n,layout:r=`compact`,uiSize:i=`md`,...a}){return(0,F.jsx)(I,{...a,className:e(`tr-otp-field`,n),"data-appearance":t,"data-layout":r,"data-ui-size":i})}function B({className:t,orientation:n=`vertical`,...r}){return(0,F.jsx)(C,{...r,className:e(`tr-otp-field-separator`,t),orientation:n})}var V={Root:z,Input:R,Separator:B},H=(0,w.forwardRef)(function({length:e=6,error:t,disabled:n=!1,onComplete:r,onChange:i,value:a,autoFocus:s=!1,className:c=``},l){let{t:u}=o(),d=(0,w.useId)(),f=(0,w.useRef)(null),[ee,p]=(0,w.useState)(a??``);(0,w.useEffect)(()=>{a!==void 0&&p(a)},[a]),(0,w.useImperativeHandle)(l,()=>({focus:()=>{(f.current?.querySelector(`input`))?.focus()},clear:()=>{p(``),(f.current?.querySelector(`input`))?.focus()}}),[]);let m=(0,w.useCallback)(e=>{p(e),i?.(e)},[i]),h=(0,w.useCallback)(e=>{r?.(e)},[r]);return(0,F.jsxs)(S.Root,{className:`w-full ${c}`,ref:f,children:[(0,F.jsx)(S.Label,{className:`sr-only`,htmlFor:d,children:u(`common.otp.label`)}),(0,F.jsx)(V.Root,{disabled:n,id:d,layout:`stretch`,length:e,onValueChange:m,onValueComplete:h,uiSize:`lg`,validationType:`numeric`,value:ee,children:Array.from({length:e},(t,n)=>(0,F.jsx)(V.Input,{"aria-label":n===0?void 0:u(`common.otp.digit`,{label:u(`common.otp.label`),position:n+1,total:e}),autoFocus:s&&n===0},n))}),t&&(0,F.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-danger-foreground text-tinyrack-sm`,"data-testid":`pin-input-error`,children:t.message})]})});export{H as t};
2
- //# sourceMappingURL=pin-input-CITrr-Yc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pin-input-CITrr-Yc.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.29.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.29.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.29.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.29.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 {\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 <p\n className=\"mt-tinyrack-sm text-center text-tinyrack-danger-foreground text-tinyrack-sm\"\n data-testid=\"pin-input-error\"\n >\n {error.message}\n </p>\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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"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./createLucideIcon-BPpAIXR_.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
2
- //# sourceMappingURL=plus-DSBBSrgj.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plus-DSBBSrgj.js","names":[],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/plus.mjs"],"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 [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAaA,IAAM,EAAO,EAAiB,OAAQ,CAHpC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAEL,CAAU"}
@@ -1,2 +0,0 @@
1
- import{q as e}from"./createLucideIcon-BPpAIXR_.js";import{I as t}from"./index-CKpnrw9M.js";var n=e();function r(e){return(0,n.jsx)(t,{...e,onUnauthorized:()=>{window.location.href=`/login`}})}export{r as errorComponent};
2
- //# sourceMappingURL=profile-BHPL9Px_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-BHPL9Px_.js","names":["RouteErrorFallback","PasswordModalType","TotpModalType","PasskeyModalType","ProfileError","props","ErrorComponentProps","window","location","href","errorComponent"],"sources":["../../../frontend/src/routes/profile/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport {\n createFileRoute,\n type ErrorComponentProps,\n redirect,\n useRouter,\n} from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCard } from '@tinyrack/ui/components/card';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { CircleAlertIcon, LogOutIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { DangerZoneSection } from '#frontend/components/profile/danger-zone-section.tsx';\nimport { LinkedAccountsSection } from '#frontend/components/profile/linked-accounts-section.tsx';\nimport { PasskeySection } from '#frontend/components/profile/passkey-section.tsx';\nimport { PasswordSection } from '#frontend/components/profile/password-section.tsx';\nimport { TotpSection } from '#frontend/components/profile/totp-section.tsx';\nimport { UnlinkOAuthModal } from '#frontend/components/profile/unlink-oauth-modal.tsx';\nimport { UserInfoSection } from '#frontend/components/profile/user-info-section.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { InitialAvatar } from '#frontend/components/ui/initial-avatar.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AppLayout } from '#frontend/features/layout/app-layout.tsx';\nimport { ChangePasswordModal } from '#frontend/features/profile/change-password-modal.tsx';\nimport { DeleteAccountModal } from '#frontend/features/profile/delete-account-modal.tsx';\nimport { DisableTotpModal } from '#frontend/features/profile/disable-totp-modal.tsx';\nimport { ManagePasskeysModal } from '#frontend/features/profile/manage-passkeys-modal.tsx';\nimport { RegenerateTotpRecoveryCodesModal } from '#frontend/features/profile/regenerate-totp-recovery-codes-modal.tsx';\nimport { RemovePasswordModal } from '#frontend/features/profile/remove-password-modal.tsx';\nimport { SetPasswordModal } from '#frontend/features/profile/set-password-modal.tsx';\nimport { SetupPasskeyModal } from '#frontend/features/profile/setup-passkey-modal.tsx';\nimport { SetupTotpModal } from '#frontend/features/profile/setup-totp-modal.tsx';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { logoutMutationOptions } from '#frontend/queries/logout.ts';\nimport {\n getOAuthAuthorizeUrl,\n oauthAccountsQueryOptions,\n unlinkOAuthMutationOptions,\n} from '#frontend/queries/oauth.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\n\ntype PasswordModalType = 'set' | 'change' | 'remove' | null;\ntype TotpModalType = 'setup' | 'disable' | 'regenerate' | null;\ntype PasskeyModalType = 'setup' | 'manage' | null;\n\nconst SearchSchema = z.object({\n oauth_error: z.string().optional(),\n oauth_error_description: z.string().optional(),\n});\n\nconst OAUTH_ERROR_I18N_MAP: Record<string, string> = {\n access_denied: 'oauth.error.accessDenied',\n temporarily_unavailable: 'oauth.error.temporarilyUnavailable',\n server_error: 'oauth.error.serverError',\n};\n\nfunction ProfileError(props: ErrorComponentProps) {\n return (\n <RouteErrorFallback\n {...props}\n onUnauthorized={() => {\n window.location.href = '/login';\n }}\n />\n );\n}\n\nexport const Route = createFileRoute('/profile/')({\n component: Profile,\n errorComponent: ProfileError,\n validateSearch: SearchSchema,\n beforeLoad: async ({ context }) => {\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n loader: async ({ context }) => {\n await Promise.all([\n context.queryClient.ensureQueryData(getSessionQueryOptions),\n context.queryClient.ensureQueryData(oauthAccountsQueryOptions),\n context.queryClient.ensureQueryData(appConfigQueryOptions),\n ]);\n },\n});\n\nfunction Profile() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n\n const oauthError = search.oauth_error;\n const oauthErrorMessage = oauthError\n ? t(OAUTH_ERROR_I18N_MAP[oauthError] ?? 'oauth.error.failed')\n : undefined;\n const [unlinkingProvider, setUnlinkingProvider] = useState<string | null>(\n null,\n );\n const [unlinkModal, setUnlinkModal] = useState<{\n id: string;\n name: string;\n } | null>(null);\n const [passwordModal, setPasswordModal] = useState<PasswordModalType>(null);\n const [totpModal, setTotpModal] = useState<TotpModalType>(null);\n const [passkeyModal, setPasskeyModal] = useState<PasskeyModalType>(null);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n\n const { data: session } = useSuspenseQuery(getSessionQueryOptions);\n const { data: oauthAccountsData } = useSuspenseQuery(\n oauthAccountsQueryOptions,\n );\n const { data: appConfig } = useSuspenseQuery(appConfigQueryOptions);\n\n const logoutMutation = useMutation({\n ...logoutMutationOptions,\n onSuccess: async () => {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: null,\n });\n await tick();\n router.navigate({\n to: '/login',\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const unlinkMutation = useMutation({\n ...unlinkOAuthMutationOptions,\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: oauthAccountsQueryOptions.queryKey,\n });\n },\n onSettled: () => {\n setUnlinkingProvider(null);\n },\n });\n\n const handleUnlinkConfirm = async () => {\n if (!unlinkModal) return;\n setUnlinkingProvider(unlinkModal.id);\n await unlinkMutation.mutateAsync(unlinkModal.id);\n };\n\n if (!session.user) {\n return null;\n }\n\n const user = session.user;\n const availableProviders = oauthAccountsData.available_providers;\n const hasLinkedOAuth = availableProviders.some((p) => p.linked);\n const isConfigManaged = user.managed_by === 'config';\n\n const passwordAuthMethod = appConfig.auth.password;\n const passkeyAuthMethod = appConfig.auth.passkey;\n const totpEnabled = passwordAuthMethod.totp.enabled;\n const passkeyEnabled = passkeyAuthMethod.enabled;\n\n const accountDeletionEnabled = appConfig.account_deletion.enabled;\n const retentionPeriod = appConfig.account_deletion.retention;\n\n const retentionDays = (() => {\n const match = retentionPeriod.match(/^(\\d+)([dmy])$/);\n if (!match) return 30;\n const value = parseInt(match[1], 10);\n const unit = match[2];\n switch (unit) {\n case 'd':\n return value;\n case 'm':\n return value * 30;\n case 'y':\n return value * 365;\n default:\n return 30;\n }\n })();\n\n const showPasswordSection = true;\n const showTotpSection = !isConfigManaged && totpEnabled;\n const showPasskeySection = !isConfigManaged && passkeyEnabled;\n const showLinkedAccounts = availableProviders.length > 0;\n const hasSecurityOptions =\n showPasswordSection || showTotpSection || showPasskeySection;\n\n return (\n <AppLayout\n headerActions={\n <TRButton\n appearance=\"ghost\"\n /*\n The visible label collapses below `sm:`, which would leave the\n control unnamed on a phone. `profile.logout` is the same string\n the label renders, so this does not shadow it.\n */\n aria-label={t('profile.logout')}\n data-testid=\"profile-logout\"\n disabled={logoutMutation.isPending}\n loading={logoutMutation.isPending}\n onClick={() => logoutMutation.mutate()}\n type=\"button\"\n uiSize=\"sm\"\n >\n {logoutMutation.isPending ? undefined : (\n <>\n <LogOutIcon aria-hidden className=\"size-tinyrack-lg\" />\n <span className=\"hidden sm:inline\">{t('profile.logout')}</span>\n </>\n )}\n </TRButton>\n }\n >\n <div className=\"flex items-center gap-tinyrack-lg\">\n <InitialAvatar email={user.email} size=\"lg\" />\n <div className=\"flex min-w-0 flex-col gap-tinyrack-3xs\">\n <AuthPageHeader title={t('profile.title')} />\n {/*\n Rendered here rather than as the header's `subtitle`: this node\n carries a testid and needs to truncate, neither of which the\n shared header does, and growing its API for one non-auth caller\n would be the wrong trade.\n */}\n <TRText\n as=\"p\"\n color=\"muted\"\n data-testid=\"profile-user-email\"\n truncate\n variant=\"bodySm\"\n >\n {user.email}\n </TRText>\n </div>\n </div>\n\n {oauthErrorMessage && (\n <Alert icon={CircleAlertIcon} type=\"error\">\n {oauthErrorMessage}\n </Alert>\n )}\n\n {user && <UserInfoSection user={user} />}\n\n {hasSecurityOptions && (\n <TRCard.Root variant=\"outlined\">\n <TRCard.Header className=\"border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md\">\n <TRCard.Title>{t('profile.security.title')}</TRCard.Title>\n <TRCard.Description>\n {t('profile.security.description')}\n </TRCard.Description>\n </TRCard.Header>\n {showTotpSection && user.totp_recovery_codes_missing && (\n <div\n className=\"border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md\"\n data-testid=\"profile-totp-recovery-warning\"\n >\n <Alert icon={CircleAlertIcon} type=\"warning\">\n {t('profile.totp.recoveryCodesMissing')}\n </Alert>\n </div>\n )}\n <TRCard.Content className=\"divide-y divide-tinyrack-border p-0\">\n {showPasswordSection && (\n <PasswordSection\n hasLinkedOAuth={hasLinkedOAuth}\n hasPassword={user.has_password}\n hasSecondFactorOnly={\n user.has_password &&\n !hasLinkedOAuth &&\n (user.totp_registered || user.passkey_count > 0)\n }\n isConfigManaged={isConfigManaged}\n onOpenModal={setPasswordModal}\n />\n )}\n {showTotpSection && (\n <TotpSection\n onOpenModal={setTotpModal}\n recoveryCodesMissing={user.totp_recovery_codes_missing}\n totpEnabled={user.totp_registered}\n />\n )}\n {showPasskeySection && (\n <PasskeySection\n onOpenModal={setPasskeyModal}\n passkeyCount={user.passkey_count}\n />\n )}\n </TRCard.Content>\n </TRCard.Root>\n )}\n\n {showLinkedAccounts && (\n <LinkedAccountsSection\n getAuthorizeUrl={getOAuthAuthorizeUrl}\n onUnlinkRequest={(provider) =>\n setUnlinkModal({\n id: provider.id,\n name: provider.display_name,\n })\n }\n providers={availableProviders}\n unlinkingProvider={unlinkingProvider}\n />\n )}\n\n <DangerZoneSection\n isConfigManaged={isConfigManaged}\n isDeletionEnabled={accountDeletionEnabled}\n onDeleteClick={() => setShowDeleteModal(true)}\n />\n\n <SetPasswordModal\n isOpen={passwordModal === 'set'}\n onClose={() => setPasswordModal(null)}\n />\n <ChangePasswordModal\n isOpen={passwordModal === 'change'}\n onClose={() => setPasswordModal(null)}\n />\n <RemovePasswordModal\n isOpen={passwordModal === 'remove'}\n onClose={() => setPasswordModal(null)}\n />\n\n <SetupTotpModal\n isOpen={totpModal === 'setup'}\n onClose={() => setTotpModal(null)}\n />\n <DisableTotpModal\n isOpen={totpModal === 'disable'}\n onClose={() => setTotpModal(null)}\n />\n <RegenerateTotpRecoveryCodesModal\n isOpen={totpModal === 'regenerate'}\n onClose={() => setTotpModal(null)}\n />\n\n <SetupPasskeyModal\n isOpen={passkeyModal === 'setup'}\n onClose={() => setPasskeyModal(null)}\n />\n <ManagePasskeysModal\n isOpen={passkeyModal === 'manage'}\n onAddNew={() => setPasskeyModal('setup')}\n onClose={() => setPasskeyModal(null)}\n />\n\n <UnlinkOAuthModal\n isOpen={unlinkModal !== null}\n isPending={unlinkMutation.isPending}\n onClose={() => setUnlinkModal(null)}\n onConfirm={handleUnlinkConfirm}\n providerName={unlinkModal?.name ?? ''}\n />\n\n <DeleteAccountModal\n isOpen={showDeleteModal}\n onClose={() => setShowDeleteModal(false)}\n retentionDays={retentionDays}\n />\n </AppLayout>\n );\n}\n"],"mappings":"qGAgEA,SAASI,EAAaC,EAA4B,CAChD,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAIA,EACJ,mBAAsB,CACpBE,OAAOC,SAASC,KAAO,QACzB,CAAE,CAAA,CAGR"}
@@ -1,2 +0,0 @@
1
- import{J as e,U as t,Z as n,i as r,n as i,q as a,r as o,s,t as c}from"./createLucideIcon-BPpAIXR_.js";import{On as l,Sr as u,i as d,n as f,r as p,t as m}from"./config-DTQCUlfZ.js";import{t as h}from"./mutationOptions-DyYFUbyn.js";import{t as g}from"./useMutation-BWZ0G4Td.js";import{a as _,j as v,nt as y,r as b,t as x}from"./shell-header-bar-JcFhS7mb.js";import{t as S}from"./useQuery-Ccv_nzQl.js";import{a as C,i as w,n as T,r as E,t as D}from"./use-totp-setup-DtlgPUPJ.js";import{t as O}from"./auth-field-CWyXGKoC.js";import{t as k}from"./fingerprint-pattern-DP62Vk8x.js";import{t as A}from"./key-round-CdvHb8vT.js";import{i as j}from"./provider-logos-u1YURWQr.js";import{n as ee,t as te}from"./logout-B5T52P8u.js";import{t as M}from"./shield-check-D_p8H0ni.js";import{t as N}from"./trash-2-DZdKBLvC.js";import{t as P}from"./triangle-alert-CqNn0kPs.js";import{t as F}from"./zod-C87S6Tec.js";import{B as I,C as ne,R as L,S as R,T as re,w as z,x as ie,z as ae}from"./index-CKpnrw9M.js";import{t as oe}from"./badge-CsOfUji0.js";import{t as se}from"./auth-page-header-DgGAaIiP.js";import{t as B}from"./alert-leqyvHOp.js";import{t as ce}from"./initial-avatar-E5DK9Igm.js";import{t as V}from"./promise-OpBtq8tG.js";import{n as H,t as U}from"./modal-tByFpy18.js";import{a as W,i as G,n as K,r as q}from"./passkey-J1qnYp9A.js";import{r as J,t as Y}from"./standard-schema-e8gtSzGE.js";import{n as le,r as ue}from"./totp-BNZ904Zm.js";var de=c(`cloud`,[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]),fe=c(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),pe=c(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),me=c(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),he=c(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),X=n(e(),1),Z=a();function ge({isConfigManaged:e,isDeletionEnabled:t,onDeleteClick:n}){let{t:a}=r();return t?(0,Z.jsxs)(I.Root,{className:`border-tinyrack-danger-border bg-tinyrack-danger-surface`,variant:`outlined`,children:[(0,Z.jsxs)(I.Header,{className:`border-tinyrack-danger-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,Z.jsx)(P,{"aria-hidden":!0,className:`size-tinyrack-lg text-tinyrack-danger-foreground`}),(0,Z.jsx)(I.Title,{className:`text-tinyrack-danger-foreground`,children:a(`profile.dangerZone.title`)})]}),(0,Z.jsx)(I.Description,{children:a(`profile.dangerZone.description`)})]}),(0,Z.jsx)(I.Content,{className:`px-tinyrack-lg py-tinyrack-md`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(i,{as:`p`,variant:`bodySm`,weight:`medium`,children:a(`profile.deleteAccount.title`)}),(0,Z.jsx)(i,{as:`p`,color:`muted`,variant:`caption`,children:a(e?`profile.deleteAccount.configManaged`:`profile.deleteAccount.description`)})]}),(0,Z.jsxs)(s,{appearance:`outline`,"data-testid":`profile-delete-account`,disabled:e,intent:`danger`,onClick:n,type:`button`,uiSize:`sm`,children:[(0,Z.jsx)(N,{"aria-hidden":!0,className:`size-tinyrack-lg`}),a(`profile.deleteAccount.button`)]})]})})]}):null}function Q({icon:e,active:t,title:n,status:r,note:a,actions:o}){let s;return s=(0,X.isValidElement)(e)?e:(0,Z.jsx)(e,{"aria-hidden":!0,className:`size-tinyrack-lg ${t?`text-tinyrack-success-foreground`:`text-tinyrack-text-muted`}`}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg p-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-tinyrack-md`,children:[(0,Z.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-tinyrack-md ${t?`bg-tinyrack-success-surface`:`bg-tinyrack-surface-muted`}`,children:s}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(i,{as:`div`,variant:`bodySm`,weight:`medium`,children:n}),(0,Z.jsx)(i,{as:`div`,color:`muted`,variant:`caption`,children:r}),a]})]}),o&&(0,Z.jsx)(`div`,{className:`flex shrink-0 flex-wrap justify-end gap-tinyrack-xs`,children:o})]})}function _e({providers:e,unlinkingProvider:t,getAuthorizeUrl:n,onUnlinkRequest:i}){let{t:a}=r();return e.length===0?null:(0,Z.jsxs)(I.Root,{variant:`outlined`,children:[(0,Z.jsxs)(I.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(I.Title,{children:a(`profile.linkedAccounts.title`)}),(0,Z.jsx)(I.Description,{children:a(`profile.linkedAccounts.description`)})]}),(0,Z.jsx)(I.Content,{className:`divide-y divide-tinyrack-border p-0`,children:e.map(e=>(0,Z.jsx)(Q,{actions:e.linked?(0,Z.jsx)(s,{appearance:`ghost`,intent:`danger`,loading:t===e.id,loadingLabel:a(`profile.linkedAccounts.unlinking`),onClick:()=>i(e),type:`button`,uiSize:`sm`,children:t===e.id?void 0:a(`profile.linkedAccounts.unlink`)}):(0,Z.jsx)(ae,{appearance:`outline`,intent:`neutral`,render:(0,Z.jsx)(`a`,{href:n(e.id,`link`,`/profile`)}),uiSize:`sm`,children:a(`profile.linkedAccounts.link`)}),active:e.linked,icon:(0,Z.jsx)(j,{className:`size-tinyrack-lg`,iconUrl:e.icon_url,providerId:e.id}),status:e.linked?a(`profile.linkedAccounts.connected`):a(`profile.linkedAccounts.notConnected`),title:e.display_name},e.id))})]})}function ve({passkeyCount:e,onOpenModal:t}){let{t:n}=r(),i=e>0;return(0,Z.jsx)(Q,{actions:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:()=>t(i?`manage`:`setup`),type:`button`,uiSize:`sm`,children:n(i?`profile.passkey.manage`:`profile.passkey.add`)}),active:i,icon:k,status:i?n(`profile.passkey.status.enabled`,{count:e}):n(`profile.passkey.status.disabled`),title:n(`profile.passkey.title`)})}function ye({hasPassword:e,hasLinkedOAuth:t,isConfigManaged:n,hasSecondFactorOnly:a,onOpenModal:o}){let{t:c}=r();return(0,Z.jsx)(Q,{actions:n?void 0:e?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-change`,intent:`primary`,onClick:()=>o(`change`),type:`button`,uiSize:`sm`,children:c(`profile.password.change`)}),t?(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-remove`,intent:`danger`,onClick:()=>o(`remove`),type:`button`,uiSize:`sm`,children:c(`profile.password.remove`)}):null,!t&&a&&(0,Z.jsxs)(b.Root,{children:[(0,Z.jsx)(b.Trigger,{render:(0,Z.jsx)(s,{appearance:`ghost`,disabled:!0,type:`button`,uiSize:`sm`,children:c(`profile.password.remove`)})}),(0,Z.jsx)(b.Portal,{children:(0,Z.jsx)(b.Positioner,{children:(0,Z.jsx)(b.Popup,{className:`max-w-tinyrack-measure-lg rounded-tinyrack-md border border-tinyrack-border bg-tinyrack-surface p-tinyrack-md text-tinyrack-text text-tinyrack-xs shadow-tinyrack-overlay`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-tinyrack-sm`,children:[(0,Z.jsx)(C,{"aria-hidden":!0,className:`size-tinyrack-lg shrink-0 text-tinyrack-warning-foreground`}),(0,Z.jsx)(`div`,{children:c(`profile.password.removeDisabledReason`)})]})})})})]})]}):(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-set`,intent:`primary`,onClick:()=>o(`set`),type:`button`,uiSize:`sm`,children:c(`profile.password.set`)}),active:e,icon:A,note:n?(0,Z.jsxs)(i,{as:`div`,className:`flex items-center gap-tinyrack-xs`,color:`muted`,variant:`caption`,children:[(0,Z.jsx)(me,{"aria-hidden":!0,className:`size-tinyrack-md shrink-0`}),(0,Z.jsx)(`span`,{children:c(`profile.password.configManaged`)})]}):void 0,status:c(e?`profile.password.status.set`:`profile.password.status.notSet`),title:c(`profile.password.title`)})}function be({totpEnabled:e,recoveryCodesMissing:t,onOpenModal:n}){let{t:i}=r();return(0,Z.jsx)(Q,{actions:e?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-regenerate`,intent:`primary`,onClick:()=>n(`regenerate`),type:`button`,uiSize:`sm`,children:i(`profile.totp.regenerate`)}),(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-disable`,intent:`danger`,onClick:()=>n(`disable`),type:`button`,uiSize:`sm`,children:i(`profile.totp.disable`)})]}):(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-enable`,intent:`primary`,onClick:()=>n(`setup`),type:`button`,uiSize:`sm`,children:i(`profile.totp.enable`)}),active:e,icon:M,status:i(e?t?`profile.totp.status.recoveryCodesMissing`:`profile.totp.status.enabled`:`profile.totp.status.disabled`),title:i(`profile.totp.title`)})}var xe={error:L,warning:P,info:C};function $({variant:e,children:t}){return(0,Z.jsx)(B,{"data-testid":`alert-banner-${e}`,icon:xe[e],type:e,children:t})}function Se({isOpen:e,onClose:t,providerName:n,isPending:i,onConfirm:a}){let{t:o}=r(),[c,l]=(0,X.useState)(null),u=()=>{i||(l(null),t())};return(0,Z.jsx)(U,{description:o(`profile.linkedAccounts.unlinkModal.description`,{provider:n}),icon:fe,isOpen:e,onClose:u,preventClose:i,title:o(`profile.linkedAccounts.unlinkModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,children:[(0,Z.jsx)($,{variant:`warning`,children:o(`profile.linkedAccounts.unlinkModal.warning`,{provider:n})}),c&&(0,Z.jsx)($,{variant:`error`,children:c}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`unlink-oauth-cancel`,disabled:i,intent:`neutral`,onClick:u,type:`button`,uiSize:`sm`,children:o(`profile.linkedAccounts.unlinkModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`unlink-oauth-unlink`,disabled:i,intent:`danger`,loading:i,loadingLabel:o(`profile.linkedAccounts.unlinking`),onClick:async()=>{l(null);try{await a(),u()}catch{l(o(`profile.linkedAccounts.unlinkError`))}},type:`button`,uiSize:`sm`,children:o(`profile.linkedAccounts.unlink`)})]})]})})}function Ce({label:e,value:t}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(i,{className:`shrink-0`,color:`muted`,variant:`caption`,children:e}),(0,Z.jsx)(i,{truncate:!0,variant:`bodySm`,weight:`medium`,children:t})]})}function we({user:e}){let{t}=r();return(0,Z.jsxs)(I.Root,{variant:`outlined`,children:[(0,Z.jsxs)(I.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(I.Title,{children:t(`profile.account.title`)}),(0,Z.jsx)(I.Description,{children:t(`profile.account.description`)})]}),(0,Z.jsxs)(I.Content,{className:`divide-y divide-tinyrack-border p-0`,children:[(0,Z.jsx)(Ce,{label:t(`profile.id.label`),value:e.sub}),(0,Z.jsx)(Ce,{label:t(`profile.email.label`),value:e.email})]})]})}function Te({children:e,headerActions:t}){return(0,Z.jsxs)(`div`,{className:`flex min-h-dvh flex-col bg-tinyrack-surface`,children:[(0,Z.jsx)(v,{}),(0,Z.jsx)(x,{actions:t,brand:!0}),(0,Z.jsx)(`main`,{className:`flex flex-1 justify-center px-tinyrack-lg py-tinyrack-xl`,children:(0,Z.jsx)(`div`,{className:`auth-enter flex w-full max-w-tinyrack-overlay-md flex-col gap-tinyrack-xl`,children:e})}),(0,Z.jsx)(_,{})]})}var Ee=h({mutationFn:async e=>d(await p.api.user.password.$post({json:e}))}),De=h({mutationFn:async e=>d(await p.api.user.password.$put({json:e}))}),Oe=h({mutationFn:async e=>d(await p.api.user.password.$delete({json:e}))});function ke({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),{data:a}=y(m),c=a.auth.password.policy,l=J({resolver:Y((0,X.useMemo)(()=>F.object({currentPassword:F.string().min(1,n(`validation.password.required`)),newPassword:F.string().min(c.min_length,n(`validation.password.min`,{count:c.min_length})).max(c.max_length,n(`validation.password.max`,{count:c.max_length})),confirmPassword:F.string()}).refine(e=>e.newPassword===e.confirmPassword,{message:n(`validation.confirmPassword.mismatch`),path:[`confirmPassword`]}),[c.max_length,c.min_length,n])),defaultValues:{currentPassword:``,newPassword:``,confirmPassword:``}}),d=g({...De,onSuccess:()=>{i.invalidateQueries({queryKey:R.queryKey}),f()}}),f=()=>{l.reset(),t()},p=l.handleSubmit(async e=>{try{await d.mutateAsync({current_password:e.currentPassword,new_password:e.newPassword})}catch(e){e instanceof o&&e.code===`INVALID_CURRENT_PASSWORD`?l.setError(`currentPassword`,{message:n(`profile.password.changeModal.invalidCurrent`)}):l.setError(`root`,{message:n(`profile.password.changeModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.changeModal.description`),icon:A,isOpen:e,onClose:f,title:n(`profile.password.changeModal.title`),children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:p,children:[(0,Z.jsx)(O,{error:l.formState.errors.currentPassword,errorTestId:`change-password-error-currentPassword`,id:`current-password`,label:n(`profile.password.changeModal.currentPassword`),placeholder:n(`profile.password.changeModal.currentPasswordPlaceholder`),...l.register(`currentPassword`),type:`password`}),(0,Z.jsx)(O,{error:l.formState.errors.newPassword,errorTestId:`change-password-error-newPassword`,id:`new-password-change`,label:n(`profile.password.changeModal.newPassword`),placeholder:n(`profile.password.changeModal.newPasswordPlaceholder`),...l.register(`newPassword`),type:`password`}),(0,Z.jsx)(O,{error:l.formState.errors.confirmPassword,errorTestId:`change-password-error-confirmPassword`,id:`confirm-password-change`,label:n(`profile.password.changeModal.confirmPassword`),placeholder:n(`profile.password.changeModal.confirmPasswordPlaceholder`),...l.register(`confirmPassword`),type:`password`}),l.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:l.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`change-password-cancel`,disabled:d.isPending,intent:`neutral`,onClick:f,type:`button`,uiSize:`sm`,children:n(`profile.password.changeModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`change-password-submit`,disabled:d.isPending,intent:`primary`,loading:d.isPending,loadingLabel:n(`profile.password.changeModal.submitting`),type:`submit`,uiSize:`sm`,children:d.isPending?void 0:n(`profile.password.changeModal.submit`)})]})]})})}var Ae=h({mutationFn:async()=>d(await p.api.user.$delete())});function je({isOpen:e,onClose:t,retentionDays:n}){let{t:i}=r(),a=l(),o=u(),c=J({resolver:Y((0,X.useMemo)(()=>F.object({confirmation:F.string().refine(e=>e.toLowerCase()===i(`profile.deleteAccount.modal.confirmPlaceholder`).toLowerCase(),{message:i(`validation.confirmText.mismatch`)})}),[i])),defaultValues:{confirmation:``}}),d=g({...Ae,onSuccess:async()=>{o.setQueryData(R.queryKey,{user:null}),await V(),a.navigate({to:`/login`})}}),f=()=>{d.isPending||(c.reset(),t())},p=c.handleSubmit(async()=>{try{await d.mutateAsync()}catch{c.setError(`root`,{message:i(`profile.deleteAccount.error`)})}});return(0,Z.jsx)(U,{icon:N,isOpen:e,onClose:f,preventClose:d.isPending,title:i(`profile.deleteAccount.modal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:p,children:[(0,Z.jsx)($,{variant:`error`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-xs`,children:[(0,Z.jsx)(`p`,{children:i(`profile.deleteAccount.modal.description`,{days:n})}),(0,Z.jsx)(`p`,{className:`text-tinyrack-xs opacity-tinyrack-hover`,children:i(`profile.deleteAccount.modal.warning`)})]})}),(0,Z.jsx)(O,{autoComplete:`off`,error:c.formState.errors.confirmation,errorTestId:`delete-account-error`,id:`delete-confirmation`,label:i(`profile.deleteAccount.modal.confirmLabel`),placeholder:i(`profile.deleteAccount.modal.confirmPlaceholder`),...c.register(`confirmation`),type:`text`}),c.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:c.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`delete-account-cancel`,disabled:d.isPending,intent:`neutral`,onClick:f,type:`button`,uiSize:`sm`,children:i(`profile.deleteAccount.modal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`delete-account-submit`,disabled:d.isPending,intent:`danger`,loading:d.isPending,loadingLabel:i(`profile.deleteAccount.modal.confirming`),type:`submit`,uiSize:`sm`,children:d.isPending?void 0:i(`profile.deleteAccount.modal.confirm`)})]})]})})}function Me({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),a=J({resolver:Y((0,X.useMemo)(()=>F.object({code:F.string().length(6,n(`validation.totp.length`)).regex(/^\d{6}$/,n(`validation.totp.digits`))}),[n])),defaultValues:{code:``}}),c=g({...le,onSuccess:()=>{i.invalidateQueries({queryKey:R.queryKey}),l()}}),l=()=>{a.reset(),t()},d=a.handleSubmit(async e=>{try{await c.mutateAsync({code:e.code})}catch(e){if(e instanceof o&&e.code===`CANNOT_REMOVE_LAST_SECOND_FACTOR`){a.setError(`code`,{message:n(`profile.totp.disableModal.cannotRemoveLastSecondFactor`)});return}a.setError(`code`,{message:n(`profile.totp.disableModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.totp.disableModal.description`),icon:M,isOpen:e,onClose:l,title:n(`profile.totp.disableModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:d,children:[(0,Z.jsx)($,{variant:`warning`,children:n(`profile.totp.disableModal.warning`)}),(0,Z.jsx)(O,{autoComplete:`one-time-code`,error:a.formState.errors.code,errorTestId:`disable-totp-error`,id:`disable-totp-code`,inputMode:`numeric`,label:n(`profile.totp.disableModal.codeLabel`),maxLength:6,pattern:`[0-9]*`,placeholder:`000000`,...a.register(`code`),type:`text`}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`disable-totp-cancel`,disabled:c.isPending,intent:`neutral`,onClick:l,type:`button`,uiSize:`sm`,children:n(`profile.totp.disableModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`disable-totp-submit`,disabled:c.isPending,intent:`danger`,loading:c.isPending,loadingLabel:n(`profile.totp.disableModal.disabling`),type:`submit`,uiSize:`sm`,children:c.isPending?void 0:n(`profile.totp.disableModal.disable`)})]})]})})}function Ne({isOpen:e,onClose:n,onAddNew:i}){let{t:a}=r(),c=u(),[l,d]=(0,X.useState)(null),[p,m]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null),{data:b,isLoading:x}=S({...q,enabled:e}),C=g({...K,onSuccess:()=>{c.invalidateQueries({queryKey:f.passkeys()}),c.invalidateQueries({queryKey:R.queryKey})},onSettled:()=>{m(null)}}),w=(0,X.useCallback)(()=>{d(null),m(null),_(null),y(null),n()},[n]),T=e=>{_(e.id),y(null)},E=()=>{_(null),y(null)},D=async e=>{m(e.id),_(null);try{await C.mutateAsync({id:e.id})}catch(e){if(e instanceof o&&e.code===`CANNOT_REMOVE_LAST_SECOND_FACTOR`){y(a(`profile.passkey.manageModal.cannotRemoveLastSecondFactor`));return}y(a(`profile.passkey.manageModal.deleteError`))}},O=e=>new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}),A=b?.passkeys||[];return(0,Z.jsxs)(U,{icon:k,isOpen:e,onClose:w,size:`lg`,title:a(`profile.passkey.manageModal.title`),children:[(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-sm`,children:[v&&(0,Z.jsx)($,{variant:`error`,children:v}),x&&(0,Z.jsx)(`div`,{className:`flex justify-center py-tinyrack-xl`,children:(0,Z.jsx)(t,{uiSize:`md`})}),!x&&A.length===0&&(0,Z.jsx)(`div`,{className:`py-tinyrack-xl text-center text-tinyrack-sm text-tinyrack-text-muted`,"data-testid":`passkeys-empty`,children:(0,Z.jsx)(`p`,{children:a(`profile.passkey.manageModal.noPasskeys`)})}),!x&&A.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-col gap-tinyrack-sm`,children:A.map(e=>(0,Z.jsx)(Pe,{formatDate:O,isConfirmingDelete:h===e.id,isDeleting:p===e.id,isEditing:l?.id===e.id,onCancelDelete:E,onCancelEdit:()=>d(null),onConfirmDelete:()=>D(e),onEdit:()=>d(e),onRequestDelete:()=>T(e),passkey:e},e.id))})]}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`manage-passkeys-close`,intent:`neutral`,onClick:w,type:`button`,uiSize:`sm`,children:a(`profile.passkey.manageModal.close`)}),(0,Z.jsx)(s,{"data-testid":`manage-passkeys-add-new`,intent:`primary`,onClick:()=>{w(),i()},type:`button`,uiSize:`sm`,children:a(`profile.passkey.manageModal.addNew`)})]})]})}function Pe({passkey:e,isDeleting:t,isEditing:n,isConfirmingDelete:i,onEdit:a,onCancelEdit:o,onRequestDelete:c,onConfirmDelete:l,onCancelDelete:d,formatDate:p}){let{t:m}=r(),h=u(),_=J({resolver:Y((0,X.useMemo)(()=>F.object({name:F.string().min(1,m(`validation.passkey.name.required`)).max(100,m(`validation.passkey.name.max`))}),[m])),defaultValues:{name:e.name||``}}),v=g({...W,onSuccess:()=>{h.invalidateQueries({queryKey:f.passkeys()}),o()}}),y=_.handleSubmit(async t=>{try{await v.mutateAsync({id:e.id,name:t.name})}catch{_.setError(`name`,{message:m(`profile.passkey.manageModal.renameError`)})}});return n?(0,Z.jsxs)(`form`,{className:`flex flex-col gap-tinyrack-xs rounded-tinyrack-md bg-tinyrack-surface-muted p-tinyrack-sm`,onSubmit:y,children:[(0,Z.jsx)(O,{"data-testid":`passkey-rename-input`,error:_.formState.errors.name,errorTestId:`passkey-rename-error`,hideLabel:!0,label:m(`profile.passkey.manageModal.nameLabel`),placeholder:m(`profile.passkey.manageModal.namePlaceholder`),..._.register(`name`),type:`text`}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,disabled:v.isPending,onClick:()=>{_.reset(),o()},type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.cancelEdit`)}),(0,Z.jsx)(s,{disabled:v.isPending,intent:`primary`,type:`submit`,uiSize:`sm`,children:v.isPending?m(`profile.passkey.manageModal.saving`):m(`profile.passkey.manageModal.save`)})]})]}):i?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between rounded-tinyrack-md border border-tinyrack-danger-border bg-tinyrack-danger-surface p-tinyrack-sm text-tinyrack-danger-foreground`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,Z.jsx)(N,{className:`size-tinyrack-lg`}),(0,Z.jsx)(`span`,{className:`text-tinyrack-xs`,children:m(`profile.passkey.manageModal.deleteConfirmInline`)})]}),(0,Z.jsxs)(`div`,{className:`flex gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,onClick:d,type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.cancelEdit`)}),(0,Z.jsx)(s,{intent:`danger`,onClick:l,type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.delete`)})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between rounded-tinyrack-md bg-tinyrack-surface-muted p-tinyrack-sm`,"data-testid":`passkey-item`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[e.device_type===`multiDevice`?(0,Z.jsx)(de,{className:`size-tinyrack-lg text-tinyrack-primary-foreground`}):(0,Z.jsx)(he,{className:`size-tinyrack-lg text-tinyrack-primary-foreground`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`font-tinyrack-medium text-tinyrack-xs`,children:e.name||m(`profile.passkey.manageModal.unnamedPasskey`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-xs text-tinyrack-text-muted text-tinyrack-xs`,children:[(0,Z.jsx)(`span`,{children:m(`profile.passkey.manageModal.createdAt`,{date:p(e.created_at)})}),e.backed_up&&(0,Z.jsx)(oe,{uiSize:`md`,variant:`success`,children:m(`profile.passkey.manageModal.backedUp`)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":m(`profile.passkey.manageModal.rename`),onClick:a,type:`button`,uiSize:`sm`,children:(0,Z.jsx)(pe,{className:`size-tinyrack-lg`})}),(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":m(`profile.passkey.manageModal.delete`),disabled:t,intent:`danger`,loading:t,onClick:c,type:`button`,uiSize:`sm`,children:t?void 0:(0,Z.jsx)(N,{className:`size-tinyrack-lg`})})]})]})}function Fe({isOpen:e,onClose:t}){let{t:n}=r(),i=l(),a=u(),{data:s}=y(m),[c,d]=(0,X.useState)(`verify`),[f,p]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),v=g({...ue,onSuccess:async e=>{p(e),d(`recovery`),await a.invalidateQueries({queryKey:R.queryKey})}}),b=(0,X.useCallback)(()=>{d(`verify`),p(null),_(null),v.reset()},[v]),x=(0,X.useCallback)(()=>{b(),t()},[t,b]),S=(0,X.useCallback)(async e=>{_(null);try{await v.mutateAsync({code:e})}catch(e){if(e instanceof o){if(e.code===`INVALID_TOTP_CODE`)throw e;if(e.code===`UNAUTHORIZED`){a.setQueryData(R.queryKey,{user:null}),await V(),i.navigate({to:`/login`});return}if(e.code===`TOTP_NOT_ENABLED`||e.code===`VALIDATION_ERROR`){await a.invalidateQueries({queryKey:R.queryKey}),x();return}}_(n(`profile.totp.regenerateModal.unexpectedError`))}},[x,v,a,i,n]);return s.auth.password.totp.enabled?(0,Z.jsx)(U,{description:n(c===`verify`?`profile.totp.regenerateModal.description`:`profile.totp.regenerateModal.recoveryDescription`),icon:M,isOpen:e,onClose:x,preventClose:c===`recovery`,size:`sm`,title:n(c===`verify`?`profile.totp.regenerateModal.title`:`profile.totp.regenerateModal.recoveryTitle`),children:c===`verify`?(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg`,children:[h&&(0,Z.jsx)(`div`,{className:`mb-tinyrack-md`,children:(0,Z.jsx)($,{variant:`error`,children:h})}),(0,Z.jsx)(E,{invalidMessage:n(`profile.totp.regenerateModal.error`),isPending:v.isPending,onSubmit:S,pendingText:n(`profile.totp.regenerateModal.submitting`),submitLabel:n(`profile.totp.regenerateModal.submit`)})]}):(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(w,{onConfirm:x,recoveryCodes:f?.recovery_codes??[]})})}):null}function Ie({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),a=J({resolver:Y((0,X.useMemo)(()=>F.object({currentPassword:F.string().min(1,n(`validation.password.required`))}),[n])),defaultValues:{currentPassword:``}}),c=g({...Oe,onSuccess:()=>{i.invalidateQueries({queryKey:R.queryKey}),l()}}),l=()=>{a.reset(),t()},d=a.handleSubmit(async e=>{try{await c.mutateAsync({current_password:e.currentPassword})}catch(e){if(e instanceof o){if(e.code===`INVALID_CURRENT_PASSWORD`){a.setError(`currentPassword`,{message:n(`profile.password.removeModal.invalidCurrent`)});return}if(e.code===`CANNOT_REMOVE_LAST_AUTH_METHOD`){a.setError(`root`,{message:n(`profile.password.removeModal.noOAuth`)});return}if(e.code===`CANNOT_REMOVE_PASSWORD_WITH_SECOND_FACTOR_ONLY`){a.setError(`root`,{message:n(`profile.password.removeModal.noOAuthWith2FA`)});return}}a.setError(`root`,{message:n(`profile.password.removeModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.removeModal.description`),icon:A,isOpen:e,onClose:l,title:n(`profile.password.removeModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:d,children:[(0,Z.jsx)(O,{error:a.formState.errors.currentPassword,errorTestId:`remove-password-error`,id:`current-password-remove`,label:n(`profile.password.removeModal.currentPassword`),placeholder:n(`profile.password.removeModal.currentPasswordPlaceholder`),...a.register(`currentPassword`),type:`password`}),a.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:a.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`remove-password-cancel`,disabled:c.isPending,intent:`neutral`,onClick:l,type:`button`,uiSize:`sm`,children:n(`profile.password.removeModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`remove-password-submit`,disabled:c.isPending,intent:`danger`,loading:c.isPending,loadingLabel:n(`profile.password.removeModal.submitting`),type:`submit`,uiSize:`sm`,children:c.isPending?void 0:n(`profile.password.removeModal.submit`)})]})]})})}function Le({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),{data:a}=y(m),o=a.auth.password.policy,c=J({resolver:Y((0,X.useMemo)(()=>F.object({password:F.string().min(o.min_length,n(`validation.password.min`,{count:o.min_length})).max(o.max_length,n(`validation.password.max`,{count:o.max_length})),confirmPassword:F.string()}).refine(e=>e.password===e.confirmPassword,{message:n(`validation.confirmPassword.mismatch`),path:[`confirmPassword`]}),[o.max_length,o.min_length,n])),defaultValues:{password:``,confirmPassword:``}}),l=g({...Ee,onSuccess:()=>{i.invalidateQueries({queryKey:R.queryKey}),d()}}),d=()=>{c.reset(),t()},f=c.handleSubmit(async e=>{try{await l.mutateAsync({password:e.password})}catch{c.setError(`root`,{message:n(`profile.password.setModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.setModal.description`),icon:A,isOpen:e,onClose:d,title:n(`profile.password.setModal.title`),children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:f,children:[(0,Z.jsx)(O,{error:c.formState.errors.password,errorTestId:`set-password-error-password`,id:`new-password`,label:n(`profile.password.setModal.newPassword`),placeholder:n(`profile.password.setModal.newPasswordPlaceholder`),...c.register(`password`),type:`password`}),(0,Z.jsx)(O,{error:c.formState.errors.confirmPassword,errorTestId:`set-password-error-confirmPassword`,id:`confirm-password`,label:n(`profile.password.setModal.confirmPassword`),placeholder:n(`profile.password.setModal.confirmPasswordPlaceholder`),...c.register(`confirmPassword`),type:`password`}),c.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:c.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`set-password-cancel`,disabled:l.isPending,intent:`neutral`,onClick:d,type:`button`,uiSize:`sm`,children:n(`profile.password.setModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`set-password-submit`,disabled:l.isPending,intent:`primary`,loading:l.isPending,loadingLabel:n(`profile.password.setModal.submitting`),type:`submit`,uiSize:`sm`,children:l.isPending?void 0:n(`profile.password.setModal.submit`)})]})]})})}function Re({isOpen:e,onClose:n,isRequired:i=!1,canSwitchToTotp:a=!1,onSwitchToTotp:o}){let{t:c}=r(),l=u(),[d,p]=(0,X.useState)(`name`),[m,h]=(0,X.useState)(null),_=J({resolver:Y((0,X.useMemo)(()=>F.object({name:F.string().max(100,c(`validation.passkey.name.max`)).optional().transform(e=>e?.trim()||void 0)}),[c])),defaultValues:{name:``}}),v=g({...G,onSuccess:()=>{l.invalidateQueries({queryKey:f.passkeys()}),l.invalidateQueries({queryKey:R.queryKey}),y()},onError:e=>{p(`name`),e.name===`NotAllowedError`?h(c(`profile.passkey.setupModal.cancelled`)):h(c(`profile.passkey.setupModal.error`))}}),y=(0,X.useCallback)(()=>{_.reset(),p(`name`),h(null),n()},[_,n]),b=_.handleSubmit(async e=>{p(`register`),h(null);try{await v.mutateAsync({name:e.name})}catch{}}),x=v.isPending;return(0,Z.jsxs)(U,{description:i?c(`profile.passkey.setupModal.requiredDescription`):void 0,icon:k,isOpen:e,onClose:y,preventClose:i,size:`sm`,title:c(`profile.passkey.setupModal.title`),children:[d===`name`&&(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:b,children:[(0,Z.jsx)(`p`,{className:`text-tinyrack-text-muted text-tinyrack-xs`,children:c(`profile.passkey.setupModal.description`)}),m&&(0,Z.jsx)($,{variant:`error`,children:m}),(0,Z.jsx)(O,{error:_.formState.errors.name,errorTestId:`setup-passkey-error`,hint:c(`profile.passkey.setupModal.nameHint`),id:`passkey-name`,label:c(`profile.passkey.setupModal.nameLabel`),placeholder:c(`profile.passkey.setupModal.namePlaceholder`),..._.register(`name`),type:`text`}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`setup-passkey-cancel`,intent:`neutral`,onClick:y,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`setup-passkey-continue`,intent:`primary`,type:`submit`,uiSize:`sm`,children:c(`profile.passkey.setupModal.continue`)})]}),a&&o&&(0,Z.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-xs`,children:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:o,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.switchToTotp`)})})]}),d===`register`&&(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-tinyrack-md py-tinyrack-xl`,"data-testid":`setup-passkey-loading`,children:[(0,Z.jsx)(t,{uiSize:`md`}),(0,Z.jsx)(`p`,{className:`text-center text-tinyrack-text-muted text-tinyrack-xs`,children:c(`profile.passkey.setupModal.waitingForDevice`)})]}),(0,Z.jsx)(H,{children:(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`setup-passkey-cancel`,disabled:x,intent:`neutral`,onClick:y,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.cancel`)})})]})]})}function ze({isOpen:e,onClose:n,isRequired:i=!1,canSwitchToPasskey:a=!1,onSwitchToPasskey:o}){let{t:c}=r(),{step:l,setupData:u,recoveryCodes:d,isSetupPending:f,isVerifyPending:p,isConfirmPending:m,startSetup:h,verify:g,goToVerify:_,goToQr:v,confirmRecoveryCodes:y,reset:b}=D({autoStart:!1,onConfirmSuccess:()=>{b(),n()}}),x=(0,X.useCallback)(()=>{b(),n()},[n,b]),S=(0,X.useCallback)(()=>{!u&&!f&&h()},[u,f,h]);e&&!u&&!f&&l!==`error`&&S();let C=(0,X.useCallback)(async e=>{await g(e)},[g]),O=c(l===`recovery`?`setupTotp.recoveryCodes.title`:`profile.totp.setupModal.title`);return(0,Z.jsxs)(U,{description:i?c(`profile.totp.setupModal.requiredDescription`):void 0,icon:M,isOpen:e,onClose:x,preventClose:i||l===`recovery`,size:`sm`,title:O,children:[f&&(0,Z.jsx)(`div`,{className:`flex justify-center py-tinyrack-xl`,"data-testid":`setup-totp-loading`,children:(0,Z.jsx)(t,{uiSize:`md`})}),l===`error`&&(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,children:[(0,Z.jsx)($,{variant:`error`,children:c(`profile.totp.setupModal.setupError`)}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,intent:`neutral`,onClick:x,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.cancel`)}),(0,Z.jsx)(s,{intent:`primary`,onClick:h,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.retry`)})]})]}),u&&l===`qr`&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(T,{additionalActions:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{children:(0,Z.jsx)(s,{appearance:`outline`,intent:`neutral`,onClick:x,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.cancel`)})}),a&&o&&(0,Z.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-xs`,children:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:o,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.switchToPasskey`)})})]}),onNext:_,setupData:u})}),u&&l===`verify`&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(E,{isPending:p,onBack:v,onSubmit:C})}),l===`recovery`&&d.length>0&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(w,{isLoading:m,onConfirm:y,recoveryCodes:d})})]})}var Be={access_denied:`oauth.error.accessDenied`,temporarily_unavailable:`oauth.error.temporarilyUnavailable`,server_error:`oauth.error.serverError`};function Ve(){let{t:e}=r(),t=l(),n=u(),a=ie.useSearch().oauth_error,o=a?e(Be[a]??`oauth.error.failed`):void 0,[c,d]=(0,X.useState)(null),[f,p]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),[v,b]=(0,X.useState)(null),[x,S]=(0,X.useState)(null),[C,w]=(0,X.useState)(!1),{data:T}=y(R),{data:E}=y(z),{data:D}=y(m),O=g({...te,onSuccess:async()=>{n.setQueryData(R.queryKey,{user:null}),await V(),t.navigate({to:`/login`})},onSettled:()=>{n.invalidateQueries({queryKey:R.queryKey})}}),k=g({...re,onSuccess:()=>{n.invalidateQueries({queryKey:z.queryKey})},onSettled:()=>{d(null)}}),A=async()=>{f&&(d(f.id),await k.mutateAsync(f.id))};if(!T.user)return null;let j=T.user,M=E.available_providers,N=M.some(e=>e.linked),P=j.managed_by===`config`,F=D.auth.password,ae=D.auth.passkey,oe=F.totp.enabled,H=ae.enabled,U=D.account_deletion.enabled,W=D.account_deletion.retention,G=(()=>{let e=W.match(/^(\d+)([dmy])$/);if(!e)return 30;let t=parseInt(e[1],10);switch(e[2]){case`d`:return t;case`m`:return t*30;case`y`:return t*365;default:return 30}})(),K=!P&&oe,q=!P&&H,J=M.length>0;return(0,Z.jsxs)(Te,{headerActions:(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":e(`profile.logout`),"data-testid":`profile-logout`,disabled:O.isPending,loading:O.isPending,onClick:()=>O.mutate(),type:`button`,uiSize:`sm`,children:O.isPending?void 0:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ee,{"aria-hidden":!0,className:`size-tinyrack-lg`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:e(`profile.logout`)})]})}),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-lg`,children:[(0,Z.jsx)(ce,{email:j.email,size:`lg`}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(se,{title:e(`profile.title`)}),(0,Z.jsx)(i,{as:`p`,color:`muted`,"data-testid":`profile-user-email`,truncate:!0,variant:`bodySm`,children:j.email})]})]}),o&&(0,Z.jsx)(B,{icon:L,type:`error`,children:o}),j&&(0,Z.jsx)(we,{user:j}),(0,Z.jsxs)(I.Root,{variant:`outlined`,children:[(0,Z.jsxs)(I.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(I.Title,{children:e(`profile.security.title`)}),(0,Z.jsx)(I.Description,{children:e(`profile.security.description`)})]}),K&&j.totp_recovery_codes_missing&&(0,Z.jsx)(`div`,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,"data-testid":`profile-totp-recovery-warning`,children:(0,Z.jsx)(B,{icon:L,type:`warning`,children:e(`profile.totp.recoveryCodesMissing`)})}),(0,Z.jsxs)(I.Content,{className:`divide-y divide-tinyrack-border p-0`,children:[(0,Z.jsx)(ye,{hasLinkedOAuth:N,hasPassword:j.has_password,hasSecondFactorOnly:j.has_password&&!N&&(j.totp_registered||j.passkey_count>0),isConfigManaged:P,onOpenModal:_}),K&&(0,Z.jsx)(be,{onOpenModal:b,recoveryCodesMissing:j.totp_recovery_codes_missing,totpEnabled:j.totp_registered}),q&&(0,Z.jsx)(ve,{onOpenModal:S,passkeyCount:j.passkey_count})]})]}),J&&(0,Z.jsx)(_e,{getAuthorizeUrl:ne,onUnlinkRequest:e=>p({id:e.id,name:e.display_name}),providers:M,unlinkingProvider:c}),(0,Z.jsx)(ge,{isConfigManaged:P,isDeletionEnabled:U,onDeleteClick:()=>w(!0)}),(0,Z.jsx)(Le,{isOpen:h===`set`,onClose:()=>_(null)}),(0,Z.jsx)(ke,{isOpen:h===`change`,onClose:()=>_(null)}),(0,Z.jsx)(Ie,{isOpen:h===`remove`,onClose:()=>_(null)}),(0,Z.jsx)(ze,{isOpen:v===`setup`,onClose:()=>b(null)}),(0,Z.jsx)(Me,{isOpen:v===`disable`,onClose:()=>b(null)}),(0,Z.jsx)(Fe,{isOpen:v===`regenerate`,onClose:()=>b(null)}),(0,Z.jsx)(Re,{isOpen:x===`setup`,onClose:()=>S(null)}),(0,Z.jsx)(Ne,{isOpen:x===`manage`,onAddNew:()=>S(`setup`),onClose:()=>S(null)}),(0,Z.jsx)(Se,{isOpen:f!==null,isPending:k.isPending,onClose:()=>p(null),onConfirm:A,providerName:f?.name??``}),(0,Z.jsx)(je,{isOpen:C,onClose:()=>w(!1),retentionDays:G})]})}export{Ve as component};
2
- //# sourceMappingURL=profile-C8KaELVe.js.map