@tinyrack/issuary-server 0.27.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 (2014) 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 +305 -305
  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 +305 -305
  54. package/dist/entities/terms.entity.d.ts.map +1 -1
  55. package/dist/entities/terms.entity.js +4 -4
  56. package/dist/entities/user-consent.entity.d.ts +639 -639
  57. package/dist/entities/user-consent.entity.d.ts.map +1 -1
  58. package/dist/entities/user-consent.entity.js +4 -4
  59. package/dist/entities/user-oauth.entity.d.ts +30 -30
  60. package/dist/entities/user-oauth.entity.d.ts.map +1 -1
  61. package/dist/entities/user-oauth.entity.js +3 -3
  62. package/dist/entities/user-passkey.entity.d.ts +42 -42
  63. package/dist/entities/user-passkey.entity.d.ts.map +1 -1
  64. package/dist/entities/user-passkey.entity.js +3 -3
  65. package/dist/entities/user-terms-consent.entity.d.ts +305 -305
  66. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
  67. package/dist/entities/user-terms-consent.entity.js +4 -4
  68. package/dist/entities/user-totp-recovery-code.entity.d.ts +190 -190
  69. package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -1
  70. package/dist/entities/user-totp-recovery-code.entity.js +3 -3
  71. package/dist/entities/user-totp.entity.d.ts +190 -190
  72. package/dist/entities/user-totp.entity.d.ts.map +1 -1
  73. package/dist/entities/user-totp.entity.js +3 -3
  74. package/dist/entities/user.entity.d.ts +190 -190
  75. package/dist/entities/user.entity.d.ts.map +1 -1
  76. package/dist/entities/user.entity.js +6 -6
  77. package/dist/entrypoints/app.d.ts +1405 -1403
  78. package/dist/entrypoints/app.d.ts.map +1 -1
  79. package/dist/entrypoints/app.js +24 -22
  80. package/dist/entrypoints/app.js.map +1 -1
  81. package/dist/entrypoints/config/index.js +1 -1
  82. package/dist/entrypoints/database/postgres/cli.d.ts.map +1 -1
  83. package/dist/entrypoints/database/postgres/cli.js +1 -1
  84. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  85. package/dist/entrypoints/database/postgres/compiled-functions.js +1 -1
  86. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  87. package/dist/entrypoints/database/postgres/postgres.js +2 -2
  88. package/dist/entrypoints/database/sqlite/cli.d.ts.map +1 -1
  89. package/dist/entrypoints/database/sqlite/cli.js +1 -1
  90. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  91. package/dist/entrypoints/database/sqlite/compiled-functions.js +1 -1
  92. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  93. package/dist/entrypoints/database/sqlite/sqlite.js +2 -2
  94. package/dist/entrypoints/index.js +2 -2
  95. package/dist/entrypoints/scheduler/croner.js +1 -1
  96. package/dist/entrypoints/scheduler/croner.js.map +1 -1
  97. package/dist/entrypoints/scheduler/database.d.ts.map +1 -1
  98. package/dist/entrypoints/scheduler/database.js +4 -4
  99. package/dist/entrypoints/scheduler/database.js.map +1 -1
  100. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -1
  101. package/dist/entrypoints/scheduler/distributed-runner.js +1 -1
  102. package/dist/entrypoints/services.js +1 -1
  103. package/dist/lib/config/account-deletion.d.ts +2 -2
  104. package/dist/lib/config/account-deletion.d.ts.map +1 -1
  105. package/dist/lib/config/account-deletion.js +2 -2
  106. package/dist/lib/config/admin.d.ts +1 -1
  107. package/dist/lib/config/admin.d.ts.map +1 -1
  108. package/dist/lib/config/admin.js +1 -1
  109. package/dist/lib/config/auth.d.ts +39 -39
  110. package/dist/lib/config/auth.d.ts.map +1 -1
  111. package/dist/lib/config/auth.js +3 -3
  112. package/dist/lib/config/branding.d.ts +1 -1
  113. package/dist/lib/config/branding.d.ts.map +1 -1
  114. package/dist/lib/config/cleanup.d.ts +6 -6
  115. package/dist/lib/config/cleanup.d.ts.map +1 -1
  116. package/dist/lib/config/cleanup.js +2 -2
  117. package/dist/lib/config/client.d.ts +10 -10
  118. package/dist/lib/config/client.d.ts.map +1 -1
  119. package/dist/lib/config/i18n.d.ts +7 -7
  120. package/dist/lib/config/i18n.d.ts.map +1 -1
  121. package/dist/lib/config/i18n.js +1 -1
  122. package/dist/lib/config/identity-providers.d.ts +8 -8
  123. package/dist/lib/config/identity-providers.d.ts.map +1 -1
  124. package/dist/lib/config/index.d.ts +0 -2
  125. package/dist/lib/config/index.d.ts.map +1 -1
  126. package/dist/lib/config/index.js +20 -21
  127. package/dist/lib/config/index.js.map +1 -1
  128. package/dist/lib/config/logging.d.ts +9 -9
  129. package/dist/lib/config/logging.d.ts.map +1 -1
  130. package/dist/lib/config/openapi.d.ts +4 -4
  131. package/dist/lib/config/openapi.d.ts.map +1 -1
  132. package/dist/lib/config/openapi.js +1 -1
  133. package/dist/lib/config/registration.d.ts +1 -1
  134. package/dist/lib/config/registration.d.ts.map +1 -1
  135. package/dist/lib/config/registration.js +1 -1
  136. package/dist/lib/config/resolved.d.ts +54 -55
  137. package/dist/lib/config/resolved.d.ts.map +1 -1
  138. package/dist/lib/config/resolved.js +19 -21
  139. package/dist/lib/config/resolved.js.map +1 -1
  140. package/dist/lib/config/security.d.ts +1 -1
  141. package/dist/lib/config/security.d.ts.map +1 -1
  142. package/dist/lib/config/security.js +2 -2
  143. package/dist/lib/config/server.d.ts +2 -2
  144. package/dist/lib/config/server.d.ts.map +1 -1
  145. package/dist/lib/config/server.js +2 -2
  146. package/dist/lib/config/terms.d.ts +6 -6
  147. package/dist/lib/config/terms.d.ts.map +1 -1
  148. package/dist/lib/config/terms.js +1 -1
  149. package/dist/lib/config/tokens.d.ts +3 -3
  150. package/dist/lib/config/tokens.d.ts.map +1 -1
  151. package/dist/lib/config/tokens.js +1 -1
  152. package/dist/lib/config/user.d.ts +4 -4
  153. package/dist/lib/config/user.d.ts.map +1 -1
  154. package/dist/lib/crypto.js +2 -2
  155. package/dist/lib/database/entities.js +20 -20
  156. package/dist/lib/frontend/react-router.d.ts +8 -0
  157. package/dist/lib/frontend/react-router.d.ts.map +1 -0
  158. package/dist/lib/frontend/react-router.js +92 -0
  159. package/dist/lib/frontend/react-router.js.map +1 -0
  160. package/dist/lib/frontend/runtime-context.d.ts +6 -0
  161. package/dist/lib/frontend/runtime-context.d.ts.map +1 -0
  162. package/dist/lib/frontend/runtime-context.js +3 -0
  163. package/dist/lib/frontend/runtime-context.js.map +1 -0
  164. package/dist/lib/locale.d.ts +1 -1
  165. package/dist/lib/locale.d.ts.map +1 -1
  166. package/dist/lib/logger.js +1 -1
  167. package/dist/lib/openapi.d.ts +4 -4
  168. package/dist/lib/openapi.d.ts.map +1 -1
  169. package/dist/lib/password-policy.d.ts.map +1 -1
  170. package/dist/lib/password-policy.js +1 -1
  171. package/dist/lib/password-policy.js.map +1 -1
  172. package/dist/lib/pkce.js +1 -1
  173. package/dist/lib/pkce.js.map +1 -1
  174. package/dist/lib/scopes.d.ts.map +1 -1
  175. package/dist/lib/swagger-tags.d.ts +8 -8
  176. package/dist/lib/swagger-tags.d.ts.map +1 -1
  177. package/dist/middleware/auth.d.ts +6 -6
  178. package/dist/middleware/auth.d.ts.map +1 -1
  179. package/dist/middleware/auth.js +1 -1
  180. package/dist/middleware/csrf.js +1 -1
  181. package/dist/middleware/session.js +1 -1
  182. package/dist/middleware/trusted-proxy-guard.js +2 -2
  183. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -1
  184. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -1
  185. package/dist/migrations/postgres/Migration20260619075007.d.ts.map +1 -1
  186. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -1
  187. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -1
  188. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -1
  189. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -1
  190. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -1
  191. package/dist/migrations/postgres/Migration20260825110000_add_password_reset_required.d.ts.map +1 -1
  192. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -1
  193. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts.map +1 -1
  194. package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts.map +1 -1
  195. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -1
  196. package/dist/migrations/sqlite/Migration20260619075330.d.ts.map +1 -1
  197. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -1
  198. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -1
  199. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -1
  200. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -1
  201. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -1
  202. package/dist/migrations/sqlite/Migration20260825110000_add_password_reset_required.d.ts.map +1 -1
  203. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -1
  204. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.d.ts.map +1 -1
  205. package/dist/repositories/email-verification.repository.d.ts.map +1 -1
  206. package/dist/repositories/email-verification.repository.js +1 -1
  207. package/dist/repositories/jwt-key.repository.d.ts.map +1 -1
  208. package/dist/repositories/jwt-key.repository.js +1 -1
  209. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  210. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  211. package/dist/repositories/password-reset.repository.d.ts.map +1 -1
  212. package/dist/repositories/password-reset.repository.js +1 -1
  213. package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -1
  214. package/dist/repositories/revoked-token.repository.d.ts.map +1 -1
  215. package/dist/repositories/terms.repository.d.ts.map +1 -1
  216. package/dist/repositories/user-consent.repository.d.ts.map +1 -1
  217. package/dist/repositories/user-consent.repository.js +1 -1
  218. package/dist/repositories/user-oauth.repository.d.ts.map +1 -1
  219. package/dist/repositories/user-oauth.repository.js +1 -1
  220. package/dist/repositories/user-passkey.repository.d.ts +42 -42
  221. package/dist/repositories/user-passkey.repository.d.ts.map +1 -1
  222. package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -1
  223. package/dist/repositories/user-terms-consent.repository.js +1 -1
  224. package/dist/repositories/user-totp-recovery-code.repository.d.ts +124 -124
  225. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  226. package/dist/repositories/user-totp.repository.d.ts +186 -186
  227. package/dist/repositories/user-totp.repository.d.ts.map +1 -1
  228. package/dist/repositories/user.repository.d.ts.map +1 -1
  229. package/dist/repositories/user.repository.js +1 -1
  230. package/dist/routes/.well-known/index.d.ts +2 -2
  231. package/dist/routes/.well-known/openid-configuration/get.d.ts +2 -2
  232. package/dist/routes/api/admin/console/index.d.ts +136 -136
  233. package/dist/routes/api/admin/console/index.js +2 -2
  234. package/dist/routes/api/admin/index.d.ts +210 -210
  235. package/dist/routes/api/admin/index.js +3 -3
  236. package/dist/routes/api/admin/me/get.d.ts +3 -3
  237. package/dist/routes/api/admin/me/get.js +4 -4
  238. package/dist/routes/api/admin/users/index.d.ts +71 -71
  239. package/dist/routes/api/admin/users/index.js +6 -6
  240. package/dist/routes/api/auth/2fa/methods/get.d.ts +2 -2
  241. package/dist/routes/api/auth/2fa/methods/get.js +4 -4
  242. package/dist/routes/api/auth/accounts/get.d.ts +6 -6
  243. package/dist/routes/api/auth/accounts/remove.post.d.ts +6 -6
  244. package/dist/routes/api/auth/accounts/remove.post.js +2 -2
  245. package/dist/routes/api/auth/accounts/select.post.d.ts +6 -6
  246. package/dist/routes/api/auth/accounts/select.post.js +1 -1
  247. package/dist/routes/api/auth/email/resend/post.d.ts +5 -5
  248. package/dist/routes/api/auth/email/resend/post.js +4 -4
  249. package/dist/routes/api/auth/email/verify/post.d.ts +7 -7
  250. package/dist/routes/api/auth/email/verify/post.js +4 -4
  251. package/dist/routes/api/auth/index.d.ts +140 -140
  252. package/dist/routes/api/auth/index.js +15 -15
  253. package/dist/routes/api/auth/login/post.d.ts +8 -8
  254. package/dist/routes/api/auth/login/post.js +4 -4
  255. package/dist/routes/api/auth/logout/post.d.ts +1 -1
  256. package/dist/routes/api/auth/logout/post.js +2 -2
  257. package/dist/routes/api/auth/passkey/options/post.d.ts +10 -10
  258. package/dist/routes/api/auth/passkey/options/post.js +4 -4
  259. package/dist/routes/api/auth/passkey/verify/post.d.ts +18 -18
  260. package/dist/routes/api/auth/passkey/verify/post.js +5 -5
  261. package/dist/routes/api/auth/password/forgot/post.d.ts +5 -5
  262. package/dist/routes/api/auth/password/forgot/post.js +4 -4
  263. package/dist/routes/api/auth/password/reset/post.d.ts +5 -5
  264. package/dist/routes/api/auth/password/reset/post.js +4 -4
  265. package/dist/routes/api/auth/register/post.d.ts +17 -17
  266. package/dist/routes/api/auth/register/post.js +6 -6
  267. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +7 -7
  268. package/dist/routes/api/auth/totp/recovery/verify/post.js +6 -6
  269. package/dist/routes/api/auth/totp/verify/post.d.ts +7 -7
  270. package/dist/routes/api/auth/totp/verify/post.js +6 -6
  271. package/dist/routes/api/config/get.d.ts +4 -4
  272. package/dist/routes/api/config/get.js +1 -1
  273. package/dist/routes/api/config/index.d.ts +4 -4
  274. package/dist/routes/api/config/index.js +1 -1
  275. package/dist/routes/api/consent/get.d.ts +6 -6
  276. package/dist/routes/api/consent/get.d.ts.map +1 -1
  277. package/dist/routes/api/consent/get.js +7 -7
  278. package/dist/routes/api/consent/index.d.ts +13 -13
  279. package/dist/routes/api/consent/index.js +2 -2
  280. package/dist/routes/api/consent/post.d.ts +7 -7
  281. package/dist/routes/api/consent/post.js +6 -6
  282. package/dist/routes/api/docs/get.d.ts +1 -1
  283. package/dist/routes/api/docs/index.d.ts +1 -1
  284. package/dist/routes/api/docs/index.js +1 -1
  285. package/dist/routes/api/health/get.d.ts +5 -5
  286. package/dist/routes/api/health/get.d.ts.map +1 -1
  287. package/dist/routes/api/health/get.js +2 -2
  288. package/dist/routes/api/health/index.d.ts +12 -12
  289. package/dist/routes/api/health/index.js +3 -3
  290. package/dist/routes/api/health/live/get.d.ts +2 -2
  291. package/dist/routes/api/health/live/get.d.ts.map +1 -1
  292. package/dist/routes/api/health/live/get.js +2 -2
  293. package/dist/routes/api/health/ready/get.d.ts +5 -5
  294. package/dist/routes/api/health/ready/get.d.ts.map +1 -1
  295. package/dist/routes/api/health/ready/get.js +2 -2
  296. package/dist/routes/api/index.d.ts +1244 -1244
  297. package/dist/routes/api/index.js +9 -9
  298. package/dist/routes/api/oauth/_provider/authorize/get.d.ts +4 -4
  299. package/dist/routes/api/oauth/_provider/authorize/get.js +6 -6
  300. package/dist/routes/api/oauth/_provider/callback/get.d.ts +9 -9
  301. package/dist/routes/api/oauth/_provider/callback/get.js +5 -5
  302. package/dist/routes/api/oauth/_provider/callback/post.d.ts +9 -9
  303. package/dist/routes/api/oauth/_provider/callback/post.js +6 -6
  304. package/dist/routes/api/oauth/_provider/delete.d.ts +5 -5
  305. package/dist/routes/api/oauth/_provider/delete.js +6 -6
  306. package/dist/routes/api/oauth/authorization-context/get.d.ts +8 -8
  307. package/dist/routes/api/oauth/authorization-context/get.d.ts.map +1 -1
  308. package/dist/routes/api/oauth/authorization-context/get.js +4 -4
  309. package/dist/routes/api/oauth/index.d.ts +56 -56
  310. package/dist/routes/api/oauth/index.js +5 -5
  311. package/dist/routes/api/terms/consent/post.d.ts +6 -6
  312. package/dist/routes/api/terms/consent/post.js +5 -5
  313. package/dist/routes/api/terms/get.d.ts +13 -13
  314. package/dist/routes/api/terms/get.js +5 -5
  315. package/dist/routes/api/terms/index.d.ts +19 -19
  316. package/dist/routes/api/terms/index.js +2 -2
  317. package/dist/routes/api/user/delete.d.ts +1 -1
  318. package/dist/routes/api/user/delete.js +6 -6
  319. package/dist/routes/api/user/index.d.ts +103 -103
  320. package/dist/routes/api/user/index.js +16 -16
  321. package/dist/routes/api/user/oauth-accounts/get.d.ts +1 -1
  322. package/dist/routes/api/user/oauth-accounts/get.js +5 -5
  323. package/dist/routes/api/user/passkeys/_id/delete.d.ts +5 -5
  324. package/dist/routes/api/user/passkeys/_id/delete.js +6 -6
  325. package/dist/routes/api/user/passkeys/_id/patch.d.ts +5 -5
  326. package/dist/routes/api/user/passkeys/_id/patch.js +6 -6
  327. package/dist/routes/api/user/passkeys/get.d.ts +2 -2
  328. package/dist/routes/api/user/passkeys/get.js +5 -5
  329. package/dist/routes/api/user/passkeys/register/options/post.d.ts +15 -15
  330. package/dist/routes/api/user/passkeys/register/options/post.js +5 -5
  331. package/dist/routes/api/user/passkeys/register/verify/post.d.ts +9 -9
  332. package/dist/routes/api/user/passkeys/register/verify/post.js +5 -5
  333. package/dist/routes/api/user/password/delete.d.ts +5 -5
  334. package/dist/routes/api/user/password/delete.js +6 -6
  335. package/dist/routes/api/user/password/post.d.ts +5 -5
  336. package/dist/routes/api/user/password/post.js +6 -6
  337. package/dist/routes/api/user/password/put.d.ts +5 -5
  338. package/dist/routes/api/user/password/put.js +6 -6
  339. package/dist/routes/api/user/session/get.d.ts +4 -4
  340. package/dist/routes/api/user/session/get.js +4 -4
  341. package/dist/routes/api/user/totp/confirm/post.d.ts +5 -5
  342. package/dist/routes/api/user/totp/confirm/post.js +5 -5
  343. package/dist/routes/api/user/totp/delete.d.ts +5 -5
  344. package/dist/routes/api/user/totp/delete.js +6 -6
  345. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +5 -5
  346. package/dist/routes/api/user/totp/recovery/regenerate/post.js +6 -6
  347. package/dist/routes/api/user/totp/setup/post.d.ts +1 -1
  348. package/dist/routes/api/user/totp/setup/post.js +5 -5
  349. package/dist/routes/api/user/totp/verify/post.d.ts +5 -5
  350. package/dist/routes/api/user/totp/verify/post.js +6 -6
  351. package/dist/routes/index.d.ts +1496 -1496
  352. package/dist/routes/index.d.ts.map +1 -1
  353. package/dist/routes/index.js +3 -3
  354. package/dist/routes/oauth/.well-known/jwks/get.d.ts +6 -6
  355. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +3 -3
  356. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -1
  357. package/dist/routes/oauth/authorize/get.d.ts +4 -4
  358. package/dist/routes/oauth/authorize/get.js +6 -6
  359. package/dist/routes/oauth/device/get-post.d.ts +7 -7
  360. package/dist/routes/oauth/device/get-post.js +3 -3
  361. package/dist/routes/oauth/device-authorization/post.d.ts +7 -7
  362. package/dist/routes/oauth/end-session/get.d.ts +9 -9
  363. package/dist/routes/oauth/index.d.ts +117 -117
  364. package/dist/routes/oauth/index.js +7 -7
  365. package/dist/routes/oauth/introspect/post.d.ts +14 -14
  366. package/dist/routes/oauth/introspect/post.js +4 -4
  367. package/dist/routes/oauth/revoke/post.d.ts +4 -4
  368. package/dist/routes/oauth/revoke/post.js +3 -3
  369. package/dist/routes/oauth/token/post.d.ts +10 -10
  370. package/dist/routes/oauth/token/post.js +4 -4
  371. package/dist/routes/oauth/userinfo/get.d.ts +2 -2
  372. package/dist/routes/oauth/userinfo/get.js +6 -6
  373. package/dist/schemas/error.d.ts +284 -284
  374. package/dist/schemas/error.d.ts.map +1 -1
  375. package/dist/schemas/field.d.ts +8 -8
  376. package/dist/schemas/field.d.ts.map +1 -1
  377. package/dist/schemas/field.js +2 -2
  378. package/dist/schemas/header.d.ts.map +1 -1
  379. package/dist/schemas/provider.d.ts +7 -1
  380. package/dist/schemas/provider.d.ts.map +1 -1
  381. package/dist/schemas/response.d.ts +41 -41
  382. package/dist/schemas/response.js +3 -3
  383. package/dist/seeders/config.seeder.js +6 -6
  384. package/dist/seeders/config.seeder.js.map +1 -1
  385. package/dist/services/account-selection.service.d.ts.map +1 -1
  386. package/dist/services/admin-console.service.d.ts +26 -26
  387. package/dist/services/admin-console.service.d.ts.map +1 -1
  388. package/dist/services/admin-console.service.js +1 -1
  389. package/dist/services/cleanup.service.d.ts.map +1 -1
  390. package/dist/services/cleanup.service.js +14 -14
  391. package/dist/services/container.d.ts +22 -23
  392. package/dist/services/container.d.ts.map +1 -1
  393. package/dist/services/container.js +20 -20
  394. package/dist/services/container.js.map +1 -1
  395. package/dist/services/email.service.d.ts.map +1 -1
  396. package/dist/services/email.service.js +3 -3
  397. package/dist/services/jwt.service.d.ts.map +1 -1
  398. package/dist/services/jwt.service.js +3 -3
  399. package/dist/services/mikro.service.d.ts.map +1 -1
  400. package/dist/services/mikro.service.js +19 -19
  401. package/dist/services/oauth-authorize.service.d.ts.map +1 -1
  402. package/dist/services/oauth-authorize.service.js +3 -3
  403. package/dist/services/oauth-client.service.d.ts.map +1 -1
  404. package/dist/services/oauth-client.service.js +1 -1
  405. package/dist/services/oauth-connect.service.d.ts +1 -1
  406. package/dist/services/oauth-connect.service.d.ts.map +1 -1
  407. package/dist/services/oauth-connect.service.js +3 -3
  408. package/dist/services/oauth-token.service.d.ts.map +1 -1
  409. package/dist/services/oauth-token.service.js +3 -3
  410. package/dist/services/passkey.service.d.ts.map +1 -1
  411. package/dist/services/passkey.service.js +2 -2
  412. package/dist/services/password-auth.service.d.ts.map +1 -1
  413. package/dist/services/password-auth.service.js +2 -2
  414. package/dist/services/password-reset.service.d.ts.map +1 -1
  415. package/dist/services/password-reset.service.js +1 -1
  416. package/dist/services/scheduler.service.d.ts.map +1 -1
  417. package/dist/services/scheduler.service.js.map +1 -1
  418. package/dist/services/security.service.d.ts.map +1 -1
  419. package/dist/services/security.service.js +2 -2
  420. package/dist/services/terms.service.d.ts.map +1 -1
  421. package/dist/services/totp.service.d.ts.map +1 -1
  422. package/dist/services/totp.service.js +2 -2
  423. package/dist/services/user-consent.service.d.ts.map +1 -1
  424. package/dist/services/user.service.d.ts.map +1 -1
  425. package/dist/services/user.service.js +1 -1
  426. package/frontend/client/assets/CompositeItem-VmYWaHnv.js +1 -0
  427. package/frontend/client/assets/FieldControl-D6zWw018.js +1 -0
  428. package/frontend/client/assets/FieldItemContext-CPjig163.js +1 -0
  429. package/frontend/client/assets/HydrationBoundary-CGOTaz3j.js +1 -0
  430. package/frontend/client/assets/NullStore-BxU9yW8l.js +1 -0
  431. package/frontend/client/assets/Separator-eMrsmRws.js +1 -0
  432. package/frontend/client/assets/admin-console-DL8Kf5fu.js +1 -0
  433. package/frontend/client/assets/alert-B9BFeQs3.js +1 -0
  434. package/frontend/client/assets/alert-CFUBsmUN.js +1 -0
  435. package/frontend/client/assets/api-0SzZx6X7.js +1 -0
  436. package/frontend/client/assets/auth-choice-row-vQ3LzZiF.js +1 -0
  437. package/frontend/client/assets/auth-field-1EM9pnWe.js +1 -0
  438. package/frontend/client/assets/auth-footer-DgRsLHyD.js +1 -0
  439. package/frontend/client/assets/auth-layout-BFD6Jwkd.js +1 -0
  440. package/frontend/client/assets/auth-outcome-B7tCCKZC.js +1 -0
  441. package/frontend/client/assets/auth-page-header-DWIuRJtG.js +1 -0
  442. package/frontend/client/assets/authorization-context-banner-WE0b3j97.js +1 -0
  443. package/frontend/client/assets/avatar-BacTFLjX.js +1 -0
  444. package/frontend/client/assets/badge-BCQspax5.js +1 -0
  445. package/frontend/client/assets/card-CTv8DubK.js +1 -0
  446. package/frontend/client/assets/checkbox-OA4CFk-6.js +1 -0
  447. package/frontend/client/assets/circle-alert-DGTJ9B9k.js +1 -0
  448. package/frontend/client/assets/circle-check-CGasu2tI.js +1 -0
  449. package/frontend/client/assets/code-RrwtZcA2.js +1 -0
  450. package/frontend/client/assets/components-C1SipCbb.js +1 -0
  451. package/frontend/client/assets/document-navigation-Cnp3Alf0.js +1 -0
  452. package/frontend/client/assets/entry.client-wT_SpBr6.js +9 -0
  453. package/frontend/client/assets/errorBoundaries-BmdAyh9C.js +16 -0
  454. package/frontend/client/assets/field-DzNLNMM0.js +2 -0
  455. package/frontend/client/assets/fingerprint-pattern-V_eTEvnZ.js +1 -0
  456. package/frontend/client/assets/format-admin-user-BiqYL7ZT.js +1 -0
  457. package/frontend/client/assets/i18n-wAvPXBC2.js +1 -0
  458. package/frontend/client/assets/initial-avatar-D4aPMV9z.js +1 -0
  459. package/frontend/client/assets/input-BFJdEx8B.js +1 -0
  460. package/frontend/client/assets/jsx-runtime-BFZ_fnNJ.js +1 -0
  461. package/frontend/client/assets/key-round-DgCbGqQL.js +1 -0
  462. package/frontend/client/assets/labeled-separator-DkexQjxp.js +1 -0
  463. package/frontend/client/assets/language-selector-BZipfWXO.js +1 -0
  464. package/frontend/client/assets/link-DcBltZGP.js +1 -0
  465. package/frontend/client/assets/link-button-qvSTUE1n.js +1 -0
  466. package/frontend/client/assets/lock-m97gMmUy.js +1 -0
  467. package/frontend/client/assets/logout-CBTnIosZ.js +1 -0
  468. package/frontend/client/assets/mail-tgQpWyoC.js +1 -0
  469. package/frontend/client/assets/manifest-6d4cda98.js +1 -0
  470. package/frontend/client/assets/modal-LoTH9Ttl.js +1 -0
  471. package/frontend/client/assets/mutation-C0KT2UXZ.js +1 -0
  472. package/frontend/client/assets/mutationOptions-Dfvzj6n2.js +1 -0
  473. package/frontend/client/assets/oauth-search-BtLPTIS7.js +1 -0
  474. package/frontend/client/assets/passkey-DoR9gw8n.js +1 -0
  475. package/frontend/client/assets/passkey-error-CZnhXTc7.js +1 -0
  476. package/frontend/client/assets/password-reset-BuDycpfY.js +1 -0
  477. package/frontend/client/assets/password-strength-DLtV7dBZ.js +1 -0
  478. package/frontend/client/assets/pin-input-DtemAOnm.js +1 -0
  479. package/frontend/client/assets/progress-xdWpxn2G.js +1 -0
  480. package/frontend/client/assets/promise-C4eJsjRN.js +1 -0
  481. package/frontend/client/assets/provider-mark-B05f08GZ.js +1 -0
  482. package/frontend/client/assets/react-dom-BxmrrPTH.js +1 -0
  483. package/frontend/client/assets/root-DxmAI0wD.css +2 -0
  484. package/frontend/client/assets/root-sdYEeZVs.js +1 -0
  485. package/frontend/client/assets/route--ygtU3xf.js +1 -0
  486. package/frontend/client/assets/route-B1MD0P12.js +1 -0
  487. package/frontend/client/assets/route-B4n6iLak.js +1 -0
  488. package/frontend/client/assets/route-BA8SLA-y.js +1 -0
  489. package/frontend/client/assets/route-BI7lRSrf.js +1 -0
  490. package/frontend/client/assets/route-BLq7NTd1.js +1 -0
  491. package/frontend/client/assets/route-BPss6aNC.js +1 -0
  492. package/frontend/client/assets/route-BUTlt8Ui.js +1 -0
  493. package/frontend/client/assets/route-BbumhNTg.js +1 -0
  494. package/frontend/client/assets/route-BukKUAfo.js +1 -0
  495. package/frontend/client/assets/route-CCs0-fO0.js +1 -0
  496. package/frontend/client/assets/route-CEunl4H1.js +1 -0
  497. package/frontend/client/assets/route-CZFY6zgn.js +4 -0
  498. package/frontend/client/assets/route-CgqKzu4o.js +1 -0
  499. package/frontend/client/assets/route-Cmo_MXuL.js +1 -0
  500. package/frontend/client/assets/route-D-ycfUyo.js +1 -0
  501. package/frontend/client/assets/route-D98zlsIA.js +1 -0
  502. package/frontend/client/assets/route-D9cK2_2t.js +1 -0
  503. package/frontend/client/assets/route-DCxEMgcG.js +1 -0
  504. package/frontend/client/assets/route-DHyl9fg6.js +1 -0
  505. package/frontend/client/assets/route-DQlEYlRT.js +1 -0
  506. package/frontend/client/assets/route-DUp2lTDn.js +1 -0
  507. package/frontend/client/assets/route-DitctEyz.js +1 -0
  508. package/frontend/client/assets/route-DtL-KJ0k.js +1 -0
  509. package/frontend/client/assets/route-O04gqlmz.js +1 -0
  510. package/frontend/client/assets/route-OeZDuFSb.js +1 -0
  511. package/frontend/client/assets/route-WG7qPhB_.js +1 -0
  512. package/frontend/client/assets/route-error-fallback-C2OHu3JW.js +1 -0
  513. package/frontend/client/assets/route-module-Bm4sHkx9.js +1 -0
  514. package/frontend/client/assets/sanitized-rich-text-nFi_4i6F.js +3 -0
  515. package/frontend/client/assets/schemas-Dxi9xZo6.js +50 -0
  516. package/frontend/client/assets/search-DSkOjYwI.js +1 -0
  517. package/frontend/client/assets/select--ltVnlVl.js +1 -0
  518. package/frontend/client/assets/separator-C5dnwYaA.js +1 -0
  519. package/frontend/client/assets/shell-header-bar-CtUdWFmD.js +1 -0
  520. package/frontend/client/assets/shield-check-93-WFkyJ.js +1 -0
  521. package/frontend/client/assets/standard-schema-C8Td_miB.js +3 -0
  522. package/frontend/client/assets/table-D2oRcUKc.js +1 -0
  523. package/frontend/client/assets/terms-BEja7rHN.js +1 -0
  524. package/frontend/client/assets/text-CGN4ZtUZ.js +1 -0
  525. package/frontend/client/assets/toast-_zV1SGz6.js +1 -0
  526. package/frontend/client/assets/totp-BW4BoCpi.js +1 -0
  527. package/frontend/client/assets/trash-2-BOsxjkzU.js +1 -0
  528. package/frontend/client/assets/triangle-alert-DSSurAZ_.js +1 -0
  529. package/frontend/client/assets/use-admin-selection-CAegSKw5.js +1 -0
  530. package/frontend/client/assets/use-totp-setup-BwOsP75D.js +2 -0
  531. package/frontend/client/assets/useAriaLabelledBy-CYSspZIu.js +1 -0
  532. package/frontend/client/assets/useMutation-C4CmK9Sb.js +1 -0
  533. package/frontend/client/assets/usePositioner-DcBnB2-O.js +1 -0
  534. package/frontend/client/assets/useQuery-BtUeFnRt.js +1 -0
  535. package/frontend/client/assets/useRender-BF5_Ad3C.js +1 -0
  536. package/frontend/client/assets/valueToPercent-LgbY_prH.js +1 -0
  537. package/frontend/server/assets/hydration-CzMpuxhN.js +109 -0
  538. package/frontend/server/assets/root-loader.server-BjcO3GtR.js +15 -0
  539. package/frontend/server/assets/route-runtime.server-DnkciJ0v.js +51 -0
  540. package/frontend/server/assets/session-CEJThdQg.js +8255 -0
  541. package/frontend/server/index.js +73303 -0
  542. package/package.json +33 -43
  543. package/dist/entrypoints/frontend/index.d.ts +0 -4
  544. package/dist/entrypoints/frontend/index.d.ts.map +0 -1
  545. package/dist/entrypoints/frontend/index.js +0 -2
  546. package/dist/entrypoints/frontend/index.js.map +0 -1
  547. package/dist/entrypoints/frontend/proxy.d.ts +0 -2
  548. package/dist/entrypoints/frontend/proxy.d.ts.map +0 -1
  549. package/dist/entrypoints/frontend/proxy.js +0 -2
  550. package/dist/entrypoints/frontend/proxy.js.map +0 -1
  551. package/dist/entrypoints/frontend/static.d.ts +0 -2
  552. package/dist/entrypoints/frontend/static.d.ts.map +0 -1
  553. package/dist/entrypoints/frontend/static.js +0 -2
  554. package/dist/entrypoints/frontend/static.js.map +0 -1
  555. package/dist/lib/config/frontend.d.ts +0 -12
  556. package/dist/lib/config/frontend.d.ts.map +0 -1
  557. package/dist/lib/config/frontend.js +0 -7
  558. package/dist/lib/config/frontend.js.map +0 -1
  559. package/dist/lib/frontend/proxy.d.ts +0 -24
  560. package/dist/lib/frontend/proxy.d.ts.map +0 -1
  561. package/dist/lib/frontend/proxy.js +0 -38
  562. package/dist/lib/frontend/proxy.js.map +0 -1
  563. package/dist/lib/frontend/static.d.ts +0 -21
  564. package/dist/lib/frontend/static.d.ts.map +0 -1
  565. package/dist/lib/frontend/static.js +0 -108
  566. package/dist/lib/frontend/static.js.map +0 -1
  567. package/dist/lib/interpolate-html.d.ts +0 -34
  568. package/dist/lib/interpolate-html.d.ts.map +0 -1
  569. package/dist/lib/interpolate-html.js +0 -61
  570. package/dist/lib/interpolate-html.js.map +0 -1
  571. package/public/assets/2fa-BowFczF7.js +0 -2
  572. package/public/assets/2fa-BowFczF7.js.map +0 -1
  573. package/public/assets/2fa-C_pA-n2i.js +0 -2
  574. package/public/assets/2fa-C_pA-n2i.js.map +0 -1
  575. package/public/assets/2fa-Cpfhakvn.js +0 -2
  576. package/public/assets/2fa-Cpfhakvn.js.map +0 -1
  577. package/public/assets/2fa-o1a13VHx.js +0 -2
  578. package/public/assets/2fa-o1a13VHx.js.map +0 -1
  579. package/public/assets/FieldControl-ShLuCjvG.js +0 -2
  580. package/public/assets/FieldControl-ShLuCjvG.js.map +0 -1
  581. package/public/assets/Separator-C6MmGAmP.js +0 -2
  582. package/public/assets/Separator-C6MmGAmP.js.map +0 -1
  583. package/public/assets/admin-_jFLs8Ve.js +0 -2
  584. package/public/assets/admin-_jFLs8Ve.js.map +0 -1
  585. package/public/assets/admin-shell-B91U4-Ro.js +0 -2
  586. package/public/assets/admin-shell-B91U4-Ro.js.map +0 -1
  587. package/public/assets/alert-D3aaK-_3.js +0 -2
  588. package/public/assets/alert-D3aaK-_3.js.map +0 -1
  589. package/public/assets/alert-kRxM1xsM.js +0 -2
  590. package/public/assets/alert-kRxM1xsM.js.map +0 -1
  591. package/public/assets/auth-choice-row-h4heOMHs.js +0 -2
  592. package/public/assets/auth-choice-row-h4heOMHs.js.map +0 -1
  593. package/public/assets/auth-field-BpJ4AHtU.js +0 -2
  594. package/public/assets/auth-field-BpJ4AHtU.js.map +0 -1
  595. package/public/assets/auth-footer-Du6S-oDG.js +0 -2
  596. package/public/assets/auth-footer-Du6S-oDG.js.map +0 -1
  597. package/public/assets/auth-layout-BdRRr0vT.js +0 -2
  598. package/public/assets/auth-layout-BdRRr0vT.js.map +0 -1
  599. package/public/assets/auth-page-header-ChaCNNrn.js +0 -2
  600. package/public/assets/auth-page-header-ChaCNNrn.js.map +0 -1
  601. package/public/assets/authorization-context-banner-zVxGX5e8.js +0 -2
  602. package/public/assets/authorization-context-banner-zVxGX5e8.js.map +0 -1
  603. package/public/assets/avatar-BxTPQIDp.js +0 -2
  604. package/public/assets/avatar-BxTPQIDp.js.map +0 -1
  605. package/public/assets/badge-B8D0Q2qq.js +0 -2
  606. package/public/assets/badge-B8D0Q2qq.js.map +0 -1
  607. package/public/assets/checkbox-DTPGfvmq.js +0 -2
  608. package/public/assets/checkbox-DTPGfvmq.js.map +0 -1
  609. package/public/assets/circle-check-Cnzuu7xR.js +0 -2
  610. package/public/assets/circle-check-Cnzuu7xR.js.map +0 -1
  611. package/public/assets/clients-DLqy7K3N.js +0 -5
  612. package/public/assets/clients-DLqy7K3N.js.map +0 -1
  613. package/public/assets/config-C18-l7z7.js +0 -2
  614. package/public/assets/config-C18-l7z7.js.map +0 -1
  615. package/public/assets/consent-BWniDzI3.js +0 -2
  616. package/public/assets/consent-BWniDzI3.js.map +0 -1
  617. package/public/assets/consent-r_tX8DTb.js +0 -2
  618. package/public/assets/consent-r_tX8DTb.js.map +0 -1
  619. package/public/assets/createLucideIcon-D-yizrWN.js +0 -2
  620. package/public/assets/createLucideIcon-D-yizrWN.js.map +0 -1
  621. package/public/assets/design-system-rich-text-B3NzIRoJ.js +0 -2
  622. package/public/assets/design-system-rich-text-B3NzIRoJ.js.map +0 -1
  623. package/public/assets/email-Bx9JlWp3.js +0 -2
  624. package/public/assets/email-Bx9JlWp3.js.map +0 -1
  625. package/public/assets/email-Cpfhakvn.js +0 -2
  626. package/public/assets/email-Cpfhakvn.js.map +0 -1
  627. package/public/assets/error-DDY8m_Px.js +0 -2
  628. package/public/assets/error-DDY8m_Px.js.map +0 -1
  629. package/public/assets/field-CsrUbl__.js +0 -3
  630. package/public/assets/field-CsrUbl__.js.map +0 -1
  631. package/public/assets/fingerprint-pattern-BwUoN1_w.js +0 -2
  632. package/public/assets/fingerprint-pattern-BwUoN1_w.js.map +0 -1
  633. package/public/assets/forgot-Cpfhakvn.js +0 -2
  634. package/public/assets/forgot-Cpfhakvn.js.map +0 -1
  635. package/public/assets/forgot-u52JMu6e.js +0 -2
  636. package/public/assets/forgot-u52JMu6e.js.map +0 -1
  637. package/public/assets/form-sJw-V9wb.js +0 -2
  638. package/public/assets/form-sJw-V9wb.js.map +0 -1
  639. package/public/assets/index-8mX6CKcW.css +0 -2
  640. package/public/assets/index-lTEyHSus.js +0 -11
  641. package/public/assets/index-lTEyHSus.js.map +0 -1
  642. package/public/assets/initial-avatar-WMjxW3Zz.js +0 -2
  643. package/public/assets/initial-avatar-WMjxW3Zz.js.map +0 -1
  644. package/public/assets/input-QvBxPgy5.js +0 -2
  645. package/public/assets/input-QvBxPgy5.js.map +0 -1
  646. package/public/assets/key-round-BxWppK6h.js +0 -2
  647. package/public/assets/key-round-BxWppK6h.js.map +0 -1
  648. package/public/assets/labeled-separator-DdkyYDWH.js +0 -2
  649. package/public/assets/labeled-separator-DdkyYDWH.js.map +0 -1
  650. package/public/assets/link-BHmn75Zo.js +0 -2
  651. package/public/assets/link-BHmn75Zo.js.map +0 -1
  652. package/public/assets/lock-8wpR2C78.js +0 -2
  653. package/public/assets/lock-8wpR2C78.js.map +0 -1
  654. package/public/assets/login-Cpfhakvn.js +0 -2
  655. package/public/assets/login-Cpfhakvn.js.map +0 -1
  656. package/public/assets/login-DRcHjJ2-.js +0 -2
  657. package/public/assets/login-DRcHjJ2-.js.map +0 -1
  658. package/public/assets/logout-Dphj1d_0.js +0 -2
  659. package/public/assets/logout-Dphj1d_0.js.map +0 -1
  660. package/public/assets/mail-DVP_XMUi.js +0 -2
  661. package/public/assets/mail-DVP_XMUi.js.map +0 -1
  662. package/public/assets/modal-JuaLVSyx.js +0 -2
  663. package/public/assets/modal-JuaLVSyx.js.map +0 -1
  664. package/public/assets/mutationOptions-Cv_vJkJn.js +0 -2
  665. package/public/assets/mutationOptions-Cv_vJkJn.js.map +0 -1
  666. package/public/assets/passkey-CObBlfKK.js +0 -2
  667. package/public/assets/passkey-CObBlfKK.js.map +0 -1
  668. package/public/assets/passkey-CWTjw19S.js +0 -2
  669. package/public/assets/passkey-CWTjw19S.js.map +0 -1
  670. package/public/assets/passkey-CavITajY.js +0 -2
  671. package/public/assets/passkey-CavITajY.js.map +0 -1
  672. package/public/assets/passkey-Cpfhakvn.js +0 -2
  673. package/public/assets/passkey-Cpfhakvn.js.map +0 -1
  674. package/public/assets/passkey-error-CZ26Ss-I.js +0 -2
  675. package/public/assets/passkey-error-CZ26Ss-I.js.map +0 -1
  676. package/public/assets/password-Cpfhakvn.js +0 -2
  677. package/public/assets/password-Cpfhakvn.js.map +0 -1
  678. package/public/assets/password-Dk8PwtZN.js +0 -2
  679. package/public/assets/password-Dk8PwtZN.js.map +0 -1
  680. package/public/assets/password-reset-BcFpGOop.js +0 -2
  681. package/public/assets/password-reset-BcFpGOop.js.map +0 -1
  682. package/public/assets/password-strength-Bgvy7kz6.js +0 -2
  683. package/public/assets/password-strength-Bgvy7kz6.js.map +0 -1
  684. package/public/assets/pin-input-DhsRO4Ei.js +0 -2
  685. package/public/assets/pin-input-DhsRO4Ei.js.map +0 -1
  686. package/public/assets/profile-PjXEnzA-.js +0 -2
  687. package/public/assets/profile-PjXEnzA-.js.map +0 -1
  688. package/public/assets/profile-k66ruDWl.js +0 -2
  689. package/public/assets/profile-k66ruDWl.js.map +0 -1
  690. package/public/assets/promise-OpBtq8tG.js +0 -2
  691. package/public/assets/promise-OpBtq8tG.js.map +0 -1
  692. package/public/assets/provider-mark-CeYazOfu.js +0 -2
  693. package/public/assets/provider-mark-CeYazOfu.js.map +0 -1
  694. package/public/assets/recovery-hdRyezmb.js +0 -2
  695. package/public/assets/recovery-hdRyezmb.js.map +0 -1
  696. package/public/assets/register-Cpfhakvn.js +0 -2
  697. package/public/assets/register-Cpfhakvn.js.map +0 -1
  698. package/public/assets/register-DMgKT_fm.js +0 -2
  699. package/public/assets/register-DMgKT_fm.js.map +0 -1
  700. package/public/assets/reset-Cpfhakvn.js +0 -2
  701. package/public/assets/reset-Cpfhakvn.js.map +0 -1
  702. package/public/assets/reset-DBu3wYpE.js +0 -2
  703. package/public/assets/reset-DBu3wYpE.js.map +0 -1
  704. package/public/assets/routes-CAIeH5mq.js +0 -2
  705. package/public/assets/routes-CAIeH5mq.js.map +0 -1
  706. package/public/assets/select-5LheSsRl.js +0 -2
  707. package/public/assets/select-5LheSsRl.js.map +0 -1
  708. package/public/assets/select-Cpfhakvn.js +0 -2
  709. package/public/assets/select-Cpfhakvn.js.map +0 -1
  710. package/public/assets/separator-CMGc2Y1q.js +0 -2
  711. package/public/assets/separator-CMGc2Y1q.js.map +0 -1
  712. package/public/assets/settings-BVe4k3kJ.js +0 -2
  713. package/public/assets/settings-BVe4k3kJ.js.map +0 -1
  714. package/public/assets/shell-header-bar-CdOEWmCT.js +0 -2
  715. package/public/assets/shell-header-bar-CdOEWmCT.js.map +0 -1
  716. package/public/assets/shield-check-DpYF8yeI.js +0 -2
  717. package/public/assets/shield-check-DpYF8yeI.js.map +0 -1
  718. package/public/assets/standard-schema-C50nwAaQ.js +0 -2
  719. package/public/assets/standard-schema-C50nwAaQ.js.map +0 -1
  720. package/public/assets/system-BoUqxc5h.js +0 -2
  721. package/public/assets/system-BoUqxc5h.js.map +0 -1
  722. package/public/assets/table-Dl89o43x.js +0 -2
  723. package/public/assets/table-Dl89o43x.js.map +0 -1
  724. package/public/assets/terms-B2wWfx1d.js +0 -2
  725. package/public/assets/terms-B2wWfx1d.js.map +0 -1
  726. package/public/assets/terms-COr3cDw5.js +0 -2
  727. package/public/assets/terms-COr3cDw5.js.map +0 -1
  728. package/public/assets/terms-checkbox-list-C9TkDC8Y.js +0 -2
  729. package/public/assets/terms-checkbox-list-C9TkDC8Y.js.map +0 -1
  730. package/public/assets/terms-k66ruDWl.js +0 -2
  731. package/public/assets/terms-k66ruDWl.js.map +0 -1
  732. package/public/assets/totp-BJycMMTC.js +0 -2
  733. package/public/assets/totp-BJycMMTC.js.map +0 -1
  734. package/public/assets/totp-BhElob6P.js +0 -2
  735. package/public/assets/totp-BhElob6P.js.map +0 -1
  736. package/public/assets/totp-C1ba10Is.js +0 -2
  737. package/public/assets/totp-C1ba10Is.js.map +0 -1
  738. package/public/assets/trash-2-B3NVE8pR.js +0 -2
  739. package/public/assets/trash-2-B3NVE8pR.js.map +0 -1
  740. package/public/assets/triangle-alert-DATO9o3k.js +0 -2
  741. package/public/assets/triangle-alert-DATO9o3k.js.map +0 -1
  742. package/public/assets/use-admin-selection-D2b7jnym.js +0 -2
  743. package/public/assets/use-admin-selection-D2b7jnym.js.map +0 -1
  744. package/public/assets/use-totp-setup-KOVNS2DC.js +0 -3
  745. package/public/assets/use-totp-setup-KOVNS2DC.js.map +0 -1
  746. package/public/assets/useAriaLabelledBy-CF3crxLc.js +0 -2
  747. package/public/assets/useAriaLabelledBy-CF3crxLc.js.map +0 -1
  748. package/public/assets/useMutation-DqIIIiBW.js +0 -2
  749. package/public/assets/useMutation-DqIIIiBW.js.map +0 -1
  750. package/public/assets/useQuery-CLr9TaKA.js +0 -2
  751. package/public/assets/useQuery-CLr9TaKA.js.map +0 -1
  752. package/public/assets/users-BQQQm353.js +0 -2
  753. package/public/assets/users-BQQQm353.js.map +0 -1
  754. package/public/assets/valueToPercent-LgbY_prH.js +0 -2
  755. package/public/assets/valueToPercent-LgbY_prH.js.map +0 -1
  756. package/public/assets/zod-Dszyrytb.js +0 -66
  757. package/public/assets/zod-Dszyrytb.js.map +0 -1
  758. package/public/index.html +0 -31
  759. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  760. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  761. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  762. /package/{public → frontend/client}/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  763. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  764. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  765. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  766. /package/{public → frontend/client}/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  767. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  768. /package/{public → frontend/client}/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  769. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
  770. /package/{public → frontend/client}/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
  771. /package/{public → frontend/client}/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
  772. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-BLMYXIZq.woff2 +0 -0
  773. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-400-normal-DJrewyrW.woff +0 -0
  774. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-B5S02aip.woff2 +0 -0
  775. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-600-normal-DP69BzJV.woff +0 -0
  776. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-9JfFFKCo.woff +0 -0
  777. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-10-700-normal-Blnt0RhT.woff2 +0 -0
  778. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-4_aXP0Hy.woff2 +0 -0
  779. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-400-normal-DsMZ2scz.woff +0 -0
  780. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-Bolb9iqL.woff2 +0 -0
  781. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-600-normal-nIl-leH5.woff +0 -0
  782. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-Bkd0xED8.woff +0 -0
  783. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-100-700-normal-CvaNbDMd.woff2 +0 -0
  784. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-DoWmZlZj.woff +0 -0
  785. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-400-normal-y2nxydha.woff2 +0 -0
  786. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BKchJvlk.woff2 +0 -0
  787. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-600-normal-BrpHYkNm.woff +0 -0
  788. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-CVueR0Vp.woff2 +0 -0
  789. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-101-700-normal-DJ1MIwHY.woff +0 -0
  790. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-BQfFShQ1.woff2 +0 -0
  791. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-400-normal-Ca0txE7W.woff +0 -0
  792. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-B1Puw4D2.woff2 +0 -0
  793. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-600-normal-CUZjz5v8.woff +0 -0
  794. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-BkK1TRsE.woff2 +0 -0
  795. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-102-700-normal-ZVcO00Fl.woff +0 -0
  796. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DHwmA74W.woff +0 -0
  797. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-400-normal-DNs9Omj-.woff2 +0 -0
  798. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-BW8Frffd.woff +0 -0
  799. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-600-normal-tN_-CKym.woff2 +0 -0
  800. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-CXAkQppa.woff2 +0 -0
  801. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-103-700-normal-DNgJaILb.woff +0 -0
  802. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-BmhZQdzl.woff +0 -0
  803. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-400-normal-CuKiid_t.woff2 +0 -0
  804. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-2KjU-YTd.woff2 +0 -0
  805. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-600-normal-Duw986jf.woff +0 -0
  806. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-CYzW5SnO.woff2 +0 -0
  807. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-104-700-normal-Vn6i4czv.woff +0 -0
  808. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-BBf-_m9N.woff +0 -0
  809. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-400-normal-CHWaGU9J.woff2 +0 -0
  810. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-CmUdXGK4.woff +0 -0
  811. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-600-normal-Eel3dN7e.woff2 +0 -0
  812. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-Cv9j40LU.woff2 +0 -0
  813. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-105-700-normal-DWwtLgxy.woff +0 -0
  814. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-CGlLvzZs.woff2 +0 -0
  815. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-400-normal-foxE5hHG.woff +0 -0
  816. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-B1bzLzbH.woff2 +0 -0
  817. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-600-normal-tHp1RYGF.woff +0 -0
  818. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-BtC5W1lQ.woff2 +0 -0
  819. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-106-700-normal-DuUOTgvs.woff +0 -0
  820. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-2yW6cSNP.woff2 +0 -0
  821. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-400-normal-Dh4QR9Sa.woff +0 -0
  822. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-3L-o-gNc.woff +0 -0
  823. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-600-normal-JAonwJOj.woff2 +0 -0
  824. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-BPH5rI6C.woff +0 -0
  825. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-107-700-normal-Cr7-iFW7.woff2 +0 -0
  826. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-BKXuaz7L.woff2 +0 -0
  827. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-400-normal-CMeK7Yoj.woff +0 -0
  828. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-9ormcCnp.woff +0 -0
  829. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-600-normal-CIZc2z7F.woff2 +0 -0
  830. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-BQqq_N37.woff +0 -0
  831. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-108-700-normal-DKrl9gDv.woff2 +0 -0
  832. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-BYkYsUMr.woff +0 -0
  833. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-400-normal-DLZ5N3wZ.woff2 +0 -0
  834. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-DgvmKVfh.woff +0 -0
  835. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-600-normal-J_8d2uPX.woff2 +0 -0
  836. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-BKzoJI_l.woff +0 -0
  837. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-109-700-normal-CgGmrF-h.woff2 +0 -0
  838. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-C0WskPfy.woff2 +0 -0
  839. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-400-normal-D4F8GONb.woff +0 -0
  840. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-HVxl9urI.woff2 +0 -0
  841. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-600-normal-U3d7dgox.woff +0 -0
  842. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-B_TMqNrG.woff +0 -0
  843. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-11-700-normal-DUhgBhd7.woff2 +0 -0
  844. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-BiGMHdAV.woff2 +0 -0
  845. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-400-normal-CWciHSky.woff +0 -0
  846. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-BXI508QN.woff2 +0 -0
  847. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-600-normal-C3nYbUvy.woff +0 -0
  848. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-A9EL87rF.woff2 +0 -0
  849. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-110-700-normal-DjakDWxK.woff +0 -0
  850. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-36IKJEvJ.woff +0 -0
  851. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-400-normal-DwkaZ2wL.woff2 +0 -0
  852. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-B0FD3VdV.woff +0 -0
  853. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-600-normal-DjZCOVOv.woff2 +0 -0
  854. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-B2j03kCB.woff2 +0 -0
  855. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-111-700-normal-Dv5sal4h.woff +0 -0
  856. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DD55zx92.woff +0 -0
  857. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-400-normal-DpWOC24h.woff2 +0 -0
  858. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-BkM4GSUi.woff2 +0 -0
  859. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-600-normal-C2q6NvAJ.woff +0 -0
  860. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Ci_Zf1oH.woff +0 -0
  861. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-112-700-normal-Fyn9YqrR.woff2 +0 -0
  862. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-C-SwPUxy.woff2 +0 -0
  863. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-400-normal-ngLrg9Ph.woff +0 -0
  864. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-FVXa1K7W.woff2 +0 -0
  865. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-600-normal-pSsmDa5a.woff +0 -0
  866. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-CmNR_-6d.woff2 +0 -0
  867. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-113-700-normal-kzCap4I7.woff +0 -0
  868. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-D64L80iO.woff2 +0 -0
  869. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-400-normal-DkNQ39Bm.woff +0 -0
  870. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-CfAYQkvR.woff +0 -0
  871. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-600-normal-DradD0b_.woff2 +0 -0
  872. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-CXZm0WJV.woff +0 -0
  873. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-114-700-normal-DSXuAVj8.woff2 +0 -0
  874. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-BA3oFlL7.woff +0 -0
  875. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-400-normal-DGp_yQCO.woff2 +0 -0
  876. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-5l6N5_Bf.woff +0 -0
  877. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-600-normal-Bf5qTwLg.woff2 +0 -0
  878. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-CCrS9Tpv.woff +0 -0
  879. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-115-700-normal-DhiQdU1x.woff2 +0 -0
  880. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-BidJdmrW.woff +0 -0
  881. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-400-normal-DcXtXIIt.woff2 +0 -0
  882. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-Bwb7m1tn.woff2 +0 -0
  883. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-600-normal-DShPLUNp.woff +0 -0
  884. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C1DXoU6t.woff2 +0 -0
  885. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-116-700-normal-C2BwbuD6.woff +0 -0
  886. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-Bq_d-uLr.woff +0 -0
  887. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-400-normal-hyG31T85.woff2 +0 -0
  888. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-CEeS0kan.woff +0 -0
  889. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-600-normal-DJWr9iDJ.woff2 +0 -0
  890. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-C1ei5J70.woff2 +0 -0
  891. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-117-700-normal-zPjtn9S1.woff +0 -0
  892. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-DFkHFeXA.woff2 +0 -0
  893. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-400-normal-TSsLEGdp.woff +0 -0
  894. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-Cvx3jb5D.woff +0 -0
  895. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-600-normal-o_AOMkHJ.woff2 +0 -0
  896. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-BRNin0K2.woff2 +0 -0
  897. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-118-700-normal-DGkqcNAf.woff +0 -0
  898. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-BUYaH2_l.woff2 +0 -0
  899. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-400-normal-aBgyJQOx.woff +0 -0
  900. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-55p1b1wa.woff +0 -0
  901. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-600-normal-BTu0jZJ-.woff2 +0 -0
  902. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-3JOc_eI7.woff +0 -0
  903. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-119-700-normal-BjmfPyZf.woff2 +0 -0
  904. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-BmG4MYox.woff +0 -0
  905. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-400-normal-quRUVnCJ.woff2 +0 -0
  906. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-B-m8VoGm.woff2 +0 -0
  907. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-600-normal-CxDfRaaH.woff +0 -0
  908. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-C3oRnDW6.woff2 +0 -0
  909. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-12-700-normal-Dv1Y6qdB.woff +0 -0
  910. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-DBDHqw4h.woff2 +0 -0
  911. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-400-normal-QmPj_vZd.woff +0 -0
  912. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CedQxG0H.woff +0 -0
  913. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-600-normal-CgJUuraA.woff2 +0 -0
  914. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DNIRDidW.woff2 +0 -0
  915. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-13-700-normal-DolJGsV8.woff +0 -0
  916. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-CP-jldkl.woff +0 -0
  917. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-400-normal-DPGCrf4O.woff2 +0 -0
  918. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-36G4flWw.woff +0 -0
  919. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-600-normal-aLRf_2tU.woff2 +0 -0
  920. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-CzLCWhzW.woff2 +0 -0
  921. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-14-700-normal-IrHxc9AN.woff +0 -0
  922. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-D_ILNbWZ.woff2 +0 -0
  923. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-400-normal-DhL4usAp.woff +0 -0
  924. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-CCiDkvZ0.woff +0 -0
  925. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-600-normal-Cm8uzUfS.woff2 +0 -0
  926. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-CH_tD5KV.woff2 +0 -0
  927. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-15-700-normal-qiD6EjpF.woff +0 -0
  928. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-CPpcNs7A.woff +0 -0
  929. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-400-normal-DJJG1Tuz.woff2 +0 -0
  930. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DN27F9tO.woff +0 -0
  931. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-600-normal-DZNod9fx.woff2 +0 -0
  932. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-5x97iT4C.woff2 +0 -0
  933. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-16-700-normal-Cjf1zCyl.woff +0 -0
  934. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Cz201O_t.woff2 +0 -0
  935. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-400-normal-Xd0EQnSI.woff +0 -0
  936. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-Dlo-tSr-.woff +0 -0
  937. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-600-normal-GFEV0OtD.woff2 +0 -0
  938. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-CxMAaJ8J.woff +0 -0
  939. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-17-700-normal-pN8BDQje.woff2 +0 -0
  940. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-BiRcNUnW.woff2 +0 -0
  941. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-400-normal-DcRwXlcA.woff +0 -0
  942. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-DjoWpWpr.woff2 +0 -0
  943. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-600-normal-ZWO03fli.woff +0 -0
  944. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-BRP-puz3.woff2 +0 -0
  945. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-18-700-normal-C9acO00v.woff +0 -0
  946. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-BGI-mgYq.woff2 +0 -0
  947. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-400-normal-CAilAALt.woff +0 -0
  948. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-DjYSyktj.woff2 +0 -0
  949. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-600-normal-ce3oirTN.woff +0 -0
  950. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-D-Zw0iJQ.woff2 +0 -0
  951. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-19-700-normal-DDYMc675.woff +0 -0
  952. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-2E5UN6VC.woff +0 -0
  953. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-400-normal-BQfFM2B0.woff2 +0 -0
  954. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-CYRAtz-I.woff2 +0 -0
  955. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-600-normal-DwptQupD.woff +0 -0
  956. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-80GIv_X2.woff +0 -0
  957. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-20-700-normal-Ca_HRr3E.woff2 +0 -0
  958. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-BFnRtDEF.woff +0 -0
  959. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-400-normal-Zr4ScQUF.woff2 +0 -0
  960. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-BA-omFPG.woff2 +0 -0
  961. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-600-normal-CVckMbS4.woff +0 -0
  962. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-BPImLHVa.woff +0 -0
  963. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-21-700-normal-CytBm2Nt.woff2 +0 -0
  964. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-IznGQDkP.woff2 +0 -0
  965. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-400-normal-qTFopCxn.woff +0 -0
  966. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-BWt9cZAr.woff2 +0 -0
  967. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-600-normal-DuqSwCFh.woff +0 -0
  968. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal--3UpG_YA.woff2 +0 -0
  969. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-22-700-normal-DnloFB68.woff +0 -0
  970. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-Bdkhc9Iw.woff2 +0 -0
  971. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-400-normal-BtixcB0-.woff +0 -0
  972. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-Dq8e8WbN.woff +0 -0
  973. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-600-normal-O2srJ8a2.woff2 +0 -0
  974. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-C-Wvz07b.woff2 +0 -0
  975. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-23-700-normal-QWySKNit.woff +0 -0
  976. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-B3OOo0lL.woff +0 -0
  977. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-400-normal-McxyvMnV.woff2 +0 -0
  978. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-A46asPGd.woff +0 -0
  979. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-600-normal-CTyo1FsZ.woff2 +0 -0
  980. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-Ira2Rc5z.woff2 +0 -0
  981. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-24-700-normal-dhK6LPCU.woff +0 -0
  982. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-BFxbWz5n.woff +0 -0
  983. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-400-normal-DFuJhyl7.woff2 +0 -0
  984. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-B2RU3Dvp.woff +0 -0
  985. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-600-normal-DJ9_bhYp.woff2 +0 -0
  986. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-6YS9BiKL.woff +0 -0
  987. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-25-700-normal-CpbQwqpL.woff2 +0 -0
  988. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-DNzE_dbG.woff2 +0 -0
  989. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-400-normal-D_cpF5EA.woff +0 -0
  990. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-ByYIbTSk.woff +0 -0
  991. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-600-normal-Dblu0l-8.woff2 +0 -0
  992. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-B-a8fp43.woff2 +0 -0
  993. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-26-700-normal-oM62RKsO.woff +0 -0
  994. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-CG_CPqz1.woff +0 -0
  995. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-400-normal-c2jdwsOE.woff2 +0 -0
  996. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-3axrvVxa.woff +0 -0
  997. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-600-normal-CffTHcnn.woff2 +0 -0
  998. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-CFbifBY3.woff +0 -0
  999. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-27-700-normal-MrPgyLwW.woff2 +0 -0
  1000. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-C5RxoJ3V.woff +0 -0
  1001. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-400-normal-DXIBRRx0.woff2 +0 -0
  1002. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-BHA5xHG-.woff2 +0 -0
  1003. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-600-normal-t8w8Pigz.woff +0 -0
  1004. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-CfJC1veY.woff2 +0 -0
  1005. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-28-700-normal-DuTXC6M7.woff +0 -0
  1006. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-4EOJmPpr.woff +0 -0
  1007. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-400-normal-DPDbHGRJ.woff2 +0 -0
  1008. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-Ca71NnU-.woff +0 -0
  1009. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-600-normal-jeFY9Hf_.woff2 +0 -0
  1010. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-C11KYH68.woff2 +0 -0
  1011. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-29-700-normal-CzNKW3WB.woff +0 -0
  1012. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-BpFIRrIG.woff +0 -0
  1013. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-400-normal-CSnRHPqi.woff2 +0 -0
  1014. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-C7pAJQf3.woff +0 -0
  1015. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-600-normal-SFbjSSXG.woff2 +0 -0
  1016. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-57H5kXpk.woff +0 -0
  1017. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-3-700-normal-BrLJmDFd.woff2 +0 -0
  1018. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CE7Y9E5I.woff2 +0 -0
  1019. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-400-normal-CkxUuY_J.woff +0 -0
  1020. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-B2Z1u9V0.woff +0 -0
  1021. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-600-normal-BNiX9WYe.woff2 +0 -0
  1022. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BEFP-jPj.woff2 +0 -0
  1023. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-30-700-normal-BarKnue-.woff +0 -0
  1024. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-CaOERqUu.woff2 +0 -0
  1025. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-400-normal-DQ8k7O-z.woff +0 -0
  1026. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-ChsH3Xz1.woff +0 -0
  1027. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-600-normal-DfrgvMVe.woff2 +0 -0
  1028. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-9QmoGV7n.woff2 +0 -0
  1029. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-31-700-normal-uPx24aJ3.woff +0 -0
  1030. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-DCgv6PbD.woff +0 -0
  1031. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-400-normal-oBOpBx6K.woff2 +0 -0
  1032. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-BVvFPwh-.woff +0 -0
  1033. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-600-normal-C6iWVt4P.woff2 +0 -0
  1034. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-BrzljjIv.woff +0 -0
  1035. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-32-700-normal-Ck00YIbi.woff2 +0 -0
  1036. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-7syfOPuJ.woff +0 -0
  1037. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-400-normal-CRgD0sTN.woff2 +0 -0
  1038. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-6C8BpThh.woff +0 -0
  1039. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-600-normal-Di883cZY.woff2 +0 -0
  1040. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-BocR-vpi.woff +0 -0
  1041. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-33-700-normal-CQH8I4uz.woff2 +0 -0
  1042. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-CW90qVjA.woff +0 -0
  1043. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-400-normal-DteAo9_1.woff2 +0 -0
  1044. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BBai0ku9.woff +0 -0
  1045. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-600-normal-BUBreiOx.woff2 +0 -0
  1046. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BQMQzFvO.woff2 +0 -0
  1047. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-34-700-normal-BYKYx0HK.woff +0 -0
  1048. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-_GHhCQ5l.woff2 +0 -0
  1049. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-400-normal-oyHCgG2o.woff +0 -0
  1050. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-B3Re-brg.woff +0 -0
  1051. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-600-normal-DSSj8dPk.woff2 +0 -0
  1052. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-BoDC0KzR.woff2 +0 -0
  1053. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-35-700-normal-CvQah7db.woff +0 -0
  1054. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-BizbVEtQ.woff2 +0 -0
  1055. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-400-normal-D7gQSpeq.woff +0 -0
  1056. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-BiBUOoTN.woff +0 -0
  1057. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-600-normal-CVgRkKvZ.woff2 +0 -0
  1058. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Cx600hZn.woff +0 -0
  1059. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-36-700-normal-Dxydenfw.woff2 +0 -0
  1060. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-B-iV2FCz.woff +0 -0
  1061. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-400-normal-CrxhJitf.woff2 +0 -0
  1062. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-56davMJK.woff +0 -0
  1063. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-600-normal-BMpyr2ZA.woff2 +0 -0
  1064. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-Cr4qQ6-_.woff2 +0 -0
  1065. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-37-700-normal-D6fQD8s2.woff +0 -0
  1066. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-D1Vp2bgS.woff2 +0 -0
  1067. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-400-normal-DH9qOlQO.woff +0 -0
  1068. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-BtzFMeyM.woff +0 -0
  1069. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-600-normal-DgBl-sfZ.woff2 +0 -0
  1070. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-BnkgwyNC.woff2 +0 -0
  1071. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-38-700-normal-DrLlCQdP.woff +0 -0
  1072. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-D5wsbWuV.woff2 +0 -0
  1073. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-400-normal-Dk7rkHeG.woff +0 -0
  1074. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-CGMVkPUQ.woff +0 -0
  1075. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-600-normal-D_kp1-X0.woff2 +0 -0
  1076. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-ADsZ937l.woff2 +0 -0
  1077. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-39-700-normal-tkFC4Fme.woff +0 -0
  1078. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-400-normal-mGIBpTDA.woff +0 -0
  1079. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-600-normal-ItZEXAoj.woff +0 -0
  1080. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-4-700-normal-B2Sn8ODt.woff +0 -0
  1081. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-DRF-ZkFr.woff2 +0 -0
  1082. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-400-normal-Dye9yGvg.woff +0 -0
  1083. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DD0bpqGF.woff2 +0 -0
  1084. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-600-normal-DSxToWDI.woff +0 -0
  1085. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-D9qdrR16.woff +0 -0
  1086. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-40-700-normal-DJ9uBiDw.woff2 +0 -0
  1087. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-BqAaxgfH.woff2 +0 -0
  1088. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-400-normal-CsmxKILz.woff +0 -0
  1089. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-BQOZ4bZi.woff2 +0 -0
  1090. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-600-normal-Jx8Bp44x.woff +0 -0
  1091. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-BGJMzr3_.woff2 +0 -0
  1092. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-41-700-normal-UuW3VIUX.woff +0 -0
  1093. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Bwv1VfH1.woff +0 -0
  1094. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-400-normal-Dl6WfOX3.woff2 +0 -0
  1095. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-Bpb5tt9_.woff +0 -0
  1096. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-600-normal-DIFsJkow.woff2 +0 -0
  1097. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-BSSeJztI.woff +0 -0
  1098. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-42-700-normal-DSVZ1AdV.woff2 +0 -0
  1099. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-BWVo0zWK.woff2 +0 -0
  1100. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-400-normal-d-ngL4VK.woff +0 -0
  1101. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BQhDNXpW.woff2 +0 -0
  1102. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-600-normal-BcvVxmDS.woff +0 -0
  1103. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-BzUW0Dn4.woff +0 -0
  1104. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-43-700-normal-DKxEyxqG.woff2 +0 -0
  1105. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-C6WuUhoa.woff2 +0 -0
  1106. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-400-normal-Dpw9oVkY.woff +0 -0
  1107. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-BAOsDDVH.woff2 +0 -0
  1108. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-600-normal-Bt-5iAy-.woff +0 -0
  1109. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-CKy2WdQj.woff2 +0 -0
  1110. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-44-700-normal-DWwfiF2R.woff +0 -0
  1111. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-B9Y_v3iL.woff2 +0 -0
  1112. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-400-normal-Cw08yPg4.woff +0 -0
  1113. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-C3VBxVTw.woff2 +0 -0
  1114. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-600-normal-CPG32_M5.woff +0 -0
  1115. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-B2EBYgsw.woff2 +0 -0
  1116. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-45-700-normal-CBBnYnrG.woff +0 -0
  1117. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Bo2fKdUV.woff2 +0 -0
  1118. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-400-normal-Dya4Xg3C.woff +0 -0
  1119. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BZxPnU9z.woff +0 -0
  1120. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-600-normal-BwyRFFoW.woff2 +0 -0
  1121. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-BWHZA6Va.woff +0 -0
  1122. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-46-700-normal-DGQdaffJ.woff2 +0 -0
  1123. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-BaRCXue3.woff2 +0 -0
  1124. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-400-normal-DWeXBY63.woff +0 -0
  1125. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-BJMJyZ3V.woff2 +0 -0
  1126. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-600-normal-CyutRTf1.woff +0 -0
  1127. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-N6twIXlf.woff +0 -0
  1128. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-47-700-normal-_dAzPdKJ.woff2 +0 -0
  1129. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-JS-IrZBF.woff +0 -0
  1130. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-400-normal-ezIou-vd.woff2 +0 -0
  1131. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-BKUm06v8.woff +0 -0
  1132. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-600-normal-SLeRHHzg.woff2 +0 -0
  1133. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-B5gMlKVs.woff2 +0 -0
  1134. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-48-700-normal-DQ5H61GM.woff +0 -0
  1135. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-BGMyUOoF.woff2 +0 -0
  1136. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-400-normal-CpOmgEj1.woff +0 -0
  1137. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DASryXO5.woff2 +0 -0
  1138. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-600-normal-DyDLcZM_.woff +0 -0
  1139. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-C2pGRKdb.woff2 +0 -0
  1140. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-49-700-normal-dsyop0xt.woff +0 -0
  1141. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-CUIc6NHY.woff2 +0 -0
  1142. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-400-normal-D2dVMMqj.woff +0 -0
  1143. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-7tGyeWfE.woff2 +0 -0
  1144. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-600-normal-LSwIbfT4.woff +0 -0
  1145. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-4pOvaKVD.woff2 +0 -0
  1146. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-5-700-normal-BdZNxX81.woff +0 -0
  1147. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DDJncqjC.woff +0 -0
  1148. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-400-normal-DU9yuSzL.woff2 +0 -0
  1149. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-KlXN5ii8.woff +0 -0
  1150. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-600-normal-bZ0wMfTu.woff2 +0 -0
  1151. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-C3Bon6kP.woff +0 -0
  1152. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-50-700-normal-CKBR3dTc.woff2 +0 -0
  1153. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-B6ntzhez.woff +0 -0
  1154. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-400-normal-DxvfHPiZ.woff2 +0 -0
  1155. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-CxAqcrGJ.woff +0 -0
  1156. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-600-normal-ofakrDYw.woff2 +0 -0
  1157. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-Bfs6gmfs.woff +0 -0
  1158. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-52-700-normal-D9sJhzsn.woff2 +0 -0
  1159. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-BNzLW3gK.woff2 +0 -0
  1160. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-400-normal-arm4ZLbG.woff +0 -0
  1161. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-BYo95wdR.woff2 +0 -0
  1162. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-600-normal-CTWAZiwT.woff +0 -0
  1163. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-7icOh9fn.woff2 +0 -0
  1164. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-53-700-normal-CXC3RG0Y.woff +0 -0
  1165. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CXMVQbir.woff +0 -0
  1166. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-400-normal-CgSa9olG.woff2 +0 -0
  1167. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-5IjjJd2s.woff2 +0 -0
  1168. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-600-normal-Dp8k-UQr.woff +0 -0
  1169. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-eDLHHM6r.woff +0 -0
  1170. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-55-700-normal-ecLDx596.woff2 +0 -0
  1171. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BImwtP9C.woff2 +0 -0
  1172. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-400-normal-BikO35BJ.woff +0 -0
  1173. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-DsSHHMYs.woff2 +0 -0
  1174. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-600-normal-fFxOmumy.woff +0 -0
  1175. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-Dg77fDuG.woff2 +0 -0
  1176. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-56-700-normal-DiUSRVIQ.woff +0 -0
  1177. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-Iyqdz6U_.woff +0 -0
  1178. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-400-normal-jeWDsIkS.woff2 +0 -0
  1179. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-Bma8ReWy.woff2 +0 -0
  1180. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-600-normal-D3LkCFqf.woff +0 -0
  1181. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-BgsgXhin.woff +0 -0
  1182. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-58-700-normal-DQNvf_Pi.woff2 +0 -0
  1183. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-CkeNzekL.woff +0 -0
  1184. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-400-normal-D7J9HacT.woff2 +0 -0
  1185. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-B0Hs_yqp.woff +0 -0
  1186. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-600-normal-y8o2u47q.woff2 +0 -0
  1187. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-BEPxXZmH.woff2 +0 -0
  1188. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-59-700-normal-CqOqqrqQ.woff +0 -0
  1189. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-CK1rBi2w.woff2 +0 -0
  1190. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-400-normal-DQz22aVW.woff +0 -0
  1191. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-Bgp388lR.woff2 +0 -0
  1192. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-600-normal-DZtAE4NN.woff +0 -0
  1193. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-BFaRWvXD.woff +0 -0
  1194. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-6-700-normal-UVZzLgo1.woff2 +0 -0
  1195. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-Bc0pWfYQ.woff2 +0 -0
  1196. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-400-normal-DU4X4cgu.woff +0 -0
  1197. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-D22FGjEf.woff +0 -0
  1198. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-600-normal-DGaJXlcP.woff2 +0 -0
  1199. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-B4sph3s0.woff2 +0 -0
  1200. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-60-700-normal-DBfqpTpp.woff +0 -0
  1201. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BTqxO8KS.woff2 +0 -0
  1202. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-400-normal-BZ_Lvmfb.woff +0 -0
  1203. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-BkIPCguy.woff +0 -0
  1204. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-600-normal-D_Q2U_HY.woff2 +0 -0
  1205. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-BkfJ-_O-.woff +0 -0
  1206. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-61-700-normal-CwN3DFq1.woff2 +0 -0
  1207. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-CRZQtL4e.woff +0 -0
  1208. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-400-normal-DSLFRuBi.woff2 +0 -0
  1209. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-CAFV2WS-.woff2 +0 -0
  1210. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-600-normal-DRBwH2wC.woff +0 -0
  1211. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-D9oj9FbO.woff +0 -0
  1212. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-62-700-normal-gTii6YIK.woff2 +0 -0
  1213. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-BCOcqFvH.woff +0 -0
  1214. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-400-normal-NWeXooWt.woff2 +0 -0
  1215. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-Dwsde-Vo.woff2 +0 -0
  1216. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-600-normal-rFqEK_Cq.woff +0 -0
  1217. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-B4li38vl.woff +0 -0
  1218. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-63-700-normal-DYsI6Aeh.woff2 +0 -0
  1219. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DjS9hHaA.woff +0 -0
  1220. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-400-normal-DplHNRWf.woff2 +0 -0
  1221. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-8FGNeBVO.woff +0 -0
  1222. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-600-normal-BE-tQzc4.woff2 +0 -0
  1223. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-X_3qL3eD.woff +0 -0
  1224. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-64-700-normal-_sOvmSPU.woff2 +0 -0
  1225. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-BIWHDE_t.woff2 +0 -0
  1226. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-400-normal-DNiOFlC5.woff +0 -0
  1227. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-8ErTTni6.woff2 +0 -0
  1228. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-600-normal-Ckksq6Um.woff +0 -0
  1229. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-9c1B3ugf.woff +0 -0
  1230. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-65-700-normal-C2SAUond.woff2 +0 -0
  1231. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-BfKrnenI.woff +0 -0
  1232. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-400-normal-CNxVmlv6.woff2 +0 -0
  1233. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-hyHZDzzP.woff2 +0 -0
  1234. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-600-normal-nq1zdTbH.woff +0 -0
  1235. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-Ctdcjw58.woff +0 -0
  1236. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-66-700-normal-D_FuIz1A.woff2 +0 -0
  1237. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-D3j6dBx3.woff +0 -0
  1238. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-400-normal-lzlrdx0G.woff2 +0 -0
  1239. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-6KKBCWxa.woff2 +0 -0
  1240. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-600-normal-DgWoOUUg.woff +0 -0
  1241. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-B3QY7F5h.woff2 +0 -0
  1242. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-67-700-normal-Bk31nBaz.woff +0 -0
  1243. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-BpRgjvkz.woff +0 -0
  1244. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-400-normal-CfTKk1Ti.woff2 +0 -0
  1245. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-BlYm4TE_.woff2 +0 -0
  1246. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-600-normal-DiY9dfka.woff +0 -0
  1247. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-C6ZrhK66.woff +0 -0
  1248. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-68-700-normal-Cb_onqwe.woff2 +0 -0
  1249. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-ClpMq853.woff2 +0 -0
  1250. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-400-normal-DIRwnaAC.woff +0 -0
  1251. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-Bsq_ALiN.woff2 +0 -0
  1252. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-600-normal-D5M2jRxh.woff +0 -0
  1253. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-D25giLXx.woff +0 -0
  1254. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-69-700-normal-DJ24ly1p.woff2 +0 -0
  1255. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-BlNTLUxk.woff +0 -0
  1256. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-400-normal-Ce6XQT-X.woff2 +0 -0
  1257. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-BIimYJ8p.woff2 +0 -0
  1258. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-600-normal-u7RE7Vcl.woff +0 -0
  1259. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-BxRQ3DPg.woff +0 -0
  1260. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-7-700-normal-DK5zmmDo.woff2 +0 -0
  1261. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BQZWkZap.woff2 +0 -0
  1262. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-400-normal-BvYVJLC-.woff +0 -0
  1263. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-COjhVT5P.woff +0 -0
  1264. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-600-normal-D_nkzVDi.woff2 +0 -0
  1265. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-BJsNk892.woff +0 -0
  1266. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-70-700-normal-D0rsZ7c1.woff2 +0 -0
  1267. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-BF8CoFgI.woff +0 -0
  1268. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-400-normal-HbsCI6VV.woff2 +0 -0
  1269. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-CfPjA3xh.woff +0 -0
  1270. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-600-normal-ChBeHVSC.woff2 +0 -0
  1271. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-B88Gnili.woff +0 -0
  1272. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-71-700-normal-D9HVw03N.woff2 +0 -0
  1273. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-BKinYB31.woff +0 -0
  1274. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-400-normal-D3NTG_Qr.woff2 +0 -0
  1275. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-BpU6wBwH.woff +0 -0
  1276. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-600-normal-rfJ4c39Q.woff2 +0 -0
  1277. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DClz9Dhe.woff +0 -0
  1278. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-72-700-normal-DnfTuI4o.woff2 +0 -0
  1279. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-B9cHSeQ5.woff2 +0 -0
  1280. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-400-normal-HVPdCDZ0.woff +0 -0
  1281. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-BL0EAwDJ.woff +0 -0
  1282. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-600-normal-CoMSI1sj.woff2 +0 -0
  1283. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-5BseSrpV.woff +0 -0
  1284. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-73-700-normal-DW-mflD2.woff2 +0 -0
  1285. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BM6YwLsn.woff2 +0 -0
  1286. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-400-normal-BTWjvuog.woff +0 -0
  1287. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-CxFvTzoC.woff2 +0 -0
  1288. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-600-normal-D51sy90d.woff +0 -0
  1289. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-Bp0aGueO.woff2 +0 -0
  1290. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-74-700-normal-CQdRArtb.woff +0 -0
  1291. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DX0jfUHx.woff +0 -0
  1292. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-400-normal-DrNdqo4y.woff2 +0 -0
  1293. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DvAVPJPm.woff +0 -0
  1294. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-600-normal-DzUkgy6d.woff2 +0 -0
  1295. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-BUGpoCPv.woff2 +0 -0
  1296. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-75-700-normal-CbVTJJOJ.woff +0 -0
  1297. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-BtXAriso.woff2 +0 -0
  1298. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-400-normal-DvZrEIB3.woff +0 -0
  1299. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-Bkns-GmL.woff +0 -0
  1300. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-600-normal-XH04BMqX.woff2 +0 -0
  1301. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-BfaxMcpg.woff2 +0 -0
  1302. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-76-700-normal-DC5DjlVx.woff +0 -0
  1303. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-C8x5jxqc.woff2 +0 -0
  1304. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-400-normal-DIwXWqjG.woff +0 -0
  1305. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-Dst0n_2I.woff2 +0 -0
  1306. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-600-normal-TveJi30r.woff +0 -0
  1307. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-BXcw4A5K.woff2 +0 -0
  1308. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-77-700-normal-C5mt5pwb.woff +0 -0
  1309. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DUw4O9kJ.woff2 +0 -0
  1310. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-400-normal-DdAHar7U.woff +0 -0
  1311. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-CdDbCMo5.woff2 +0 -0
  1312. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-600-normal-WSGX5G5j.woff +0 -0
  1313. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-BX4TFa2_.woff2 +0 -0
  1314. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-78-700-normal-DQFNc6DE.woff +0 -0
  1315. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-CHV4cTl6.woff2 +0 -0
  1316. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-400-normal-DKXEv0-8.woff +0 -0
  1317. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-BwemUgt7.woff2 +0 -0
  1318. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-600-normal-jqoE6MSf.woff +0 -0
  1319. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-C7dv3Yp1.woff +0 -0
  1320. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-79-700-normal-Dc8--5xr.woff2 +0 -0
  1321. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-SmEnIkYa.woff +0 -0
  1322. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-400-normal-tFiGs3IA.woff2 +0 -0
  1323. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-BXRUM-0I.woff2 +0 -0
  1324. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-600-normal-G3AQr80e.woff +0 -0
  1325. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-BJ-eyJFM.woff2 +0 -0
  1326. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-8-700-normal-D8XNQCXr.woff +0 -0
  1327. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-B1EBYabM.woff +0 -0
  1328. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-400-normal-boMeGYwE.woff2 +0 -0
  1329. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-5_89urOt.woff +0 -0
  1330. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-600-normal-Cn0IXtFE.woff2 +0 -0
  1331. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-BOd0bDGO.woff +0 -0
  1332. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-80-700-normal-C26YuVxL.woff2 +0 -0
  1333. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-BRtTCfUk.woff +0 -0
  1334. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-400-normal-D32P0Vtu.woff2 +0 -0
  1335. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-BrNo5bPi.woff2 +0 -0
  1336. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-600-normal-ic2OowiW.woff +0 -0
  1337. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-CVYiHbL6.woff +0 -0
  1338. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-81-700-normal-u-vEkTpG.woff2 +0 -0
  1339. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-BQWp4BEz.woff +0 -0
  1340. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-400-normal-DDpDjsGx.woff2 +0 -0
  1341. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-DajH-4xp.woff2 +0 -0
  1342. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-600-normal-icuQ__PU.woff +0 -0
  1343. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-ClV-zSDt.woff +0 -0
  1344. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-82-700-normal-CnyrRvpH.woff2 +0 -0
  1345. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-Bw_rXMEi.woff2 +0 -0
  1346. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-400-normal-yc2U6i4H.woff +0 -0
  1347. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-C2uell5V.woff +0 -0
  1348. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-600-normal-DsLbRz3E.woff2 +0 -0
  1349. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-2GacE3N5.woff +0 -0
  1350. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-83-700-normal-EpYP79Ha.woff2 +0 -0
  1351. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C14BeeRx.woff2 +0 -0
  1352. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-400-normal-C_JCm1wG.woff +0 -0
  1353. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CCq3cWfr.woff2 +0 -0
  1354. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-600-normal-CNKfBGzf.woff +0 -0
  1355. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-DvPwdAi9.woff +0 -0
  1356. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-84-700-normal-bReT13VI.woff2 +0 -0
  1357. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-CxNRCaXC.woff +0 -0
  1358. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-400-normal-DIfXns4-.woff2 +0 -0
  1359. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-8jj6aRvF.woff2 +0 -0
  1360. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-600-normal-DlyOX1Qf.woff +0 -0
  1361. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-D8sN10Nm.woff +0 -0
  1362. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-85-700-normal-og8bjehs.woff2 +0 -0
  1363. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Bb5ShdOk.woff +0 -0
  1364. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-400-normal-Dwyie3Iv.woff2 +0 -0
  1365. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-CdiZE1rm.woff2 +0 -0
  1366. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-600-normal-sZuKvaH0.woff +0 -0
  1367. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BTXGcZ1f.woff2 +0 -0
  1368. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-86-700-normal-BfB1Adps.woff +0 -0
  1369. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-9iA5aW6B.woff2 +0 -0
  1370. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-400-normal-BlQLoLxo.woff +0 -0
  1371. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-CuP_sqvk.woff +0 -0
  1372. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-600-normal-DJDdt009.woff2 +0 -0
  1373. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-T5FoFJ7Z.woff +0 -0
  1374. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-87-700-normal-ZAIr8xfv.woff2 +0 -0
  1375. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-47Y8c3gi.woff +0 -0
  1376. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-400-normal-Ce6Hc4-O.woff2 +0 -0
  1377. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-C0xzysV4.woff +0 -0
  1378. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-600-normal-R7ba6CXY.woff2 +0 -0
  1379. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-BhgGw4mN.woff +0 -0
  1380. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-88-700-normal-DqgQgYzO.woff2 +0 -0
  1381. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-BQ1quosg.woff +0 -0
  1382. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-400-normal-DWWwgYkQ.woff2 +0 -0
  1383. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-C2tA-5LU.woff +0 -0
  1384. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-600-normal-DhA0Dlsd.woff2 +0 -0
  1385. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-BhPAGixe.woff2 +0 -0
  1386. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-89-700-normal-Q4Ct26U-.woff +0 -0
  1387. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal--2P0gMaE.woff2 +0 -0
  1388. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-400-normal-DOuCM5BV.woff +0 -0
  1389. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-BWVUGdkT.woff2 +0 -0
  1390. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-600-normal-DKQ7A1j0.woff +0 -0
  1391. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-CeF5ynVi.woff +0 -0
  1392. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-9-700-normal-U3Fi3Xkr.woff2 +0 -0
  1393. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-CfqeE6EG.woff +0 -0
  1394. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-400-normal-D_k1n-D_.woff2 +0 -0
  1395. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-Bwsph-Eg.woff +0 -0
  1396. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-600-normal-DhhMI-5X.woff2 +0 -0
  1397. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-B0dGlL2-.woff +0 -0
  1398. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-90-700-normal-C8Hbz-dX.woff2 +0 -0
  1399. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Ciy4dQcd.woff +0 -0
  1400. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-400-normal-Dqn0gBBY.woff2 +0 -0
  1401. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-CMZZHiYs.woff2 +0 -0
  1402. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-600-normal-D3h_qbuq.woff +0 -0
  1403. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-B1DETJv2.woff2 +0 -0
  1404. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-91-700-normal-M5nVKp2A.woff +0 -0
  1405. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-BfkGgwSg.woff2 +0 -0
  1406. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-400-normal-DoNv6QKI.woff +0 -0
  1407. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-9-dsEf5V.woff2 +0 -0
  1408. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-600-normal-cJ6s0u50.woff +0 -0
  1409. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-ByHPz9kn.woff +0 -0
  1410. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-92-700-normal-D6FBL1WO.woff2 +0 -0
  1411. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-B6WlHkvJ.woff +0 -0
  1412. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-400-normal-CXc_m19k.woff2 +0 -0
  1413. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-BSK1xVrb.woff2 +0 -0
  1414. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-600-normal-OQ8utWzT.woff +0 -0
  1415. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-B6i_9_xV.woff2 +0 -0
  1416. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-93-700-normal-C0PiAt94.woff +0 -0
  1417. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-B4bajS3c.woff2 +0 -0
  1418. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-400-normal-FBGzvyjM.woff +0 -0
  1419. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-Cl_ZMZu8.woff2 +0 -0
  1420. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-600-normal-pqZtpQem.woff +0 -0
  1421. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-BhojjqGx.woff2 +0 -0
  1422. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-94-700-normal-DWNWPMXr.woff +0 -0
  1423. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-BaY9CSq2.woff +0 -0
  1424. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-400-normal-DPH1GVj3.woff2 +0 -0
  1425. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-BcydLyYe.woff +0 -0
  1426. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-600-normal-DqzXikSS.woff2 +0 -0
  1427. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-0cKlfajM.woff +0 -0
  1428. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-95-700-normal-BNFDc8MW.woff2 +0 -0
  1429. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-CXuQ_R0S.woff +0 -0
  1430. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-400-normal-OCME7gOK.woff2 +0 -0
  1431. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-BgkVLddD.woff +0 -0
  1432. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-600-normal-GzZNxGhs.woff2 +0 -0
  1433. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-Qh65nqz2.woff +0 -0
  1434. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-96-700-normal-a40eS-gV.woff2 +0 -0
  1435. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-4k_rP24C.woff2 +0 -0
  1436. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-400-normal-CP6Nx25U.woff +0 -0
  1437. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-CIqUzk_a.woff2 +0 -0
  1438. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-600-normal-DCSYk_Yh.woff +0 -0
  1439. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-DnbCIk-O.woff +0 -0
  1440. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-97-700-normal-zgPUJYJw.woff2 +0 -0
  1441. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-B515X6p6.woff2 +0 -0
  1442. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-400-normal-Cf7sm02w.woff +0 -0
  1443. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-DugMp3FI.woff +0 -0
  1444. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-600-normal-pBxafNws.woff2 +0 -0
  1445. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-7KdM18gu.woff +0 -0
  1446. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-98-700-normal-CMi4ZY-h.woff2 +0 -0
  1447. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-BcrT9Fgn.woff +0 -0
  1448. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-400-normal-DmQyl23y.woff2 +0 -0
  1449. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-CeMMRcA6.woff +0 -0
  1450. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-600-normal-DnK7T1fc.woff2 +0 -0
  1451. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-CINNKEoN.woff +0 -0
  1452. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-99-700-normal-sDTGjBrk.woff2 +0 -0
  1453. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-B9g1Ctqd.woff2 +0 -0
  1454. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-400-normal-DJG00D-p.woff +0 -0
  1455. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-B4enfOPB.woff +0 -0
  1456. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-600-normal-DCQl7zAm.woff2 +0 -0
  1457. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-CqLTajqw.woff2 +0 -0
  1458. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-cyrillic-700-normal-hKVirjqK.woff +0 -0
  1459. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-CDdMl-oX.woff2 +0 -0
  1460. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-400-normal-D5LEXcjN.woff +0 -0
  1461. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-DmCaZeJ-.woff2 +0 -0
  1462. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-600-normal-Ds_Fb90o.woff +0 -0
  1463. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-8D2N3nxA.woff +0 -0
  1464. /package/{public → frontend/client}/assets/ibm-plex-sans-jp-latin-700-normal-BTYOjzj6.woff2 +0 -0
  1465. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-COdVePwF.woff2 +0 -0
  1466. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-400-normal-DEF_oZFa.woff +0 -0
  1467. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DLXpb0hq.woff +0 -0
  1468. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-600-normal-DuzcAQdo.woff2 +0 -0
  1469. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-BKXIEbM-.woff +0 -0
  1470. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-0-700-normal-C-cy4WQL.woff2 +0 -0
  1471. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-BOnpTeYv.woff2 +0 -0
  1472. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-400-normal-CRn7_mZz.woff +0 -0
  1473. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-BAjKvcG-.woff2 +0 -0
  1474. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-600-normal-DIq7Gv9V.woff +0 -0
  1475. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CO8B564V.woff +0 -0
  1476. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-10-700-normal-CYiGY1Yb.woff2 +0 -0
  1477. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-3DeNbFry.woff2 +0 -0
  1478. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-400-normal-BQdwTqgb.woff +0 -0
  1479. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-CcI0wmDd.woff2 +0 -0
  1480. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-600-normal-ZYmKSXu1.woff +0 -0
  1481. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-BzrrxQTg.woff2 +0 -0
  1482. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-100-700-normal-CMsSAe0_.woff +0 -0
  1483. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-CwhtzdGH.woff2 +0 -0
  1484. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-400-normal-DQN8MKOE.woff +0 -0
  1485. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-Cf7HWvBM.woff2 +0 -0
  1486. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-600-normal-DOUVV8ig.woff +0 -0
  1487. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-CByVAW_A.woff2 +0 -0
  1488. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-101-700-normal-VIPXB5Il.woff +0 -0
  1489. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-BC0mCFX2.woff2 +0 -0
  1490. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-400-normal-DHfan8x-.woff +0 -0
  1491. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-BIIL4Btv.woff +0 -0
  1492. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-600-normal-CN8RaHGd.woff2 +0 -0
  1493. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-BMMLfFhV.woff2 +0 -0
  1494. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-102-700-normal-DmfLM_GL.woff +0 -0
  1495. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-BQNnzD7b.woff +0 -0
  1496. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-400-normal-CYHfi_5o.woff2 +0 -0
  1497. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-8oNp3a_g.woff2 +0 -0
  1498. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-600-normal-BKXxr4Vf.woff +0 -0
  1499. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-BcdoKDVA.woff +0 -0
  1500. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-103-700-normal-Dxy_7wWe.woff2 +0 -0
  1501. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-BrHR60F5.woff2 +0 -0
  1502. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-400-normal-kn3L8mkz.woff +0 -0
  1503. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DHHBh9NH.woff2 +0 -0
  1504. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-600-normal-DbfrFOKo.woff +0 -0
  1505. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-BBQprcoA.woff +0 -0
  1506. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-104-700-normal-DIYBHFGo.woff2 +0 -0
  1507. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-BY6JiZG_.woff2 +0 -0
  1508. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-400-normal-D20hKn8x.woff +0 -0
  1509. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-Bdo6QjXy.woff2 +0 -0
  1510. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-600-normal-DU6215sy.woff +0 -0
  1511. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-CNeD7cKc.woff +0 -0
  1512. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-105-700-normal-D4WgQZhf.woff2 +0 -0
  1513. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-CKM4EqLH.woff2 +0 -0
  1514. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-400-normal-DRimGseV.woff +0 -0
  1515. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-CIkK4pwL.woff +0 -0
  1516. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-600-normal-o84Tuavw.woff2 +0 -0
  1517. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-DKK03KYp.woff2 +0 -0
  1518. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-106-700-normal-Sq9FhKgR.woff +0 -0
  1519. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-9_m442uC.woff +0 -0
  1520. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-400-normal-DFBsPAhk.woff2 +0 -0
  1521. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-Bj6Oga3u.woff2 +0 -0
  1522. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-600-normal-IB6GFZTf.woff +0 -0
  1523. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-BPp3kOId.woff2 +0 -0
  1524. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-107-700-normal-CXE0S75n.woff +0 -0
  1525. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-D7nsD7Wm.woff +0 -0
  1526. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-400-normal-DbmD_Owd.woff2 +0 -0
  1527. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-C5FnASlc.woff +0 -0
  1528. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-600-normal-Cz9v4gjx.woff2 +0 -0
  1529. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-BeBTa0LV.woff2 +0 -0
  1530. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-108-700-normal-DblVcY4a.woff +0 -0
  1531. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-Ch-uxywT.woff +0 -0
  1532. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-400-normal-ChZ2CLi-.woff2 +0 -0
  1533. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-BkGpNJKI.woff2 +0 -0
  1534. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-600-normal-CG9-PeCF.woff +0 -0
  1535. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CZW29fAQ.woff +0 -0
  1536. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-109-700-normal-CkMuXuOj.woff2 +0 -0
  1537. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-CN_UQa3U.woff +0 -0
  1538. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-400-normal-DY57wkwV.woff2 +0 -0
  1539. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-BUarw7E5.woff +0 -0
  1540. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-600-normal-Ds-mjTNk.woff2 +0 -0
  1541. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-BntN_kys.woff2 +0 -0
  1542. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-11-700-normal-DoPFrHSK.woff +0 -0
  1543. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-D259vsJ_.woff +0 -0
  1544. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-400-normal-DvUF8GMi.woff2 +0 -0
  1545. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-CisRgCMg.woff2 +0 -0
  1546. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-600-normal-ReaqIn5m.woff +0 -0
  1547. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BIiZFSUQ.woff2 +0 -0
  1548. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-110-700-normal-BylngM58.woff +0 -0
  1549. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-BqppHOeA.woff +0 -0
  1550. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-400-normal-DaCXFUcH.woff2 +0 -0
  1551. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-2DkYfPPb.woff +0 -0
  1552. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-600-normal-DN6cN55_.woff2 +0 -0
  1553. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-DjiLTpOV.woff +0 -0
  1554. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-111-700-normal-zUtSBhiX.woff2 +0 -0
  1555. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-B8TcbMdb.woff +0 -0
  1556. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-400-normal-BJLUyYDo.woff2 +0 -0
  1557. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-lS3UdozO.woff +0 -0
  1558. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-600-normal-nFX-cMXi.woff2 +0 -0
  1559. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-DYzxzB3U.woff +0 -0
  1560. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-112-700-normal-NT-G-2lC.woff2 +0 -0
  1561. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-CEDRAc_f.woff2 +0 -0
  1562. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-400-normal-DlThbTsi.woff +0 -0
  1563. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-C_RUWM8I.woff +0 -0
  1564. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-600-normal-Dhfyy0ky.woff2 +0 -0
  1565. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-CdI89zbS.woff2 +0 -0
  1566. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-113-700-normal-DRor3NKv.woff +0 -0
  1567. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-5bMSGSar.woff +0 -0
  1568. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-400-normal-Bpqw4_PX.woff2 +0 -0
  1569. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-BKj6RBZ7.woff +0 -0
  1570. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-600-normal-CjRp-Iz4.woff2 +0 -0
  1571. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-BXC27J9C.woff +0 -0
  1572. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-114-700-normal-JtZooioR.woff2 +0 -0
  1573. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-6-qa9Uj4.woff2 +0 -0
  1574. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-400-normal-CM7tVCiU.woff +0 -0
  1575. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-CokKDsRY.woff2 +0 -0
  1576. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-600-normal-c6nUiZEv.woff +0 -0
  1577. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-BCRYVYbj.woff +0 -0
  1578. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-115-700-normal-C4o110v7.woff2 +0 -0
  1579. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-BCjvaIwI.woff +0 -0
  1580. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-400-normal-CPQAppG5.woff2 +0 -0
  1581. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-2NuQXMn5.woff +0 -0
  1582. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-600-normal-pwYieqoq.woff2 +0 -0
  1583. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-DTiOP-RD.woff +0 -0
  1584. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-116-700-normal-J2K8ygE7.woff2 +0 -0
  1585. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-Bqi1rgUh.woff2 +0 -0
  1586. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-400-normal-CAkrqKEd.woff +0 -0
  1587. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-BUVowAmE.woff +0 -0
  1588. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-600-normal-CVV1AoIy.woff2 +0 -0
  1589. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-B_WqVFu8.woff2 +0 -0
  1590. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-117-700-normal-C-GRhBDF.woff +0 -0
  1591. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-BvkVX0xm.woff +0 -0
  1592. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-400-normal-CPvF_U24.woff2 +0 -0
  1593. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-BKNr8HaE.woff +0 -0
  1594. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-600-normal-SYUuQfwq.woff2 +0 -0
  1595. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-6t-D5P6M.woff +0 -0
  1596. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-118-700-normal-Cwb_HiV8.woff2 +0 -0
  1597. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-BVAYXEqw.woff +0 -0
  1598. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-400-normal-CF0EWuft.woff2 +0 -0
  1599. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CSej5QVJ.woff +0 -0
  1600. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-600-normal-CWNURXbv.woff2 +0 -0
  1601. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DqmD0X2I.woff +0 -0
  1602. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-119-700-normal-DvZpuW9q.woff2 +0 -0
  1603. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-AF35YmmH.woff2 +0 -0
  1604. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-400-normal-J5xWG5gS.woff +0 -0
  1605. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Ba8rnT7_.woff2 +0 -0
  1606. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-600-normal-Cdi7mG90.woff +0 -0
  1607. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-4ZbirUQU.woff2 +0 -0
  1608. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-12-700-normal-Coj3Y2Vv.woff +0 -0
  1609. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-CpXdOOTc.woff2 +0 -0
  1610. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-400-normal-eM8eMXyQ.woff +0 -0
  1611. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-DXBEl0OU.woff +0 -0
  1612. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-600-normal-ON8tPSnT.woff2 +0 -0
  1613. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-Bbz7lyAG.woff2 +0 -0
  1614. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-13-700-normal-DfbGPVVb.woff +0 -0
  1615. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-C-oyfrUa.woff2 +0 -0
  1616. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-400-normal-DPe2AXol.woff +0 -0
  1617. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BEKBLOkr.woff2 +0 -0
  1618. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-600-normal-BZRywIXe.woff +0 -0
  1619. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-DChZSEXi.woff2 +0 -0
  1620. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-14-700-normal-JLAmA7_6.woff +0 -0
  1621. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-CBiEIaz5.woff2 +0 -0
  1622. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-400-normal-D-mZ9inR.woff +0 -0
  1623. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-CAapLUyl.woff2 +0 -0
  1624. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-600-normal-Dl-orC8M.woff +0 -0
  1625. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-JEDfv4vZ.woff2 +0 -0
  1626. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-15-700-normal-xL2psWlD.woff +0 -0
  1627. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-CKSk9toV.woff2 +0 -0
  1628. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-400-normal-DNGmaJIL.woff +0 -0
  1629. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DDZagcz1.woff +0 -0
  1630. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-600-normal-DloGa7SL.woff2 +0 -0
  1631. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-Bv7EAOP1.woff +0 -0
  1632. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-16-700-normal-CCA2fInu.woff2 +0 -0
  1633. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BDhrvRnL.woff2 +0 -0
  1634. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-400-normal-BOjgDpon.woff +0 -0
  1635. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-BeTmwP_K.woff2 +0 -0
  1636. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-600-normal-uD_8VqjX.woff +0 -0
  1637. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-C-NBohiT.woff2 +0 -0
  1638. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-17-700-normal-sVUIRMKd.woff +0 -0
  1639. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-BTtbRNyU.woff +0 -0
  1640. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-400-normal-Bs1zlN0G.woff2 +0 -0
  1641. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-3CkcYQgr.woff2 +0 -0
  1642. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-600-normal-C0tjZHt0.woff +0 -0
  1643. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-DjrHhANL.woff +0 -0
  1644. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-18-700-normal-UPAurMge.woff2 +0 -0
  1645. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-CCVU2G9b.woff2 +0 -0
  1646. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-400-normal-dcW_ilWW.woff +0 -0
  1647. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-DcS6irVl.woff2 +0 -0
  1648. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-600-normal-w0hsbhoe.woff +0 -0
  1649. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CazBSycC.woff2 +0 -0
  1650. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-19-700-normal-CvRuq6Vw.woff +0 -0
  1651. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-CnxhIj-f.woff2 +0 -0
  1652. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-400-normal-ZCEqhetZ.woff +0 -0
  1653. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-BBWiOGe2.woff +0 -0
  1654. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-600-normal-i3phtpOA.woff2 +0 -0
  1655. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-DO0ByKpJ.woff2 +0 -0
  1656. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-2-700-normal-Dei1Gj2q.woff +0 -0
  1657. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-2BRpmgCV.woff2 +0 -0
  1658. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-400-normal-B2cWSh78.woff +0 -0
  1659. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CKeHRgKb.woff +0 -0
  1660. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-600-normal-CXFU6tjk.woff2 +0 -0
  1661. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-CTtpPuSd.woff2 +0 -0
  1662. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-20-700-normal-N5V03xjS.woff +0 -0
  1663. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Cv3FeIij.woff2 +0 -0
  1664. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-400-normal-Dml5TFym.woff +0 -0
  1665. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-CJHvMuEH.woff2 +0 -0
  1666. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-600-normal-ChXV0eBj.woff +0 -0
  1667. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-BR1fDv7I.woff +0 -0
  1668. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-21-700-normal-kWux5vbT.woff2 +0 -0
  1669. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-3CnvMMD7.woff2 +0 -0
  1670. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-400-normal-TNl1bUeL.woff +0 -0
  1671. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-B4PQFGba.woff2 +0 -0
  1672. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-600-normal-bBSJai_o.woff +0 -0
  1673. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-BAbSphgc.woff2 +0 -0
  1674. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-22-700-normal-HHyMEHBJ.woff +0 -0
  1675. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-CUhld-kf.woff2 +0 -0
  1676. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-400-normal-DTBYTMn7.woff +0 -0
  1677. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-CR-CWSvQ.woff2 +0 -0
  1678. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-600-normal-Cq5mpPr_.woff +0 -0
  1679. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-D-oyN10X.woff +0 -0
  1680. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-23-700-normal-DQNF9HpE.woff2 +0 -0
  1681. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-BCEQWDh5.woff2 +0 -0
  1682. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-400-normal-DDVUYQLq.woff +0 -0
  1683. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DL0LF1av.woff +0 -0
  1684. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-600-normal-DyaIQrhK.woff2 +0 -0
  1685. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-B0AxqRZO.woff2 +0 -0
  1686. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-24-700-normal-Inz-d5-8.woff +0 -0
  1687. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-C5hUXC4y.woff2 +0 -0
  1688. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-400-normal-CSCHltyB.woff +0 -0
  1689. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-ClJ2q6nT.woff +0 -0
  1690. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-600-normal-CpgWTSx7.woff2 +0 -0
  1691. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BSArHqh9.woff2 +0 -0
  1692. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-25-700-normal-BVRIUm2S.woff +0 -0
  1693. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BDNWBg-b.woff +0 -0
  1694. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-400-normal-BnV7FV79.woff2 +0 -0
  1695. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-BQpAkNz5.woff2 +0 -0
  1696. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-600-normal-bxA4bluv.woff +0 -0
  1697. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-95lB4fwA.woff +0 -0
  1698. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-26-700-normal-VgtqRBM7.woff2 +0 -0
  1699. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-B5ZhKYLO.woff2 +0 -0
  1700. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-400-normal-Dy5-YEOY.woff +0 -0
  1701. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C07c5If1.woff +0 -0
  1702. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-600-normal-C6bVD75P.woff2 +0 -0
  1703. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-_7qWVHie.woff2 +0 -0
  1704. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-27-700-normal-h3oxUHXv.woff +0 -0
  1705. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-Bwghrgjh.woff2 +0 -0
  1706. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-400-normal-DNnelfuN.woff +0 -0
  1707. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BBQsSgWd.woff2 +0 -0
  1708. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-600-normal-BeDPvyp8.woff +0 -0
  1709. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-Cjg_wNSB.woff +0 -0
  1710. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-28-700-normal-DY_bvrHQ.woff2 +0 -0
  1711. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-Dj7VksMf.woff +0 -0
  1712. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-400-normal-gP3qcvie.woff2 +0 -0
  1713. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-B0Nsm10J.woff +0 -0
  1714. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-600-normal-Dn9kzegM.woff2 +0 -0
  1715. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-BaagHPlF.woff2 +0 -0
  1716. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-29-700-normal-sM5sErEE.woff +0 -0
  1717. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-01r-uCGK.woff +0 -0
  1718. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-400-normal-MpgNCYqt.woff2 +0 -0
  1719. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-CuyoBBEp.woff2 +0 -0
  1720. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-600-normal-OOnXi3dj.woff +0 -0
  1721. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-GjYjPFRF.woff +0 -0
  1722. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-3-700-normal-Vr7CPe4d.woff2 +0 -0
  1723. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-4H84KBjL.woff +0 -0
  1724. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-400-normal-D9W6fT0U.woff2 +0 -0
  1725. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-CHYuKtvD.woff +0 -0
  1726. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-600-normal-DAX8ENIb.woff2 +0 -0
  1727. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-DvDs5GHe.woff2 +0 -0
  1728. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-30-700-normal-kGpxnFlG.woff +0 -0
  1729. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-BnpH2dyr.woff +0 -0
  1730. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-400-normal-DhPplA2S.woff2 +0 -0
  1731. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-BDIwmQD2.woff +0 -0
  1732. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-600-normal-DWFfqfVJ.woff2 +0 -0
  1733. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BEM3LLr5.woff +0 -0
  1734. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-31-700-normal-BH_9UzMR.woff2 +0 -0
  1735. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-BkNndOiq.woff2 +0 -0
  1736. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-400-normal-GRBsq_TQ.woff +0 -0
  1737. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-Dc31ixSD.woff2 +0 -0
  1738. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-600-normal-qBGKeeZh.woff +0 -0
  1739. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-CKh4-8lS.woff +0 -0
  1740. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-32-700-normal-SEF2IUu4.woff2 +0 -0
  1741. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-BEJcB5Pj.woff +0 -0
  1742. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-400-normal-DOnua0XC.woff2 +0 -0
  1743. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-Dk43PWfK.woff +0 -0
  1744. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-600-normal-_9rnVtrt.woff2 +0 -0
  1745. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-BkaB_Reu.woff +0 -0
  1746. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-33-700-normal-DbnutdYp.woff2 +0 -0
  1747. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-BFI-kcuc.woff +0 -0
  1748. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-400-normal-b_F-aCuz.woff2 +0 -0
  1749. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-BwgNjnnm.woff2 +0 -0
  1750. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-600-normal-Dkhx4lxu.woff +0 -0
  1751. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-UpohLQJI.woff2 +0 -0
  1752. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-34-700-normal-Yul5WPNb.woff +0 -0
  1753. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-CHpiv9C7.woff2 +0 -0
  1754. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-400-normal-D8XpW-jV.woff +0 -0
  1755. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-CD4ArYzM.woff2 +0 -0
  1756. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-600-normal-M066d6gr.woff +0 -0
  1757. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-DV4atPPn.woff2 +0 -0
  1758. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-35-700-normal-hjVn7kub.woff +0 -0
  1759. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-BT6SwwtR.woff2 +0 -0
  1760. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-400-normal-Cd-eoA5H.woff +0 -0
  1761. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-DsGroCqE.woff +0 -0
  1762. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-600-normal-kFFPHZH9.woff2 +0 -0
  1763. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-CO6mIiJi.woff +0 -0
  1764. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-36-700-normal-DfKrXTUN.woff2 +0 -0
  1765. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-BiWBJPQ7.woff2 +0 -0
  1766. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-400-normal-Bj7jp-Iz.woff +0 -0
  1767. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-CnPg-4RZ.woff2 +0 -0
  1768. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-600-normal-Cvgtdz7H.woff +0 -0
  1769. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-BtF0jwlF.woff +0 -0
  1770. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-37-700-normal-C4IDZ9L-.woff2 +0 -0
  1771. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-B4UIE9Zj.woff +0 -0
  1772. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-400-normal-CLr3K58D.woff2 +0 -0
  1773. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Dln3mVPi.woff +0 -0
  1774. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-600-normal-Uy8tuoQH.woff2 +0 -0
  1775. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DClAUGO7.woff +0 -0
  1776. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-38-700-normal-DHBmduQt.woff2 +0 -0
  1777. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-BzR2eDWi.woff2 +0 -0
  1778. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-400-normal-WTG9_11D.woff +0 -0
  1779. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DHmemGdc.woff +0 -0
  1780. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-600-normal-DxNgVy70.woff2 +0 -0
  1781. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-B7V6NyLX.woff +0 -0
  1782. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-39-700-normal-CijZ21_m.woff2 +0 -0
  1783. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-1GfpLFeR.woff +0 -0
  1784. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-400-normal-BSOJFi3M.woff2 +0 -0
  1785. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-BGAcZoa5.woff +0 -0
  1786. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-600-normal-DP-OzMv8.woff2 +0 -0
  1787. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-BTl2LovL.woff +0 -0
  1788. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-4-700-normal-PLU2uOG6.woff2 +0 -0
  1789. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-BJCaISym.woff +0 -0
  1790. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-400-normal-DxlOKNb6.woff2 +0 -0
  1791. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-D79iYZbh.woff +0 -0
  1792. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-600-normal-DyMFY3yG.woff2 +0 -0
  1793. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-BOSqPgLZ.woff2 +0 -0
  1794. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-40-700-normal-Bs7eQneK.woff +0 -0
  1795. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-Ce6_8B6O.woff +0 -0
  1796. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-400-normal-THO3jy3s.woff2 +0 -0
  1797. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Ck2K5Ulf.woff2 +0 -0
  1798. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-600-normal-Df3Wep6L.woff +0 -0
  1799. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-B-9pR0B0.woff2 +0 -0
  1800. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-41-700-normal-vrmrQol7.woff +0 -0
  1801. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-Cgyyi6Mk.woff2 +0 -0
  1802. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-400-normal-mWRC9cE4.woff +0 -0
  1803. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-BIw3yp_o.woff +0 -0
  1804. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-600-normal-CgHlrSUg.woff2 +0 -0
  1805. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-CE4g_Vnr.woff2 +0 -0
  1806. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-42-700-normal-OHitFFYG.woff +0 -0
  1807. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-DofKP3XM.woff2 +0 -0
  1808. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-400-normal-rklqUmDh.woff +0 -0
  1809. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-BPJjrS1c.woff2 +0 -0
  1810. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-600-normal-Dl6BB-Lj.woff +0 -0
  1811. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-B4zrRhmq.woff2 +0 -0
  1812. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-43-700-normal-Vq2Xt21W.woff +0 -0
  1813. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BPQ_BGOm.woff +0 -0
  1814. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-400-normal-BvoXxhh-.woff2 +0 -0
  1815. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1scqjS5.woff2 +0 -0
  1816. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-600-normal-B1vhjtxY.woff +0 -0
  1817. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CdiYya7N.woff +0 -0
  1818. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-44-700-normal-CizxTCTp.woff2 +0 -0
  1819. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-BN1x-JCl.woff +0 -0
  1820. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-400-normal-DMKz6H_F.woff2 +0 -0
  1821. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-D74kcLg1.woff +0 -0
  1822. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-600-normal-DNXvxDIf.woff2 +0 -0
  1823. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-BdAAndOM.woff2 +0 -0
  1824. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-45-700-normal-DeYHlTSC.woff +0 -0
  1825. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-K8yMYku4.woff +0 -0
  1826. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-400-normal-Z0YZvJMA.woff2 +0 -0
  1827. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-CfEBl86K.woff2 +0 -0
  1828. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-600-normal-Yu7W5Ur_.woff +0 -0
  1829. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-C2i6qX8o.woff2 +0 -0
  1830. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-46-700-normal-Ck28wpb6.woff +0 -0
  1831. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-BHD-6hCF.woff +0 -0
  1832. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-400-normal-DapCxPvn.woff2 +0 -0
  1833. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-CxMB4f1K.woff +0 -0
  1834. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-600-normal-tmv6xC_z.woff2 +0 -0
  1835. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-ByTiuiZy.woff +0 -0
  1836. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-47-700-normal-C_LnNwcx.woff2 +0 -0
  1837. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-5VJWa5C8.woff +0 -0
  1838. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-400-normal-CBCdCJJN.woff2 +0 -0
  1839. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-DAbbVYEi.woff +0 -0
  1840. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-600-normal-QEQJ2vNg.woff2 +0 -0
  1841. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-D9NnIF6F.woff2 +0 -0
  1842. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-48-700-normal-gCAr-9Ui.woff +0 -0
  1843. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-BENNdZwd.woff2 +0 -0
  1844. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-400-normal-DrUErJVA.woff +0 -0
  1845. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-B9kwAyIi.woff2 +0 -0
  1846. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-600-normal-DHvPm2NF.woff +0 -0
  1847. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C7LprN_f.woff2 +0 -0
  1848. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-49-700-normal-C80RxHso.woff +0 -0
  1849. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-B1Nb7Dqt.woff +0 -0
  1850. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-400-normal-BBWPbJ8R.woff2 +0 -0
  1851. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-BV1Q-ya9.woff2 +0 -0
  1852. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-600-normal-vSSmYEgt.woff +0 -0
  1853. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-88k3u19j.woff2 +0 -0
  1854. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-5-700-normal-Bm4AIB4W.woff +0 -0
  1855. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-DSyr09Pi.woff +0 -0
  1856. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-400-normal-wVEmJJbn.woff2 +0 -0
  1857. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-CNwgbPME.woff2 +0 -0
  1858. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-600-normal-DwlyYo3O.woff +0 -0
  1859. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-BpuC-Ja2.woff2 +0 -0
  1860. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-50-700-normal-DJ4qrNjm.woff +0 -0
  1861. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-CI8zKOiq.woff2 +0 -0
  1862. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-400-normal-Nb_ATV55.woff +0 -0
  1863. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-D1q9iZG9.woff2 +0 -0
  1864. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-600-normal-DCKOx3do.woff +0 -0
  1865. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CDxcnlps.woff2 +0 -0
  1866. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-51-700-normal-CrbVhrAy.woff +0 -0
  1867. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-DgbfUacv.woff +0 -0
  1868. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-400-normal-Dqrwgacb.woff2 +0 -0
  1869. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-DpEHO2lx.woff +0 -0
  1870. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-600-normal-HtoGXJPD.woff2 +0 -0
  1871. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-6UeGb2y_.woff +0 -0
  1872. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-52-700-normal-Cj2MbqkN.woff2 +0 -0
  1873. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-BPlmQmyN.woff +0 -0
  1874. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-400-normal-uFBOSatZ.woff2 +0 -0
  1875. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-3e73VLox.woff2 +0 -0
  1876. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-600-normal-CHFWjDbo.woff +0 -0
  1877. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-BtF7lJZ6.woff2 +0 -0
  1878. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-53-700-normal-D1_BFs6r.woff +0 -0
  1879. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-B_JBM8HP.woff2 +0 -0
  1880. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-400-normal-DShvO3nx.woff +0 -0
  1881. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-CIir-_6C.woff2 +0 -0
  1882. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-600-normal-HSAnxCQg.woff +0 -0
  1883. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DOcpS_k9.woff2 +0 -0
  1884. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-54-700-normal-DR_NIHG9.woff +0 -0
  1885. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-BIBVbLNo.woff2 +0 -0
  1886. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-400-normal-DACpgdpL.woff +0 -0
  1887. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-ByArDHHI.woff2 +0 -0
  1888. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-600-normal-CNKcN-Ig.woff +0 -0
  1889. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-9BGvVFJG.woff +0 -0
  1890. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-55-700-normal-DCUUt7cX.woff2 +0 -0
  1891. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-D6a133Nk.woff +0 -0
  1892. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-400-normal-E_0UP4jm.woff2 +0 -0
  1893. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-DScuu4Uu.woff2 +0 -0
  1894. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-600-normal-hzikha37.woff +0 -0
  1895. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-BCQXFjgs.woff +0 -0
  1896. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-56-700-normal-CfjdYZM4.woff2 +0 -0
  1897. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-CBQftTJt.woff +0 -0
  1898. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-400-normal-F8LL-J5_.woff2 +0 -0
  1899. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-BR6Du0PQ.woff +0 -0
  1900. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-600-normal-CQ1redVd.woff2 +0 -0
  1901. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-DQEJ1-LS.woff2 +0 -0
  1902. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-57-700-normal-FH-ttKed.woff +0 -0
  1903. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-DqIzdKrV.woff +0 -0
  1904. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-400-normal-i71EDyfV.woff2 +0 -0
  1905. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bpgq8MX2.woff +0 -0
  1906. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-600-normal-Bqgrv0lo.woff2 +0 -0
  1907. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-Bj2HnGEw.woff +0 -0
  1908. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-58-700-normal-DYsLBu1T.woff2 +0 -0
  1909. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-B-8F2Uet.woff +0 -0
  1910. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-400-normal-BHAiqXEM.woff2 +0 -0
  1911. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-B-CGe3sL.woff2 +0 -0
  1912. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-600-normal-BuQf4YmM.woff +0 -0
  1913. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-BZ9z_FHx.woff +0 -0
  1914. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-59-700-normal-CWSgjf9c.woff2 +0 -0
  1915. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-AY_mybA2.woff +0 -0
  1916. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-400-normal-CTPxjOYB.woff2 +0 -0
  1917. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-CdfPYwdk.woff2 +0 -0
  1918. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-600-normal-oGadQOpD.woff +0 -0
  1919. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-DLe2ZT_Q.woff2 +0 -0
  1920. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-6-700-normal-bXRUCZKE.woff +0 -0
  1921. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-CEDE9rS0.woff +0 -0
  1922. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-400-normal-z5dDoQx9.woff2 +0 -0
  1923. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-Bl94dFYa.woff2 +0 -0
  1924. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-600-normal-OLqttnKu.woff +0 -0
  1925. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-CYME5EXY.woff2 +0 -0
  1926. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-60-700-normal-I1XysYDt.woff +0 -0
  1927. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-Ci1tC2DE.woff +0 -0
  1928. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-400-normal-DnyFjM_B.woff2 +0 -0
  1929. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-BZxjTCO5.woff +0 -0
  1930. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-600-normal-ChG7s6jj.woff2 +0 -0
  1931. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-Bi5bgOa-.woff +0 -0
  1932. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-61-700-normal-CCHPFSSV.woff2 +0 -0
  1933. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BIF8JT4K.woff2 +0 -0
  1934. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-400-normal-BMQQOADr.woff +0 -0
  1935. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-BwPZY4No.woff +0 -0
  1936. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-600-normal-CCy9m1Yi.woff2 +0 -0
  1937. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-CUKZrRn4.woff +0 -0
  1938. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-62-700-normal-PUE26tsV.woff2 +0 -0
  1939. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-Bi-DePsy.woff +0 -0
  1940. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-400-normal-DbEg4X6i.woff2 +0 -0
  1941. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-B_hznMYb.woff2 +0 -0
  1942. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-600-normal-DXp5U46T.woff +0 -0
  1943. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-CdRKaRR8.woff +0 -0
  1944. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-63-700-normal-d_p4qgBI.woff2 +0 -0
  1945. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-BoOvEFVR.woff2 +0 -0
  1946. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-400-normal-DhttFBeF.woff +0 -0
  1947. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DdDi5wpQ.woff2 +0 -0
  1948. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-600-normal-DnHS-nmP.woff +0 -0
  1949. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-DvcYr3Tg.woff2 +0 -0
  1950. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-64-700-normal-Z-oKOpcu.woff +0 -0
  1951. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-600-normal-CuB_ApqX.woff2 +0 -0
  1952. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-65-700-normal-OQGIHpUr.woff2 +0 -0
  1953. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-CDkAi-IU.woff2 +0 -0
  1954. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-400-normal-VZ_YUdPy.woff +0 -0
  1955. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-CeGVp1rD.woff +0 -0
  1956. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-600-normal-Dh7JSXz4.woff2 +0 -0
  1957. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-C-GGubNS.woff +0 -0
  1958. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-7-700-normal-DkDnzNv2.woff2 +0 -0
  1959. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-BmMhoS32.woff2 +0 -0
  1960. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-400-normal-Ci0W5IWz.woff +0 -0
  1961. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-B0rxBWNc.woff2 +0 -0
  1962. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-600-normal-BJjl00Le.woff +0 -0
  1963. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-5jYiHHRz.woff2 +0 -0
  1964. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-8-700-normal-BEKQdV0c.woff +0 -0
  1965. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-CeBwsqAD.woff +0 -0
  1966. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-400-normal-DJinq116.woff2 +0 -0
  1967. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DWoOSbq5.woff +0 -0
  1968. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-600-normal-DraA-1Zl.woff2 +0 -0
  1969. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-BkZ1vv2G.woff +0 -0
  1970. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-9-700-normal-CymJjnAS.woff2 +0 -0
  1971. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-5J6UR9CM.woff2 +0 -0
  1972. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-400-normal-Cdi-IBra.woff +0 -0
  1973. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-4KzAAJzD.woff +0 -0
  1974. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-600-normal-C3ObUrek.woff2 +0 -0
  1975. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-BEo_xrjH.woff +0 -0
  1976. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-93-700-normal-DYlKYBEL.woff2 +0 -0
  1977. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CLS33fqM.woff +0 -0
  1978. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-400-normal-CsJn1kPf.woff2 +0 -0
  1979. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-BqkCATJS.woff2 +0 -0
  1980. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-600-normal-DGs8D_d9.woff +0 -0
  1981. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-BcAowvjY.woff2 +0 -0
  1982. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-94-700-normal-Rande0GP.woff +0 -0
  1983. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-DqxPcneT.woff2 +0 -0
  1984. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-400-normal-m9r3xH18.woff +0 -0
  1985. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-E6j9XpvP.woff +0 -0
  1986. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-600-normal-qnNrW3Df.woff2 +0 -0
  1987. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-D_kcIWRN.woff +0 -0
  1988. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-96-700-normal-DafuQoH3.woff2 +0 -0
  1989. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-DOlHHts_.woff2 +0 -0
  1990. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-400-normal-TWLDWHgL.woff +0 -0
  1991. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CHxkMEAU.woff2 +0 -0
  1992. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-600-normal-CXVo40nf.woff +0 -0
  1993. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-BdFpzIjS.woff2 +0 -0
  1994. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-97-700-normal-C5vPlSUB.woff +0 -0
  1995. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-CyxDRXqs.woff2 +0 -0
  1996. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-400-normal-D-_zohjb.woff +0 -0
  1997. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-CizO16Ew.woff +0 -0
  1998. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-600-normal-D-SBD5Hk.woff2 +0 -0
  1999. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-BArUuixv.woff2 +0 -0
  2000. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-98-700-normal-O_rp84MR.woff +0 -0
  2001. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-400-normal-COuj214s.woff2 +0 -0
  2002. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-600-normal-j_ccRvHi.woff2 +0 -0
  2003. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-99-700-normal-BGCe6SPX.woff2 +0 -0
  2004. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-7kwLL-e3.woff +0 -0
  2005. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-400-normal-Bc7vhvxM.woff2 +0 -0
  2006. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-n-2PV5Ut.woff2 +0 -0
  2007. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-600-normal-yks4z4wu.woff +0 -0
  2008. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-Bj41MRxQ.woff +0 -0
  2009. /package/{public → frontend/client}/assets/ibm-plex-sans-kr-latin-700-normal-CIbXnLaA.woff2 +0 -0
  2010. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  2011. /package/{public → frontend/client}/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  2012. /package/{public → frontend/client}/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
  2013. /package/{public → frontend/client}/issuary-app-icon-512.png +0 -0
  2014. /package/{public → frontend/client}/issuary-app-icon.svg +0 -0
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,c as n,et as r,i,n as a,q as o,s}from"./createLucideIcon-D-yizrWN.js";import{Ar as c,On as l,kn as u,t as d}from"./config-C18-l7z7.js";import{t as f}from"./useMutation-DqIIIiBW.js";import{Dt as p,c as m,k as h}from"./shell-header-bar-CdOEWmCT.js";import{a as ee,c as g,d as _,f as v,i as y,l as b,n as te,o as ne,p as re,r as x,s as S,t as C,u as w}from"./use-admin-selection-D2b7jnym.js";import{a as T,f as E,h as D,l as O,s as k,t as A}from"./admin-shell-B91U4-Ro.js";import{l as j}from"./index-lTEyHSus.js";import{t as ie}from"./badge-B8D0Q2qq.js";import{t as M}from"./checkbox-DTPGfvmq.js";import{t as N}from"./form-sJw-V9wb.js";import{n as P,r as F,t as I}from"./field-CsrUbl__.js";import{t as L}from"./FieldControl-ShLuCjvG.js";import{t as R}from"./input-QvBxPgy5.js";import{t as z}from"./table-Dl89o43x.js";import{n as B,t as V}from"./modal-JuaLVSyx.js";var H=r(t(),1),U=e(),W=H.forwardRef(function(e,t){let{render:r,className:i,style:a,disabled:o=!1,...s}=e,[c,l]=H.useState(void 0),u=F(!0)?.disabled||o,d=n(`fieldset`,e,{ref:t,state:{disabled:u},props:[{"aria-labelledby":c,disabled:u},s]}),f=H.useMemo(()=>({legendId:c,setLegendId:l,disabled:u}),[c,l,u]);return(0,U.jsx)(P.Provider,{value:f,children:d})}),G=H.forwardRef(function(e,t){let{render:r,className:i,style:a,id:o,...s}=e,{disabled:c,setLegendId:l}=F(),u=h(o,l);return n(`div`,e,{state:{disabled:c},ref:t,props:[{id:u},s]})});function K({ref:e,render:t=(0,U.jsx)(`legend`,{}),...n}){return(0,U.jsx)(G,{...n,ref:e,render:t})}var q=l(K,`tr-fieldset-legend`),J={Root:l(W,`tr-fieldset`),Legend:q};function ae({className:e,uiSize:t=`md`,appearance:n=`solid`,...r}){return u(),(0,U.jsx)(L,{...r,className:o(`tr-textarea`,e),"data-appearance":n,"data-ui-size":t,render:(0,U.jsx)(`textarea`,{})})}function oe(){let e=j.useRouteContext({select:e=>e.user});return e?.role===`admin`?(0,U.jsx)(se,{user:e}):(0,U.jsx)(D,{reason:`access-required`})}function se({user:e}){let{data:t}=p(d);return t.admin.enabled?(0,U.jsx)(ce,{user:e}):(0,U.jsx)(D,{reason:`console-disabled`})}function ce({user:e}){let{t}=i(),n=c(),[r,o]=(0,H.useState)(``),[l,u]=(0,H.useState)({page:1,pageSize:20}),[d,m]=(0,H.useState)(null),[h,D]=(0,H.useState)(null),{data:j}=p(T(l)),M=C(j.terms.map(e=>e.id)),N=()=>n.invalidateQueries({queryKey:[`admin`]}),P=f({mutationFn:O,onSuccess:()=>{N(),m(null)}}),F=f({mutationFn:({id:e,input:t})=>E(e,t),onSuccess:()=>{N(),m(null)}}),I=f({mutationFn:k,onSuccess:()=>{N(),M.clear(),D(null)}}),L=l.page??1,R=l.pageSize??20,B=M.selection.kind===`filter`?j.pagination.total:M.selectedCount??0,V=M.selection.kind===`filter`?{kind:`filter`,filter:{query:l.query,managed_by:l.managedBy,archived:l.archived}}:{kind:`ids`,ids:[...M.selection.ids]},W=e=>{M.clear(),u(e)};return(0,U.jsxs)(A,{current:`terms`,title:t(`admin.terms.title`),user:e,children:[(0,U.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col`,children:[(0,U.jsxs)(y,{onCreate:()=>m(`create`),onQueryChange:o,onSearch:()=>W({...l,query:r.trim(),page:1}),query:r,title:t(`admin.terms.title`),total:j.pagination.total,children:[(0,U.jsx)(x,{label:t(`admin.terms.required`),onChange:e=>W({...l,required:e===`all`?void 0:e===`required`,page:1}),options:[[`all`,t(`admin.filter.allRequirements`)],[`required`,t(`admin.terms.required`)],[`optional`,t(`admin.terms.optional`)]],value:l.required===void 0?`all`:l.required?`required`:`optional`}),(0,U.jsx)(x,{label:t(`admin.terms.consentMode`),onChange:e=>W({...l,consentMode:e===`explicit`?`explicit`:e===`implicit`?`implicit`:void 0,page:1}),options:[[`all`,t(`admin.filter.allModes`)],[`explicit`,t(`admin.terms.explicit`)],[`implicit`,t(`admin.terms.implicit`)]],value:l.consentMode??`all`}),(0,U.jsx)(x,{label:t(`admin.table.status`),onChange:e=>W({...l,archived:e===`all`?void 0:e===`archived`,page:1}),options:[[`all`,t(`admin.filter.allStatuses`)],[`active`,t(`admin.status.active`)],[`archived`,t(`admin.status.archived`)]],value:l.archived===void 0?`all`:l.archived?`archived`:`active`})]}),(0,U.jsxs)(re,{children:[(0,U.jsxs)(v,{label:t(`admin.terms.title`),children:[(0,U.jsx)(z.Header,{className:`sticky top-0 z-tinyrack-component-raised`,children:(0,U.jsxs)(z.Row,{children:[(0,U.jsx)(_,{header:!0,children:(0,U.jsx)(S,{checked:M.allOnPage,indeterminate:M.someOnPage,onChange:M.togglePage})}),(0,U.jsx)(w,{header:!0,children:(0,U.jsx)(g,{direction:l.direction??`asc`,label:t(`admin.terms.id`),onClick:()=>W({...l,direction:l.direction===`desc`?`asc`:`desc`,page:1})})}),(0,U.jsx)(z.Head,{children:t(`admin.terms.titleLabel`)}),(0,U.jsx)(z.Head,{children:t(`admin.terms.version`)}),(0,U.jsx)(z.Head,{children:t(`admin.terms.required`)}),(0,U.jsx)(z.Head,{children:t(`admin.terms.consentMode`)}),(0,U.jsx)(z.Head,{children:t(`admin.terms.languages`)}),(0,U.jsx)(z.Head,{children:t(`admin.terms.source`)}),(0,U.jsx)(z.Head,{children:t(`admin.table.status`)}),(0,U.jsx)(b,{header:!0,children:t(`admin.table.actions`)})]})}),(0,U.jsx)(z.Body,{children:j.terms.length===0?(0,U.jsx)(z.Row,{children:(0,U.jsx)(z.Cell,{className:`py-tinyrack-3xl text-center`,colSpan:10,children:t(`admin.table.empty`)})}):j.terms.map(e=>(0,U.jsxs)(z.Row,{className:M.isSelected(e.id)?`bg-tinyrack-surface-selected`:void 0,"data-selected":M.isSelected(e.id)?``:void 0,children:[(0,U.jsx)(_,{selected:M.isSelected(e.id),children:(0,U.jsx)(ne,{checked:M.isSelected(e.id),label:t(`admin.selection.row`,{name:e.id}),onChange:t=>M.toggleOne(e.id,t)})}),(0,U.jsx)(w,{selected:M.isSelected(e.id),children:(0,U.jsx)(a,{as:`span`,variant:`code`,children:e.id})}),(0,U.jsx)(z.Cell,{children:e.contents[0]?.title??e.id}),(0,U.jsx)(z.Cell,{children:e.version}),(0,U.jsx)(z.Cell,{children:t(e.required?`common.yes`:`common.no`)}),(0,U.jsx)(z.Cell,{children:t(`admin.terms.${e.consent_mode}`)}),(0,U.jsx)(z.Cell,{children:e.contents.map(e=>e.lang.toUpperCase()).join(`, `)}),(0,U.jsx)(z.Cell,{children:t(`admin.source.${e.managed_by}`)}),(0,U.jsx)(z.Cell,{children:(0,U.jsx)(ie,{className:`whitespace-nowrap`,variant:e.archived_at?`neutral`:`success`,children:t(e.archived_at?`admin.status.archived`:`admin.status.active`)})}),(0,U.jsx)(b,{selected:M.isSelected(e.id),children:(0,U.jsxs)(`div`,{className:`flex justify-end gap-tinyrack-xs`,children:[(0,U.jsx)(s,{appearance:`ghost`,disabled:e.managed_by===`config`,onClick:()=>m(e),type:`button`,uiSize:`sm`,children:t(`admin.actions.edit`)}),(0,U.jsx)(s,{appearance:`ghost`,disabled:e.managed_by===`config`,onClick:()=>I.mutate({target:{kind:`ids`,ids:[e.id]},active:!!e.archived_at}),type:`button`,uiSize:`sm`,children:t(e.archived_at?`admin.actions.restore`:`admin.actions.archive`)})]})})]},e.id))})]}),(0,U.jsx)(ee,{onPageChange:e=>W({...l,page:e}),onPageSizeChange:e=>W({...l,page:1,pageSize:e}),page:L,pageSize:R,total:j.pagination.total})]})]}),B>0?(0,U.jsx)(te,{canExpand:M.allOnPage&&j.pagination.total>j.terms.length,filterSelected:M.selection.kind===`filter`,onActivate:()=>D(!0),onClear:M.clear,onDeactivate:()=>D(!1),onExpand:M.selectFilter,pending:I.isPending,selected:B,total:j.pagination.total}):null,(0,U.jsx)(le,{active:h,count:B,filterSelected:M.selection.kind===`filter`,onClose:()=>D(null),onRun:()=>I.mutate({target:V,active:h??!0})}),(0,U.jsx)(Z,{isOpen:d!==null,onClose:()=>m(null),onSubmit:e=>{if(d&&d!==`create`){let{id:t,...n}=e;F.mutate({id:d.id,input:n})}else P.mutate(e)},pending:P.isPending||F.isPending,term:d===`create`?void 0:d??void 0})]})}function Y(e,t){let n=e.get(t);return typeof n==`string`?n.trim():``}var X=[`ko`,`en`,`ja`];function Z({isOpen:e,term:t,pending:n,onClose:r,onSubmit:o}){let{t:c}=i();return(0,U.jsx)(V,{description:c(t?`admin.terms.editDescription`:`admin.terms.createDescription`),isOpen:e,onClose:r,title:c(t?`admin.terms.editTitle`:`admin.terms.createTitle`),children:(0,U.jsxs)(N,{className:`flex flex-col gap-tinyrack-md pt-tinyrack-lg`,onSubmit:e=>{e.preventDefault();let t=new FormData(e.currentTarget),n=Y(t,`consent_mode`),r=[];for(let e of X){let n=Y(t,`${e}_title`),i=Y(t,`${e}_content`),a=Y(t,`${e}_type`);n&&i&&r.push({lang:e,title:n,type:a===`text`?`text`:`link`,content:i})}o({id:Y(t,`id`),required:t.get(`required`)===`on`,consent_mode:n===`implicit`?`implicit`:`explicit`,version:Y(t,`version`),contents:r})},children:[(0,U.jsxs)(`div`,{className:`grid gap-tinyrack-md sm:grid-cols-2`,children:[(0,U.jsx)(Q,{defaultValue:t?.id,disabled:!!t,label:c(`admin.terms.id`),name:`id`}),(0,U.jsx)(Q,{defaultValue:t?.version??`1.0.0`,label:c(`admin.terms.version`),name:`version`}),(0,U.jsx)($,{defaultValue:t?.consent_mode??`explicit`,label:c(`admin.terms.consentMode`),name:`consent_mode`,options:[[`explicit`,c(`admin.terms.explicit`)],[`implicit`,c(`admin.terms.implicit`)]]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,U.jsx)(M.Root,{"aria-label":c(`admin.terms.required`),defaultChecked:t?.required??!0,name:`required`,value:`on`,children:(0,U.jsx)(M.Indicator,{})}),(0,U.jsx)(a,{variant:`caption`,children:c(`admin.terms.required`)})]})]}),t?(0,U.jsx)(a,{color:`warning`,variant:`bodySm`,children:c(`admin.terms.versionWarning`)}):null,X.map(e=>{let n=t?.contents.find(t=>t.lang===e);return(0,U.jsxs)(J.Root,{className:`grid gap-tinyrack-sm pt-tinyrack-md sm:grid-cols-2`,children:[(0,U.jsx)(J.Legend,{children:e.toUpperCase()}),(0,U.jsx)(Q,{defaultValue:n?.title,label:c(`admin.terms.titleLabel`),name:`${e}_title`}),(0,U.jsx)($,{defaultValue:n?.type??`link`,label:c(`admin.terms.contentType`),name:`${e}_type`,options:[[`link`,c(`admin.terms.link`)],[`text`,c(`admin.terms.text`)]]}),(0,U.jsx)(ae,{className:`sm:col-span-2`,defaultValue:n?.content,name:`${e}_content`,placeholder:c(`admin.terms.content`)})]},e)}),(0,U.jsxs)(B,{children:[(0,U.jsx)(s,{disabled:n,onClick:r,type:`button`,children:c(`common.dismiss`)}),(0,U.jsx)(s,{disabled:n,intent:`primary`,type:`submit`,children:c(`admin.actions.save`)})]})]})})}function Q({label:e,name:t,defaultValue:n,disabled:r}){return(0,U.jsxs)(I.Root,{children:[(0,U.jsx)(I.Label,{children:e}),(0,U.jsx)(R,{defaultValue:n,disabled:r,name:t,required:!0,uiSize:`sm`})]})}function $({label:e,name:t,defaultValue:n,options:r}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-xs text-tinyrack-xs`,children:[(0,U.jsx)(a,{as:`span`,variant:`caption`,children:e}),(0,U.jsxs)(m.Root,{defaultValue:n,name:t,children:[(0,U.jsx)(m.Trigger,{"aria-label":e,uiSize:`sm`,children:(0,U.jsx)(m.Value,{children:r.find(([e])=>e===n)?.[1]??n})}),(0,U.jsx)(m.Positioner,{children:(0,U.jsx)(m.Popup,{children:(0,U.jsx)(m.List,{children:r.map(([e,t])=>(0,U.jsx)(m.Item,{value:e,children:(0,U.jsx)(m.ItemText,{children:t})},e))})})})]})]})}function le({active:e,count:t,filterSelected:n,onClose:r,onRun:o}){let{t:c}=i();return(0,U.jsx)(V,{isOpen:e!==null,onClose:r,title:c(e?`admin.bulk.restoreTitle`:`admin.bulk.archiveTitle`),children:(0,U.jsxs)(`div`,{className:`pt-tinyrack-lg`,children:[(0,U.jsx)(a,{color:`muted`,variant:`bodySm`,children:c(`admin.bulk.confirm`,{count:t,scope:c(n?`admin.selection.filterScope`:`admin.selection.pageScope`)})}),(0,U.jsxs)(B,{children:[(0,U.jsx)(s,{onClick:r,type:`button`,children:c(`common.dismiss`)}),(0,U.jsx)(s,{intent:e?`primary`:`danger`,onClick:o,type:`button`,children:c(`admin.bulk.run`)})]})]})})}export{oe as component};
2
- //# sourceMappingURL=terms-B2wWfx1d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terms-B2wWfx1d.js","names":["FieldsetLegend","Fieldset.Legend","Fieldset.Root","Field.Control","useMutation","useQueryClient","useSuspenseQuery","TRBadge","TRButton","TRCheckbox","TRField","TRFieldset","TRForm","TRInput","TRSelect","TRTable","TRText","TRTextarea","useState","useTranslation","Modal","ModalActions","AdminBulkBar","AdminFilterSelect","AdminListToolbar","AdminPagination","AdminRowCheckbox","AdminSelectAll","AdminSortButton","AdminStickyActionCell","AdminStickyIdentityCell","AdminStickySelectCell","AdminTable","AdminTableFrame","AdminGateScreen","AdminShell","useAdminSelection","adminTermsQueryOptions","bulkSetAdminTermsActive","createAdminTerm","updateAdminTerm","appConfigQueryOptions","Route","AdminTermsPage","user","useRouteContext","select","context","role","AdminTermsGate","SessionUser","data","config","admin","enabled","AdminTermsContent","t","queryClient","draftQuery","setDraftQuery","filters","setFilters","AdminTermsQuery","page","pageSize","editing","setEditing","AdminTerm","bulkActive","setBulkActive","selection","terms","map","term","id","invalidate","invalidateQueries","queryKey","createMutation","mutationFn","onSuccess","updateMutation","input","Omit","AdminTermInput","bulkMutation","clear","selected","kind","pagination","total","selectedCount","target","AdminTermBulkTarget","filter","query","managed_by","managedBy","archived","ids","setFilter","next","trim","value","required","undefined","consentMode","allOnPage","someOnPage","togglePage","direction","length","isSelected","name","checked","toggleOne","contents","title","version","consent_mode","content","lang","toUpperCase","join","archived_at","mutate","active","Boolean","selectFilter","isPending","ignoredId","update","formString","FormData","get","TERM_LANGUAGES","Array","TermModal","isOpen","pending","onClose","onSubmit","submit","event","FormEvent","HTMLFormElement","preventDefault","currentTarget","contentType","push","type","find","item","TermField","label","defaultValue","disabled","TermFormSelect","options","text","TermsBulkConfirm","count","filterSelected","onRun","scope","component"],"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/fieldset/root/FieldsetRoot.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/fieldset/legend/FieldsetLegend.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/fieldset/fieldset-legend.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/fieldset/fieldset-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/fieldset/index.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/textarea/textarea.js","../../../frontend/src/routes/admin/terms/index.tsx?tsr-split=component"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { FieldsetRootContext, useFieldsetRootContext } from \"./FieldsetRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups a shared legend with related controls.\n * Renders a `<fieldset>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const FieldsetRoot = /*#__PURE__*/React.forwardRef(function FieldsetRoot(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled: disabledProp = false,\n ...elementProps\n } = componentProps;\n const [legendId, setLegendId] = React.useState(undefined);\n const parentDisabled = useFieldsetRootContext(true)?.disabled;\n const disabled = parentDisabled || disabledProp;\n const state = {\n disabled\n };\n const element = useRenderElement('fieldset', componentProps, {\n ref: forwardedRef,\n state,\n props: [{\n 'aria-labelledby': legendId,\n disabled\n }, elementProps]\n });\n const contextValue = React.useMemo(() => ({\n legendId,\n setLegendId,\n disabled\n }), [legendId, setLegendId, disabled]);\n return /*#__PURE__*/_jsx(FieldsetRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetRoot.displayName = \"FieldsetRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldsetRootContext } from \"../root/FieldsetRootContext.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\n\n/**\n * An accessible label that is automatically associated with the fieldset.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Fieldset](https://base-ui.com/react/components/fieldset)\n */\nexport const FieldsetLegend = /*#__PURE__*/React.forwardRef(function FieldsetLegend(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n disabled,\n setLegendId\n } = useFieldsetRootContext();\n const id = useRegisteredLabelId(idProp, setLegendId);\n const state = {\n disabled\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldsetLegend.displayName = \"FieldsetLegend\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\n//#region src/components/fieldset/fieldset-legend.tsx\nfunction FieldsetLegend({ ref, render = /* @__PURE__ */ jsx(\"legend\", {}), ...props }) {\n\treturn /* @__PURE__ */ jsx(Fieldset.Legend, {\n\t\t...props,\n\t\tref,\n\t\trender\n\t});\n}\nconst TRFieldsetLegend = createComponentPart(FieldsetLegend, \"tr-fieldset-legend\");\n//#endregion\nexport { TRFieldsetLegend };\n\n//# sourceMappingURL=fieldset-legend.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Fieldset } from \"@base-ui/react/fieldset\";\n//#region src/components/fieldset/fieldset-root.tsx\nconst TRFieldsetRoot = createComponentPart(Fieldset.Root, \"tr-fieldset\");\n//#endregion\nexport { TRFieldsetRoot };\n\n//# sourceMappingURL=fieldset-root.js.map","import { TRFieldsetLegend } from \"./fieldset-legend.js\";\nimport { TRFieldsetRoot } from \"./fieldset-root.js\";\n//#region src/components/fieldset/index.tsx\nconst TRFieldset = {\n\tRoot: TRFieldsetRoot,\n\tLegend: TRFieldsetLegend\n};\n//#endregion\nexport { TRFieldset, TRFieldsetLegend, TRFieldsetRoot };\n\n//# sourceMappingURL=index.js.map","\"use client\";\nimport { useTinyrackFocusModality } from \"../../providers/focus-modality/focus-modality-provider.js\";\nimport { mergeClassNames } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Field } from \"@base-ui/react/field\";\n//#region src/components/textarea/textarea.tsx\nfunction TRTextarea({ className, uiSize = \"md\", appearance = \"solid\", ...props }) {\n\tuseTinyrackFocusModality();\n\treturn /* @__PURE__ */ jsx(Field.Control, {\n\t\t...props,\n\t\tclassName: mergeClassNames(\"tr-textarea\", className),\n\t\t\"data-appearance\": appearance,\n\t\t\"data-ui-size\": uiSize,\n\t\trender: /* @__PURE__ */ jsx(\"textarea\", {})\n\t});\n}\n//#endregion\nexport { TRTextarea };\n\n//# sourceMappingURL=textarea.js.map","import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, redirect } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCheckbox } from '@tinyrack/ui/components/checkbox';\nimport { TRField } from '@tinyrack/ui/components/field';\nimport { TRFieldset } from '@tinyrack/ui/components/fieldset';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRInput } from '@tinyrack/ui/components/input';\nimport { TRSelect } from '@tinyrack/ui/components/select';\nimport { TRTable } from '@tinyrack/ui/components/table';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { TRTextarea } from '@tinyrack/ui/components/textarea';\nimport { type FormEvent, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Modal, ModalActions } from '#frontend/components/ui/modal.tsx';\nimport {\n AdminBulkBar,\n AdminFilterSelect,\n AdminListToolbar,\n AdminPagination,\n AdminRowCheckbox,\n AdminSelectAll,\n AdminSortButton,\n AdminStickyActionCell,\n AdminStickyIdentityCell,\n AdminStickySelectCell,\n AdminTable,\n AdminTableFrame,\n} from '#frontend/features/admin/admin-data-table.tsx';\nimport { AdminGateScreen } from '#frontend/features/admin/admin-gate-screen.tsx';\nimport { AdminShell } from '#frontend/features/admin/admin-shell.tsx';\nimport { useAdminSelection } from '#frontend/features/admin/use-admin-selection.ts';\nimport {\n type AdminTerm,\n type AdminTermBulkTarget,\n type AdminTermInput,\n type AdminTermsQuery,\n adminTermsQueryOptions,\n bulkSetAdminTermsActive,\n createAdminTerm,\n updateAdminTerm,\n} from '#frontend/queries/admin-console.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport type { SessionUser } from '#frontend/queries/session.ts';\n\nexport const Route = createFileRoute('/admin/terms/')({\n component: AdminTermsPage,\n beforeLoad: async ({ context }) => {\n if (!context.user) throw redirect({ to: '/login' });\n },\n});\n\nfunction AdminTermsPage() {\n const user = Route.useRouteContext({ select: (context) => context.user });\n if (user?.role !== 'admin')\n return <AdminGateScreen reason=\"access-required\" />;\n return <AdminTermsGate user={user} />;\n}\nfunction AdminTermsGate({ user }: { user: SessionUser }) {\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n if (!config.admin.enabled)\n return <AdminGateScreen reason=\"console-disabled\" />;\n return <AdminTermsContent user={user} />;\n}\n\nfunction AdminTermsContent({ user }: { user: SessionUser }) {\n const { t } = useTranslation();\n const queryClient = useQueryClient();\n const [draftQuery, setDraftQuery] = useState('');\n const [filters, setFilters] = useState<AdminTermsQuery>({\n page: 1,\n pageSize: 20,\n });\n const [editing, setEditing] = useState<AdminTerm | 'create' | null>(null);\n const [bulkActive, setBulkActive] = useState<boolean | null>(null);\n const { data } = useSuspenseQuery(adminTermsQueryOptions(filters));\n const selection = useAdminSelection(data.terms.map((term) => term.id));\n const invalidate = () =>\n queryClient.invalidateQueries({ queryKey: ['admin'] });\n const createMutation = useMutation({\n mutationFn: createAdminTerm,\n onSuccess: () => {\n void invalidate();\n setEditing(null);\n },\n });\n const updateMutation = useMutation({\n mutationFn: ({\n id,\n input,\n }: {\n id: string;\n input: Omit<AdminTermInput, 'id'>;\n }) => updateAdminTerm(id, input),\n onSuccess: () => {\n void invalidate();\n setEditing(null);\n },\n });\n const bulkMutation = useMutation({\n mutationFn: bulkSetAdminTermsActive,\n onSuccess: () => {\n void invalidate();\n selection.clear();\n setBulkActive(null);\n },\n });\n const page = filters.page ?? 1;\n const pageSize = filters.pageSize ?? 20;\n const selected =\n selection.selection.kind === 'filter'\n ? data.pagination.total\n : (selection.selectedCount ?? 0);\n const target: AdminTermBulkTarget =\n selection.selection.kind === 'filter'\n ? {\n kind: 'filter',\n filter: {\n query: filters.query,\n managed_by: filters.managedBy,\n archived: filters.archived,\n },\n }\n : { kind: 'ids', ids: [...selection.selection.ids] };\n const setFilter = (next: AdminTermsQuery) => {\n selection.clear();\n setFilters(next);\n };\n return (\n <AdminShell current=\"terms\" title={t('admin.terms.title')} user={user}>\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col\">\n <AdminListToolbar\n onCreate={() => setEditing('create')}\n onQueryChange={setDraftQuery}\n onSearch={() =>\n setFilter({ ...filters, query: draftQuery.trim(), page: 1 })\n }\n query={draftQuery}\n title={t('admin.terms.title')}\n total={data.pagination.total}\n >\n <AdminFilterSelect\n label={t('admin.terms.required')}\n onChange={(value) =>\n setFilter({\n ...filters,\n required: value === 'all' ? undefined : value === 'required',\n page: 1,\n })\n }\n options={[\n ['all', t('admin.filter.allRequirements')],\n ['required', t('admin.terms.required')],\n ['optional', t('admin.terms.optional')],\n ]}\n value={\n filters.required === undefined\n ? 'all'\n : filters.required\n ? 'required'\n : 'optional'\n }\n />\n <AdminFilterSelect\n label={t('admin.terms.consentMode')}\n onChange={(value) =>\n setFilter({\n ...filters,\n consentMode:\n value === 'explicit'\n ? 'explicit'\n : value === 'implicit'\n ? 'implicit'\n : undefined,\n page: 1,\n })\n }\n options={[\n ['all', t('admin.filter.allModes')],\n ['explicit', t('admin.terms.explicit')],\n ['implicit', t('admin.terms.implicit')],\n ]}\n value={filters.consentMode ?? 'all'}\n />\n <AdminFilterSelect\n label={t('admin.table.status')}\n onChange={(value) =>\n setFilter({\n ...filters,\n archived: value === 'all' ? undefined : value === 'archived',\n page: 1,\n })\n }\n options={[\n ['all', t('admin.filter.allStatuses')],\n ['active', t('admin.status.active')],\n ['archived', t('admin.status.archived')],\n ]}\n value={\n filters.archived === undefined\n ? 'all'\n : filters.archived\n ? 'archived'\n : 'active'\n }\n />\n </AdminListToolbar>\n <AdminTableFrame>\n <AdminTable label={t('admin.terms.title')}>\n <TRTable.Header className=\"sticky top-0 z-tinyrack-component-raised\">\n <TRTable.Row>\n <AdminStickySelectCell header>\n <AdminSelectAll\n checked={selection.allOnPage}\n indeterminate={selection.someOnPage}\n onChange={selection.togglePage}\n />\n </AdminStickySelectCell>\n <AdminStickyIdentityCell header>\n <AdminSortButton\n direction={filters.direction ?? 'asc'}\n label={t('admin.terms.id')}\n onClick={() =>\n setFilter({\n ...filters,\n direction:\n filters.direction === 'desc' ? 'asc' : 'desc',\n page: 1,\n })\n }\n />\n </AdminStickyIdentityCell>\n <TRTable.Head>{t('admin.terms.titleLabel')}</TRTable.Head>\n <TRTable.Head>{t('admin.terms.version')}</TRTable.Head>\n <TRTable.Head>{t('admin.terms.required')}</TRTable.Head>\n <TRTable.Head>{t('admin.terms.consentMode')}</TRTable.Head>\n <TRTable.Head>{t('admin.terms.languages')}</TRTable.Head>\n <TRTable.Head>{t('admin.terms.source')}</TRTable.Head>\n <TRTable.Head>{t('admin.table.status')}</TRTable.Head>\n <AdminStickyActionCell header>\n {t('admin.table.actions')}\n </AdminStickyActionCell>\n </TRTable.Row>\n </TRTable.Header>\n <TRTable.Body>\n {data.terms.length === 0 ? (\n <TRTable.Row>\n <TRTable.Cell\n className=\"py-tinyrack-3xl text-center\"\n colSpan={10}\n >\n {t('admin.table.empty')}\n </TRTable.Cell>\n </TRTable.Row>\n ) : (\n data.terms.map((term) => (\n <TRTable.Row\n className={\n selection.isSelected(term.id)\n ? 'bg-tinyrack-surface-selected'\n : undefined\n }\n data-selected={\n selection.isSelected(term.id) ? '' : undefined\n }\n key={term.id}\n >\n <AdminStickySelectCell\n selected={selection.isSelected(term.id)}\n >\n <AdminRowCheckbox\n checked={selection.isSelected(term.id)}\n label={t('admin.selection.row', { name: term.id })}\n onChange={(checked) =>\n selection.toggleOne(term.id, checked)\n }\n />\n </AdminStickySelectCell>\n <AdminStickyIdentityCell\n selected={selection.isSelected(term.id)}\n >\n <TRText as=\"span\" variant=\"code\">\n {term.id}\n </TRText>\n </AdminStickyIdentityCell>\n <TRTable.Cell>\n {term.contents[0]?.title ?? term.id}\n </TRTable.Cell>\n <TRTable.Cell>{term.version}</TRTable.Cell>\n <TRTable.Cell>\n {t(term.required ? 'common.yes' : 'common.no')}\n </TRTable.Cell>\n <TRTable.Cell>\n {t(`admin.terms.${term.consent_mode}`)}\n </TRTable.Cell>\n <TRTable.Cell>\n {term.contents\n .map((content) => content.lang.toUpperCase())\n .join(', ')}\n </TRTable.Cell>\n <TRTable.Cell>\n {t(`admin.source.${term.managed_by}`)}\n </TRTable.Cell>\n <TRTable.Cell>\n <TRBadge\n className=\"whitespace-nowrap\"\n variant={term.archived_at ? 'neutral' : 'success'}\n >\n {t(\n term.archived_at\n ? 'admin.status.archived'\n : 'admin.status.active',\n )}\n </TRBadge>\n </TRTable.Cell>\n <AdminStickyActionCell\n selected={selection.isSelected(term.id)}\n >\n <div className=\"flex justify-end gap-tinyrack-xs\">\n <TRButton\n appearance=\"ghost\"\n disabled={term.managed_by === 'config'}\n onClick={() => setEditing(term)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.actions.edit')}\n </TRButton>\n <TRButton\n appearance=\"ghost\"\n disabled={term.managed_by === 'config'}\n onClick={() =>\n bulkMutation.mutate({\n target: { kind: 'ids', ids: [term.id] },\n active: Boolean(term.archived_at),\n })\n }\n type=\"button\"\n uiSize=\"sm\"\n >\n {t(\n term.archived_at\n ? 'admin.actions.restore'\n : 'admin.actions.archive',\n )}\n </TRButton>\n </div>\n </AdminStickyActionCell>\n </TRTable.Row>\n ))\n )}\n </TRTable.Body>\n </AdminTable>\n <AdminPagination\n onPageChange={(next) => setFilter({ ...filters, page: next })}\n onPageSizeChange={(next) =>\n setFilter({ ...filters, page: 1, pageSize: next })\n }\n page={page}\n pageSize={pageSize}\n total={data.pagination.total}\n />\n </AdminTableFrame>\n </div>\n {selected > 0 ? (\n <AdminBulkBar\n canExpand={\n selection.allOnPage && data.pagination.total > data.terms.length\n }\n filterSelected={selection.selection.kind === 'filter'}\n onActivate={() => setBulkActive(true)}\n onClear={selection.clear}\n onDeactivate={() => setBulkActive(false)}\n onExpand={selection.selectFilter}\n pending={bulkMutation.isPending}\n selected={selected}\n total={data.pagination.total}\n />\n ) : null}\n <TermsBulkConfirm\n active={bulkActive}\n count={selected}\n filterSelected={selection.selection.kind === 'filter'}\n onClose={() => setBulkActive(null)}\n onRun={() =>\n bulkMutation.mutate({ target, active: bulkActive ?? true })\n }\n />\n <TermModal\n isOpen={editing !== null}\n onClose={() => setEditing(null)}\n onSubmit={(input) => {\n if (editing && editing !== 'create') {\n const { id: ignoredId, ...update } = input;\n void ignoredId;\n updateMutation.mutate({ id: editing.id, input: update });\n } else createMutation.mutate(input);\n }}\n pending={createMutation.isPending || updateMutation.isPending}\n term={editing === 'create' ? undefined : (editing ?? undefined)}\n />\n </AdminShell>\n );\n}\n\nfunction formString(data: FormData, name: string) {\n const value = data.get(name);\n return typeof value === 'string' ? value.trim() : '';\n}\nconst TERM_LANGUAGES: Array<'ko' | 'en' | 'ja'> = ['ko', 'en', 'ja'];\n\nfunction TermModal({\n isOpen,\n term,\n pending,\n onClose,\n onSubmit,\n}: {\n isOpen: boolean;\n term?: AdminTerm | undefined;\n pending: boolean;\n onClose: () => void;\n onSubmit: (input: AdminTermInput) => void;\n}) {\n const { t } = useTranslation();\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const data = new FormData(event.currentTarget);\n const consentMode = formString(data, 'consent_mode');\n const contents: AdminTermInput['contents'] = [];\n for (const lang of TERM_LANGUAGES) {\n const title = formString(data, `${lang}_title`);\n const content = formString(data, `${lang}_content`);\n const contentType = formString(data, `${lang}_type`);\n if (title && content)\n contents.push({\n lang,\n title,\n type: contentType === 'text' ? 'text' : 'link',\n content,\n });\n }\n onSubmit({\n id: formString(data, 'id'),\n required: data.get('required') === 'on',\n consent_mode: consentMode === 'implicit' ? 'implicit' : 'explicit',\n version: formString(data, 'version'),\n contents,\n });\n };\n return (\n <Modal\n description={t(\n term ? 'admin.terms.editDescription' : 'admin.terms.createDescription',\n )}\n isOpen={isOpen}\n onClose={onClose}\n title={t(term ? 'admin.terms.editTitle' : 'admin.terms.createTitle')}\n >\n <TRForm\n className=\"flex flex-col gap-tinyrack-md pt-tinyrack-lg\"\n onSubmit={submit}\n >\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural form grid; fields own visible typography. */}\n <div className=\"grid gap-tinyrack-md sm:grid-cols-2\">\n <TermField\n defaultValue={term?.id}\n disabled={Boolean(term)}\n label={t('admin.terms.id')}\n name=\"id\"\n />\n <TermField\n defaultValue={term?.version ?? '1.0.0'}\n label={t('admin.terms.version')}\n name=\"version\"\n />\n <TermFormSelect\n defaultValue={term?.consent_mode ?? 'explicit'}\n label={t('admin.terms.consentMode')}\n name=\"consent_mode\"\n options={[\n ['explicit', t('admin.terms.explicit')],\n ['implicit', t('admin.terms.implicit')],\n ]}\n />\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural checkbox row; visible label uses TRText. */}\n <div className=\"flex items-center gap-tinyrack-sm\">\n <TRCheckbox.Root\n aria-label={t('admin.terms.required')}\n defaultChecked={term?.required ?? true}\n name=\"required\"\n value=\"on\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n <TRText variant=\"caption\">{t('admin.terms.required')}</TRText>\n </div>\n </div>\n {term ? (\n <TRText color=\"warning\" variant=\"bodySm\">\n {t('admin.terms.versionWarning')}\n </TRText>\n ) : null}\n {TERM_LANGUAGES.map((lang) => {\n const content = term?.contents.find((item) => item.lang === lang);\n return (\n <TRFieldset.Root\n className=\"grid gap-tinyrack-sm pt-tinyrack-md sm:grid-cols-2\"\n key={lang}\n >\n <TRFieldset.Legend>{lang.toUpperCase()}</TRFieldset.Legend>\n <TermField\n defaultValue={content?.title}\n label={t('admin.terms.titleLabel')}\n name={`${lang}_title`}\n />\n <TermFormSelect\n defaultValue={content?.type ?? 'link'}\n label={t('admin.terms.contentType')}\n name={`${lang}_type`}\n options={[\n ['link', t('admin.terms.link')],\n ['text', t('admin.terms.text')],\n ]}\n />\n <TRTextarea\n className=\"sm:col-span-2\"\n defaultValue={content?.content}\n name={`${lang}_content`}\n placeholder={t('admin.terms.content')}\n />\n </TRFieldset.Root>\n );\n })}\n <ModalActions>\n <TRButton disabled={pending} onClick={onClose} type=\"button\">\n {t('common.dismiss')}\n </TRButton>\n <TRButton disabled={pending} intent=\"primary\" type=\"submit\">\n {t('admin.actions.save')}\n </TRButton>\n </ModalActions>\n </TRForm>\n </Modal>\n );\n}\nfunction TermField({\n label,\n name,\n defaultValue,\n disabled,\n}: {\n label: string;\n name: string;\n defaultValue?: string | undefined;\n disabled?: boolean | undefined;\n}) {\n return (\n <TRField.Root>\n <TRField.Label>{label}</TRField.Label>\n <TRInput\n defaultValue={defaultValue}\n disabled={disabled}\n name={name}\n required\n uiSize=\"sm\"\n />\n </TRField.Root>\n );\n}\nfunction TermFormSelect({\n label,\n name,\n defaultValue,\n options,\n}: {\n label: string;\n name: string;\n defaultValue: string;\n options: Array<[string, string]>;\n}) {\n return (\n <div className=\"flex flex-col gap-tinyrack-xs text-tinyrack-xs\">\n <TRText as=\"span\" variant=\"caption\">\n {label}\n </TRText>\n <TRSelect.Root defaultValue={defaultValue} name={name}>\n <TRSelect.Trigger aria-label={label} uiSize=\"sm\">\n <TRSelect.Value>\n {options.find(([value]) => value === defaultValue)?.[1] ??\n defaultValue}\n </TRSelect.Value>\n </TRSelect.Trigger>\n <TRSelect.Positioner>\n <TRSelect.Popup>\n <TRSelect.List>\n {options.map(([value, text]) => (\n <TRSelect.Item key={value} value={value}>\n <TRSelect.ItemText>{text}</TRSelect.ItemText>\n </TRSelect.Item>\n ))}\n </TRSelect.List>\n </TRSelect.Popup>\n </TRSelect.Positioner>\n </TRSelect.Root>\n </div>\n );\n}\nfunction TermsBulkConfirm({\n active,\n count,\n filterSelected,\n onClose,\n onRun,\n}: {\n active: boolean | null;\n count: number;\n filterSelected: boolean;\n onClose: () => void;\n onRun: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <Modal\n isOpen={active !== null}\n onClose={onClose}\n title={t(active ? 'admin.bulk.restoreTitle' : 'admin.bulk.archiveTitle')}\n >\n <div className=\"pt-tinyrack-lg\">\n <TRText color=\"muted\" variant=\"bodySm\">\n {t('admin.bulk.confirm', {\n count,\n scope: t(\n filterSelected\n ? 'admin.selection.filterScope'\n : 'admin.selection.pageScope',\n ),\n })}\n </TRText>\n <ModalActions>\n <TRButton onClick={onClose} type=\"button\">\n {t('common.dismiss')}\n </TRButton>\n <TRButton\n intent={active ? 'primary' : 'danger'}\n onClick={onRun}\n type=\"button\"\n >\n {t('admin.bulk.run')}\n </TRButton>\n </ModalActions>\n </div>\n </Modal>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,s as i}from"./createLucideIcon-D-yizrWN.js";import{Ar as a,In as o,t as s}from"./config-C18-l7z7.js";import{t as c}from"./useMutation-DqIIIiBW.js";import{Dt as l}from"./shell-header-bar-CdOEWmCT.js";import{t as u}from"./triangle-alert-DATO9o3k.js";import{a as d,o as f,r as p}from"./zod-Dszyrytb.js";import{E as m,M as h,N as g,P as _}from"./index-lTEyHSus.js";import{t as v}from"./auth-page-header-ChaCNNrn.js";import{t as y}from"./alert-D3aaK-_3.js";import{t as b}from"./auth-layout-BdRRr0vT.js";import{t as x}from"./form-sJw-V9wb.js";import{t as S}from"./promise-OpBtq8tG.js";import{t as C}from"./design-system-rich-text-B3NzIRoJ.js";import{r as w,t as T}from"./standard-schema-C50nwAaQ.js";import{t as E}from"./terms-checkbox-list-C9TkDC8Y.js";import{t as D}from"./labeled-separator-DdkyYDWH.js";var O=n(t()),k=e();function A(){let{t:e,i18n:t}=r(),n=o(),A=a(),j=h.useSearch(),{data:M}=l(s),N=j.lang??t.language,P=l(g(N)),F=M.registration.signup_notice?.[N]??M.registration.signup_notice?.[M.i18n.fallback_language],I=(0,O.useMemo)(()=>P.data.terms.filter(e=>e.consentMode===`explicit`),[P.data.terms]),L=(0,O.useMemo)(()=>P.data.terms.filter(e=>e.consentMode===`implicit`),[P.data.terms]),R=I.length>0,z=(0,O.useMemo)(()=>f({termsConsents:f(Object.fromEntries(I.map(t=>[t.id,t.required?d(!0,{message:e(`validation.terms.required`)}):p()])))}),[e,I]),{handleSubmit:B,control:V,setValue:H,formState:{errors:U}}=w({defaultValues:{termsConsents:Object.fromEntries(I.map(e=>[e.id,!!(e.userConsent?.agreed&&!e.userConsent.requiresUpdate)]))},resolver:T(z),mode:`onChange`}),W=c({..._,onSuccess:async()=>{await A.invalidateQueries({queryKey:m.queryKey}),await A.fetchQuery(m),await S(),j.redirect?window.location.href=j.redirect:n.navigate({to:`/profile`})}});return(0,k.jsxs)(b,{width:`wide`,children:[(0,k.jsx)(v,{title:e(`terms.title`)}),F&&(0,k.jsx)(C,{html:F,variant:`notice`}),F&&R&&(0,k.jsx)(D,{label:e(`terms.additionalOptionalConsent`)}),(0,k.jsxs)(x,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:B(e=>{let t=Object.entries(e.termsConsents).map(([e,t])=>({termsId:e,agreed:t,consentType:`explicit`})),n=L.map(e=>({termsId:e.id,agreed:!0,consentType:`implicit`}));W.mutate({consents:[...t,...n],...j.registration_token&&{registrationToken:j.registration_token}})}),children:[R&&(0,k.jsx)(E,{control:V,disabled:W.isPending,errors:U,setValue:H,terms:I}),W.isError&&(0,k.jsx)(y,{icon:u,type:`error`,children:e(`terms.error.submitFailed`)}),(0,k.jsx)(`div`,{className:`sticky bottom-0 flex gap-tinyrack-sm border-tinyrack-border border-t-tinyrack-default bg-tinyrack-surface py-tinyrack-md`,children:(0,k.jsx)(i,{className:`w-full`,intent:`primary`,loading:W.isPending,loadingLabel:e(`terms.submit`),type:`submit`,uiSize:`lg`,children:e(`terms.submit`)})})]})]})}export{A as component};
2
- //# sourceMappingURL=terms-COr3cDw5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terms-COr3cDw5.js","names":["standardSchemaResolver","useMutation","useQueryClient","useSuspenseQuery","useRouter","TRButton","TRForm","TriangleAlertIcon","useMemo","useForm","useTranslation","z","AuthPageHeader","TermsCheckboxList","Alert","DesignSystemRichText","LabeledSeparator","AuthLayout","tick","appConfigQueryOptions","getSessionQueryOptions","getTermsQueryOptions","termsConsentMutationOptions","Route","Terms","t","i18n","router","queryClient","search","useSearch","data","configData","lang","language","termsQuery","implicitNotice","registration","signup_notice","fallback_language","explicitTerms","terms","filter","term","consentMode","implicitTerms","hasExplicitTerms","length","termsSchema","object","termsConsents","Object","fromEntries","map","id","required","literal","message","boolean","TermsFormValues","TermsConsentsField","handleSubmit","control","setValue","formState","errors","defaultValues","userConsent","agreed","requiresUpdate","resolver","mode","consentMutation","onSuccess","invalidateQueries","queryKey","fetchQuery","redirect","window","location","href","navigate","to","onSubmit","values","explicitConsents","entries","TermsConsentItem","termsId","consentType","implicitConsents","mutate","consents","registration_token","registrationToken","isPending","isError","component"],"sources":["../../../frontend/src/routes/terms/index.tsx?tsr-split=component"],"sourcesContent":["import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\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 { TRForm } from '@tinyrack/ui/components/form';\nimport { TriangleAlertIcon } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport {\n TermsCheckboxList,\n type TermsConsentsField,\n} from '#frontend/components/terms/terms-checkbox-list.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { DesignSystemRichText } from '#frontend/components/ui/design-system-rich-text.tsx';\nimport { LabeledSeparator } from '#frontend/components/ui/labeled-separator.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport { OAuthSearchSchema } from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\nimport {\n getTermsQueryOptions,\n type TermsConsentItem,\n termsConsentMutationOptions,\n} from '#frontend/queries/terms.ts';\n\nconst TermsSearchSchema = OAuthSearchSchema.extend({\n redirect: z.string().optional(),\n lang: z.string().optional(),\n mode: z.enum(['normal', 'complete_registration']).optional(),\n registration_token: z.string().optional(),\n});\n\nfunction TermsError(props: ErrorComponentProps) {\n return (\n <RouteErrorFallback\n {...props}\n onUnauthorized={() => {\n window.location.href = '/login';\n }}\n />\n );\n}\n\nexport const Route = createFileRoute('/terms/')({\n component: Terms,\n errorComponent: TermsError,\n validateSearch: TermsSearchSchema,\n beforeLoad: async ({ context, search }) => {\n // When mode=complete_registration, user is completing OAuth signup.\n // The registration_token in the URL references a DB record with OAuth data.\n // Skip auth check — backend will validate the token on consent submission.\n if (search.mode === 'complete_registration') {\n return;\n }\n\n // Standard mode: requires authentication\n // Users are redirected here after OAuth login when they need to agree to terms\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n loaderDeps: ({ search }) => ({\n lang: search.lang,\n }),\n loader: async ({ context, deps }) => {\n const lang = deps.lang ?? context.i18n.language;\n await Promise.all([\n context.queryClient.ensureQueryData(getTermsQueryOptions(lang)),\n context.queryClient.ensureQueryData(appConfigQueryOptions),\n ]);\n },\n});\n\nfunction Terms() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n const lang = search.lang ?? i18n.language;\n const termsQuery = useSuspenseQuery(getTermsQueryOptions(lang));\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n\n // Separate explicit and implicit terms\n const explicitTerms = useMemo(\n () =>\n termsQuery.data.terms.filter((term) => term.consentMode === 'explicit'),\n [termsQuery.data.terms],\n );\n\n const implicitTerms = useMemo(\n () =>\n termsQuery.data.terms.filter((term) => term.consentMode === 'implicit'),\n [termsQuery.data.terms],\n );\n\n const hasExplicitTerms = explicitTerms.length > 0;\n\n // Schema only validates explicit terms (implicit are auto-agreed)\n const termsSchema = useMemo(\n () =>\n z.object({\n termsConsents: z.object(\n Object.fromEntries(\n explicitTerms.map((term) => [\n term.id,\n term.required\n ? z.literal(true, {\n message: t('validation.terms.required'),\n })\n : z.boolean(),\n ]),\n ),\n ),\n }),\n [t, explicitTerms],\n );\n\n type TermsFormValues = TermsConsentsField;\n\n const {\n handleSubmit,\n control,\n setValue,\n formState: { errors },\n } = useForm<TermsFormValues>({\n defaultValues: {\n termsConsents: Object.fromEntries(\n explicitTerms.map((term) => [\n term.id,\n !!(term.userConsent?.agreed && !term.userConsent.requiresUpdate),\n ]),\n ),\n },\n resolver: standardSchemaResolver(termsSchema),\n mode: 'onChange',\n });\n\n const consentMutation = useMutation({\n ...termsConsentMutationOptions,\n onSuccess: async () => {\n await queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n await queryClient.fetchQuery(getSessionQueryOptions);\n await tick();\n\n // Redirect after successful consent\n if (search.redirect) {\n window.location.href = search.redirect;\n } else {\n router.navigate({ to: '/profile' });\n }\n },\n });\n\n const onSubmit = (values: TermsFormValues) => {\n const explicitConsents = Object.entries(\n values.termsConsents,\n ).map<TermsConsentItem>(([termsId, agreed]) => ({\n termsId,\n agreed,\n consentType: 'explicit',\n }));\n\n const implicitConsents = implicitTerms.map<TermsConsentItem>((term) => ({\n termsId: term.id,\n agreed: true,\n consentType: 'implicit',\n }));\n\n consentMutation.mutate({\n consents: [...explicitConsents, ...implicitConsents],\n ...(search.registration_token && {\n registrationToken: search.registration_token,\n }),\n });\n };\n\n return (\n <AuthLayout width=\"wide\">\n <AuthPageHeader title={t('terms.title')} />\n\n {implicitNotice && (\n <DesignSystemRichText html={implicitNotice} variant=\"notice\" />\n )}\n\n {implicitNotice && hasExplicitTerms && (\n <LabeledSeparator label={t('terms.additionalOptionalConsent')} />\n )}\n\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Explicit terms with checkboxes */}\n {hasExplicitTerms && (\n <TermsCheckboxList\n control={control}\n disabled={consentMutation.isPending}\n errors={errors}\n setValue={setValue}\n terms={explicitTerms}\n />\n )}\n\n {/* Error message */}\n {consentMutation.isError && (\n <Alert icon={TriangleAlertIcon} type=\"error\">\n {t('terms.error.submitFailed')}\n </Alert>\n )}\n\n {/*\n Sticky, like consent: a long list of terms would otherwise push the\n only action off the bottom of the screen.\n */}\n <div className=\"sticky bottom-0 flex gap-tinyrack-sm border-tinyrack-border border-t-tinyrack-default bg-tinyrack-surface py-tinyrack-md\">\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={consentMutation.isPending}\n loadingLabel={t('terms.submit')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('terms.submit')}\n </TRButton>\n </div>\n </TRForm>\n </AuthLayout>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,n as i,s as a}from"./createLucideIcon-D-yizrWN.js";import{t as o}from"./badge-B8D0Q2qq.js";import{t as s}from"./checkbox-DTPGfvmq.js";import{t as c}from"./modal-JuaLVSyx.js";import{t as l}from"./link-BHmn75Zo.js";import{t as u}from"./design-system-rich-text-B3NzIRoJ.js";import{i as d,n as f}from"./standard-schema-C50nwAaQ.js";var p=n(t(),1),m=e();function h({isOpen:e,onClose:t,title:n,content:r}){return(0,m.jsx)(c,{isOpen:e,onClose:t,size:`lg`,title:n,children:(0,m.jsx)(u,{className:`mt-tinyrack-md max-h-dvh overflow-y-auto`,html:r})})}function g({terms:e,control:t,setValue:n,errors:c,disabled:u=!1}){let{t:g}=r(),[v,y]=(0,p.useState)(null),b=d({control:t,name:`termsConsents`}),x=t=>{for(let r of e)n(`termsConsents.${r.id}`,t,{shouldValidate:!0})},S=e.every(e=>b?.[e.id]),C=e.some(e=>!e.required),w=c?.termsConsents,T=e=>e.title===e.id?_(e.id):e.title;return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`div`,{className:`space-y-tinyrack-xs`,children:[e.length>1&&(0,m.jsxs)(`div`,{className:`flex cursor-pointer items-center gap-tinyrack-sm py-tinyrack-2xs`,children:[(0,m.jsx)(s.Root,{"aria-labelledby":`terms-all-label`,checked:S,"data-testid":`terms-checkbox`,disabled:u,onCheckedChange:x,uiSize:`lg`,children:(0,m.jsx)(s.Indicator,{})}),(0,m.jsx)(i,{id:`terms-all-label`,variant:`caption`,weight:`medium`,children:g(`terms.agreeAll`)}),C&&(0,m.jsx)(i,{color:`muted`,variant:`caption`,children:g(`terms.agreeAllOptionalIncluded`)})]}),e.map(e=>(0,m.jsx)(f,{control:t,name:`termsConsents.${e.id}`,render:({field:t})=>(0,m.jsxs)(`div`,{children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm py-tinyrack-2xs`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-tinyrack-sm`,children:[(0,m.jsx)(s.Root,{"aria-labelledby":`term-label-${e.id}`,checked:t.value===!0,"data-testid":`terms-checkbox`,disabled:u,onCheckedChange:e=>t.onChange(e===!0),uiSize:`lg`,children:(0,m.jsx)(s.Indicator,{})}),(0,m.jsx)(i,{id:`term-label-${e.id}`,truncate:!0,variant:`caption`,children:T(e)}),(0,m.jsx)(o,{"data-testid":e.required?`terms-badge-required`:`terms-badge-optional`,uiSize:`md`,variant:e.required?`danger`:`neutral`,children:e.required?g(`terms.required`):g(`terms.optional`)})]}),e.type===`link`&&e.content&&(0,m.jsx)(l,{"aria-label":g(`terms.viewSpecific`,{title:T(e)}),className:`shrink-0 text-tinyrack-xs`,href:e.content,rel:`noopener noreferrer`,target:`_blank`,children:g(`terms.view`)}),e.type===`text`&&e.content&&(0,m.jsx)(a,{appearance:`ghost`,"aria-label":g(`terms.viewSpecific`,{title:T(e)}),className:`shrink-0 text-tinyrack-xs`,onClick:()=>y(e),type:`button`,uiSize:`sm`,children:g(`terms.view`)})]}),e.userConsent?.requiresUpdate&&(0,m.jsx)(i,{as:`p`,className:`ml-tinyrack-xl`,color:`warning`,variant:`caption`,children:g(`terms.versionUpdated`)}),w?.[e.id]&&(0,m.jsx)(i,{as:`p`,className:`ml-tinyrack-xl`,color:`danger`,"data-testid":`terms-field-error`,variant:`caption`,children:w[e.id]?.message})]})},e.id))]}),(0,m.jsx)(h,{content:v?.content??``,isOpen:v!==null,onClose:()=>y(null),title:v?.title??``})]})}function _(e){return e.replaceAll(`-`,` `).replaceAll(`_`,` `).replace(/([a-zA-Z])(\d)/g,`$1 $2`).split(` `).filter(e=>e.length>0).map(e=>`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(` `)}export{g as t};
2
- //# sourceMappingURL=terms-checkbox-list-C9TkDC8Y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terms-checkbox-list-C9TkDC8Y.js","names":[],"sources":["../../../frontend/src/components/terms/terms-content-modal.tsx","../../../frontend/src/components/terms/terms-checkbox-list.tsx"],"sourcesContent":["import { DesignSystemRichText } from '#frontend/components/ui/design-system-rich-text.tsx';\nimport { Modal } from '#frontend/components/ui/modal.tsx';\n\ntype TermsContentModalProps = {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n content: string;\n};\n\nexport function TermsContentModal({\n isOpen,\n onClose,\n title,\n content,\n}: TermsContentModalProps) {\n return (\n <Modal isOpen={isOpen} onClose={onClose} size=\"lg\" title={title}>\n <DesignSystemRichText\n className=\"mt-tinyrack-md max-h-dvh overflow-y-auto\"\n html={content}\n />\n </Modal>\n );\n}\n","import { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCheckbox } from '@tinyrack/ui/components/checkbox';\nimport { TRLink } from '@tinyrack/ui/components/link';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { useState } from 'react';\nimport {\n type Control,\n Controller,\n type FieldErrors,\n type FieldValues,\n type Path,\n type PathValue,\n type UseFormSetValue,\n useWatch,\n} from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nimport type { TermItem } from '#frontend/queries/terms.ts';\nimport { TermsContentModal } from './terms-content-modal.tsx';\n\nexport type TermsConsentsField = {\n termsConsents: Record<string, boolean>;\n};\n\ntype TermsCheckboxListProps<T extends FieldValues & TermsConsentsField> = {\n terms: TermItem[];\n control: Control<T>;\n setValue: UseFormSetValue<T>;\n errors?: FieldErrors<T>;\n disabled?: boolean;\n};\n\nexport function TermsCheckboxList<T extends FieldValues & TermsConsentsField>({\n terms,\n control,\n setValue,\n errors,\n disabled = false,\n}: TermsCheckboxListProps<T>) {\n const { t } = useTranslation();\n const [modalTerm, setModalTerm] = useState<TermItem | null>(null);\n\n const termsConsents = useWatch({\n control,\n name: 'termsConsents' as Path<T>,\n }) as Record<string, boolean> | undefined;\n\n const handleAllChange = (checked: boolean) => {\n for (const term of terms) {\n setValue(\n `termsConsents.${term.id}` as Path<T>,\n checked as PathValue<T, Path<T>>,\n { shouldValidate: true },\n );\n }\n };\n\n const allChecked = terms.every((term) => termsConsents?.[term.id]);\n\n const hasOptionalTerms = terms.some((term) => !term.required);\n\n const termsConsentsErrors = errors?.termsConsents as\n | Record<string, { message?: string }>\n | undefined;\n\n const getTermTitle = (term: TermItem) => {\n if (term.title !== term.id) {\n return term.title;\n }\n\n return humanizeTermId(term.id);\n };\n\n return (\n <>\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural terms list; all labels and errors use TRText. */}\n <div className=\"space-y-tinyrack-xs\">\n {terms.length > 1 && (\n /* tinyrack-check-ignore-next-line components/no-native-text -- Structural checkbox row containing DS controls and TRText. */\n <div className=\"flex cursor-pointer items-center gap-tinyrack-sm py-tinyrack-2xs\">\n <TRCheckbox.Root\n aria-labelledby=\"terms-all-label\"\n checked={allChecked}\n data-testid=\"terms-checkbox\"\n disabled={disabled}\n onCheckedChange={handleAllChange}\n uiSize=\"lg\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n <TRText id=\"terms-all-label\" variant=\"caption\" weight=\"medium\">\n {t('terms.agreeAll')}\n </TRText>\n {hasOptionalTerms && (\n <TRText color=\"muted\" variant=\"caption\">\n {t('terms.agreeAllOptionalIncluded')}\n </TRText>\n )}\n </div>\n )}\n\n {terms.map((term) => (\n <Controller\n control={control}\n key={term.id}\n name={`termsConsents.${term.id}` as Path<T>}\n render={({ field }) => (\n /* tinyrack-check-ignore-next-line components/no-native-text -- Structural term state wrapper. */\n <div>\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural term row containing DS controls and TRText. */}\n <div className=\"flex items-center gap-tinyrack-sm py-tinyrack-2xs\">\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural label group. */}\n <div className=\"flex min-w-0 flex-1 items-center gap-tinyrack-sm\">\n <TRCheckbox.Root\n aria-labelledby={`term-label-${term.id}`}\n checked={field.value === true}\n data-testid=\"terms-checkbox\"\n disabled={disabled}\n onCheckedChange={(checked) =>\n field.onChange(checked === true)\n }\n uiSize=\"lg\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n <TRText\n id={`term-label-${term.id}`}\n truncate\n variant=\"caption\"\n >\n {getTermTitle(term)}\n </TRText>\n <TRBadge\n data-testid={\n term.required\n ? 'terms-badge-required'\n : 'terms-badge-optional'\n }\n uiSize=\"md\"\n variant={term.required ? 'danger' : 'neutral'}\n >\n {term.required\n ? t('terms.required')\n : t('terms.optional')}\n </TRBadge>\n </div>\n {term.type === 'link' && term.content && (\n <TRLink\n aria-label={t('terms.viewSpecific', {\n title: getTermTitle(term),\n })}\n className=\"shrink-0 text-tinyrack-xs\"\n href={term.content}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {t('terms.view')}\n </TRLink>\n )}\n {term.type === 'text' && term.content && (\n <TRButton\n appearance=\"ghost\"\n aria-label={t('terms.viewSpecific', {\n title: getTermTitle(term),\n })}\n className=\"shrink-0 text-tinyrack-xs\"\n onClick={() => setModalTerm(term)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('terms.view')}\n </TRButton>\n )}\n </div>\n {term.userConsent?.requiresUpdate && (\n <TRText\n as=\"p\"\n className=\"ml-tinyrack-xl\"\n color=\"warning\"\n variant=\"caption\"\n >\n {t('terms.versionUpdated')}\n </TRText>\n )}\n {termsConsentsErrors?.[term.id] && (\n <TRText\n as=\"p\"\n className=\"ml-tinyrack-xl\"\n color=\"danger\"\n data-testid=\"terms-field-error\"\n variant=\"caption\"\n >\n {termsConsentsErrors[term.id]?.message}\n </TRText>\n )}\n </div>\n )}\n />\n ))}\n </div>\n\n <TermsContentModal\n content={modalTerm?.content ?? ''}\n isOpen={modalTerm !== null}\n onClose={() => setModalTerm(null)}\n title={modalTerm?.title ?? ''}\n />\n </>\n );\n}\n\nfunction humanizeTermId(id: string): string {\n const words = id\n .replaceAll('-', ' ')\n .replaceAll('_', ' ')\n .replace(/([a-zA-Z])(\\d)/g, '$1 $2')\n .split(' ')\n .filter((word) => word.length > 0);\n\n return words\n .map((word) => `${word.charAt(0).toUpperCase()}${word.slice(1)}`)\n .join(' ');\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{X as e}from"./createLucideIcon-D-yizrWN.js";import{B as t}from"./index-lTEyHSus.js";var n=e();function r(e){return(0,n.jsx)(t,{...e,onUnauthorized:()=>{window.location.href=`/login`}})}export{r as errorComponent};
2
- //# sourceMappingURL=terms-k66ruDWl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terms-k66ruDWl.js","names":["RouteErrorFallback","TermsError","props","ErrorComponentProps","window","location","href","errorComponent"],"sources":["../../../frontend/src/routes/terms/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 {\n createFileRoute,\n type ErrorComponentProps,\n redirect,\n useRouter,\n} from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TriangleAlertIcon } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport {\n TermsCheckboxList,\n type TermsConsentsField,\n} from '#frontend/components/terms/terms-checkbox-list.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { DesignSystemRichText } from '#frontend/components/ui/design-system-rich-text.tsx';\nimport { LabeledSeparator } from '#frontend/components/ui/labeled-separator.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport { OAuthSearchSchema } from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\nimport {\n getTermsQueryOptions,\n type TermsConsentItem,\n termsConsentMutationOptions,\n} from '#frontend/queries/terms.ts';\n\nconst TermsSearchSchema = OAuthSearchSchema.extend({\n redirect: z.string().optional(),\n lang: z.string().optional(),\n mode: z.enum(['normal', 'complete_registration']).optional(),\n registration_token: z.string().optional(),\n});\n\nfunction TermsError(props: ErrorComponentProps) {\n return (\n <RouteErrorFallback\n {...props}\n onUnauthorized={() => {\n window.location.href = '/login';\n }}\n />\n );\n}\n\nexport const Route = createFileRoute('/terms/')({\n component: Terms,\n errorComponent: TermsError,\n validateSearch: TermsSearchSchema,\n beforeLoad: async ({ context, search }) => {\n // When mode=complete_registration, user is completing OAuth signup.\n // The registration_token in the URL references a DB record with OAuth data.\n // Skip auth check — backend will validate the token on consent submission.\n if (search.mode === 'complete_registration') {\n return;\n }\n\n // Standard mode: requires authentication\n // Users are redirected here after OAuth login when they need to agree to terms\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n loaderDeps: ({ search }) => ({\n lang: search.lang,\n }),\n loader: async ({ context, deps }) => {\n const lang = deps.lang ?? context.i18n.language;\n await Promise.all([\n context.queryClient.ensureQueryData(getTermsQueryOptions(lang)),\n context.queryClient.ensureQueryData(appConfigQueryOptions),\n ]);\n },\n});\n\nfunction Terms() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n const lang = search.lang ?? i18n.language;\n const termsQuery = useSuspenseQuery(getTermsQueryOptions(lang));\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n\n // Separate explicit and implicit terms\n const explicitTerms = useMemo(\n () =>\n termsQuery.data.terms.filter((term) => term.consentMode === 'explicit'),\n [termsQuery.data.terms],\n );\n\n const implicitTerms = useMemo(\n () =>\n termsQuery.data.terms.filter((term) => term.consentMode === 'implicit'),\n [termsQuery.data.terms],\n );\n\n const hasExplicitTerms = explicitTerms.length > 0;\n\n // Schema only validates explicit terms (implicit are auto-agreed)\n const termsSchema = useMemo(\n () =>\n z.object({\n termsConsents: z.object(\n Object.fromEntries(\n explicitTerms.map((term) => [\n term.id,\n term.required\n ? z.literal(true, {\n message: t('validation.terms.required'),\n })\n : z.boolean(),\n ]),\n ),\n ),\n }),\n [t, explicitTerms],\n );\n\n type TermsFormValues = TermsConsentsField;\n\n const {\n handleSubmit,\n control,\n setValue,\n formState: { errors },\n } = useForm<TermsFormValues>({\n defaultValues: {\n termsConsents: Object.fromEntries(\n explicitTerms.map((term) => [\n term.id,\n !!(term.userConsent?.agreed && !term.userConsent.requiresUpdate),\n ]),\n ),\n },\n resolver: standardSchemaResolver(termsSchema),\n mode: 'onChange',\n });\n\n const consentMutation = useMutation({\n ...termsConsentMutationOptions,\n onSuccess: async () => {\n await queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n await queryClient.fetchQuery(getSessionQueryOptions);\n await tick();\n\n // Redirect after successful consent\n if (search.redirect) {\n window.location.href = search.redirect;\n } else {\n router.navigate({ to: '/profile' });\n }\n },\n });\n\n const onSubmit = (values: TermsFormValues) => {\n const explicitConsents = Object.entries(\n values.termsConsents,\n ).map<TermsConsentItem>(([termsId, agreed]) => ({\n termsId,\n agreed,\n consentType: 'explicit',\n }));\n\n const implicitConsents = implicitTerms.map<TermsConsentItem>((term) => ({\n termsId: term.id,\n agreed: true,\n consentType: 'implicit',\n }));\n\n consentMutation.mutate({\n consents: [...explicitConsents, ...implicitConsents],\n ...(search.registration_token && {\n registrationToken: search.registration_token,\n }),\n });\n };\n\n return (\n <AuthLayout width=\"wide\">\n <AuthPageHeader title={t('terms.title')} />\n\n {implicitNotice && (\n <DesignSystemRichText html={implicitNotice} variant=\"notice\" />\n )}\n\n {implicitNotice && hasExplicitTerms && (\n <LabeledSeparator label={t('terms.additionalOptionalConsent')} />\n )}\n\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n {/* Explicit terms with checkboxes */}\n {hasExplicitTerms && (\n <TermsCheckboxList\n control={control}\n disabled={consentMutation.isPending}\n errors={errors}\n setValue={setValue}\n terms={explicitTerms}\n />\n )}\n\n {/* Error message */}\n {consentMutation.isError && (\n <Alert icon={TriangleAlertIcon} type=\"error\">\n {t('terms.error.submitFailed')}\n </Alert>\n )}\n\n {/*\n Sticky, like consent: a long list of terms would otherwise push the\n only action off the bottom of the screen.\n */}\n <div className=\"sticky bottom-0 flex gap-tinyrack-sm border-tinyrack-border border-t-tinyrack-default bg-tinyrack-surface py-tinyrack-md\">\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={consentMutation.isPending}\n loadingLabel={t('terms.submit')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('terms.submit')}\n </TRButton>\n </div>\n </TRForm>\n </AuthLayout>\n );\n}\n"],"mappings":"qGA8CA,SAASC,EAAWC,EAA4B,CAC9C,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAIA,EACJ,mBAAsB,CACpBE,OAAOC,SAASC,KAAO,QACzB,CAAE,CAAA,CAGR"}
@@ -1,2 +0,0 @@
1
- import{K as e,X as t,Z as n,et as r,i,n as a,q as o,r as s,s as c,t as l}from"./createLucideIcon-D-yizrWN.js";import{An as u,Ar as ee,In as te}from"./config-C18-l7z7.js";import{a as d,i as f,n as p,r as m,t as h}from"./use-totp-setup-KOVNS2DC.js";import{t as g}from"./shield-check-DpYF8yeI.js";import{E as _,F as v,H as ne,L as y,h as re,z as ie}from"./index-lTEyHSus.js";import{t as b}from"./auth-page-header-ChaCNNrn.js";import{t as x}from"./alert-kRxM1xsM.js";import{t as S}from"./alert-D3aaK-_3.js";import{t as ae}from"./auth-layout-BdRRr0vT.js";import{t as C}from"./promise-OpBtq8tG.js";import{n as w,t as T}from"./auth-footer-Du6S-oDG.js";var oe=l(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),E=r(n()),D=t();function O({className:e,role:t=`list`,...n}){return(0,D.jsx)(`ol`,{...n,className:o(`tr-steps`,e),role:t})}function k({className:e,...t}){return(0,D.jsx)(`li`,{...t,className:o(`tr-steps-item`,e)})}function A({className:e,current:t,total:n,...r}){let i=Math.max(1,n),a=Math.min(Math.max(1,t),i);return(0,D.jsx)(`div`,{...r,"aria-valuemax":i,"aria-valuemin":1,"aria-valuenow":a,className:o(`tr-steps-progress`,e),role:`progressbar`,children:Array.from({length:i},(e,t)=>String(t+1)).map(e=>(0,D.jsx)(`span`,{"aria-hidden":`true`,className:`tr-steps-progress-segment`,"data-complete":Number(e)<=a?`true`:void 0},e))})}var j={Item:k,Progress:A,Root:O};function M({steps:e,current:t,progressLabel:n}){return(0,D.jsxs)(`div`,{className:`flex w-full flex-col gap-tinyrack-xs`,children:[(0,D.jsxs)(`div`,{className:`flex items-baseline justify-between gap-tinyrack-sm`,children:[(0,D.jsx)(a,{color:`muted`,variant:`label`,children:n}),(0,D.jsx)(a,{color:`muted`,variant:`caption`,children:e[t]})]}),(0,D.jsx)(j.Progress,{"aria-label":n,current:t+1,total:e.length})]})}var N={TOTP_ALREADY_ENABLED:`TOTP_ALREADY_ENABLED`,TOTP_NOT_SETUP:`TOTP_NOT_SETUP`,INVALID_TOTP_CODE:`INVALID_TOTP_CODE`,UNAUTHORIZED:`UNAUTHORIZED`,SECOND_FACTOR_SESSION_EXPIRED:`SECOND_FACTOR_SESSION_EXPIRED`},P=5;function F(){let{t}=i(),n=te(),r=ee(),a=re.useSearch(),[o,l]=(0,E.useState)(`generic`),[O,k]=(0,E.useState)(P),A=(0,E.useCallback)(()=>{n.navigate({to:`/login`,search:y(a)})},[n,a]),j=(0,E.useCallback)(()=>{n.navigate({to:`/profile`})},[n]),{step:F,setupData:I,recoveryCodes:L,isSetupPending:R,isVerifyPending:z,isConfirmPending:B,startSetup:V,verify:H,goToQr:U,goToVerify:W,confirmRecoveryCodes:G}=h({autoStart:!0,onSetupError:(0,E.useCallback)(e=>{if(e instanceof s)switch(e.code){case N.TOTP_ALREADY_ENABLED:l(`already_enabled`);break;case N.UNAUTHORIZED:case N.SECOND_FACTOR_SESSION_EXPIRED:l(`session_expired`),k(P);break;default:l(`generic`)}else l(`generic`)},[]),onVerifySuccess:(0,E.useCallback)(async e=>{await C()},[]),onConfirmSuccess:(0,E.useCallback)(async e=>{r.setQueryData(_.queryKey,{user:e.user}),await C(),ie(a)?window.location.href=v(a):n.navigate({to:`/profile`})},[r,n,a]),onVerifyError:e=>{if(e instanceof s)switch(e.code){case N.TOTP_ALREADY_ENABLED:j();break;case N.UNAUTHORIZED:case N.SECOND_FACTOR_SESSION_EXPIRED:l(`session_expired`),k(P);break;case N.TOTP_NOT_SETUP:V();break}}});(0,E.useEffect)(()=>{if(o!==`session_expired`||F!==`error`)return;let e=setInterval(()=>{k(t=>t<=1?(clearInterval(e),A(),0):t-1)},1e3);return()=>clearInterval(e)},[o,F,A]);let K=(0,E.useCallback)(async e=>{await H(e)},[H]),q=F===`recovery`&&L.length>0,J=F===`qr`&&I!==null,Y=F!==`loading`&&F!==`error`,X=1;q?X=2:J&&(X=0);let Z=t(`setupTotp.title`),Q=t(`setupTotp.subtitle`);q?Z=t(`setupTotp.recoveryCodes.title`):Y&&!J&&(Z=t(`setupTotp.verifyTitle`),Q=t(`setupTotp.verifySubtitle`));let se=F===`error`||J,$;return $=F===`loading`?(0,D.jsx)(`div`,{className:`flex justify-center py-tinyrack-xl`,"data-testid":`totp-setup-loading`,children:(0,D.jsx)(e,{uiSize:`lg`,variant:`primary`})}):F===`error`&&o===`session_expired`?(0,D.jsxs)(x.Root,{"data-testid":`totp-setup-session-expired`,variant:`warning`,children:[(0,D.jsx)(ne,{"aria-hidden":!0,className:`size-tinyrack-xl`}),(0,D.jsx)(x.Title,{children:t(`setupTotp.error.expired`)}),(0,D.jsx)(x.Description,{children:t(`setupTotp.redirecting`,{seconds:O})}),(0,D.jsx)(x.Actions,{children:(0,D.jsx)(c,{appearance:`ghost`,intent:`neutral`,onClick:A,type:`button`,uiSize:`sm`,children:t(`setupTotp.redirectNow`)})})]}):F===`error`&&o===`already_enabled`?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(S,{icon:d,type:`info`,children:t(`setupTotp.error.alreadyEnabled`)}),(0,D.jsx)(c,{className:`w-full`,intent:`primary`,onClick:j,type:`button`,uiSize:`lg`,children:t(`setupTotp.goToProfile`)})]}):F===`error`?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(S,{icon:oe,type:`error`,children:t(`setupTotp.error.setupFailed`)}),(0,D.jsx)(c,{className:`w-full`,disabled:R,intent:`primary`,loading:R,onClick:V,type:`button`,uiSize:`lg`,children:t(`setupTotp.retry`)})]}):q?(0,D.jsx)(f,{isLoading:B,onConfirm:G,recoveryCodes:L}):J&&I?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(S,{icon:g,type:`info`,children:t(`setupTotp.required`)}),(0,D.jsx)(p,{onNext:W,setupData:I})]}):(0,D.jsx)(m,{isPending:z,onBack:U,onSubmit:K}),(0,D.jsxs)(ae,{width:q?`wide`:`form`,children:[(0,D.jsx)(b,{eyebrow:Y?(0,D.jsx)(M,{current:X,progressLabel:t(`setupTotp.stepProgress`,{current:X+1,total:3}),steps:[t(`setupTotp.steps.scan`),t(`setupTotp.steps.verify`),t(`setupTotp.steps.saveCodes`)]}):void 0,subtitle:Q,title:Z}),(0,D.jsx)(`div`,{className:`auth-enter flex flex-col gap-tinyrack-lg`,children:$},F),se&&(0,D.jsx)(T,{children:(0,D.jsx)(w,{link:(0,D.jsx)(u,{search:y(a),to:`/login`,children:t(`setupTotp.backToLogin`)})})})]})}export{F as component};
2
- //# sourceMappingURL=totp-BJycMMTC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"totp-BJycMMTC.js","names":["useQueryClient","Link","useRouter","TRAlert","TRButton","TRSpinner","CircleAlertIcon","CircleXIcon","InfoIcon","ShieldCheckIcon","useCallback","useEffect","useState","useTranslation","AuthFooter","AuthFooterLink","AuthPageHeader","AuthSteps","QrStep","RecoveryCodesStep","VerifyStep","Alert","AuthLayout","useTotpSetup","IssuaryError","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","tick","getSessionQueryOptions","ERROR_CODES","TOTP_ALREADY_ENABLED","TOTP_NOT_SETUP","INVALID_TOTP_CODE","UNAUTHORIZED","SECOND_FACTOR_SESSION_EXPIRED","const","Route","ErrorType","REDIRECT_COUNTDOWN_SECONDS","SetupTotp","t","router","queryClient","search","useSearch","errorType","setErrorType","redirectCountdown","setRedirectCountdown","redirectToLogin","navigate","to","redirectToProfile","handleSetupError","error","Error","code","handleVerifySuccess","_data","TotpSetupVerifyResponse","handleConfirmSuccess","data","TotpConfirmResponse","setQueryData","queryKey","user","window","location","href","step","setupData","recoveryCodes","isSetupPending","isVerifyPending","isConfirmPending","startSetup","verify","goToQr","goToVerify","confirmRecoveryCodes","autoStart","onSetupError","onVerifySuccess","onConfirmSuccess","onVerifyError","timer","setInterval","prev","clearInterval","handleVerify","isRecoveryStep","length","isQrStep","isWizardStep","wizardIndex","title","subtitle","showFooter","body","React","ReactNode","seconds","current","total","undefined","component"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/circle-x.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/steps/steps.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/steps/index.js","../../../frontend/src/components/auth/auth-steps.tsx","../../../frontend/src/routes/setup/totp/index.tsx?tsr-split=component"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n];\nconst CircleX = createLucideIcon(\"circle-x\", __iconNode);\n\nexport { __iconNode, CircleX as default };\n//# sourceMappingURL=circle-x.mjs.map\n","import { mergeClassNames } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/steps/steps.tsx\nfunction TRStepsRoot({ className, role = \"list\", ...props }) {\n\treturn /* @__PURE__ */ jsx(\"ol\", {\n\t\t...props,\n\t\tclassName: mergeClassNames(\"tr-steps\", className),\n\t\trole\n\t});\n}\nfunction TRStepsItem({ className, ...props }) {\n\treturn /* @__PURE__ */ jsx(\"li\", {\n\t\t...props,\n\t\tclassName: mergeClassNames(\"tr-steps-item\", className)\n\t});\n}\nfunction TRStepsProgress({ className, current, total, ...props }) {\n\tconst safeTotal = Math.max(1, total);\n\tconst safeCurrent = Math.min(Math.max(1, current), safeTotal);\n\treturn /* @__PURE__ */ jsx(\"div\", {\n\t\t...props,\n\t\t\"aria-valuemax\": safeTotal,\n\t\t\"aria-valuemin\": 1,\n\t\t\"aria-valuenow\": safeCurrent,\n\t\tclassName: mergeClassNames(\"tr-steps-progress\", className),\n\t\trole: \"progressbar\",\n\t\tchildren: Array.from({ length: safeTotal }, (_, index) => String(index + 1)).map((step) => /* @__PURE__ */ jsx(\"span\", {\n\t\t\t\"aria-hidden\": \"true\",\n\t\t\tclassName: \"tr-steps-progress-segment\",\n\t\t\t\"data-complete\": Number(step) <= safeCurrent ? \"true\" : void 0\n\t\t}, step))\n\t});\n}\n//#endregion\nexport { TRStepsItem, TRStepsProgress, TRStepsRoot };\n\n//# sourceMappingURL=steps.js.map","import { TRStepsItem, TRStepsProgress, TRStepsRoot } from \"./steps.js\";\n//#region src/components/steps/index.tsx\nconst TRSteps = {\n\tItem: TRStepsItem,\n\tProgress: TRStepsProgress,\n\tRoot: TRStepsRoot\n};\n//#endregion\nexport { TRSteps, TRStepsItem, TRStepsProgress, TRStepsRoot };\n\n//# sourceMappingURL=index.js.map","import { TRSteps } from '@tinyrack/ui/components/steps';\nimport { TRText } from '@tinyrack/ui/components/text';\n\ntype AuthStepsProps = {\n /** Ordered step labels. The current one is announced to assistive tech. */\n steps: string[];\n /** Zero-based index of the step being shown. */\n current: number;\n /** e.g. \"Step {{current}} of {{total}}\" — already interpolated by the caller. */\n progressLabel: string;\n};\n\nexport function AuthSteps({ steps, current, progressLabel }: AuthStepsProps) {\n return (\n <div className=\"flex w-full flex-col gap-tinyrack-xs\">\n <div className=\"flex items-baseline justify-between gap-tinyrack-sm\">\n <TRText color=\"muted\" variant=\"label\">\n {progressLabel}\n </TRText>\n <TRText color=\"muted\" variant=\"caption\">\n {steps[current]}\n </TRText>\n </div>\n <TRSteps.Progress\n aria-label={progressLabel}\n current={current + 1}\n total={steps.length}\n />\n </div>\n );\n}\n","import { useQueryClient } from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRAlert } from '@tinyrack/ui/components/alert';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRSpinner } from '@tinyrack/ui/components/spinner';\nimport {\n CircleAlertIcon,\n CircleXIcon,\n InfoIcon,\n ShieldCheckIcon,\n} from 'lucide-react';\nimport { useCallback, useEffect, 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 { AuthSteps } from '#frontend/components/auth/auth-steps.tsx';\nimport { QrStep } from '#frontend/components/totp/qr-step.tsx';\nimport { RecoveryCodesStep } from '#frontend/components/totp/recovery-codes-step.tsx';\nimport { VerifyStep } from '#frontend/components/totp/verify-step.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport { useTotpSetup } from '#frontend/features/totp/use-totp-setup.ts';\nimport { IssuaryError } from '#frontend/libs/error.ts';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n isOAuthFlow,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\nimport type {\n TotpConfirmResponse,\n TotpSetupVerifyResponse,\n} from '#frontend/queries/totp.ts';\n\n/** Error codes from backend */\nconst ERROR_CODES = {\n TOTP_ALREADY_ENABLED: 'TOTP_ALREADY_ENABLED',\n TOTP_NOT_SETUP: 'TOTP_NOT_SETUP',\n INVALID_TOTP_CODE: 'INVALID_TOTP_CODE',\n UNAUTHORIZED: 'UNAUTHORIZED',\n SECOND_FACTOR_SESSION_EXPIRED: 'SECOND_FACTOR_SESSION_EXPIRED',\n} as const;\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/setup/totp/')({\n component: SetupTotp,\n validateSearch: SearchSchema,\n});\n\ntype ErrorType = 'generic' | 'already_enabled' | 'session_expired';\n\n/** Auto redirect countdown seconds */\nconst REDIRECT_COUNTDOWN_SECONDS = 5;\n\nfunction SetupTotp() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n\n const [errorType, setErrorType] = useState<ErrorType>('generic');\n const [redirectCountdown, setRedirectCountdown] = useState(\n REDIRECT_COUNTDOWN_SECONDS,\n );\n\n const redirectToLogin = useCallback(() => {\n router.navigate({\n to: '/login',\n search: extractOAuthParams(search),\n });\n }, [router, search]);\n\n const redirectToProfile = useCallback(() => {\n router.navigate({ to: '/profile' });\n }, [router]);\n\n const handleSetupError = useCallback((error: Error) => {\n if (error instanceof IssuaryError) {\n switch (error.code) {\n case ERROR_CODES.TOTP_ALREADY_ENABLED:\n setErrorType('already_enabled');\n break;\n case ERROR_CODES.UNAUTHORIZED:\n case ERROR_CODES.SECOND_FACTOR_SESSION_EXPIRED:\n setErrorType('session_expired');\n setRedirectCountdown(REDIRECT_COUNTDOWN_SECONDS);\n break;\n default:\n setErrorType('generic');\n }\n } else {\n setErrorType('generic');\n }\n }, []);\n\n const handleVerifySuccess = useCallback(\n async (_data: TotpSetupVerifyResponse) => {\n // Recovery codes step is handled by useTotpSetup hook\n // (step transitions to 'recovery' automatically)\n // Session update happens after confirm, not here\n await tick();\n },\n [],\n );\n\n const handleConfirmSuccess = useCallback(\n async (data: TotpConfirmResponse) => {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: data.user,\n });\n await tick();\n // Navigate after successful confirm\n if (isOAuthFlow(search)) {\n window.location.href = buildAuthenticatedAuthorizeUrl(search);\n } else {\n router.navigate({ to: '/profile' });\n }\n },\n [queryClient, router, search],\n );\n\n const {\n step,\n setupData,\n recoveryCodes,\n isSetupPending,\n isVerifyPending,\n isConfirmPending,\n startSetup,\n verify,\n goToQr,\n goToVerify,\n confirmRecoveryCodes,\n } = useTotpSetup({\n autoStart: true,\n onSetupError: handleSetupError,\n onVerifySuccess: handleVerifySuccess,\n onConfirmSuccess: handleConfirmSuccess,\n onVerifyError: (error) => {\n if (error instanceof IssuaryError) {\n switch (error.code) {\n case ERROR_CODES.TOTP_ALREADY_ENABLED:\n redirectToProfile();\n break;\n case ERROR_CODES.UNAUTHORIZED:\n case ERROR_CODES.SECOND_FACTOR_SESSION_EXPIRED:\n setErrorType('session_expired');\n setRedirectCountdown(REDIRECT_COUNTDOWN_SECONDS);\n break;\n case ERROR_CODES.TOTP_NOT_SETUP:\n startSetup();\n break;\n }\n }\n },\n });\n\n // Auto redirect when session expires\n useEffect(() => {\n if (errorType !== 'session_expired' || step !== 'error') return;\n\n const timer = setInterval(() => {\n setRedirectCountdown((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n redirectToLogin();\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }, [errorType, step, redirectToLogin]);\n\n const handleVerify = useCallback(\n async (code: string) => {\n await verify(code);\n },\n [verify],\n );\n\n const isRecoveryStep = step === 'recovery' && recoveryCodes.length > 0;\n const isQrStep = step === 'qr' && setupData !== null;\n // `loading` and `error` are not points on the journey, so the wizard's\n // progress is hidden there rather than showing a misleading step.\n const isWizardStep = step !== 'loading' && step !== 'error';\n\n let wizardIndex = 1;\n if (isRecoveryStep) {\n wizardIndex = 2;\n } else if (isQrStep) {\n wizardIndex = 0;\n }\n\n let title = t('setupTotp.title');\n let subtitle: string | undefined = t('setupTotp.subtitle');\n if (isRecoveryStep) {\n title = t('setupTotp.recoveryCodes.title');\n } else if (isWizardStep && !isQrStep) {\n title = t('setupTotp.verifyTitle');\n subtitle = t('setupTotp.verifySubtitle');\n }\n\n // Where the original screens offered a way out: the wizard's later steps\n // deliberately do not, so nobody leaves before saving their codes.\n const showFooter = step === 'error' || isQrStep;\n\n let body: React.ReactNode;\n if (step === 'loading') {\n body = (\n <div\n className=\"flex justify-center py-tinyrack-xl\"\n data-testid=\"totp-setup-loading\"\n >\n <TRSpinner uiSize=\"lg\" variant=\"primary\" />\n </div>\n );\n } else if (step === 'error' && errorType === 'session_expired') {\n body = (\n <TRAlert.Root data-testid=\"totp-setup-session-expired\" variant=\"warning\">\n <CircleAlertIcon aria-hidden className=\"size-tinyrack-xl\" />\n <TRAlert.Title>{t('setupTotp.error.expired')}</TRAlert.Title>\n <TRAlert.Description>\n {t('setupTotp.redirecting', {\n seconds: redirectCountdown,\n })}\n </TRAlert.Description>\n <TRAlert.Actions>\n <TRButton\n appearance=\"ghost\"\n intent=\"neutral\"\n onClick={redirectToLogin}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('setupTotp.redirectNow')}\n </TRButton>\n </TRAlert.Actions>\n </TRAlert.Root>\n );\n } else if (step === 'error' && errorType === 'already_enabled') {\n body = (\n <>\n <Alert icon={InfoIcon} type=\"info\">\n {t('setupTotp.error.alreadyEnabled')}\n </Alert>\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n onClick={redirectToProfile}\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('setupTotp.goToProfile')}\n </TRButton>\n </>\n );\n } else if (step === 'error') {\n body = (\n <>\n <Alert icon={CircleXIcon} type=\"error\">\n {t('setupTotp.error.setupFailed')}\n </Alert>\n <TRButton\n className=\"w-full\"\n disabled={isSetupPending}\n intent=\"primary\"\n loading={isSetupPending}\n onClick={startSetup}\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('setupTotp.retry')}\n </TRButton>\n </>\n );\n } else if (isRecoveryStep) {\n body = (\n <RecoveryCodesStep\n isLoading={isConfirmPending}\n onConfirm={confirmRecoveryCodes}\n recoveryCodes={recoveryCodes}\n />\n );\n } else if (isQrStep && setupData) {\n body = (\n <>\n <Alert icon={ShieldCheckIcon} type=\"info\">\n {t('setupTotp.required')}\n </Alert>\n <QrStep onNext={goToVerify} setupData={setupData} />\n </>\n );\n } else {\n body = (\n <VerifyStep\n isPending={isVerifyPending}\n onBack={goToQr}\n onSubmit={handleVerify}\n />\n );\n }\n\n /*\n One shell, one header. The seven `AuthLayout` blocks this replaced meant\n the header remounted on every transition, so the title flashed and the\n progress had nowhere to live.\n */\n return (\n <AuthLayout width={isRecoveryStep ? 'wide' : 'form'}>\n <AuthPageHeader\n eyebrow={\n isWizardStep ? (\n <AuthSteps\n current={wizardIndex}\n progressLabel={t('setupTotp.stepProgress', {\n current: wizardIndex + 1,\n total: 3,\n })}\n steps={[\n t('setupTotp.steps.scan'),\n t('setupTotp.steps.verify'),\n t('setupTotp.steps.saveCodes'),\n ]}\n />\n ) : undefined\n }\n subtitle={subtitle}\n title={title}\n />\n\n {/* Keyed so each step animates in rather than swapping in place. */}\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural animated step host; each step owns visible typography. */}\n <div className=\"auth-enter flex flex-col gap-tinyrack-lg\" key={step}>\n {body}\n </div>\n\n {showFooter && (\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('setupTotp.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n )}\n </AuthLayout>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{i as e,r as t}from"./config-C18-l7z7.js";import{t as n}from"./mutationOptions-Cv_vJkJn.js";var r=n({mutationFn:async()=>e(await t.api.user.totp.setup.$post())}),i=n({mutationFn:async n=>e(await t.api.user.totp.verify.$post({json:n}))}),a=n({mutationFn:async()=>e(await t.api.user.totp.confirm.$post({json:{}}))}),o=n({mutationFn:async n=>e(await t.api.user.totp.$delete({json:n}))}),s=n({mutationFn:async n=>e(await t.api.user.totp.recovery.regenerate.$post({json:n}))}),c=n({mutationFn:async n=>e(await t.api.auth.totp.verify.$post({json:n}))}),l=n({mutationFn:async n=>e(await t.api.auth.totp.recovery.verify.$post({json:n}))});export{l as a,r as i,o as n,c as o,s as r,i as s,a as t};
2
- //# sourceMappingURL=totp-BhElob6P.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"totp-BhElob6P.js","names":[],"sources":["../../../frontend/src/queries/totp.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 TotpSetupResponse = InferResponseType<\n (typeof client.api.user.totp.setup)['$post'],\n 200\n>;\n\nexport type TotpSetupVerifyResponse = InferResponseType<\n (typeof client.api.user.totp.verify)['$post'],\n 200\n>;\n\nexport type TotpConfirmResponse = InferResponseType<\n (typeof client.api.user.totp.confirm)['$post'],\n 200\n>;\n\nexport type RegenerateTotpRecoveryCodesResponse = InferResponseType<\n (typeof client.api.user.totp.recovery.regenerate)['$post'],\n 200\n>;\n\nexport type TotpLoginVerifyResponse = InferResponseType<\n (typeof client.api.auth.totp.verify)['$post'],\n 200\n>;\n\n/**\n * Start TOTP setup - generates secret and QR code\n */\nexport const startTotpSetupMutationOptions = mutationOptions({\n mutationFn: async () => {\n const res = await client.api.user.totp.setup.$post();\n return jsonOk(res);\n },\n});\n\n/**\n * Verify TOTP code during setup (returns recovery codes)\n */\nexport type VerifyTotpParams = InferRequestType<\n (typeof client.api.user.totp.verify)['$post']\n>['json'];\n\nexport const verifyTotpMutationOptions = mutationOptions({\n mutationFn: async (values: VerifyTotpParams) => {\n const res = await client.api.user.totp.verify.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Confirm TOTP setup after user acknowledges recovery\n * codes\n */\nexport const confirmTotpSetupMutationOptions = mutationOptions({\n mutationFn: async () => {\n const res = await client.api.user.totp.confirm.$post({\n json: {},\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Disable TOTP authentication\n */\nexport type DisableTotpParams = InferRequestType<\n (typeof client.api.user.totp)['$delete']\n>['json'];\n\nexport const disableTotpMutationOptions = mutationOptions({\n mutationFn: async (values: DisableTotpParams) => {\n const res = await client.api.user.totp.$delete({\n json: values,\n });\n return jsonOk(res);\n },\n});\n\nexport type RegenerateTotpRecoveryCodesParams = InferRequestType<\n (typeof client.api.user.totp.recovery.regenerate)['$post']\n>['json'];\n\nexport const regenerateTotpRecoveryCodesMutationOptions = mutationOptions({\n mutationFn: async (values: RegenerateTotpRecoveryCodesParams) => {\n const res = await client.api.user.totp.recovery.regenerate.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Verify TOTP code during login (complete 2FA login)\n */\nexport type VerifyTotpLoginParams = InferRequestType<\n (typeof client.api.auth.totp.verify)['$post']\n>['json'];\n\nexport const verifyTotpLoginMutationOptions = mutationOptions({\n mutationFn: async (values: VerifyTotpLoginParams) => {\n const res = await client.api.auth.totp.verify.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Verify recovery code during login (complete 2FA login)\n */\nexport type VerifyRecoveryCodeParams = InferRequestType<\n (typeof client.api.auth.totp.recovery.verify)['$post']\n>['json'];\n\nexport type VerifyRecoveryCodeResponse = InferResponseType<\n (typeof client.api.auth.totp.recovery.verify)['$post'],\n 200\n>;\n\nexport const verifyRecoveryCodeMutationOptions = mutationOptions({\n mutationFn: async (values: VerifyRecoveryCodeParams) => {\n const res = await client.api.auth.totp.recovery.verify.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n"],"mappings":"kGAgCA,IAAa,EAAgC,EAAgB,CAC3D,WAAY,SAEH,EAAO,MADI,EAAO,IAAI,KAAK,KAAK,MAAM,MAAM,CAClC,CAErB,CAAC,EASY,EAA4B,EAAgB,CACvD,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,OAAO,MAAM,CAClD,KAAM,CACR,CAAC,CACgB,CAErB,CAAC,EAMY,EAAkC,EAAgB,CAC7D,WAAY,SAIH,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,QAAQ,MAAM,CACnD,KAAM,CAAC,CACT,CAAC,CACgB,CAErB,CAAC,EASY,EAA6B,EAAgB,CACxD,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,QAAQ,CAC7C,KAAM,CACR,CAAC,CACgB,CAErB,CAAC,EAMY,EAA6C,EAAgB,CACxE,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,SAAS,WAAW,MAAM,CAC/D,KAAM,CACR,CAAC,CACgB,CAErB,CAAC,EASY,EAAiC,EAAgB,CAC5D,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,OAAO,MAAM,CAClD,KAAM,CACR,CAAC,CACgB,CAErB,CAAC,EAcY,EAAoC,EAAgB,CAC/D,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,KAAK,SAAS,OAAO,MAAM,CAC3D,KAAM,CACR,CAAC,CACgB,CAErB,CAAC"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,n as i,r as a,s as o}from"./createLucideIcon-D-yizrWN.js";import{An as s,Ar as c,In as l}from"./config-C18-l7z7.js";import{t as u}from"./useMutation-DqIIIiBW.js";import{c as d,o as f}from"./zod-Dszyrytb.js";import{E as p,F as m,H as h,L as g,y as _,z as v}from"./index-lTEyHSus.js";import{t as y}from"./auth-page-header-ChaCNNrn.js";import{t as b}from"./alert-D3aaK-_3.js";import{t as x}from"./auth-layout-BdRRr0vT.js";import{t as S}from"./form-sJw-V9wb.js";import{t as C}from"./promise-OpBtq8tG.js";import{n as w,t as T}from"./auth-footer-Du6S-oDG.js";import{r as E,t as D}from"./standard-schema-C50nwAaQ.js";import{o as O}from"./totp-BhElob6P.js";import{t as k}from"./pin-input-DhsRO4Ei.js";import{t as A}from"./labeled-separator-DdkyYDWH.js";var j=n(t()),M=e(),N={SECOND_FACTOR_SESSION_EXPIRED:`SECOND_FACTOR_SESSION_EXPIRED`,INVALID_TOTP_CODE:`INVALID_TOTP_CODE`,TOTP_NOT_ENABLED:`TOTP_NOT_ENABLED`},P=5;function F(){let{t:e}=r(),t=l(),n=c(),F=_.useSearch(),I=(0,j.useRef)(null),[L,R]=(0,j.useState)(!1),[z,B]=(0,j.useState)(P),V=(0,j.useMemo)(()=>f({code:d().length(6,e(`validation.totp.length`)).regex(/^\d{6}$/,e(`validation.totp.digits`))}),[e]),H=u({...O,onSuccess:async e=>{n.setQueryData(p.queryKey,{user:e.user}),await C(),v(F)?window.location.href=m(F):t.navigate({to:`/profile`})},onSettled:()=>{n.invalidateQueries({queryKey:p.queryKey})}}),{setValue:U,setError:W,handleSubmit:G,watch:K,formState:{errors:q}}=E({defaultValues:{code:``},resolver:D(V)}),J=K(`code`),Y=(0,j.useCallback)(()=>{t.navigate({to:`/login`,search:g(F)})},[t,F]);(0,j.useEffect)(()=>{if(!L)return;let e=setInterval(()=>{B(t=>t<=1?(clearInterval(e),Y(),0):t-1)},1e3);return()=>clearInterval(e)},[L,Y]);let X=async t=>{try{await H.mutateAsync(t)}catch(t){if(t instanceof a)switch(t.code){case N.SECOND_FACTOR_SESSION_EXPIRED:R(!0),B(P);return;case N.TOTP_NOT_ENABLED:Y();return;case N.INVALID_TOTP_CODE:W(`code`,{type:`manual`,message:e(`verifyTotp.error.invalid`)}),U(`code`,``),I.current?.focus();return}W(`code`,{type:`manual`,message:e(`verifyTotp.error.invalid`)}),U(`code`,``),I.current?.focus()}};return(0,M.jsxs)(x,{children:[(0,M.jsx)(y,{subtitle:e(`verifyTotp.subtitle`),title:e(`verifyTotp.title`)}),L&&(0,M.jsx)(b,{"data-testid":`totp-verify-session-expired`,icon:h,type:`warning`,children:(0,M.jsxs)(`div`,{className:`flex flex-col items-start gap-tinyrack-3xs`,children:[(0,M.jsx)(i,{as:`span`,variant:`bodySm`,children:e(`verifyTotp.error.expired`)}),(0,M.jsx)(i,{as:`span`,color:`muted`,variant:`caption`,children:e(`verifyTotp.redirecting`,{seconds:z})}),(0,M.jsx)(o,{appearance:`ghost`,intent:`neutral`,onClick:Y,type:`button`,uiSize:`sm`,children:e(`verifyTotp.redirectNow`)})]})}),(0,M.jsxs)(S,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:G(X),children:[(0,M.jsx)(k,{autoFocus:!0,disabled:L,error:q.code,length:6,onChange:e=>U(`code`,e),onComplete:()=>G(X)(),ref:I,value:J}),L?(0,M.jsx)(o,{className:`w-full`,disabled:!0,intent:`primary`,type:`button`,uiSize:`lg`,children:e(`verifyTotp.submit`)}):(0,M.jsx)(o,{className:`w-full`,intent:`primary`,loading:H.isPending,loadingLabel:e(`verifyTotp.submitting`),type:`submit`,uiSize:`lg`,children:e(`verifyTotp.submit`)})]}),(0,M.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-md`,children:[(0,M.jsx)(A,{label:e(`common.or`)}),(0,M.jsx)(o,{appearance:`ghost`,className:`w-full`,"data-testid":`totp-verify-recovery-link`,intent:`neutral`,onClick:()=>t.navigate({to:`/verify/totp/recovery`,search:g(F)}),type:`button`,uiSize:`lg`,children:e(`verifyTotp.useRecoveryCode`)})]}),(0,M.jsx)(T,{children:(0,M.jsx)(w,{link:(0,M.jsx)(s,{search:g(F),to:`/login`,children:e(`verifyTotp.backToLogin`)})})})]})}export{F as component};
2
- //# sourceMappingURL=totp-C1ba10Is.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"totp-C1ba10Is.js","names":["standardSchemaResolver","useMutation","useQueryClient","Link","useRouter","TRButton","TRForm","TRText","CircleAlertIcon","useCallback","useEffect","useMemo","useRef","useState","useForm","useTranslation","z","AuthFooter","AuthFooterLink","AuthPageHeader","Alert","LabeledSeparator","PinInput","AuthLayout","IssuaryError","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","tick","getSessionQueryOptions","verifyTotpLoginMutationOptions","ERROR_CODES","SECOND_FACTOR_SESSION_EXPIRED","INVALID_TOTP_CODE","TOTP_NOT_ENABLED","const","Route","VerifyTotpFormValues","code","REDIRECT_COUNTDOWN_SECONDS","VerifyTotp","t","router","queryClient","search","useSearch","pinInputRef","PinInputRef","sessionExpired","setSessionExpired","redirectCountdown","setRedirectCountdown","verifySchema","object","string","length","regex","verifyMutation","onSuccess","data","setQueryData","queryKey","user","window","location","href","navigate","to","onSettled","invalidateQueries","setValue","setError","handleSubmit","watch","formState","errors","defaultValues","resolver","codeValue","redirectToLogin","timer","setInterval","prev","clearInterval","onSubmit","values","mutateAsync","error","type","message","current","focus","seconds","value","isPending","component"],"sources":["../../../frontend/src/routes/verify/totp/index.tsx?tsr-split=component"],"sourcesContent":["import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { CircleAlertIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\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 { LabeledSeparator } from '#frontend/components/ui/labeled-separator.tsx';\nimport {\n PinInput,\n type PinInputRef,\n} from '#frontend/components/ui/pin-input.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport { IssuaryError } from '#frontend/libs/error.ts';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n isOAuthFlow,\n OAuthSearchSchema,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\nimport { verifyTotpLoginMutationOptions } from '#frontend/queries/totp.ts';\n\n/** Error codes from backend */\nconst ERROR_CODES = {\n SECOND_FACTOR_SESSION_EXPIRED: 'SECOND_FACTOR_SESSION_EXPIRED',\n INVALID_TOTP_CODE: 'INVALID_TOTP_CODE',\n TOTP_NOT_ENABLED: 'TOTP_NOT_ENABLED',\n} as const;\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/verify/totp/')({\n component: VerifyTotp,\n validateSearch: SearchSchema,\n});\n\ntype VerifyTotpFormValues = {\n code: string;\n};\n\n/** Auto redirect countdown seconds */\nconst REDIRECT_COUNTDOWN_SECONDS = 5;\n\nfunction VerifyTotp() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const pinInputRef = useRef<PinInputRef>(null);\n\n const [sessionExpired, setSessionExpired] = useState(false);\n const [redirectCountdown, setRedirectCountdown] = useState(\n REDIRECT_COUNTDOWN_SECONDS,\n );\n\n const verifySchema = useMemo(\n () =>\n z.object({\n code: z\n .string()\n .length(6, t('validation.totp.length'))\n .regex(/^\\d{6}$/, t('validation.totp.digits')),\n }),\n [t],\n );\n\n const verifyMutation = useMutation({\n ...verifyTotpLoginMutationOptions,\n onSuccess: async (data) => {\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 onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const {\n setValue,\n setError,\n handleSubmit,\n watch,\n formState: { errors },\n } = useForm<VerifyTotpFormValues>({\n defaultValues: {\n code: '',\n },\n resolver: standardSchemaResolver(verifySchema),\n });\n\n const codeValue = watch('code');\n\n // Auto redirect when session expires\n const redirectToLogin = useCallback(() => {\n router.navigate({\n to: '/login',\n search: extractOAuthParams(search),\n });\n }, [router, search]);\n\n useEffect(() => {\n if (!sessionExpired) return;\n\n const timer = setInterval(() => {\n setRedirectCountdown((prev) => {\n if (prev <= 1) {\n clearInterval(timer);\n redirectToLogin();\n return 0;\n }\n return prev - 1;\n });\n }, 1000);\n\n return () => clearInterval(timer);\n }, [sessionExpired, redirectToLogin]);\n\n const onSubmit = async (values: VerifyTotpFormValues) => {\n try {\n await verifyMutation.mutateAsync(values);\n } catch (error) {\n if (error instanceof IssuaryError) {\n switch (error.code) {\n case ERROR_CODES.SECOND_FACTOR_SESSION_EXPIRED:\n // Session expired - show alert and start auto redirect\n setSessionExpired(true);\n setRedirectCountdown(REDIRECT_COUNTDOWN_SECONDS);\n return;\n\n case ERROR_CODES.TOTP_NOT_ENABLED:\n // TOTP not enabled - redirect to login\n redirectToLogin();\n return;\n\n case ERROR_CODES.INVALID_TOTP_CODE:\n // Invalid code - show specific error and clear input\n setError('code', {\n type: 'manual',\n message: t('verifyTotp.error.invalid'),\n });\n setValue('code', '');\n pinInputRef.current?.focus();\n return;\n }\n }\n\n // Generic error fallback\n setError('code', {\n type: 'manual',\n message: t('verifyTotp.error.invalid'),\n });\n setValue('code', '');\n pinInputRef.current?.focus();\n }\n };\n\n return (\n <AuthLayout>\n <AuthPageHeader\n subtitle={t('verifyTotp.subtitle')}\n title={t('verifyTotp.title')}\n />\n\n {sessionExpired && (\n <Alert\n data-testid=\"totp-verify-session-expired\"\n icon={CircleAlertIcon}\n type=\"warning\"\n >\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural alert content; visible copy uses TRText and TRButton. */}\n <div className=\"flex flex-col items-start gap-tinyrack-3xs\">\n <TRText as=\"span\" variant=\"bodySm\">\n {t('verifyTotp.error.expired')}\n </TRText>\n <TRText as=\"span\" color=\"muted\" variant=\"caption\">\n {t('verifyTotp.redirecting', { seconds: redirectCountdown })}\n </TRText>\n <TRButton\n appearance=\"ghost\"\n intent=\"neutral\"\n onClick={redirectToLogin}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('verifyTotp.redirectNow')}\n </TRButton>\n </div>\n </Alert>\n )}\n\n <TRForm\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <PinInput\n autoFocus\n disabled={sessionExpired}\n error={errors.code}\n length={6}\n onChange={(value) => setValue('code', value)}\n onComplete={() => handleSubmit(onSubmit)()}\n ref={pinInputRef}\n value={codeValue}\n />\n\n {sessionExpired ? (\n <TRButton\n className=\"w-full\"\n disabled\n intent=\"primary\"\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('verifyTotp.submit')}\n </TRButton>\n ) : (\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={verifyMutation.isPending}\n loadingLabel={t('verifyTotp.submitting')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('verifyTotp.submit')}\n </TRButton>\n )}\n </TRForm>\n\n {/*\n The recovery code is the way out when the authenticator is gone, so it\n sits below the rule rather than in the footer with the navigation.\n */}\n <div className=\"flex flex-col gap-tinyrack-md\">\n <LabeledSeparator label={t('common.or')} />\n <TRButton\n appearance=\"ghost\"\n className=\"w-full\"\n data-testid=\"totp-verify-recovery-link\"\n intent=\"neutral\"\n onClick={() =>\n router.navigate({\n to: '/verify/totp/recovery',\n search: extractOAuthParams(search),\n })\n }\n type=\"button\"\n uiSize=\"lg\"\n >\n {t('verifyTotp.useRecoveryCode')}\n </TRButton>\n </div>\n\n <AuthFooter>\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('verifyTotp.backToLogin')}\n </Link>\n }\n />\n </AuthFooter>\n </AuthLayout>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./createLucideIcon-D-yizrWN.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
2
- //# sourceMappingURL=trash-2-B3NVE8pR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trash-2-B3NVE8pR.js","names":[],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/trash-2.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: \"M10 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAgBA,IAAM,EAAS,EAAiB,UAAW,CANzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,2CAA4C,IAAK,QAAS,CAAC,EACzE,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,yCAA0C,IAAK,QAAS,CAAC,CAE9B,CAAU"}
@@ -1,2 +0,0 @@
1
- import{t as e}from"./createLucideIcon-D-yizrWN.js";var t=e(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);export{t};
2
- //# sourceMappingURL=triangle-alert-DATO9o3k.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"triangle-alert-DATO9o3k.js","names":[],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/triangle-alert.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 [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAoBA,IAAM,EAAgB,EAAiB,iBAAkB,CAVvD,CACE,OACA,CACE,EAAG,2EACH,IAAK,QACP,CACF,EACA,CAAC,OAAQ,CAAE,EAAG,UAAW,IAAK,QAAS,CAAC,EACxC,CAAC,OAAQ,CAAE,EAAG,aAAc,IAAK,QAAS,CAAC,CAEY,CAAU"}
@@ -1,2 +0,0 @@
1
- import{X as e,Z as t,et as n,i as r,n as i,s as a,t as o}from"./createLucideIcon-D-yizrWN.js";import{Q as s,X as c,Z as l,c as u}from"./shell-header-bar-CdOEWmCT.js";import{_ as d}from"./admin-shell-B91U4-Ro.js";import{t as f}from"./checkbox-DTPGfvmq.js";import{t as p}from"./form-sJw-V9wb.js";import{t as m}from"./input-QvBxPgy5.js";import{t as h}from"./table-Dl89o43x.js";var g=o(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),_=o(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),v=e();function y({title:e,total:t,query:n,onQueryChange:o,onSearch:s,onCreate:c,children:l}){let{t:u}=r();return(0,v.jsxs)(`div`,{className:`flex shrink-0 flex-col bg-tinyrack-surface`,"data-testid":`admin-list-toolbar`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-md py-tinyrack-md`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-tinyrack-sm`,children:[(0,v.jsx)(i,{as:`h1`,variant:`headingMd`,weight:`heading`,children:e}),(0,v.jsx)(i,{color:`muted`,variant:`caption`,children:u(`admin.table.total`,{count:t})})]}),c?(0,v.jsx)(a,{intent:`primary`,onClick:c,type:`button`,uiSize:`sm`,children:u(`admin.table.create`)}):null]}),(0,v.jsxs)(p,{className:`flex flex-wrap items-center gap-tinyrack-sm py-tinyrack-sm`,onSubmit:e=>{e.preventDefault(),s()},children:[(0,v.jsxs)(m.Group,{className:`w-full flex-none sm:w-auto sm:min-w-tinyrack-measure-sm sm:flex-1`,children:[(0,v.jsx)(m.Adornment,{children:(0,v.jsx)(d,{"aria-hidden":!0})}),(0,v.jsx)(m,{"aria-label":u(`admin.table.search`),onChange:e=>o(e.target.value),placeholder:u(`admin.table.searchPlaceholder`),uiSize:`sm`,value:n})]}),l,(0,v.jsx)(a,{appearance:`outline`,type:`submit`,uiSize:`sm`,children:u(`admin.table.search`)})]})]})}function b({children:e}){return(0,v.jsx)(`div`,{className:`flex min-h-0 w-full min-w-0 flex-1 flex-col`,"data-layout":`table`,children:e})}function x({children:e,label:t}){return(0,v.jsx)(h.Root,{"aria-label":t,containerClassName:`min-h-0 max-w-full flex-1 overflow-auto`,density:`compact`,layout:`wide`,children:e})}function S({checked:e,indeterminate:t,onChange:n}){let{t:i}=r();return(0,v.jsx)(f.Root,{"aria-label":i(`admin.selection.page`),checked:e,indeterminate:t,onCheckedChange:e=>n(e===!0),uiSize:`md`,children:(0,v.jsx)(f.Indicator,{})})}function C({checked:e,label:t,onChange:n}){return(0,v.jsx)(f.Root,{"aria-label":t,checked:e,onCheckedChange:e=>n(e===!0),uiSize:`md`,children:(0,v.jsx)(f.Indicator,{})})}function w({children:e,header:t=!1,selected:n=!1}){return(0,v.jsx)(t?h.Head:h.Cell,{className:`sticky left-0 z-tinyrack-component-raised w-tinyrack-measure-xs ${n?`admin-sticky-selected`:t?`bg-tinyrack-surface-muted`:`bg-tinyrack-surface`}`,children:e})}function T({children:e,header:t=!1,selected:n=!1}){return(0,v.jsx)(t?h.Head:h.Cell,{className:`sticky left-tinyrack-measure-xs z-tinyrack-component-raised min-w-tinyrack-measure-lg ${n?`admin-sticky-selected`:t?`bg-tinyrack-surface-muted`:`bg-tinyrack-surface`}`,children:e})}function E({children:e,header:t=!1,selected:n=!1}){return(0,v.jsx)(t?h.Head:h.Cell,{className:`sticky right-0 z-tinyrack-component-raised text-right ${n?`admin-sticky-selected`:t?`bg-tinyrack-surface-muted`:`bg-tinyrack-surface`}`,children:e})}function D({label:e,direction:t,onClick:n}){return(0,v.jsxs)(a,{appearance:`ghost`,onClick:n,type:`button`,uiSize:`sm`,children:[e,t?(0,v.jsx)(t===`desc`?g:_,{"aria-hidden":!0,className:`size-tinyrack-md`}):null]})}function O({label:e,value:t,options:n,onChange:r}){return(0,v.jsxs)(u.Root,{onValueChange:e=>{typeof e==`string`&&r(e)},value:t,children:[(0,v.jsxs)(u.Trigger,{"aria-label":e,uiSize:`sm`,children:[(0,v.jsx)(u.Value,{children:n.find(([e])=>e===t)?.[1]??t}),(0,v.jsx)(u.Icon,{children:(0,v.jsx)(l,{"aria-hidden":!0})})]}),(0,v.jsx)(u.Positioner,{children:(0,v.jsx)(u.Popup,{children:(0,v.jsx)(u.List,{children:n.map(([e,t])=>(0,v.jsxs)(u.Item,{value:e,children:[(0,v.jsx)(u.ItemText,{children:t}),(0,v.jsx)(u.ItemIndicator,{children:(0,v.jsx)(s,{"aria-hidden":!0})})]},e))})})})]})}function k({page:e,pageSize:t,total:n,onPageChange:o,onPageSizeChange:s}){let{t:c}=r(),l=Math.max(Math.ceil(n/t),1);return(0,v.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-tinyrack-md py-tinyrack-sm`,children:[(0,v.jsx)(O,{label:c(`admin.table.pageSize`),onChange:e=>s(Number(e)),options:[`20`,`50`,`100`].map(e=>[e,e]),value:String(t)}),(0,v.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,v.jsx)(a,{appearance:`ghost`,disabled:e<=1,onClick:()=>o(e-1),type:`button`,uiSize:`sm`,children:c(`admin.table.previous`)}),(0,v.jsx)(i,{color:`muted`,variant:`caption`,children:c(`admin.table.page`,{page:e,total:l})}),(0,v.jsx)(a,{appearance:`ghost`,disabled:e>=l,onClick:()=>o(e+1),type:`button`,uiSize:`sm`,children:c(`admin.table.next`)})]})]})}function A({selected:e,total:t,filterSelected:n,canExpand:o,onExpand:s,onClear:l,onActivate:u,onDeactivate:d,pending:f}){let{t:p}=r();return(0,v.jsxs)(`div`,{className:`fixed right-tinyrack-lg bottom-tinyrack-lg z-tinyrack-dropdown flex max-w-[calc(100vw-var(--tinyrack-space-lg)*2)] flex-wrap items-center gap-tinyrack-sm rounded-tinyrack-lg bg-tinyrack-surface px-tinyrack-lg py-tinyrack-sm shadow-tinyrack-overlay`,"data-testid":`admin-bulk-bar`,children:[(0,v.jsx)(i,{variant:`bodySm`,weight:`strong`,children:p(`admin.selection.selected`,{count:n?t:e})}),(0,v.jsx)(i,{color:`muted`,variant:`caption`,children:p(n?`admin.selection.filterScope`:`admin.selection.pageScope`)}),o&&!n?(0,v.jsx)(a,{appearance:`ghost`,onClick:s,type:`button`,uiSize:`sm`,children:p(`admin.selection.selectAll`,{count:t})}):null,(0,v.jsx)(a,{disabled:f,onClick:u,type:`button`,uiSize:`sm`,children:p(`admin.selection.activate`)}),(0,v.jsx)(a,{disabled:f,intent:`danger`,onClick:d,type:`button`,uiSize:`sm`,children:p(`admin.selection.deactivate`)}),(0,v.jsx)(a,{appearance:`ghost`,"aria-label":p(`admin.selection.clear`),onClick:l,type:`button`,uiSize:`sm`,children:(0,v.jsx)(c,{"aria-hidden":!0})})]})}var j=n(t(),1);function M(e){let[t,n]=(0,j.useState)(()=>({kind:`ids`,ids:new Set})),r=(0,j.useMemo)(()=>t.kind===`filter`?e.length:e.filter(e=>t.ids.has(e)).length,[e,t]);return{selection:t,selectedOnPage:r,allOnPage:e.length>0&&r===e.length,someOnPage:r>0&&r<e.length,selectedCount:t.kind===`ids`?t.ids.size:void 0,isSelected:e=>t.kind===`filter`||t.ids.has(e),selectFilter:()=>n({kind:`filter`}),clear:()=>n({kind:`ids`,ids:new Set}),togglePage:t=>{n({kind:`ids`,ids:t?new Set(e):new Set})},toggleOne:(t,r)=>{n(n=>{let i=n.kind===`filter`?new Set(e):new Set(n.ids);return r?i.add(t):i.delete(t),{kind:`ids`,ids:i}})}}}export{k as a,D as c,w as d,x as f,y as i,E as l,A as n,C as o,b as p,O as r,S as s,M as t,T as u};
2
- //# sourceMappingURL=use-admin-selection-D2b7jnym.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-admin-selection-D2b7jnym.js","names":["__iconNode"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/arrow-down.mjs","../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/arrow-up.mjs","../../../frontend/src/features/admin/admin-data-table.tsx","../../../frontend/src/features/admin/use-admin-selection.ts"],"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: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"arrow-down\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.mjs.map\n","/**\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 12 7-7 7 7\", key: \"hav0vg\" }],\n [\"path\", { d: \"M12 19V5\", key: \"x0mq9r\" }]\n];\nconst ArrowUp = createLucideIcon(\"arrow-up\", __iconNode);\n\nexport { __iconNode, ArrowUp as default };\n//# sourceMappingURL=arrow-up.mjs.map\n","import { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCheckbox } from '@tinyrack/ui/components/checkbox';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRInput } from '@tinyrack/ui/components/input';\nimport { TRSelect } from '@tinyrack/ui/components/select';\nimport { TRTable } from '@tinyrack/ui/components/table';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n CheckIcon,\n ChevronDownIcon,\n SearchIcon,\n XIcon,\n} from 'lucide-react';\nimport type { FormEvent, ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nexport function AdminListToolbar({\n title,\n total,\n query,\n onQueryChange,\n onSearch,\n onCreate,\n children,\n}: {\n title: string;\n total: number;\n query: string;\n onQueryChange: (value: string) => void;\n onSearch: () => void;\n onCreate?: (() => void) | undefined;\n children?: ReactNode;\n}) {\n const { t } = useTranslation();\n const submit = (event: FormEvent) => {\n event.preventDefault();\n onSearch();\n };\n return (\n // tinyrack-check-ignore-next-line components/no-native-text -- Structural list toolbar; visible descendants use design-system components.\n <div\n className=\"flex shrink-0 flex-col bg-tinyrack-surface\"\n data-testid=\"admin-list-toolbar\"\n >\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural toolbar row; visible descendants use design-system typography. */}\n <div className=\"flex items-center justify-between gap-tinyrack-md py-tinyrack-md\">\n <div className=\"flex min-w-0 items-baseline gap-tinyrack-sm\">\n <TRText as=\"h1\" variant=\"headingMd\" weight=\"heading\">\n {title}\n </TRText>\n <TRText color=\"muted\" variant=\"caption\">\n {t('admin.table.total', { count: total })}\n </TRText>\n </div>\n {onCreate ? (\n <TRButton\n intent=\"primary\"\n onClick={onCreate}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.table.create')}\n </TRButton>\n ) : null}\n </div>\n <TRForm\n className=\"flex flex-wrap items-center gap-tinyrack-sm py-tinyrack-sm\"\n onSubmit={submit}\n >\n <TRInput.Group className=\"w-full flex-none sm:w-auto sm:min-w-tinyrack-measure-sm sm:flex-1\">\n <TRInput.Adornment>\n <SearchIcon aria-hidden />\n </TRInput.Adornment>\n <TRInput\n aria-label={t('admin.table.search')}\n onChange={(event) => onQueryChange(event.target.value)}\n placeholder={t('admin.table.searchPlaceholder')}\n uiSize=\"sm\"\n value={query}\n />\n </TRInput.Group>\n {children}\n <TRButton appearance=\"outline\" type=\"submit\" uiSize=\"sm\">\n {t('admin.table.search')}\n </TRButton>\n </TRForm>\n </div>\n );\n}\n\nexport function AdminTableFrame({ children }: { children: ReactNode }) {\n return (\n // tinyrack-check-ignore-next-line components/no-native-text -- Structural table frame; its caller owns descendant typography.\n <div\n className=\"flex min-h-0 w-full min-w-0 flex-1 flex-col\"\n data-layout=\"table\"\n >\n {children}\n </div>\n );\n}\n\nexport function AdminTable({\n children,\n label,\n}: {\n children: ReactNode;\n label: string;\n}) {\n return (\n <TRTable.Root\n aria-label={label}\n containerClassName=\"min-h-0 max-w-full flex-1 overflow-auto\"\n density=\"compact\"\n layout=\"wide\"\n >\n {children}\n </TRTable.Root>\n );\n}\n\nexport function AdminSelectAll({\n checked,\n indeterminate,\n onChange,\n}: {\n checked: boolean;\n indeterminate: boolean;\n onChange: (checked: boolean) => void;\n}) {\n const { t } = useTranslation();\n return (\n <TRCheckbox.Root\n aria-label={t('admin.selection.page')}\n checked={checked}\n indeterminate={indeterminate}\n onCheckedChange={(value) => onChange(value === true)}\n uiSize=\"md\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n );\n}\n\nexport function AdminRowCheckbox({\n checked,\n label,\n onChange,\n}: {\n checked: boolean;\n label: string;\n onChange: (checked: boolean) => void;\n}) {\n return (\n <TRCheckbox.Root\n aria-label={label}\n checked={checked}\n onCheckedChange={(value) => onChange(value === true)}\n uiSize=\"md\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n );\n}\n\nexport function AdminStickySelectCell({\n children,\n header = false,\n selected = false,\n}: {\n children: ReactNode;\n header?: boolean;\n selected?: boolean;\n}) {\n const Component = header ? TRTable.Head : TRTable.Cell;\n return (\n <Component\n className={`sticky left-0 z-tinyrack-component-raised w-tinyrack-measure-xs ${selected ? 'admin-sticky-selected' : header ? 'bg-tinyrack-surface-muted' : 'bg-tinyrack-surface'}`}\n >\n {children}\n </Component>\n );\n}\n\nexport function AdminStickyIdentityCell({\n children,\n header = false,\n selected = false,\n}: {\n children: ReactNode;\n header?: boolean;\n selected?: boolean;\n}) {\n const Component = header ? TRTable.Head : TRTable.Cell;\n return (\n <Component\n className={`sticky left-tinyrack-measure-xs z-tinyrack-component-raised min-w-tinyrack-measure-lg ${selected ? 'admin-sticky-selected' : header ? 'bg-tinyrack-surface-muted' : 'bg-tinyrack-surface'}`}\n >\n {children}\n </Component>\n );\n}\n\nexport function AdminStickyActionCell({\n children,\n header = false,\n selected = false,\n}: {\n children: ReactNode;\n header?: boolean;\n selected?: boolean;\n}) {\n const Component = header ? TRTable.Head : TRTable.Cell;\n return (\n <Component\n className={`sticky right-0 z-tinyrack-component-raised text-right ${selected ? 'admin-sticky-selected' : header ? 'bg-tinyrack-surface-muted' : 'bg-tinyrack-surface'}`}\n >\n {children}\n </Component>\n );\n}\n\nexport function AdminSortButton({\n label,\n direction,\n onClick,\n}: {\n label: string;\n direction?: 'asc' | 'desc' | undefined;\n onClick: () => void;\n}) {\n const Icon = direction === 'desc' ? ArrowDownIcon : ArrowUpIcon;\n return (\n <TRButton appearance=\"ghost\" onClick={onClick} type=\"button\" uiSize=\"sm\">\n {label}\n {direction ? <Icon aria-hidden className=\"size-tinyrack-md\" /> : null}\n </TRButton>\n );\n}\n\nexport function AdminFilterSelect({\n label,\n value,\n options,\n onChange,\n}: {\n label: string;\n value: string;\n options: Array<[string, string]>;\n onChange: (value: string) => void;\n}) {\n return (\n <TRSelect.Root\n onValueChange={(nextValue) => {\n if (typeof nextValue === 'string') onChange(nextValue);\n }}\n value={value}\n >\n <TRSelect.Trigger aria-label={label} uiSize=\"sm\">\n <TRSelect.Value>\n {options.find(([option]) => option === value)?.[1] ?? value}\n </TRSelect.Value>\n <TRSelect.Icon>\n <ChevronDownIcon aria-hidden />\n </TRSelect.Icon>\n </TRSelect.Trigger>\n <TRSelect.Positioner>\n <TRSelect.Popup>\n <TRSelect.List>\n {options.map(([option, text]) => (\n <TRSelect.Item key={option} value={option}>\n <TRSelect.ItemText>{text}</TRSelect.ItemText>\n <TRSelect.ItemIndicator>\n <CheckIcon aria-hidden />\n </TRSelect.ItemIndicator>\n </TRSelect.Item>\n ))}\n </TRSelect.List>\n </TRSelect.Popup>\n </TRSelect.Positioner>\n </TRSelect.Root>\n );\n}\n\nexport function AdminPagination({\n page,\n pageSize,\n total,\n onPageChange,\n onPageSizeChange,\n}: {\n page: number;\n pageSize: number;\n total: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n}) {\n const { t } = useTranslation();\n const lastPage = Math.max(Math.ceil(total / pageSize), 1);\n return (\n <div className=\"flex shrink-0 items-center justify-between gap-tinyrack-md py-tinyrack-sm\">\n <AdminFilterSelect\n label={t('admin.table.pageSize')}\n onChange={(value) => onPageSizeChange(Number(value))}\n options={['20', '50', '100'].map((size) => [size, size])}\n value={String(pageSize)}\n />\n <div className=\"flex items-center gap-tinyrack-sm\">\n <TRButton\n appearance=\"ghost\"\n disabled={page <= 1}\n onClick={() => onPageChange(page - 1)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.table.previous')}\n </TRButton>\n <TRText color=\"muted\" variant=\"caption\">\n {t('admin.table.page', { page, total: lastPage })}\n </TRText>\n <TRButton\n appearance=\"ghost\"\n disabled={page >= lastPage}\n onClick={() => onPageChange(page + 1)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.table.next')}\n </TRButton>\n </div>\n </div>\n );\n}\n\nexport function AdminBulkBar({\n selected,\n total,\n filterSelected,\n canExpand,\n onExpand,\n onClear,\n onActivate,\n onDeactivate,\n pending,\n}: {\n selected: number;\n total: number;\n filterSelected: boolean;\n canExpand: boolean;\n onExpand: () => void;\n onClear: () => void;\n onActivate: () => void;\n onDeactivate: () => void;\n pending: boolean;\n}) {\n const { t } = useTranslation();\n return (\n // tinyrack-check-ignore-next-line components/no-native-text -- Structural bulk-action bar; all visible copy uses design-system components.\n <div\n className=\"fixed right-tinyrack-lg bottom-tinyrack-lg z-tinyrack-dropdown flex max-w-[calc(100vw-var(--tinyrack-space-lg)*2)] flex-wrap items-center gap-tinyrack-sm rounded-tinyrack-lg bg-tinyrack-surface px-tinyrack-lg py-tinyrack-sm shadow-tinyrack-overlay\"\n data-testid=\"admin-bulk-bar\"\n >\n <TRText variant=\"bodySm\" weight=\"strong\">\n {t('admin.selection.selected', {\n count: filterSelected ? total : selected,\n })}\n </TRText>\n <TRText color=\"muted\" variant=\"caption\">\n {t(\n filterSelected\n ? 'admin.selection.filterScope'\n : 'admin.selection.pageScope',\n )}\n </TRText>\n {canExpand && !filterSelected ? (\n <TRButton\n appearance=\"ghost\"\n onClick={onExpand}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.selection.selectAll', { count: total })}\n </TRButton>\n ) : null}\n <TRButton\n disabled={pending}\n onClick={onActivate}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.selection.activate')}\n </TRButton>\n <TRButton\n disabled={pending}\n intent=\"danger\"\n onClick={onDeactivate}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.selection.deactivate')}\n </TRButton>\n <TRButton\n appearance=\"ghost\"\n aria-label={t('admin.selection.clear')}\n onClick={onClear}\n type=\"button\"\n uiSize=\"sm\"\n >\n <XIcon aria-hidden />\n </TRButton>\n </div>\n );\n}\n","import { useMemo, useState } from 'react';\n\ntype ExplicitSelection = { kind: 'ids'; ids: Set<string> };\ntype FilterSelection = { kind: 'filter' };\nexport type AdminSelection = ExplicitSelection | FilterSelection;\n\nexport function useAdminSelection(pageIds: string[]) {\n const [selection, setSelection] = useState<AdminSelection>(() => ({\n kind: 'ids',\n ids: new Set(),\n }));\n\n const selectedOnPage = useMemo(() => {\n if (selection.kind === 'filter') return pageIds.length;\n return pageIds.filter((id) => selection.ids.has(id)).length;\n }, [pageIds, selection]);\n\n const clear = () => setSelection({ kind: 'ids', ids: new Set() });\n\n const togglePage = (checked: boolean) => {\n setSelection({\n kind: 'ids',\n ids: checked ? new Set(pageIds) : new Set(),\n });\n };\n\n const toggleOne = (id: string, checked: boolean) => {\n setSelection((current) => {\n const next =\n current.kind === 'filter' ? new Set(pageIds) : new Set(current.ids);\n if (checked) next.add(id);\n else next.delete(id);\n return { kind: 'ids', ids: next };\n });\n };\n\n return {\n selection,\n selectedOnPage,\n allOnPage: pageIds.length > 0 && selectedOnPage === pageIds.length,\n someOnPage: selectedOnPage > 0 && selectedOnPage < pageIds.length,\n selectedCount: selection.kind === 'ids' ? selection.ids.size : undefined,\n isSelected: (id: string) =>\n selection.kind === 'filter' || selection.ids.has(id),\n selectFilter: () => setSelection({ kind: 'filter' }),\n clear,\n togglePage,\n toggleOne,\n };\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import{C as e,F as t,X as n,Z as r,c as i,et as a,h as o,i as s,l as c,m as l,n as u,s as d,t as f,w as p,x as m}from"./createLucideIcon-D-yizrWN.js";import{$ as h,Ar as g,N as _,On as v,R as y,St as b,at as x,f as S,vt as C,xn as w,xt as T,yn as E,yt as D}from"./config-C18-l7z7.js";import{t as O}from"./useMutation-DqIIIiBW.js";import{G as k,xt as A,z as j}from"./shell-header-bar-CdOEWmCT.js";import{t as M}from"./triangle-alert-DATO9o3k.js";import{c as N,o as P}from"./zod-Dszyrytb.js";import{E as F,W as I}from"./index-lTEyHSus.js";import{t as L}from"./alert-D3aaK-_3.js";import{t as R}from"./checkbox-DTPGfvmq.js";import{t as ee}from"./form-sJw-V9wb.js";import{t as z}from"./field-CsrUbl__.js";import{r as B,t as V}from"./standard-schema-C50nwAaQ.js";import{i as H,s as U,t as te}from"./totp-BhElob6P.js";import{t as ne}from"./pin-input-DhsRO4Ei.js";var re=f(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),ie=f(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),W=a(r(),1),G=n();function ae({recoveryCodes:e,onConfirm:t,isLoading:n=!1,className:r=``}){let{t:i}=s(),a=S.useToastManager(),[o,c]=(0,W.useState)(!1),l=(0,W.useCallback)(async()=>{await navigator.clipboard.writeText(e.join(`
2
- `)),a.add({title:i(`setupTotp.recoveryCodes.copied`),type:`success`})},[e,a,i]);return(0,G.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-lg ${r}`,children:[(0,G.jsx)(u,{as:`p`,color:`muted`,variant:`bodySm`,children:i(`setupTotp.recoveryCodes.description`)}),(0,G.jsx)(`div`,{className:`grid grid-cols-2 gap-tinyrack-sm rounded-tinyrack-lg border border-tinyrack-border bg-tinyrack-surface p-tinyrack-lg`,"data-testid":`recovery-codes-grid`,children:e.map(e=>(0,G.jsx)(I,{className:`rounded-tinyrack-sm bg-tinyrack-surface-muted px-tinyrack-sm py-tinyrack-3xs text-center font-tinyrack-mono text-tinyrack-sm text-tinyrack-text`,children:e},e))}),(0,G.jsx)(L,{icon:M,type:`warning`,children:i(`setupTotp.recoveryCodes.warning`)}),(0,G.jsxs)(d,{appearance:`outline`,className:`w-full gap-tinyrack-sm`,intent:`neutral`,onClick:l,type:`button`,uiSize:`lg`,children:[(0,G.jsx)(re,{"aria-hidden":!0,className:`size-tinyrack-lg`}),i(`setupTotp.recoveryCodes.copy`)]}),(0,G.jsx)(z.Root,{children:(0,G.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,G.jsx)(R.Root,{checked:o,"data-testid":`recovery-codes-confirm`,disabled:n,onCheckedChange:e=>c(e===!0),uiSize:`lg`,children:(0,G.jsx)(R.Indicator,{})}),(0,G.jsx)(z.Label,{className:`cursor-pointer`,children:i(`setupTotp.recoveryCodes.confirmCheckbox`)})]})}),(0,G.jsx)(d,{className:`w-full`,"data-testid":`recovery-codes-submit`,disabled:!o||n,intent:`primary`,loading:n,onClick:t,type:`button`,uiSize:`lg`,children:i(`setupTotp.recoveryCodes.confirm`)})]})}function oe({onSubmit:e,onBack:t,isPending:n,invalidMessage:r,submitLabel:i,pendingText:a,backLabel:o,className:c=``}){let{t:l}=s(),u=(0,W.useRef)(null),{setValue:f,setError:p,handleSubmit:m,watch:h,formState:{errors:g}}=B({defaultValues:{code:``},resolver:V((0,W.useMemo)(()=>P({code:N().length(6,l(`validation.totp.length`)).regex(/^\d{6}$/,l(`validation.totp.digits`))}),[l]))}),_=h(`code`),v=(0,W.useCallback)(async t=>{try{await e(t.code)}catch{p(`code`,{type:`manual`,message:r??l(`setupTotp.error.invalid`)}),f(`code`,``),u.current?.focus()}},[r,e,p,f,l]);return(0,G.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-lg ${c}`,children:[(0,G.jsxs)(ee,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:m(v),children:[(0,G.jsx)(ne,{autoFocus:!0,error:g.code,length:6,onChange:e=>f(`code`,e),onComplete:()=>m(v)(),ref:u,value:_}),(0,G.jsx)(d,{className:`w-full`,intent:`primary`,loading:n,loadingLabel:a??l(`setupTotp.verifying`),type:`submit`,uiSize:`lg`,children:i??l(`setupTotp.verify`)})]}),t&&(0,G.jsx)(d,{appearance:`ghost`,className:`w-full`,"data-testid":`totp-verify-back`,disabled:n,intent:`neutral`,onClick:t,type:`button`,uiSize:`lg`,children:o??l(`setupTotp.back`)})]})}function se(e){let{open:t,defaultOpen:n,onOpenChange:r,disabled:i}=e,[a,o]=k({controlled:t,default:n,name:`Collapsible`,state:`open`}),{mounted:s,setMounted:c,transitionStatus:l}=A(a,!0,!0),u=j(),[d,f]=W.useState(),m=d===null?void 0:d??u,h=p(e=>{let t=!a,n=y(x,e.nativeEvent);r(t,n),!n.isCanceled&&o(t)});return W.useMemo(()=>({defaultPanelId:u,disabled:i,handleTrigger:h,mounted:s,open:a,panelId:m,setMounted:c,setOpen:o,setPanelIdState:f,transitionStatus:l}),[u,i,h,s,a,m,c,o,f,l])}var K=W.createContext(void 0);function q(){let e=W.useContext(K);if(e===void 0)throw Error(m(15));return e}var J=function(e){return e.open=`data-open`,e.closed=`data-closed`,e[e.startingStyle=T.startingStyle]=`startingStyle`,e[e.endingStyle=T.endingStyle]=`endingStyle`,e}({}),ce=function(e){return e.panelOpen=`data-panel-open`,e}({}),le={[J.open]:``},ue={[J.closed]:``},de={open(e){return e?{[ce.panelOpen]:``}:null}},Y={open(e){return e?le:ue},...b},fe=W.forwardRef(function(e,t){let{render:n,className:r,defaultOpen:a=!1,disabled:o=!1,onOpenChange:s,open:c,style:l,...u}=e,d=p(s),f=se({open:c,defaultOpen:a,onOpenChange:d,disabled:o}),m=W.useMemo(()=>({open:f.open,disabled:f.disabled,transitionStatus:f.transitionStatus}),[f.open,f.disabled,f.transitionStatus]),h=W.useMemo(()=>({...f,onOpenChange:d,state:m}),[f,d,m]),g=i(`div`,e,{state:m,ref:t,props:u,stateAttributesMapping:Y});return(0,G.jsx)(K.Provider,{value:h,children:g})}),pe={...de,...b},me=W.forwardRef(function(e,t){let{panelId:n,open:r,handleTrigger:a,state:s,disabled:c}=q(),{className:l,disabled:u=c,render:d,nativeButton:f=!0,style:p,...m}=e,{getButtonProps:h,buttonRef:g}=o({disabled:u,focusableWhenDisabled:!0,native:f});return i(`button`,e,{state:s,ref:[t,g],props:[{"aria-controls":r?n:void 0,"aria-expanded":r,onClick:a},m,h],stateAttributesMapping:pe})}),X={height:void 0,width:void 0};function he(t){let{externalRef:n,hiddenUntilFound:r,id:i,keepMounted:a,mounted:o,onOpenChange:s,open:c,setMounted:u,setOpen:d,transitionStatus:f}=t,m=W.useRef(null),g=W.useRef(null),[v,b]=W.useState(X),x=W.useRef(X),S=W.useRef(!1),T=W.useRef(c),O=W.useRef(!1),[k,A]=W.useState(!1),j=W.useRef(null),M=l(n,m),N=_(c),P=D(m),F=!c&&!o,I=k?`idle`:f,L=c&&(T.current||O.current),R=!c&&o&&g.current===`css-animation`&&v.height===void 0&&v.width===void 0?x.current:v,ee=r&&F&&g.current!==`css-animation`,z=p((e,t=!0)=>{t&&(x.current=e),b(e)}),B=p(()=>{j.current?.(),j.current=null}),V=p(e=>{B(),j.current=()=>{j.current=null,e()}}),H=p(()=>{c&&o&&g.current===`css-animation`&&(O.current=!0)});e(()=>{!k||f===`starting`||A(!1)},[k,f]),W.useEffect(()=>()=>{H(),B()},[H,B]),e(()=>{let e=m.current;if(!e)return;!c&&j.current&&B();let t=ge(e,L);if(g.current=t,c&&f===`idle`&&T.current&&t===`css-animation`){x.current=Z(e);return}if(c&&f===`starting`){let n=S.current;if(S.current=!1,t===`none`){z(Z(e)),A(!0);return}if(t===`css-transition`){let t=ve(e);if(z(Z(e)),!n)return t;let r=Q(e,`transition-duration`,`0s`);return V(r),A(!0),t}z(Z(e));let r=Q(e,`animation-name`,`none`);if(!n){r();return}let i=Q(e,`animation-duration`,`0s`);r(),V(i),A(!0);return}if(!c&&o&&(f===`idle`||f===`starting`)){if(T.current=!1,O.current=!1,t===`none`){z(X,!1),u(!1);return}z(Z(e));return}if(f!==`ending`)return;if(t===`none`){u(!1);return}let n=Z(e);if(!(n.height>0||n.width>0)){u(!1);return}z(n),t===`css-animation`&&Q(e,`animation-name`,`none`)()},[o,c,B,z,u,V,L,f]),C({enabled:c&&o&&I===`idle`,open:!0,ref:m,onComplete(){c&&z(X,!1)}}),W.useEffect(()=>{if(c||!o||I!==`ending`||!m.current)return;let e=new AbortController,t=-1;function n(){N.current||(u(!1),z(X,!1))}return t=E.request(()=>{P(n,e.signal)}),()=>{E.cancel(t),e.abort()}},[N,o,c,I,P,z,u]),e(()=>{let e=m.current;!e||!r||!F||e.setAttribute(`hidden`,`until-found`)},[F,r]),W.useEffect(function(){let e=m.current;if(!e)return;function t(e){let t=y(h,e);s(!0,t),!t.isCanceled&&(S.current=!0,d(!0))}return w(e,`beforematch`,t)},[s,d]);let U=a||r||o||c;return{height:R.height,props:{...ee?{[J.startingStyle]:``}:void 0,hidden:F,id:i},ref:M,shouldPreventOpenAnimation:L,shouldRender:U,transitionStatus:I,width:R.width}}function Z(e){return{height:e.scrollHeight,width:e.scrollWidth}}function ge(e,n){let r=t(e).getComputedStyle(e),i=(r.animationName.split(`,`).map(e=>e.trim()).some(e=>e!==``&&e!==`none`)||n)&&_e(r.animationDuration),a=_e(r.transitionDuration);return i&&a||a?`css-transition`:i?`css-animation`:`none`}function _e(e){return e.split(`,`).map(e=>e.trim()).some(e=>e!==``&&Number.parseFloat(e)>0)}function Q(e,t,n){let r=e.style.getPropertyValue(t),i=e.style.getPropertyPriority(t);return e.style.setProperty(t,n),()=>{if(r===``){e.style.removeProperty(t);return}e.style.setProperty(t,r,i)}}function ve(e){let t={"justify-content":e.style.justifyContent,"align-items":e.style.alignItems,"align-content":e.style.alignContent,"justify-items":e.style.justifyItems};Object.keys(t).forEach(t=>{e.style.setProperty(t,`initial`,`important`)});function n(){Object.entries(t).forEach(([t,n])=>{if(n===``){e.style.removeProperty(t);return}e.style.setProperty(t,n)})}let r=E.request(n);return()=>{E.cancel(r),n()}}var ye=function(e){return e.collapsiblePanelHeight=`--collapsible-panel-height`,e.collapsiblePanelWidth=`--collapsible-panel-width`,e}({}),be=v(W.forwardRef(function(t,n){let{className:r,hiddenUntilFound:a,keepMounted:o,render:s,id:l,style:u,...d}=t,{defaultPanelId:f,mounted:p,onOpenChange:m,open:h,setMounted:g,setPanelIdState:_,setOpen:v,state:y,transitionStatus:b}=q(),x=a??!1,S=o??!1,C=l||void 0,w=C??f;e(()=>(_(e=>C??(e===null?void 0:e)),()=>{_(e=>e===C?null:e)}),[C,_]);let{height:T,props:E,ref:D,shouldPreventOpenAnimation:O,shouldRender:k,transitionStatus:A,width:j}=he({externalRef:n,hiddenUntilFound:x,id:w,keepMounted:S,mounted:p,onOpenChange:m,open:h,setMounted:g,setOpen:v,transitionStatus:b}),M={...y,transitionStatus:A},N=c(u,M),P=i(`div`,{...t,style:void 0},{state:M,ref:D,props:[E,{style:{[ye.collapsiblePanelHeight]:T===void 0?`auto`:`${T}px`,[ye.collapsiblePanelWidth]:j===void 0?`auto`:`${j}px`}},d,N?{style:N}:void 0,O?{style:{animationName:`none`}}:void 0],stateAttributesMapping:Y});return k?P:null}),`tr-collapsible-content`),$={Root:v(fe,`tr-collapsible`),Trigger:v(me,`tr-collapsible-summary`),Panel:be};function xe({setupData:e,onNext:t,additionalActions:n,className:r=``}){let{t:i}=s();return(0,G.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-lg ${r}`,children:[(0,G.jsx)(u,{align:`center`,as:`p`,color:`muted`,variant:`bodySm`,children:i(`setupTotp.qrDescription`)}),(0,G.jsx)(`div`,{className:`flex justify-center`,children:(0,G.jsx)(`div`,{className:`rounded-tinyrack-lg border border-tinyrack-border bg-tinyrack-surface p-tinyrack-lg`,children:(0,G.jsx)(`img`,{alt:`TOTP QR Code`,className:`block size-tinyrack-measure-sm`,src:e.qr_code})})}),(0,G.jsxs)($.Root,{children:[(0,G.jsx)($.Trigger,{children:i(`setupTotp.manualEntry`)}),(0,G.jsx)($.Panel,{children:(0,G.jsx)(I,{className:`mt-tinyrack-xs block break-all rounded-tinyrack-sm bg-tinyrack-surface-muted p-tinyrack-sm`,children:e.secret})})]}),(0,G.jsx)(d,{className:`w-full`,"data-testid":`totp-qr-next`,intent:`primary`,onClick:t,type:`button`,uiSize:`lg`,children:i(`setupTotp.next`)}),n]})}function Se(e={}){let{onSetupSuccess:t,onSetupError:n,onVerifySuccess:r,onVerifyError:i,onConfirmSuccess:a,onConfirmError:o,autoStart:s=!1}=e,c=g(),[l,u]=(0,W.useState)(s?`loading`:`qr`),[d,f]=(0,W.useState)(null),[p,m]=(0,W.useState)([]),h=(0,W.useRef)(!1),_=O({...H,onSuccess:e=>{f(e),u(`qr`),t?.(e)},onError:e=>{u(`error`),n?.(e)}}),v=O({...U,onSuccess:e=>{m(e.recovery_codes),u(`recovery`),r?.(e)},onError:e=>{i?.(e)}}),y=O({...te,onSuccess:e=>{c.invalidateQueries({queryKey:F.queryKey}),a?.(e)},onError:e=>{o?.(e)}}),b=(0,W.useCallback)(()=>{h.current=!0,u(`loading`),_.mutate()},[_]),x=(0,W.useCallback)(async e=>v.mutateAsync({code:e}),[v]),S=(0,W.useCallback)(()=>{u(`qr`)},[]),C=(0,W.useCallback)(()=>{u(`verify`)},[]),w=(0,W.useCallback)(async()=>y.mutateAsync(),[y]),T=(0,W.useCallback)(()=>{u(s?`loading`:`qr`),f(null),m([]),h.current=!1,_.reset(),v.reset(),y.reset()},[s,_,v,y]);return(0,W.useEffect)(()=>{s&&!h.current&&l===`loading`&&(h.current=!0,_.mutate())},[s,l,_]),{step:l,setupData:d,recoveryCodes:p,isSetupPending:_.isPending,isVerifyPending:v.isPending,isConfirmPending:y.isPending,isPending:_.isPending||v.isPending||y.isPending,setupError:_.error,verifyError:v.error,confirmError:y.error,startSetup:b,verify:x,goToQr:S,goToVerify:C,confirmRecoveryCodes:w,reset:T}}export{ie as a,ae as i,xe as n,oe as r,Se as t};
3
- //# sourceMappingURL=use-totp-setup-KOVNS2DC.js.map