@tinyrack/issuary-server 0.20.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 (2365) hide show
  1. package/dist/emails/components/email-layout.d.ts +8 -0
  2. package/dist/emails/components/email-layout.d.ts.map +1 -0
  3. package/dist/emails/components/email-layout.js +6 -0
  4. package/dist/emails/components/email-layout.js.map +1 -0
  5. package/dist/emails/i18n/en.json +26 -0
  6. package/dist/emails/i18n/index.d.ts +3 -0
  7. package/dist/emails/i18n/index.d.ts.map +1 -0
  8. package/dist/emails/i18n/index.js +12 -0
  9. package/dist/emails/i18n/index.js.map +1 -0
  10. package/dist/emails/i18n/ja.json +26 -0
  11. package/dist/emails/i18n/ko.json +26 -0
  12. package/dist/emails/render.d.ts +12 -0
  13. package/dist/emails/render.d.ts.map +1 -0
  14. package/dist/emails/render.js +22 -0
  15. package/dist/emails/render.js.map +1 -0
  16. package/dist/emails/templates/password-reset.d.ts +10 -0
  17. package/dist/emails/templates/password-reset.d.ts.map +1 -0
  18. package/dist/emails/templates/password-reset.js +10 -0
  19. package/dist/emails/templates/password-reset.js.map +1 -0
  20. package/dist/emails/templates/verification.d.ts +10 -0
  21. package/dist/emails/templates/verification.d.ts.map +1 -0
  22. package/dist/emails/templates/verification.js +10 -0
  23. package/dist/emails/templates/verification.js.map +1 -0
  24. package/dist/entities/background-job.entity.d.ts +111 -0
  25. package/dist/entities/background-job.entity.d.ts.map +1 -0
  26. package/dist/entities/background-job.entity.js +53 -0
  27. package/dist/entities/background-job.entity.js.map +1 -0
  28. package/dist/entities/base.entity.d.ts +23 -0
  29. package/dist/entities/base.entity.d.ts.map +1 -0
  30. package/dist/entities/base.entity.js +17 -0
  31. package/dist/entities/base.entity.js.map +1 -0
  32. package/dist/entities/bootstrap-state.entity.d.ts +40 -0
  33. package/dist/entities/bootstrap-state.entity.d.ts.map +1 -0
  34. package/dist/entities/bootstrap-state.entity.js +13 -0
  35. package/dist/entities/bootstrap-state.entity.js.map +1 -0
  36. package/dist/entities/email-verification.entity.d.ts +96 -0
  37. package/dist/entities/email-verification.entity.d.ts.map +1 -0
  38. package/dist/entities/email-verification.entity.js +42 -0
  39. package/dist/entities/email-verification.entity.js.map +1 -0
  40. package/dist/entities/jwt-key.entity.d.ts +256 -0
  41. package/dist/entities/jwt-key.entity.d.ts.map +1 -0
  42. package/dist/entities/jwt-key.entity.js +125 -0
  43. package/dist/entities/jwt-key.entity.js.map +1 -0
  44. package/dist/entities/oauth-client.entity.d.ts +1778 -0
  45. package/dist/entities/oauth-client.entity.d.ts.map +1 -0
  46. package/dist/entities/oauth-client.entity.js +82 -0
  47. package/dist/entities/oauth-client.entity.js.map +1 -0
  48. package/dist/entities/oauth-code.entity.d.ts +1799 -0
  49. package/dist/entities/oauth-code.entity.d.ts.map +1 -0
  50. package/dist/entities/oauth-code.entity.js +79 -0
  51. package/dist/entities/oauth-code.entity.js.map +1 -0
  52. package/dist/entities/oauth-device-code.entity.d.ts +1779 -0
  53. package/dist/entities/oauth-device-code.entity.d.ts.map +1 -0
  54. package/dist/entities/oauth-device-code.entity.js +73 -0
  55. package/dist/entities/oauth-device-code.entity.js.map +1 -0
  56. package/dist/entities/password-reset.entity.d.ts +96 -0
  57. package/dist/entities/password-reset.entity.d.ts.map +1 -0
  58. package/dist/entities/password-reset.entity.js +39 -0
  59. package/dist/entities/password-reset.entity.js.map +1 -0
  60. package/dist/entities/pending-oauth-registration.entity.d.ts +116 -0
  61. package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -0
  62. package/dist/entities/pending-oauth-registration.entity.js +67 -0
  63. package/dist/entities/pending-oauth-registration.entity.js.map +1 -0
  64. package/dist/entities/revoked-token.entity.d.ts +1796 -0
  65. package/dist/entities/revoked-token.entity.d.ts.map +1 -0
  66. package/dist/entities/revoked-token.entity.js +69 -0
  67. package/dist/entities/revoked-token.entity.js.map +1 -0
  68. package/dist/entities/scheduler-job.entity.d.ts +134 -0
  69. package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
  70. package/dist/entities/scheduler-job.entity.js +56 -0
  71. package/dist/entities/scheduler-job.entity.js.map +1 -0
  72. package/dist/entities/terms-content.entity.d.ts +834 -0
  73. package/dist/entities/terms-content.entity.d.ts.map +1 -0
  74. package/dist/entities/terms-content.entity.js +46 -0
  75. package/dist/entities/terms-content.entity.js.map +1 -0
  76. package/dist/entities/terms.entity.d.ts +827 -0
  77. package/dist/entities/terms.entity.d.ts.map +1 -0
  78. package/dist/entities/terms.entity.js +42 -0
  79. package/dist/entities/terms.entity.js.map +1 -0
  80. package/dist/entities/user-consent.entity.d.ts +1792 -0
  81. package/dist/entities/user-consent.entity.d.ts.map +1 -0
  82. package/dist/entities/user-consent.entity.js +66 -0
  83. package/dist/entities/user-consent.entity.js.map +1 -0
  84. package/dist/entities/user-oauth.entity.d.ts +81 -0
  85. package/dist/entities/user-oauth.entity.d.ts.map +1 -0
  86. package/dist/entities/user-oauth.entity.js +46 -0
  87. package/dist/entities/user-oauth.entity.js.map +1 -0
  88. package/dist/entities/user-passkey.entity.d.ts +151 -0
  89. package/dist/entities/user-passkey.entity.d.ts.map +1 -0
  90. package/dist/entities/user-passkey.entity.js +64 -0
  91. package/dist/entities/user-passkey.entity.js.map +1 -0
  92. package/dist/entities/user-terms-consent.entity.d.ts +834 -0
  93. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -0
  94. package/dist/entities/user-terms-consent.entity.js +62 -0
  95. package/dist/entities/user-terms-consent.entity.js.map +1 -0
  96. package/dist/entities/user-totp-recovery-code.entity.d.ts +545 -0
  97. package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -0
  98. package/dist/entities/user-totp-recovery-code.entity.js +34 -0
  99. package/dist/entities/user-totp-recovery-code.entity.js.map +1 -0
  100. package/dist/entities/user-totp.entity.d.ts +545 -0
  101. package/dist/entities/user-totp.entity.d.ts.map +1 -0
  102. package/dist/entities/user-totp.entity.js +38 -0
  103. package/dist/entities/user-totp.entity.js.map +1 -0
  104. package/dist/entities/user.entity.d.ts +551 -0
  105. package/dist/entities/user.entity.d.ts.map +1 -0
  106. package/dist/entities/user.entity.js +70 -0
  107. package/dist/entities/user.entity.js.map +1 -0
  108. package/dist/entrypoints/app.d.ts +1802 -0
  109. package/dist/entrypoints/app.d.ts.map +1 -0
  110. package/dist/entrypoints/app.js +164 -0
  111. package/dist/entrypoints/app.js.map +1 -0
  112. package/dist/entrypoints/config/index.d.ts +2 -0
  113. package/dist/entrypoints/config/index.d.ts.map +1 -0
  114. package/dist/entrypoints/config/index.js +2 -0
  115. package/dist/entrypoints/config/index.js.map +1 -0
  116. package/dist/entrypoints/database/postgres/cli.d.ts +4 -0
  117. package/dist/entrypoints/database/postgres/cli.d.ts.map +1 -0
  118. package/dist/entrypoints/database/postgres/cli.js +20 -0
  119. package/dist/entrypoints/database/postgres/cli.js.map +1 -0
  120. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +865 -0
  121. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -0
  122. package/dist/entrypoints/database/postgres/compiled-functions.js +10817 -0
  123. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -0
  124. package/dist/entrypoints/database/postgres/postgres.d.ts +14 -0
  125. package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -0
  126. package/dist/entrypoints/database/postgres/postgres.js +36 -0
  127. package/dist/entrypoints/database/postgres/postgres.js.map +1 -0
  128. package/dist/entrypoints/database/sqlite/cli.d.ts +4 -0
  129. package/dist/entrypoints/database/sqlite/cli.d.ts.map +1 -0
  130. package/dist/entrypoints/database/sqlite/cli.js +14 -0
  131. package/dist/entrypoints/database/sqlite/cli.js.map +1 -0
  132. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +865 -0
  133. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -0
  134. package/dist/entrypoints/database/sqlite/compiled-functions.js +10817 -0
  135. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -0
  136. package/dist/entrypoints/database/sqlite/sqlite.d.ts +10 -0
  137. package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -0
  138. package/dist/entrypoints/database/sqlite/sqlite.js +36 -0
  139. package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -0
  140. package/dist/entrypoints/frontend/index.d.ts +4 -0
  141. package/dist/entrypoints/frontend/index.d.ts.map +1 -0
  142. package/dist/entrypoints/frontend/index.js +2 -0
  143. package/dist/entrypoints/frontend/index.js.map +1 -0
  144. package/dist/entrypoints/frontend/proxy.d.ts +2 -0
  145. package/dist/entrypoints/frontend/proxy.d.ts.map +1 -0
  146. package/dist/entrypoints/frontend/proxy.js +2 -0
  147. package/dist/entrypoints/frontend/proxy.js.map +1 -0
  148. package/dist/entrypoints/frontend/static.d.ts +2 -0
  149. package/dist/entrypoints/frontend/static.d.ts.map +1 -0
  150. package/dist/entrypoints/frontend/static.js +2 -0
  151. package/dist/entrypoints/frontend/static.js.map +1 -0
  152. package/dist/entrypoints/identity-providers/apple.d.ts +15 -0
  153. package/dist/entrypoints/identity-providers/apple.d.ts.map +1 -0
  154. package/dist/entrypoints/identity-providers/apple.js +24 -0
  155. package/dist/entrypoints/identity-providers/apple.js.map +1 -0
  156. package/dist/entrypoints/identity-providers/generic-oauth.d.ts +27 -0
  157. package/dist/entrypoints/identity-providers/generic-oauth.d.ts.map +1 -0
  158. package/dist/entrypoints/identity-providers/generic-oauth.js +22 -0
  159. package/dist/entrypoints/identity-providers/generic-oauth.js.map +1 -0
  160. package/dist/entrypoints/identity-providers/github.d.ts +13 -0
  161. package/dist/entrypoints/identity-providers/github.d.ts.map +1 -0
  162. package/dist/entrypoints/identity-providers/github.js +24 -0
  163. package/dist/entrypoints/identity-providers/github.js.map +1 -0
  164. package/dist/entrypoints/identity-providers/google.d.ts +13 -0
  165. package/dist/entrypoints/identity-providers/google.d.ts.map +1 -0
  166. package/dist/entrypoints/identity-providers/google.js +24 -0
  167. package/dist/entrypoints/identity-providers/google.js.map +1 -0
  168. package/dist/entrypoints/index.d.ts +3 -0
  169. package/dist/entrypoints/index.d.ts.map +1 -0
  170. package/dist/entrypoints/index.js +3 -0
  171. package/dist/entrypoints/index.js.map +1 -0
  172. package/dist/entrypoints/mail/nodemailer.d.ts +11 -0
  173. package/dist/entrypoints/mail/nodemailer.d.ts.map +1 -0
  174. package/dist/entrypoints/mail/nodemailer.js +30 -0
  175. package/dist/entrypoints/mail/nodemailer.js.map +1 -0
  176. package/dist/entrypoints/scheduler/cron.d.ts +3 -0
  177. package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
  178. package/dist/entrypoints/scheduler/cron.js +34 -0
  179. package/dist/entrypoints/scheduler/cron.js.map +1 -0
  180. package/dist/entrypoints/scheduler/croner.d.ts +6 -0
  181. package/dist/entrypoints/scheduler/croner.d.ts.map +1 -0
  182. package/dist/entrypoints/scheduler/croner.js +42 -0
  183. package/dist/entrypoints/scheduler/croner.js.map +1 -0
  184. package/dist/entrypoints/scheduler/database.d.ts +38 -0
  185. package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
  186. package/dist/entrypoints/scheduler/database.js +444 -0
  187. package/dist/entrypoints/scheduler/database.js.map +1 -0
  188. package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
  189. package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
  190. package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
  191. package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
  192. package/dist/entrypoints/services.d.ts +3 -0
  193. package/dist/entrypoints/services.d.ts.map +1 -0
  194. package/dist/entrypoints/services.js +2 -0
  195. package/dist/entrypoints/services.js.map +1 -0
  196. package/dist/lib/app-env.d.ts +17 -0
  197. package/dist/lib/app-env.d.ts.map +1 -0
  198. package/dist/lib/app-env.js +2 -0
  199. package/dist/lib/app-env.js.map +1 -0
  200. package/dist/lib/base64url.d.ts +33 -0
  201. package/dist/lib/base64url.d.ts.map +1 -0
  202. package/dist/lib/base64url.js +93 -0
  203. package/dist/lib/base64url.js.map +1 -0
  204. package/dist/lib/config/account-deletion.d.ts +11 -0
  205. package/dist/lib/config/account-deletion.d.ts.map +1 -0
  206. package/dist/lib/config/account-deletion.js +16 -0
  207. package/dist/lib/config/account-deletion.js.map +1 -0
  208. package/dist/lib/config/admin.d.ts +9 -0
  209. package/dist/lib/config/admin.d.ts.map +1 -0
  210. package/dist/lib/config/admin.js +13 -0
  211. package/dist/lib/config/admin.js.map +1 -0
  212. package/dist/lib/config/auth.d.ts +194 -0
  213. package/dist/lib/config/auth.d.ts.map +1 -0
  214. package/dist/lib/config/auth.js +216 -0
  215. package/dist/lib/config/auth.js.map +1 -0
  216. package/dist/lib/config/branding.d.ts +14 -0
  217. package/dist/lib/config/branding.d.ts.map +1 -0
  218. package/dist/lib/config/branding.js +37 -0
  219. package/dist/lib/config/branding.js.map +1 -0
  220. package/dist/lib/config/cleanup.d.ts +59 -0
  221. package/dist/lib/config/cleanup.d.ts.map +1 -0
  222. package/dist/lib/config/cleanup.js +119 -0
  223. package/dist/lib/config/cleanup.js.map +1 -0
  224. package/dist/lib/config/client.d.ts +74 -0
  225. package/dist/lib/config/client.d.ts.map +1 -0
  226. package/dist/lib/config/client.js +195 -0
  227. package/dist/lib/config/client.js.map +1 -0
  228. package/dist/lib/config/database.d.ts +8 -0
  229. package/dist/lib/config/database.d.ts.map +1 -0
  230. package/dist/lib/config/database.js +8 -0
  231. package/dist/lib/config/database.js.map +1 -0
  232. package/dist/lib/config/email.d.ts +17 -0
  233. package/dist/lib/config/email.d.ts.map +1 -0
  234. package/dist/lib/config/email.js +7 -0
  235. package/dist/lib/config/email.js.map +1 -0
  236. package/dist/lib/config/frontend.d.ts +12 -0
  237. package/dist/lib/config/frontend.d.ts.map +1 -0
  238. package/dist/lib/config/frontend.js +7 -0
  239. package/dist/lib/config/frontend.js.map +1 -0
  240. package/dist/lib/config/i18n.d.ts +31 -0
  241. package/dist/lib/config/i18n.d.ts.map +1 -0
  242. package/dist/lib/config/i18n.js +23 -0
  243. package/dist/lib/config/i18n.js.map +1 -0
  244. package/dist/lib/config/identity-providers.d.ts +70 -0
  245. package/dist/lib/config/identity-providers.d.ts.map +1 -0
  246. package/dist/lib/config/identity-providers.js +88 -0
  247. package/dist/lib/config/identity-providers.js.map +1 -0
  248. package/dist/lib/config/index.d.ts +43 -0
  249. package/dist/lib/config/index.d.ts.map +1 -0
  250. package/dist/lib/config/index.js +22 -0
  251. package/dist/lib/config/index.js.map +1 -0
  252. package/dist/lib/config/logging.d.ts +52 -0
  253. package/dist/lib/config/logging.d.ts.map +1 -0
  254. package/dist/lib/config/logging.js +41 -0
  255. package/dist/lib/config/logging.js.map +1 -0
  256. package/dist/lib/config/openapi.d.ts +15 -0
  257. package/dist/lib/config/openapi.d.ts.map +1 -0
  258. package/dist/lib/config/openapi.js +28 -0
  259. package/dist/lib/config/openapi.js.map +1 -0
  260. package/dist/lib/config/registration.d.ts +15 -0
  261. package/dist/lib/config/registration.d.ts.map +1 -0
  262. package/dist/lib/config/registration.js +24 -0
  263. package/dist/lib/config/registration.js.map +1 -0
  264. package/dist/lib/config/resolved.d.ts +249 -0
  265. package/dist/lib/config/resolved.d.ts.map +1 -0
  266. package/dist/lib/config/resolved.js +47 -0
  267. package/dist/lib/config/resolved.js.map +1 -0
  268. package/dist/lib/config/scheduler.d.ts +52 -0
  269. package/dist/lib/config/scheduler.d.ts.map +1 -0
  270. package/dist/lib/config/scheduler.js +20 -0
  271. package/dist/lib/config/scheduler.js.map +1 -0
  272. package/dist/lib/config/security.d.ts +11 -0
  273. package/dist/lib/config/security.d.ts.map +1 -0
  274. package/dist/lib/config/security.js +65 -0
  275. package/dist/lib/config/security.js.map +1 -0
  276. package/dist/lib/config/server.d.ts +13 -0
  277. package/dist/lib/config/server.d.ts.map +1 -0
  278. package/dist/lib/config/server.js +57 -0
  279. package/dist/lib/config/server.js.map +1 -0
  280. package/dist/lib/config/terms.d.ts +47 -0
  281. package/dist/lib/config/terms.d.ts.map +1 -0
  282. package/dist/lib/config/terms.js +71 -0
  283. package/dist/lib/config/terms.js.map +1 -0
  284. package/dist/lib/config/tokens.d.ts +32 -0
  285. package/dist/lib/config/tokens.d.ts.map +1 -0
  286. package/dist/lib/config/tokens.js +47 -0
  287. package/dist/lib/config/tokens.js.map +1 -0
  288. package/dist/lib/config/url-policy.d.ts +4 -0
  289. package/dist/lib/config/url-policy.d.ts.map +1 -0
  290. package/dist/lib/config/url-policy.js +38 -0
  291. package/dist/lib/config/url-policy.js.map +1 -0
  292. package/dist/lib/config/user.d.ts +22 -0
  293. package/dist/lib/config/user.d.ts.map +1 -0
  294. package/dist/lib/config/user.js +22 -0
  295. package/dist/lib/config/user.js.map +1 -0
  296. package/dist/lib/crypto.d.ts +106 -0
  297. package/dist/lib/crypto.d.ts.map +1 -0
  298. package/dist/lib/crypto.js +263 -0
  299. package/dist/lib/crypto.js.map +1 -0
  300. package/dist/lib/database/entities.d.ts +10 -0
  301. package/dist/lib/database/entities.d.ts.map +1 -0
  302. package/dist/lib/database/entities.js +51 -0
  303. package/dist/lib/database/entities.js.map +1 -0
  304. package/dist/lib/duration.d.ts +44 -0
  305. package/dist/lib/duration.d.ts.map +1 -0
  306. package/dist/lib/duration.js +103 -0
  307. package/dist/lib/duration.js.map +1 -0
  308. package/dist/lib/email-pattern.d.ts +16 -0
  309. package/dist/lib/email-pattern.d.ts.map +1 -0
  310. package/dist/lib/email-pattern.js +41 -0
  311. package/dist/lib/email-pattern.js.map +1 -0
  312. package/dist/lib/escape-html.d.ts +7 -0
  313. package/dist/lib/escape-html.d.ts.map +1 -0
  314. package/dist/lib/escape-html.js +14 -0
  315. package/dist/lib/escape-html.js.map +1 -0
  316. package/dist/lib/frontend/proxy.d.ts +24 -0
  317. package/dist/lib/frontend/proxy.d.ts.map +1 -0
  318. package/dist/lib/frontend/proxy.js +38 -0
  319. package/dist/lib/frontend/proxy.js.map +1 -0
  320. package/dist/lib/frontend/static.d.ts +21 -0
  321. package/dist/lib/frontend/static.d.ts.map +1 -0
  322. package/dist/lib/frontend/static.js +108 -0
  323. package/dist/lib/frontend/static.js.map +1 -0
  324. package/dist/lib/interpolate-html.d.ts +34 -0
  325. package/dist/lib/interpolate-html.d.ts.map +1 -0
  326. package/dist/lib/interpolate-html.js +61 -0
  327. package/dist/lib/interpolate-html.js.map +1 -0
  328. package/dist/lib/ip-utils.d.ts +61 -0
  329. package/dist/lib/ip-utils.d.ts.map +1 -0
  330. package/dist/lib/ip-utils.js +213 -0
  331. package/dist/lib/ip-utils.js.map +1 -0
  332. package/dist/lib/locale.d.ts +57 -0
  333. package/dist/lib/locale.d.ts.map +1 -0
  334. package/dist/lib/locale.js +25 -0
  335. package/dist/lib/locale.js.map +1 -0
  336. package/dist/lib/logger.d.ts +14 -0
  337. package/dist/lib/logger.d.ts.map +1 -0
  338. package/dist/lib/logger.js +41 -0
  339. package/dist/lib/logger.js.map +1 -0
  340. package/dist/lib/openapi.d.ts +35 -0
  341. package/dist/lib/openapi.d.ts.map +1 -0
  342. package/dist/lib/openapi.js +33 -0
  343. package/dist/lib/openapi.js.map +1 -0
  344. package/dist/lib/password-policy.d.ts +39 -0
  345. package/dist/lib/password-policy.d.ts.map +1 -0
  346. package/dist/lib/password-policy.js +51 -0
  347. package/dist/lib/password-policy.js.map +1 -0
  348. package/dist/lib/pkce.d.ts +26 -0
  349. package/dist/lib/pkce.d.ts.map +1 -0
  350. package/dist/lib/pkce.js +59 -0
  351. package/dist/lib/pkce.js.map +1 -0
  352. package/dist/lib/scopes.d.ts +10 -0
  353. package/dist/lib/scopes.d.ts.map +1 -0
  354. package/dist/lib/scopes.js +38 -0
  355. package/dist/lib/scopes.js.map +1 -0
  356. package/dist/lib/swagger-tags.d.ts +16 -0
  357. package/dist/lib/swagger-tags.d.ts.map +1 -0
  358. package/dist/lib/swagger-tags.js +16 -0
  359. package/dist/lib/swagger-tags.js.map +1 -0
  360. package/dist/middleware/auth.d.ts +67 -0
  361. package/dist/middleware/auth.d.ts.map +1 -0
  362. package/dist/middleware/auth.js +149 -0
  363. package/dist/middleware/auth.js.map +1 -0
  364. package/dist/middleware/csrf.d.ts +2 -0
  365. package/dist/middleware/csrf.d.ts.map +1 -0
  366. package/dist/middleware/csrf.js +51 -0
  367. package/dist/middleware/csrf.js.map +1 -0
  368. package/dist/middleware/logger.d.ts +18 -0
  369. package/dist/middleware/logger.d.ts.map +1 -0
  370. package/dist/middleware/logger.js +38 -0
  371. package/dist/middleware/logger.js.map +1 -0
  372. package/dist/middleware/mikro-orm.d.ts +3 -0
  373. package/dist/middleware/mikro-orm.d.ts.map +1 -0
  374. package/dist/middleware/mikro-orm.js +11 -0
  375. package/dist/middleware/mikro-orm.js.map +1 -0
  376. package/dist/middleware/services.d.ts +8 -0
  377. package/dist/middleware/services.d.ts.map +1 -0
  378. package/dist/middleware/services.js +8 -0
  379. package/dist/middleware/services.js.map +1 -0
  380. package/dist/middleware/session.d.ts +107 -0
  381. package/dist/middleware/session.d.ts.map +1 -0
  382. package/dist/middleware/session.js +185 -0
  383. package/dist/middleware/session.js.map +1 -0
  384. package/dist/middleware/trusted-proxy-guard.d.ts +7 -0
  385. package/dist/middleware/trusted-proxy-guard.d.ts.map +1 -0
  386. package/dist/middleware/trusted-proxy-guard.js +34 -0
  387. package/dist/middleware/trusted-proxy-guard.js.map +1 -0
  388. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts +5 -0
  389. package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -0
  390. package/dist/migrations/postgres/Migration20260509171036_initial.js +246 -0
  391. package/dist/migrations/postgres/Migration20260509171036_initial.js.map +1 -0
  392. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  393. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  394. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
  395. package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  396. package/dist/migrations/postgres/Migration20260619075007.d.ts +6 -0
  397. package/dist/migrations/postgres/Migration20260619075007.d.ts.map +1 -0
  398. package/dist/migrations/postgres/Migration20260619075007.js +86 -0
  399. package/dist/migrations/postgres/Migration20260619075007.js.map +1 -0
  400. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts +6 -0
  401. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -0
  402. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.js +12 -0
  403. package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.js.map +1 -0
  404. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts +6 -0
  405. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -0
  406. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.js +11 -0
  407. package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.js.map +1 -0
  408. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts +6 -0
  409. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -0
  410. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.js +11 -0
  411. package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.js.map +1 -0
  412. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts +6 -0
  413. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -0
  414. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.js +14 -0
  415. package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.js.map +1 -0
  416. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts +6 -0
  417. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -0
  418. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.js +10 -0
  419. package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.js.map +1 -0
  420. package/dist/migrations/postgres/index.d.ts +3 -0
  421. package/dist/migrations/postgres/index.d.ts.map +1 -0
  422. package/dist/migrations/postgres/index.js +19 -0
  423. package/dist/migrations/postgres/index.js.map +1 -0
  424. package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts +5 -0
  425. package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts.map +1 -0
  426. package/dist/migrations/sqlite/Migration20260509171226_initial.js +62 -0
  427. package/dist/migrations/sqlite/Migration20260509171226_initial.js.map +1 -0
  428. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
  429. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
  430. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
  431. package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
  432. package/dist/migrations/sqlite/Migration20260619075330.d.ts +6 -0
  433. package/dist/migrations/sqlite/Migration20260619075330.d.ts.map +1 -0
  434. package/dist/migrations/sqlite/Migration20260619075330.js +57 -0
  435. package/dist/migrations/sqlite/Migration20260619075330.js.map +1 -0
  436. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts +6 -0
  437. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -0
  438. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.js +12 -0
  439. package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.js.map +1 -0
  440. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts +6 -0
  441. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -0
  442. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.js +10 -0
  443. package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.js.map +1 -0
  444. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts +6 -0
  445. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -0
  446. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.js +10 -0
  447. package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.js.map +1 -0
  448. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts +6 -0
  449. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -0
  450. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.js +12 -0
  451. package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.js.map +1 -0
  452. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts +6 -0
  453. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -0
  454. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.js +28 -0
  455. package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.js.map +1 -0
  456. package/dist/migrations/sqlite/index.d.ts +3 -0
  457. package/dist/migrations/sqlite/index.d.ts.map +1 -0
  458. package/dist/migrations/sqlite/index.js +19 -0
  459. package/dist/migrations/sqlite/index.js.map +1 -0
  460. package/dist/repositories/background-job.repository.d.ts +5 -0
  461. package/dist/repositories/background-job.repository.d.ts.map +1 -0
  462. package/dist/repositories/background-job.repository.js +4 -0
  463. package/dist/repositories/background-job.repository.js.map +1 -0
  464. package/dist/repositories/email-verification.repository.d.ts +18 -0
  465. package/dist/repositories/email-verification.repository.d.ts.map +1 -0
  466. package/dist/repositories/email-verification.repository.js +47 -0
  467. package/dist/repositories/email-verification.repository.js.map +1 -0
  468. package/dist/repositories/jwt-key.repository.d.ts +49 -0
  469. package/dist/repositories/jwt-key.repository.d.ts.map +1 -0
  470. package/dist/repositories/jwt-key.repository.js +72 -0
  471. package/dist/repositories/jwt-key.repository.js.map +1 -0
  472. package/dist/repositories/oauth-client.repository.d.ts +5 -0
  473. package/dist/repositories/oauth-client.repository.d.ts.map +1 -0
  474. package/dist/repositories/oauth-client.repository.js +4 -0
  475. package/dist/repositories/oauth-client.repository.js.map +1 -0
  476. package/dist/repositories/oauth-code.repository.d.ts +24 -0
  477. package/dist/repositories/oauth-code.repository.d.ts.map +1 -0
  478. package/dist/repositories/oauth-code.repository.js +47 -0
  479. package/dist/repositories/oauth-code.repository.js.map +1 -0
  480. package/dist/repositories/oauth-device-code.repository.d.ts +29 -0
  481. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -0
  482. package/dist/repositories/oauth-device-code.repository.js +110 -0
  483. package/dist/repositories/oauth-device-code.repository.js.map +1 -0
  484. package/dist/repositories/password-reset.repository.d.ts +19 -0
  485. package/dist/repositories/password-reset.repository.d.ts.map +1 -0
  486. package/dist/repositories/password-reset.repository.js +53 -0
  487. package/dist/repositories/password-reset.repository.js.map +1 -0
  488. package/dist/repositories/pending-oauth-registration.repository.d.ts +38 -0
  489. package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -0
  490. package/dist/repositories/pending-oauth-registration.repository.js +50 -0
  491. package/dist/repositories/pending-oauth-registration.repository.js.map +1 -0
  492. package/dist/repositories/revoked-token.repository.d.ts +52 -0
  493. package/dist/repositories/revoked-token.repository.d.ts.map +1 -0
  494. package/dist/repositories/revoked-token.repository.js +86 -0
  495. package/dist/repositories/revoked-token.repository.js.map +1 -0
  496. package/dist/repositories/scheduler-job.repository.d.ts +5 -0
  497. package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
  498. package/dist/repositories/scheduler-job.repository.js +4 -0
  499. package/dist/repositories/scheduler-job.repository.js.map +1 -0
  500. package/dist/repositories/terms-content.repository.d.ts +5 -0
  501. package/dist/repositories/terms-content.repository.d.ts.map +1 -0
  502. package/dist/repositories/terms-content.repository.js +4 -0
  503. package/dist/repositories/terms-content.repository.js.map +1 -0
  504. package/dist/repositories/terms.repository.d.ts +9 -0
  505. package/dist/repositories/terms.repository.d.ts.map +1 -0
  506. package/dist/repositories/terms.repository.js +12 -0
  507. package/dist/repositories/terms.repository.js.map +1 -0
  508. package/dist/repositories/user-consent.repository.d.ts +22 -0
  509. package/dist/repositories/user-consent.repository.d.ts.map +1 -0
  510. package/dist/repositories/user-consent.repository.js +51 -0
  511. package/dist/repositories/user-consent.repository.js.map +1 -0
  512. package/dist/repositories/user-oauth.repository.d.ts +68 -0
  513. package/dist/repositories/user-oauth.repository.d.ts.map +1 -0
  514. package/dist/repositories/user-oauth.repository.js +94 -0
  515. package/dist/repositories/user-oauth.repository.js.map +1 -0
  516. package/dist/repositories/user-passkey.repository.d.ts +193 -0
  517. package/dist/repositories/user-passkey.repository.d.ts.map +1 -0
  518. package/dist/repositories/user-passkey.repository.js +61 -0
  519. package/dist/repositories/user-passkey.repository.js.map +1 -0
  520. package/dist/repositories/user-terms-consent.repository.d.ts +38 -0
  521. package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -0
  522. package/dist/repositories/user-terms-consent.repository.js +71 -0
  523. package/dist/repositories/user-terms-consent.repository.js.map +1 -0
  524. package/dist/repositories/user-totp-recovery-code.repository.d.ts +388 -0
  525. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -0
  526. package/dist/repositories/user-totp-recovery-code.repository.js +41 -0
  527. package/dist/repositories/user-totp-recovery-code.repository.js.map +1 -0
  528. package/dist/repositories/user-totp.repository.d.ts +582 -0
  529. package/dist/repositories/user-totp.repository.d.ts.map +1 -0
  530. package/dist/repositories/user-totp.repository.js +56 -0
  531. package/dist/repositories/user-totp.repository.js.map +1 -0
  532. package/dist/repositories/user.repository.d.ts +34 -0
  533. package/dist/repositories/user.repository.d.ts.map +1 -0
  534. package/dist/repositories/user.repository.js +74 -0
  535. package/dist/repositories/user.repository.js.map +1 -0
  536. package/dist/routes/.well-known/index.d.ts +39 -0
  537. package/dist/routes/.well-known/index.d.ts.map +1 -0
  538. package/dist/routes/.well-known/index.js +4 -0
  539. package/dist/routes/.well-known/index.js.map +1 -0
  540. package/dist/routes/.well-known/openid-configuration/get.d.ts +46 -0
  541. package/dist/routes/.well-known/openid-configuration/get.d.ts.map +1 -0
  542. package/dist/routes/.well-known/openid-configuration/get.js +19 -0
  543. package/dist/routes/.well-known/openid-configuration/get.js.map +1 -0
  544. package/dist/routes/api/admin/index.d.ts +185 -0
  545. package/dist/routes/api/admin/index.d.ts.map +1 -0
  546. package/dist/routes/api/admin/index.js +13 -0
  547. package/dist/routes/api/admin/index.js.map +1 -0
  548. package/dist/routes/api/admin/me/get.d.ts +26 -0
  549. package/dist/routes/api/admin/me/get.d.ts.map +1 -0
  550. package/dist/routes/api/admin/me/get.js +29 -0
  551. package/dist/routes/api/admin/me/get.js.map +1 -0
  552. package/dist/routes/api/admin/users/index.d.ts +162 -0
  553. package/dist/routes/api/admin/users/index.d.ts.map +1 -0
  554. package/dist/routes/api/admin/users/index.js +166 -0
  555. package/dist/routes/api/admin/users/index.js.map +1 -0
  556. package/dist/routes/api/auth/2fa/methods/get.d.ts +14 -0
  557. package/dist/routes/api/auth/2fa/methods/get.d.ts.map +1 -0
  558. package/dist/routes/api/auth/2fa/methods/get.js +50 -0
  559. package/dist/routes/api/auth/2fa/methods/get.js.map +1 -0
  560. package/dist/routes/api/auth/accounts/get.d.ts +28 -0
  561. package/dist/routes/api/auth/accounts/get.d.ts.map +1 -0
  562. package/dist/routes/api/auth/accounts/get.js +49 -0
  563. package/dist/routes/api/auth/accounts/get.js.map +1 -0
  564. package/dist/routes/api/auth/accounts/remove.post.d.ts +30 -0
  565. package/dist/routes/api/auth/accounts/remove.post.d.ts.map +1 -0
  566. package/dist/routes/api/auth/accounts/remove.post.js +32 -0
  567. package/dist/routes/api/auth/accounts/remove.post.js.map +1 -0
  568. package/dist/routes/api/auth/accounts/select.post.d.ts +31 -0
  569. package/dist/routes/api/auth/accounts/select.post.d.ts.map +1 -0
  570. package/dist/routes/api/auth/accounts/select.post.js +26 -0
  571. package/dist/routes/api/auth/accounts/select.post.js.map +1 -0
  572. package/dist/routes/api/auth/email/resend/post.d.ts +22 -0
  573. package/dist/routes/api/auth/email/resend/post.d.ts.map +1 -0
  574. package/dist/routes/api/auth/email/resend/post.js +64 -0
  575. package/dist/routes/api/auth/email/resend/post.js.map +1 -0
  576. package/dist/routes/api/auth/email/verify/post.d.ts +30 -0
  577. package/dist/routes/api/auth/email/verify/post.d.ts.map +1 -0
  578. package/dist/routes/api/auth/email/verify/post.js +55 -0
  579. package/dist/routes/api/auth/email/verify/post.js.map +1 -0
  580. package/dist/routes/api/auth/index.d.ts +372 -0
  581. package/dist/routes/api/auth/index.d.ts.map +1 -0
  582. package/dist/routes/api/auth/index.js +33 -0
  583. package/dist/routes/api/auth/index.js.map +1 -0
  584. package/dist/routes/api/auth/login/post.d.ts +31 -0
  585. package/dist/routes/api/auth/login/post.d.ts.map +1 -0
  586. package/dist/routes/api/auth/login/post.js +75 -0
  587. package/dist/routes/api/auth/login/post.js.map +1 -0
  588. package/dist/routes/api/auth/logout/post.d.ts +14 -0
  589. package/dist/routes/api/auth/logout/post.d.ts.map +1 -0
  590. package/dist/routes/api/auth/logout/post.js +21 -0
  591. package/dist/routes/api/auth/logout/post.js.map +1 -0
  592. package/dist/routes/api/auth/passkey/options/post.d.ts +31 -0
  593. package/dist/routes/api/auth/passkey/options/post.d.ts.map +1 -0
  594. package/dist/routes/api/auth/passkey/options/post.js +43 -0
  595. package/dist/routes/api/auth/passkey/options/post.js.map +1 -0
  596. package/dist/routes/api/auth/passkey/verify/post.d.ts +42 -0
  597. package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -0
  598. package/dist/routes/api/auth/passkey/verify/post.js +75 -0
  599. package/dist/routes/api/auth/passkey/verify/post.js.map +1 -0
  600. package/dist/routes/api/auth/password/forgot/post.d.ts +22 -0
  601. package/dist/routes/api/auth/password/forgot/post.d.ts.map +1 -0
  602. package/dist/routes/api/auth/password/forgot/post.js +72 -0
  603. package/dist/routes/api/auth/password/forgot/post.js.map +1 -0
  604. package/dist/routes/api/auth/password/reset/post.d.ts +19 -0
  605. package/dist/routes/api/auth/password/reset/post.d.ts.map +1 -0
  606. package/dist/routes/api/auth/password/reset/post.js +62 -0
  607. package/dist/routes/api/auth/password/reset/post.js.map +1 -0
  608. package/dist/routes/api/auth/register/post.d.ts +40 -0
  609. package/dist/routes/api/auth/register/post.d.ts.map +1 -0
  610. package/dist/routes/api/auth/register/post.js +95 -0
  611. package/dist/routes/api/auth/register/post.js.map +1 -0
  612. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +37 -0
  613. package/dist/routes/api/auth/totp/recovery/verify/post.d.ts.map +1 -0
  614. package/dist/routes/api/auth/totp/recovery/verify/post.js +68 -0
  615. package/dist/routes/api/auth/totp/recovery/verify/post.js.map +1 -0
  616. package/dist/routes/api/auth/totp/verify/post.d.ts +30 -0
  617. package/dist/routes/api/auth/totp/verify/post.d.ts.map +1 -0
  618. package/dist/routes/api/auth/totp/verify/post.js +59 -0
  619. package/dist/routes/api/auth/totp/verify/post.js.map +1 -0
  620. package/dist/routes/api/config/get.d.ts +76 -0
  621. package/dist/routes/api/config/get.d.ts.map +1 -0
  622. package/dist/routes/api/config/get.js +84 -0
  623. package/dist/routes/api/config/get.js.map +1 -0
  624. package/dist/routes/api/config/index.d.ts +76 -0
  625. package/dist/routes/api/config/index.d.ts.map +1 -0
  626. package/dist/routes/api/config/index.js +4 -0
  627. package/dist/routes/api/config/index.js.map +1 -0
  628. package/dist/routes/api/consent/get.d.ts +37 -0
  629. package/dist/routes/api/consent/get.d.ts.map +1 -0
  630. package/dist/routes/api/consent/get.js +73 -0
  631. package/dist/routes/api/consent/get.js.map +1 -0
  632. package/dist/routes/api/consent/index.d.ts +65 -0
  633. package/dist/routes/api/consent/index.d.ts.map +1 -0
  634. package/dist/routes/api/consent/index.js +7 -0
  635. package/dist/routes/api/consent/index.js.map +1 -0
  636. package/dist/routes/api/consent/post.d.ts +44 -0
  637. package/dist/routes/api/consent/post.d.ts.map +1 -0
  638. package/dist/routes/api/consent/post.js +286 -0
  639. package/dist/routes/api/consent/post.js.map +1 -0
  640. package/dist/routes/api/docs/get.d.ts +17 -0
  641. package/dist/routes/api/docs/get.d.ts.map +1 -0
  642. package/dist/routes/api/docs/get.js +19 -0
  643. package/dist/routes/api/docs/get.js.map +1 -0
  644. package/dist/routes/api/docs/index.d.ts +12 -0
  645. package/dist/routes/api/docs/index.d.ts.map +1 -0
  646. package/dist/routes/api/docs/index.js +4 -0
  647. package/dist/routes/api/docs/index.js.map +1 -0
  648. package/dist/routes/api/health/get.d.ts +36 -0
  649. package/dist/routes/api/health/get.d.ts.map +1 -0
  650. package/dist/routes/api/health/get.js +64 -0
  651. package/dist/routes/api/health/get.js.map +1 -0
  652. package/dist/routes/api/health/index.d.ts +66 -0
  653. package/dist/routes/api/health/index.d.ts.map +1 -0
  654. package/dist/routes/api/health/index.js +9 -0
  655. package/dist/routes/api/health/index.js.map +1 -0
  656. package/dist/routes/api/health/live/get.d.ts +20 -0
  657. package/dist/routes/api/health/live/get.d.ts.map +1 -0
  658. package/dist/routes/api/health/live/get.js +28 -0
  659. package/dist/routes/api/health/live/get.js.map +1 -0
  660. package/dist/routes/api/health/ready/get.d.ts +35 -0
  661. package/dist/routes/api/health/ready/get.d.ts.map +1 -0
  662. package/dist/routes/api/health/ready/get.js +60 -0
  663. package/dist/routes/api/health/ready/get.js.map +1 -0
  664. package/dist/routes/api/index.d.ts +1286 -0
  665. package/dist/routes/api/index.d.ts.map +1 -0
  666. package/dist/routes/api/index.js +21 -0
  667. package/dist/routes/api/index.js.map +1 -0
  668. package/dist/routes/api/oauth/_provider/authorize/get.d.ts +21 -0
  669. package/dist/routes/api/oauth/_provider/authorize/get.d.ts.map +1 -0
  670. package/dist/routes/api/oauth/_provider/authorize/get.js +72 -0
  671. package/dist/routes/api/oauth/_provider/authorize/get.js.map +1 -0
  672. package/dist/routes/api/oauth/_provider/callback/get.d.ts +42 -0
  673. package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -0
  674. package/dist/routes/api/oauth/_provider/callback/get.js +146 -0
  675. package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -0
  676. package/dist/routes/api/oauth/_provider/callback/post.d.ts +42 -0
  677. package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -0
  678. package/dist/routes/api/oauth/_provider/callback/post.js +178 -0
  679. package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -0
  680. package/dist/routes/api/oauth/_provider/delete.d.ts +18 -0
  681. package/dist/routes/api/oauth/_provider/delete.d.ts.map +1 -0
  682. package/dist/routes/api/oauth/_provider/delete.js +62 -0
  683. package/dist/routes/api/oauth/_provider/delete.js.map +1 -0
  684. package/dist/routes/api/oauth/authorization-context/get.d.ts +38 -0
  685. package/dist/routes/api/oauth/authorization-context/get.d.ts.map +1 -0
  686. package/dist/routes/api/oauth/authorization-context/get.js +70 -0
  687. package/dist/routes/api/oauth/authorization-context/get.js.map +1 -0
  688. package/dist/routes/api/oauth/index.d.ts +142 -0
  689. package/dist/routes/api/oauth/index.d.ts.map +1 -0
  690. package/dist/routes/api/oauth/index.js +13 -0
  691. package/dist/routes/api/oauth/index.js.map +1 -0
  692. package/dist/routes/api/terms/consent/post.d.ts +29 -0
  693. package/dist/routes/api/terms/consent/post.d.ts.map +1 -0
  694. package/dist/routes/api/terms/consent/post.js +111 -0
  695. package/dist/routes/api/terms/consent/post.js.map +1 -0
  696. package/dist/routes/api/terms/get.d.ts +40 -0
  697. package/dist/routes/api/terms/get.d.ts.map +1 -0
  698. package/dist/routes/api/terms/get.js +53 -0
  699. package/dist/routes/api/terms/get.js.map +1 -0
  700. package/dist/routes/api/terms/index.d.ts +55 -0
  701. package/dist/routes/api/terms/index.d.ts.map +1 -0
  702. package/dist/routes/api/terms/index.js +7 -0
  703. package/dist/routes/api/terms/index.js.map +1 -0
  704. package/dist/routes/api/user/delete.d.ts +21 -0
  705. package/dist/routes/api/user/delete.d.ts.map +1 -0
  706. package/dist/routes/api/user/delete.js +89 -0
  707. package/dist/routes/api/user/delete.js.map +1 -0
  708. package/dist/routes/api/user/index.d.ts +337 -0
  709. package/dist/routes/api/user/index.d.ts.map +1 -0
  710. package/dist/routes/api/user/index.js +35 -0
  711. package/dist/routes/api/user/index.js.map +1 -0
  712. package/dist/routes/api/user/oauth-accounts/get.d.ts +23 -0
  713. package/dist/routes/api/user/oauth-accounts/get.d.ts.map +1 -0
  714. package/dist/routes/api/user/oauth-accounts/get.js +58 -0
  715. package/dist/routes/api/user/oauth-accounts/get.js.map +1 -0
  716. package/dist/routes/api/user/passkeys/_id/delete.d.ts +18 -0
  717. package/dist/routes/api/user/passkeys/_id/delete.d.ts.map +1 -0
  718. package/dist/routes/api/user/passkeys/_id/delete.js +87 -0
  719. package/dist/routes/api/user/passkeys/_id/delete.js.map +1 -0
  720. package/dist/routes/api/user/passkeys/_id/patch.d.ts +22 -0
  721. package/dist/routes/api/user/passkeys/_id/patch.d.ts.map +1 -0
  722. package/dist/routes/api/user/passkeys/_id/patch.js +64 -0
  723. package/dist/routes/api/user/passkeys/_id/patch.js.map +1 -0
  724. package/dist/routes/api/user/passkeys/get.d.ts +21 -0
  725. package/dist/routes/api/user/passkeys/get.d.ts.map +1 -0
  726. package/dist/routes/api/user/passkeys/get.js +52 -0
  727. package/dist/routes/api/user/passkeys/get.js.map +1 -0
  728. package/dist/routes/api/user/passkeys/register/options/post.d.ts +55 -0
  729. package/dist/routes/api/user/passkeys/register/options/post.d.ts.map +1 -0
  730. package/dist/routes/api/user/passkeys/register/options/post.js +74 -0
  731. package/dist/routes/api/user/passkeys/register/options/post.js.map +1 -0
  732. package/dist/routes/api/user/passkeys/register/verify/post.d.ts +51 -0
  733. package/dist/routes/api/user/passkeys/register/verify/post.d.ts.map +1 -0
  734. package/dist/routes/api/user/passkeys/register/verify/post.js +95 -0
  735. package/dist/routes/api/user/passkeys/register/verify/post.js.map +1 -0
  736. package/dist/routes/api/user/password/delete.d.ts +23 -0
  737. package/dist/routes/api/user/password/delete.d.ts.map +1 -0
  738. package/dist/routes/api/user/password/delete.js +78 -0
  739. package/dist/routes/api/user/password/delete.js.map +1 -0
  740. package/dist/routes/api/user/password/post.d.ts +23 -0
  741. package/dist/routes/api/user/password/post.d.ts.map +1 -0
  742. package/dist/routes/api/user/password/post.js +81 -0
  743. package/dist/routes/api/user/password/post.js.map +1 -0
  744. package/dist/routes/api/user/password/put.d.ts +24 -0
  745. package/dist/routes/api/user/password/put.d.ts.map +1 -0
  746. package/dist/routes/api/user/password/put.js +74 -0
  747. package/dist/routes/api/user/password/put.js.map +1 -0
  748. package/dist/routes/api/user/session/get.d.ts +33 -0
  749. package/dist/routes/api/user/session/get.d.ts.map +1 -0
  750. package/dist/routes/api/user/session/get.js +36 -0
  751. package/dist/routes/api/user/session/get.js.map +1 -0
  752. package/dist/routes/api/user/totp/confirm/post.d.ts +33 -0
  753. package/dist/routes/api/user/totp/confirm/post.d.ts.map +1 -0
  754. package/dist/routes/api/user/totp/confirm/post.js +73 -0
  755. package/dist/routes/api/user/totp/confirm/post.js.map +1 -0
  756. package/dist/routes/api/user/totp/delete.d.ts +23 -0
  757. package/dist/routes/api/user/totp/delete.d.ts.map +1 -0
  758. package/dist/routes/api/user/totp/delete.js +74 -0
  759. package/dist/routes/api/user/totp/delete.js.map +1 -0
  760. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +18 -0
  761. package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts.map +1 -0
  762. package/dist/routes/api/user/totp/recovery/regenerate/post.js +54 -0
  763. package/dist/routes/api/user/totp/recovery/regenerate/post.js.map +1 -0
  764. package/dist/routes/api/user/totp/setup/post.d.ts +22 -0
  765. package/dist/routes/api/user/totp/setup/post.d.ts.map +1 -0
  766. package/dist/routes/api/user/totp/setup/post.js +82 -0
  767. package/dist/routes/api/user/totp/setup/post.js.map +1 -0
  768. package/dist/routes/api/user/totp/verify/post.d.ts +23 -0
  769. package/dist/routes/api/user/totp/verify/post.d.ts.map +1 -0
  770. package/dist/routes/api/user/totp/verify/post.js +71 -0
  771. package/dist/routes/api/user/totp/verify/post.js.map +1 -0
  772. package/dist/routes/index.d.ts +1591 -0
  773. package/dist/routes/index.d.ts.map +1 -0
  774. package/dist/routes/index.js +9 -0
  775. package/dist/routes/index.js.map +1 -0
  776. package/dist/routes/oauth/.well-known/jwks/get.d.ts +24 -0
  777. package/dist/routes/oauth/.well-known/jwks/get.d.ts.map +1 -0
  778. package/dist/routes/oauth/.well-known/jwks/get.js +41 -0
  779. package/dist/routes/oauth/.well-known/jwks/get.js.map +1 -0
  780. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +68 -0
  781. package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -0
  782. package/dist/routes/oauth/.well-known/openid-configuration/get.js +193 -0
  783. package/dist/routes/oauth/.well-known/openid-configuration/get.js.map +1 -0
  784. package/dist/routes/oauth/authorize/get.d.ts +34 -0
  785. package/dist/routes/oauth/authorize/get.d.ts.map +1 -0
  786. package/dist/routes/oauth/authorize/get.js +179 -0
  787. package/dist/routes/oauth/authorize/get.js.map +1 -0
  788. package/dist/routes/oauth/client-auth.d.ts +10 -0
  789. package/dist/routes/oauth/client-auth.d.ts.map +1 -0
  790. package/dist/routes/oauth/client-auth.js +57 -0
  791. package/dist/routes/oauth/client-auth.js.map +1 -0
  792. package/dist/routes/oauth/cors.d.ts +9 -0
  793. package/dist/routes/oauth/cors.d.ts.map +1 -0
  794. package/dist/routes/oauth/cors.js +55 -0
  795. package/dist/routes/oauth/cors.js.map +1 -0
  796. package/dist/routes/oauth/device/get-post.d.ts +29 -0
  797. package/dist/routes/oauth/device/get-post.d.ts.map +1 -0
  798. package/dist/routes/oauth/device/get-post.js +73 -0
  799. package/dist/routes/oauth/device/get-post.js.map +1 -0
  800. package/dist/routes/oauth/device-authorization/post.d.ts +25 -0
  801. package/dist/routes/oauth/device-authorization/post.d.ts.map +1 -0
  802. package/dist/routes/oauth/device-authorization/post.js +89 -0
  803. package/dist/routes/oauth/device-authorization/post.js.map +1 -0
  804. package/dist/routes/oauth/end-session/get.d.ts +34 -0
  805. package/dist/routes/oauth/end-session/get.d.ts.map +1 -0
  806. package/dist/routes/oauth/end-session/get.js +83 -0
  807. package/dist/routes/oauth/end-session/get.js.map +1 -0
  808. package/dist/routes/oauth/index.d.ts +272 -0
  809. package/dist/routes/oauth/index.d.ts.map +1 -0
  810. package/dist/routes/oauth/index.js +25 -0
  811. package/dist/routes/oauth/index.js.map +1 -0
  812. package/dist/routes/oauth/introspect/post.d.ts +29 -0
  813. package/dist/routes/oauth/introspect/post.d.ts.map +1 -0
  814. package/dist/routes/oauth/introspect/post.js +104 -0
  815. package/dist/routes/oauth/introspect/post.js.map +1 -0
  816. package/dist/routes/oauth/revoke/post.d.ts +22 -0
  817. package/dist/routes/oauth/revoke/post.d.ts.map +1 -0
  818. package/dist/routes/oauth/revoke/post.js +104 -0
  819. package/dist/routes/oauth/revoke/post.js.map +1 -0
  820. package/dist/routes/oauth/token/post.d.ts +31 -0
  821. package/dist/routes/oauth/token/post.d.ts.map +1 -0
  822. package/dist/routes/oauth/token/post.js +171 -0
  823. package/dist/routes/oauth/token/post.js.map +1 -0
  824. package/dist/routes/oauth/userinfo/get.d.ts +35 -0
  825. package/dist/routes/oauth/userinfo/get.d.ts.map +1 -0
  826. package/dist/routes/oauth/userinfo/get.js +94 -0
  827. package/dist/routes/oauth/userinfo/get.js.map +1 -0
  828. package/dist/schemas/error.d.ts +2354 -0
  829. package/dist/schemas/error.d.ts.map +1 -0
  830. package/dist/schemas/error.js +174 -0
  831. package/dist/schemas/error.js.map +1 -0
  832. package/dist/schemas/field.d.ts +92 -0
  833. package/dist/schemas/field.d.ts.map +1 -0
  834. package/dist/schemas/field.js +183 -0
  835. package/dist/schemas/field.js.map +1 -0
  836. package/dist/schemas/header.d.ts +7 -0
  837. package/dist/schemas/header.d.ts.map +1 -0
  838. package/dist/schemas/header.js +11 -0
  839. package/dist/schemas/header.js.map +1 -0
  840. package/dist/schemas/oauth.d.ts +26 -0
  841. package/dist/schemas/oauth.d.ts.map +1 -0
  842. package/dist/schemas/oauth.js +51 -0
  843. package/dist/schemas/oauth.js.map +1 -0
  844. package/dist/schemas/provider.d.ts +7 -0
  845. package/dist/schemas/provider.d.ts.map +1 -0
  846. package/dist/schemas/provider.js +31 -0
  847. package/dist/schemas/provider.js.map +1 -0
  848. package/dist/schemas/response.d.ts +678 -0
  849. package/dist/schemas/response.d.ts.map +1 -0
  850. package/dist/schemas/response.js +642 -0
  851. package/dist/schemas/response.js.map +1 -0
  852. package/dist/schemas/terms.d.ts +93 -0
  853. package/dist/schemas/terms.d.ts.map +1 -0
  854. package/dist/schemas/terms.js +109 -0
  855. package/dist/schemas/terms.js.map +1 -0
  856. package/dist/seeders/config.seeder.d.ts +23 -0
  857. package/dist/seeders/config.seeder.d.ts.map +1 -0
  858. package/dist/seeders/config.seeder.js +258 -0
  859. package/dist/seeders/config.seeder.js.map +1 -0
  860. package/dist/services/account-selection.service.d.ts +52 -0
  861. package/dist/services/account-selection.service.d.ts.map +1 -0
  862. package/dist/services/account-selection.service.js +120 -0
  863. package/dist/services/account-selection.service.js.map +1 -0
  864. package/dist/services/cleanup.service.d.ts +166 -0
  865. package/dist/services/cleanup.service.d.ts.map +1 -0
  866. package/dist/services/cleanup.service.js +605 -0
  867. package/dist/services/cleanup.service.js.map +1 -0
  868. package/dist/services/container.d.ts +229 -0
  869. package/dist/services/container.d.ts.map +1 -0
  870. package/dist/services/container.js +82 -0
  871. package/dist/services/container.js.map +1 -0
  872. package/dist/services/email.service.d.ts +69 -0
  873. package/dist/services/email.service.d.ts.map +1 -0
  874. package/dist/services/email.service.js +164 -0
  875. package/dist/services/email.service.js.map +1 -0
  876. package/dist/services/jwt.service.d.ts +331 -0
  877. package/dist/services/jwt.service.d.ts.map +1 -0
  878. package/dist/services/jwt.service.js +571 -0
  879. package/dist/services/jwt.service.js.map +1 -0
  880. package/dist/services/mikro.service.d.ts +49 -0
  881. package/dist/services/mikro.service.d.ts.map +1 -0
  882. package/dist/services/mikro.service.js +77 -0
  883. package/dist/services/mikro.service.js.map +1 -0
  884. package/dist/services/oauth-authorize.service.d.ts +144 -0
  885. package/dist/services/oauth-authorize.service.d.ts.map +1 -0
  886. package/dist/services/oauth-authorize.service.js +808 -0
  887. package/dist/services/oauth-authorize.service.js.map +1 -0
  888. package/dist/services/oauth-client.service.d.ts +44 -0
  889. package/dist/services/oauth-client.service.d.ts.map +1 -0
  890. package/dist/services/oauth-client.service.js +128 -0
  891. package/dist/services/oauth-client.service.js.map +1 -0
  892. package/dist/services/oauth-connect.service.d.ts +180 -0
  893. package/dist/services/oauth-connect.service.d.ts.map +1 -0
  894. package/dist/services/oauth-connect.service.js +730 -0
  895. package/dist/services/oauth-connect.service.js.map +1 -0
  896. package/dist/services/oauth-token.service.d.ts +180 -0
  897. package/dist/services/oauth-token.service.d.ts.map +1 -0
  898. package/dist/services/oauth-token.service.js +565 -0
  899. package/dist/services/oauth-token.service.js.map +1 -0
  900. package/dist/services/passkey.service.d.ts +73 -0
  901. package/dist/services/passkey.service.d.ts.map +1 -0
  902. package/dist/services/passkey.service.js +207 -0
  903. package/dist/services/passkey.service.js.map +1 -0
  904. package/dist/services/password-auth.service.d.ts +24 -0
  905. package/dist/services/password-auth.service.d.ts.map +1 -0
  906. package/dist/services/password-auth.service.js +87 -0
  907. package/dist/services/password-auth.service.js.map +1 -0
  908. package/dist/services/password-reset.service.d.ts +31 -0
  909. package/dist/services/password-reset.service.d.ts.map +1 -0
  910. package/dist/services/password-reset.service.js +54 -0
  911. package/dist/services/password-reset.service.js.map +1 -0
  912. package/dist/services/scheduler.service.d.ts +20 -0
  913. package/dist/services/scheduler.service.d.ts.map +1 -0
  914. package/dist/services/scheduler.service.js +85 -0
  915. package/dist/services/scheduler.service.js.map +1 -0
  916. package/dist/services/security.service.d.ts +17 -0
  917. package/dist/services/security.service.d.ts.map +1 -0
  918. package/dist/services/security.service.js +84 -0
  919. package/dist/services/security.service.js.map +1 -0
  920. package/dist/services/terms.service.d.ts +131 -0
  921. package/dist/services/terms.service.d.ts.map +1 -0
  922. package/dist/services/terms.service.js +210 -0
  923. package/dist/services/terms.service.js.map +1 -0
  924. package/dist/services/totp.service.d.ts +86 -0
  925. package/dist/services/totp.service.d.ts.map +1 -0
  926. package/dist/services/totp.service.js +244 -0
  927. package/dist/services/totp.service.js.map +1 -0
  928. package/dist/services/user-consent.service.d.ts +35 -0
  929. package/dist/services/user-consent.service.d.ts.map +1 -0
  930. package/dist/services/user-consent.service.js +45 -0
  931. package/dist/services/user-consent.service.js.map +1 -0
  932. package/dist/services/user.service.d.ts +87 -0
  933. package/dist/services/user.service.d.ts.map +1 -0
  934. package/dist/services/user.service.js +280 -0
  935. package/dist/services/user.service.js.map +1 -0
  936. package/package.json +249 -0
  937. package/public/assets/2fa-B5vLgDXQ.js +2 -0
  938. package/public/assets/2fa-B5vLgDXQ.js.map +1 -0
  939. package/public/assets/2fa-BqsM_D-X.js +2 -0
  940. package/public/assets/2fa-BqsM_D-X.js.map +1 -0
  941. package/public/assets/2fa-C5vUVgr_.js +2 -0
  942. package/public/assets/2fa-C5vUVgr_.js.map +1 -0
  943. package/public/assets/2fa-CCOTIHDZ.js +2 -0
  944. package/public/assets/2fa-CCOTIHDZ.js.map +1 -0
  945. package/public/assets/DialogHandle-BmtK2pRn.js +2 -0
  946. package/public/assets/DialogHandle-BmtK2pRn.js.map +1 -0
  947. package/public/assets/FieldItemContext-BeNfhOsU.js +2 -0
  948. package/public/assets/FieldItemContext-BeNfhOsU.js.map +1 -0
  949. package/public/assets/admin-BPijkLw-.js +2 -0
  950. package/public/assets/admin-BPijkLw-.js.map +1 -0
  951. package/public/assets/admin-users-DvPbw1Vq.js +2 -0
  952. package/public/assets/admin-users-DvPbw1Vq.js.map +1 -0
  953. package/public/assets/alert-leqyvHOp.js +2 -0
  954. package/public/assets/alert-leqyvHOp.js.map +1 -0
  955. package/public/assets/auth-choice-row-BCGjuedo.js +2 -0
  956. package/public/assets/auth-choice-row-BCGjuedo.js.map +1 -0
  957. package/public/assets/auth-field-DD8kvl--.js +2 -0
  958. package/public/assets/auth-field-DD8kvl--.js.map +1 -0
  959. package/public/assets/auth-footer-Cz5ivsDc.js +2 -0
  960. package/public/assets/auth-footer-Cz5ivsDc.js.map +1 -0
  961. package/public/assets/auth-layout-VtpryDof.js +2 -0
  962. package/public/assets/auth-layout-VtpryDof.js.map +1 -0
  963. package/public/assets/auth-page-header-CIn2E4zI.js +2 -0
  964. package/public/assets/auth-page-header-CIn2E4zI.js.map +1 -0
  965. package/public/assets/authorization-context-banner-SOuBHWIb.js +2 -0
  966. package/public/assets/authorization-context-banner-SOuBHWIb.js.map +1 -0
  967. package/public/assets/avatar-BEQjf2x6.js +2 -0
  968. package/public/assets/avatar-BEQjf2x6.js.map +1 -0
  969. package/public/assets/badge-CsOfUji0.js +2 -0
  970. package/public/assets/badge-CsOfUji0.js.map +1 -0
  971. package/public/assets/checkbox-gdHnSFQ-.js +2 -0
  972. package/public/assets/checkbox-gdHnSFQ-.js.map +1 -0
  973. package/public/assets/chevron-right-CN0jUyV0.js +2 -0
  974. package/public/assets/chevron-right-CN0jUyV0.js.map +1 -0
  975. package/public/assets/circle-check-6QTLhwM_.js +2 -0
  976. package/public/assets/circle-check-6QTLhwM_.js.map +1 -0
  977. package/public/assets/config-DTQCUlfZ.js +2 -0
  978. package/public/assets/config-DTQCUlfZ.js.map +1 -0
  979. package/public/assets/consent-BqqFDdsr.js +2 -0
  980. package/public/assets/consent-BqqFDdsr.js.map +1 -0
  981. package/public/assets/consent-CfRbz2R7.js +2 -0
  982. package/public/assets/consent-CfRbz2R7.js.map +1 -0
  983. package/public/assets/createLucideIcon-BPpAIXR_.js +2 -0
  984. package/public/assets/createLucideIcon-BPpAIXR_.js.map +1 -0
  985. package/public/assets/email-C5vUVgr_.js +2 -0
  986. package/public/assets/email-C5vUVgr_.js.map +1 -0
  987. package/public/assets/email-CKKakxPJ.js +2 -0
  988. package/public/assets/email-CKKakxPJ.js.map +1 -0
  989. package/public/assets/error-BMXxpgfR.js +2 -0
  990. package/public/assets/error-BMXxpgfR.js.map +1 -0
  991. package/public/assets/field-Cn4H1CUj.js +3 -0
  992. package/public/assets/field-Cn4H1CUj.js.map +1 -0
  993. package/public/assets/fingerprint-pattern-DP62Vk8x.js +2 -0
  994. package/public/assets/fingerprint-pattern-DP62Vk8x.js.map +1 -0
  995. package/public/assets/forgot-C5vUVgr_.js +2 -0
  996. package/public/assets/forgot-C5vUVgr_.js.map +1 -0
  997. package/public/assets/forgot-rO9sByfV.js +2 -0
  998. package/public/assets/forgot-rO9sByfV.js.map +1 -0
  999. package/public/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  1000. package/public/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  1001. package/public/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  1002. package/public/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  1003. package/public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  1004. package/public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  1005. package/public/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  1006. package/public/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  1007. package/public/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  1008. package/public/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  1009. package/public/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
  1010. package/public/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
  1011. package/public/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
  1012. package/public/assets/ibm-plex-sans-jp-10-400-normal-BLMYXIZq.woff2 +0 -0
  1013. package/public/assets/ibm-plex-sans-jp-10-400-normal-DJrewyrW.woff +0 -0
  1014. package/public/assets/ibm-plex-sans-jp-10-600-normal-B5S02aip.woff2 +0 -0
  1015. package/public/assets/ibm-plex-sans-jp-10-600-normal-DP69BzJV.woff +0 -0
  1016. package/public/assets/ibm-plex-sans-jp-10-700-normal-9JfFFKCo.woff +0 -0
  1017. package/public/assets/ibm-plex-sans-jp-10-700-normal-Blnt0RhT.woff2 +0 -0
  1018. package/public/assets/ibm-plex-sans-jp-100-400-normal-4_aXP0Hy.woff2 +0 -0
  1019. package/public/assets/ibm-plex-sans-jp-100-400-normal-DsMZ2scz.woff +0 -0
  1020. package/public/assets/ibm-plex-sans-jp-100-600-normal-Bolb9iqL.woff2 +0 -0
  1021. package/public/assets/ibm-plex-sans-jp-100-600-normal-nIl-leH5.woff +0 -0
  1022. package/public/assets/ibm-plex-sans-jp-100-700-normal-Bkd0xED8.woff +0 -0
  1023. package/public/assets/ibm-plex-sans-jp-100-700-normal-CvaNbDMd.woff2 +0 -0
  1024. package/public/assets/ibm-plex-sans-jp-101-400-normal-DoWmZlZj.woff +0 -0
  1025. package/public/assets/ibm-plex-sans-jp-101-400-normal-y2nxydha.woff2 +0 -0
  1026. package/public/assets/ibm-plex-sans-jp-101-600-normal-BKchJvlk.woff2 +0 -0
  1027. package/public/assets/ibm-plex-sans-jp-101-600-normal-BrpHYkNm.woff +0 -0
  1028. package/public/assets/ibm-plex-sans-jp-101-700-normal-CVueR0Vp.woff2 +0 -0
  1029. package/public/assets/ibm-plex-sans-jp-101-700-normal-DJ1MIwHY.woff +0 -0
  1030. package/public/assets/ibm-plex-sans-jp-102-400-normal-BQfFShQ1.woff2 +0 -0
  1031. package/public/assets/ibm-plex-sans-jp-102-400-normal-Ca0txE7W.woff +0 -0
  1032. package/public/assets/ibm-plex-sans-jp-102-600-normal-B1Puw4D2.woff2 +0 -0
  1033. package/public/assets/ibm-plex-sans-jp-102-600-normal-CUZjz5v8.woff +0 -0
  1034. package/public/assets/ibm-plex-sans-jp-102-700-normal-BkK1TRsE.woff2 +0 -0
  1035. package/public/assets/ibm-plex-sans-jp-102-700-normal-ZVcO00Fl.woff +0 -0
  1036. package/public/assets/ibm-plex-sans-jp-103-400-normal-DHwmA74W.woff +0 -0
  1037. package/public/assets/ibm-plex-sans-jp-103-400-normal-DNs9Omj-.woff2 +0 -0
  1038. package/public/assets/ibm-plex-sans-jp-103-600-normal-BW8Frffd.woff +0 -0
  1039. package/public/assets/ibm-plex-sans-jp-103-600-normal-tN_-CKym.woff2 +0 -0
  1040. package/public/assets/ibm-plex-sans-jp-103-700-normal-CXAkQppa.woff2 +0 -0
  1041. package/public/assets/ibm-plex-sans-jp-103-700-normal-DNgJaILb.woff +0 -0
  1042. package/public/assets/ibm-plex-sans-jp-104-400-normal-BmhZQdzl.woff +0 -0
  1043. package/public/assets/ibm-plex-sans-jp-104-400-normal-CuKiid_t.woff2 +0 -0
  1044. package/public/assets/ibm-plex-sans-jp-104-600-normal-2KjU-YTd.woff2 +0 -0
  1045. package/public/assets/ibm-plex-sans-jp-104-600-normal-Duw986jf.woff +0 -0
  1046. package/public/assets/ibm-plex-sans-jp-104-700-normal-CYzW5SnO.woff2 +0 -0
  1047. package/public/assets/ibm-plex-sans-jp-104-700-normal-Vn6i4czv.woff +0 -0
  1048. package/public/assets/ibm-plex-sans-jp-105-400-normal-BBf-_m9N.woff +0 -0
  1049. package/public/assets/ibm-plex-sans-jp-105-400-normal-CHWaGU9J.woff2 +0 -0
  1050. package/public/assets/ibm-plex-sans-jp-105-600-normal-CmUdXGK4.woff +0 -0
  1051. package/public/assets/ibm-plex-sans-jp-105-600-normal-Eel3dN7e.woff2 +0 -0
  1052. package/public/assets/ibm-plex-sans-jp-105-700-normal-Cv9j40LU.woff2 +0 -0
  1053. package/public/assets/ibm-plex-sans-jp-105-700-normal-DWwtLgxy.woff +0 -0
  1054. package/public/assets/ibm-plex-sans-jp-106-400-normal-CGlLvzZs.woff2 +0 -0
  1055. package/public/assets/ibm-plex-sans-jp-106-400-normal-foxE5hHG.woff +0 -0
  1056. package/public/assets/ibm-plex-sans-jp-106-600-normal-B1bzLzbH.woff2 +0 -0
  1057. package/public/assets/ibm-plex-sans-jp-106-600-normal-tHp1RYGF.woff +0 -0
  1058. package/public/assets/ibm-plex-sans-jp-106-700-normal-BtC5W1lQ.woff2 +0 -0
  1059. package/public/assets/ibm-plex-sans-jp-106-700-normal-DuUOTgvs.woff +0 -0
  1060. package/public/assets/ibm-plex-sans-jp-107-400-normal-2yW6cSNP.woff2 +0 -0
  1061. package/public/assets/ibm-plex-sans-jp-107-400-normal-Dh4QR9Sa.woff +0 -0
  1062. package/public/assets/ibm-plex-sans-jp-107-600-normal-3L-o-gNc.woff +0 -0
  1063. package/public/assets/ibm-plex-sans-jp-107-600-normal-JAonwJOj.woff2 +0 -0
  1064. package/public/assets/ibm-plex-sans-jp-107-700-normal-BPH5rI6C.woff +0 -0
  1065. package/public/assets/ibm-plex-sans-jp-107-700-normal-Cr7-iFW7.woff2 +0 -0
  1066. package/public/assets/ibm-plex-sans-jp-108-400-normal-BKXuaz7L.woff2 +0 -0
  1067. package/public/assets/ibm-plex-sans-jp-108-400-normal-CMeK7Yoj.woff +0 -0
  1068. package/public/assets/ibm-plex-sans-jp-108-600-normal-9ormcCnp.woff +0 -0
  1069. package/public/assets/ibm-plex-sans-jp-108-600-normal-CIZc2z7F.woff2 +0 -0
  1070. package/public/assets/ibm-plex-sans-jp-108-700-normal-BQqq_N37.woff +0 -0
  1071. package/public/assets/ibm-plex-sans-jp-108-700-normal-DKrl9gDv.woff2 +0 -0
  1072. package/public/assets/ibm-plex-sans-jp-109-400-normal-BYkYsUMr.woff +0 -0
  1073. package/public/assets/ibm-plex-sans-jp-109-400-normal-DLZ5N3wZ.woff2 +0 -0
  1074. package/public/assets/ibm-plex-sans-jp-109-600-normal-DgvmKVfh.woff +0 -0
  1075. package/public/assets/ibm-plex-sans-jp-109-600-normal-J_8d2uPX.woff2 +0 -0
  1076. package/public/assets/ibm-plex-sans-jp-109-700-normal-BKzoJI_l.woff +0 -0
  1077. package/public/assets/ibm-plex-sans-jp-109-700-normal-CgGmrF-h.woff2 +0 -0
  1078. package/public/assets/ibm-plex-sans-jp-11-400-normal-C0WskPfy.woff2 +0 -0
  1079. package/public/assets/ibm-plex-sans-jp-11-400-normal-D4F8GONb.woff +0 -0
  1080. package/public/assets/ibm-plex-sans-jp-11-600-normal-HVxl9urI.woff2 +0 -0
  1081. package/public/assets/ibm-plex-sans-jp-11-600-normal-U3d7dgox.woff +0 -0
  1082. package/public/assets/ibm-plex-sans-jp-11-700-normal-B_TMqNrG.woff +0 -0
  1083. package/public/assets/ibm-plex-sans-jp-11-700-normal-DUhgBhd7.woff2 +0 -0
  1084. package/public/assets/ibm-plex-sans-jp-110-400-normal-BiGMHdAV.woff2 +0 -0
  1085. package/public/assets/ibm-plex-sans-jp-110-400-normal-CWciHSky.woff +0 -0
  1086. package/public/assets/ibm-plex-sans-jp-110-600-normal-BXI508QN.woff2 +0 -0
  1087. package/public/assets/ibm-plex-sans-jp-110-600-normal-C3nYbUvy.woff +0 -0
  1088. package/public/assets/ibm-plex-sans-jp-110-700-normal-A9EL87rF.woff2 +0 -0
  1089. package/public/assets/ibm-plex-sans-jp-110-700-normal-DjakDWxK.woff +0 -0
  1090. package/public/assets/ibm-plex-sans-jp-111-400-normal-36IKJEvJ.woff +0 -0
  1091. package/public/assets/ibm-plex-sans-jp-111-400-normal-DwkaZ2wL.woff2 +0 -0
  1092. package/public/assets/ibm-plex-sans-jp-111-600-normal-B0FD3VdV.woff +0 -0
  1093. package/public/assets/ibm-plex-sans-jp-111-600-normal-DjZCOVOv.woff2 +0 -0
  1094. package/public/assets/ibm-plex-sans-jp-111-700-normal-B2j03kCB.woff2 +0 -0
  1095. package/public/assets/ibm-plex-sans-jp-111-700-normal-Dv5sal4h.woff +0 -0
  1096. package/public/assets/ibm-plex-sans-jp-112-400-normal-DD55zx92.woff +0 -0
  1097. package/public/assets/ibm-plex-sans-jp-112-400-normal-DpWOC24h.woff2 +0 -0
  1098. package/public/assets/ibm-plex-sans-jp-112-600-normal-BkM4GSUi.woff2 +0 -0
  1099. package/public/assets/ibm-plex-sans-jp-112-600-normal-C2q6NvAJ.woff +0 -0
  1100. package/public/assets/ibm-plex-sans-jp-112-700-normal-Ci_Zf1oH.woff +0 -0
  1101. package/public/assets/ibm-plex-sans-jp-112-700-normal-Fyn9YqrR.woff2 +0 -0
  1102. package/public/assets/ibm-plex-sans-jp-113-400-normal-C-SwPUxy.woff2 +0 -0
  1103. package/public/assets/ibm-plex-sans-jp-113-400-normal-ngLrg9Ph.woff +0 -0
  1104. package/public/assets/ibm-plex-sans-jp-113-600-normal-FVXa1K7W.woff2 +0 -0
  1105. package/public/assets/ibm-plex-sans-jp-113-600-normal-pSsmDa5a.woff +0 -0
  1106. package/public/assets/ibm-plex-sans-jp-113-700-normal-CmNR_-6d.woff2 +0 -0
  1107. package/public/assets/ibm-plex-sans-jp-113-700-normal-kzCap4I7.woff +0 -0
  1108. package/public/assets/ibm-plex-sans-jp-114-400-normal-D64L80iO.woff2 +0 -0
  1109. package/public/assets/ibm-plex-sans-jp-114-400-normal-DkNQ39Bm.woff +0 -0
  1110. package/public/assets/ibm-plex-sans-jp-114-600-normal-CfAYQkvR.woff +0 -0
  1111. package/public/assets/ibm-plex-sans-jp-114-600-normal-DradD0b_.woff2 +0 -0
  1112. package/public/assets/ibm-plex-sans-jp-114-700-normal-CXZm0WJV.woff +0 -0
  1113. package/public/assets/ibm-plex-sans-jp-114-700-normal-DSXuAVj8.woff2 +0 -0
  1114. package/public/assets/ibm-plex-sans-jp-115-400-normal-BA3oFlL7.woff +0 -0
  1115. package/public/assets/ibm-plex-sans-jp-115-400-normal-DGp_yQCO.woff2 +0 -0
  1116. package/public/assets/ibm-plex-sans-jp-115-600-normal-5l6N5_Bf.woff +0 -0
  1117. package/public/assets/ibm-plex-sans-jp-115-600-normal-Bf5qTwLg.woff2 +0 -0
  1118. package/public/assets/ibm-plex-sans-jp-115-700-normal-CCrS9Tpv.woff +0 -0
  1119. package/public/assets/ibm-plex-sans-jp-115-700-normal-DhiQdU1x.woff2 +0 -0
  1120. package/public/assets/ibm-plex-sans-jp-116-400-normal-BidJdmrW.woff +0 -0
  1121. package/public/assets/ibm-plex-sans-jp-116-400-normal-DcXtXIIt.woff2 +0 -0
  1122. package/public/assets/ibm-plex-sans-jp-116-600-normal-Bwb7m1tn.woff2 +0 -0
  1123. package/public/assets/ibm-plex-sans-jp-116-600-normal-DShPLUNp.woff +0 -0
  1124. package/public/assets/ibm-plex-sans-jp-116-700-normal-C1DXoU6t.woff2 +0 -0
  1125. package/public/assets/ibm-plex-sans-jp-116-700-normal-C2BwbuD6.woff +0 -0
  1126. package/public/assets/ibm-plex-sans-jp-117-400-normal-Bq_d-uLr.woff +0 -0
  1127. package/public/assets/ibm-plex-sans-jp-117-400-normal-hyG31T85.woff2 +0 -0
  1128. package/public/assets/ibm-plex-sans-jp-117-600-normal-CEeS0kan.woff +0 -0
  1129. package/public/assets/ibm-plex-sans-jp-117-600-normal-DJWr9iDJ.woff2 +0 -0
  1130. package/public/assets/ibm-plex-sans-jp-117-700-normal-C1ei5J70.woff2 +0 -0
  1131. package/public/assets/ibm-plex-sans-jp-117-700-normal-zPjtn9S1.woff +0 -0
  1132. package/public/assets/ibm-plex-sans-jp-118-400-normal-DFkHFeXA.woff2 +0 -0
  1133. package/public/assets/ibm-plex-sans-jp-118-400-normal-TSsLEGdp.woff +0 -0
  1134. package/public/assets/ibm-plex-sans-jp-118-600-normal-Cvx3jb5D.woff +0 -0
  1135. package/public/assets/ibm-plex-sans-jp-118-600-normal-o_AOMkHJ.woff2 +0 -0
  1136. package/public/assets/ibm-plex-sans-jp-118-700-normal-BRNin0K2.woff2 +0 -0
  1137. package/public/assets/ibm-plex-sans-jp-118-700-normal-DGkqcNAf.woff +0 -0
  1138. package/public/assets/ibm-plex-sans-jp-119-400-normal-BUYaH2_l.woff2 +0 -0
  1139. package/public/assets/ibm-plex-sans-jp-119-400-normal-aBgyJQOx.woff +0 -0
  1140. package/public/assets/ibm-plex-sans-jp-119-600-normal-55p1b1wa.woff +0 -0
  1141. package/public/assets/ibm-plex-sans-jp-119-600-normal-BTu0jZJ-.woff2 +0 -0
  1142. package/public/assets/ibm-plex-sans-jp-119-700-normal-3JOc_eI7.woff +0 -0
  1143. package/public/assets/ibm-plex-sans-jp-119-700-normal-BjmfPyZf.woff2 +0 -0
  1144. package/public/assets/ibm-plex-sans-jp-12-400-normal-BmG4MYox.woff +0 -0
  1145. package/public/assets/ibm-plex-sans-jp-12-400-normal-quRUVnCJ.woff2 +0 -0
  1146. package/public/assets/ibm-plex-sans-jp-12-600-normal-B-m8VoGm.woff2 +0 -0
  1147. package/public/assets/ibm-plex-sans-jp-12-600-normal-CxDfRaaH.woff +0 -0
  1148. package/public/assets/ibm-plex-sans-jp-12-700-normal-C3oRnDW6.woff2 +0 -0
  1149. package/public/assets/ibm-plex-sans-jp-12-700-normal-Dv1Y6qdB.woff +0 -0
  1150. package/public/assets/ibm-plex-sans-jp-13-400-normal-DBDHqw4h.woff2 +0 -0
  1151. package/public/assets/ibm-plex-sans-jp-13-400-normal-QmPj_vZd.woff +0 -0
  1152. package/public/assets/ibm-plex-sans-jp-13-600-normal-CedQxG0H.woff +0 -0
  1153. package/public/assets/ibm-plex-sans-jp-13-600-normal-CgJUuraA.woff2 +0 -0
  1154. package/public/assets/ibm-plex-sans-jp-13-700-normal-DNIRDidW.woff2 +0 -0
  1155. package/public/assets/ibm-plex-sans-jp-13-700-normal-DolJGsV8.woff +0 -0
  1156. package/public/assets/ibm-plex-sans-jp-14-400-normal-CP-jldkl.woff +0 -0
  1157. package/public/assets/ibm-plex-sans-jp-14-400-normal-DPGCrf4O.woff2 +0 -0
  1158. package/public/assets/ibm-plex-sans-jp-14-600-normal-36G4flWw.woff +0 -0
  1159. package/public/assets/ibm-plex-sans-jp-14-600-normal-aLRf_2tU.woff2 +0 -0
  1160. package/public/assets/ibm-plex-sans-jp-14-700-normal-CzLCWhzW.woff2 +0 -0
  1161. package/public/assets/ibm-plex-sans-jp-14-700-normal-IrHxc9AN.woff +0 -0
  1162. package/public/assets/ibm-plex-sans-jp-15-400-normal-D_ILNbWZ.woff2 +0 -0
  1163. package/public/assets/ibm-plex-sans-jp-15-400-normal-DhL4usAp.woff +0 -0
  1164. package/public/assets/ibm-plex-sans-jp-15-600-normal-CCiDkvZ0.woff +0 -0
  1165. package/public/assets/ibm-plex-sans-jp-15-600-normal-Cm8uzUfS.woff2 +0 -0
  1166. package/public/assets/ibm-plex-sans-jp-15-700-normal-CH_tD5KV.woff2 +0 -0
  1167. package/public/assets/ibm-plex-sans-jp-15-700-normal-qiD6EjpF.woff +0 -0
  1168. package/public/assets/ibm-plex-sans-jp-16-400-normal-CPpcNs7A.woff +0 -0
  1169. package/public/assets/ibm-plex-sans-jp-16-400-normal-DJJG1Tuz.woff2 +0 -0
  1170. package/public/assets/ibm-plex-sans-jp-16-600-normal-DN27F9tO.woff +0 -0
  1171. package/public/assets/ibm-plex-sans-jp-16-600-normal-DZNod9fx.woff2 +0 -0
  1172. package/public/assets/ibm-plex-sans-jp-16-700-normal-5x97iT4C.woff2 +0 -0
  1173. package/public/assets/ibm-plex-sans-jp-16-700-normal-Cjf1zCyl.woff +0 -0
  1174. package/public/assets/ibm-plex-sans-jp-17-400-normal-Cz201O_t.woff2 +0 -0
  1175. package/public/assets/ibm-plex-sans-jp-17-400-normal-Xd0EQnSI.woff +0 -0
  1176. package/public/assets/ibm-plex-sans-jp-17-600-normal-Dlo-tSr-.woff +0 -0
  1177. package/public/assets/ibm-plex-sans-jp-17-600-normal-GFEV0OtD.woff2 +0 -0
  1178. package/public/assets/ibm-plex-sans-jp-17-700-normal-CxMAaJ8J.woff +0 -0
  1179. package/public/assets/ibm-plex-sans-jp-17-700-normal-pN8BDQje.woff2 +0 -0
  1180. package/public/assets/ibm-plex-sans-jp-18-400-normal-BiRcNUnW.woff2 +0 -0
  1181. package/public/assets/ibm-plex-sans-jp-18-400-normal-DcRwXlcA.woff +0 -0
  1182. package/public/assets/ibm-plex-sans-jp-18-600-normal-DjoWpWpr.woff2 +0 -0
  1183. package/public/assets/ibm-plex-sans-jp-18-600-normal-ZWO03fli.woff +0 -0
  1184. package/public/assets/ibm-plex-sans-jp-18-700-normal-BRP-puz3.woff2 +0 -0
  1185. package/public/assets/ibm-plex-sans-jp-18-700-normal-C9acO00v.woff +0 -0
  1186. package/public/assets/ibm-plex-sans-jp-19-400-normal-BGI-mgYq.woff2 +0 -0
  1187. package/public/assets/ibm-plex-sans-jp-19-400-normal-CAilAALt.woff +0 -0
  1188. package/public/assets/ibm-plex-sans-jp-19-600-normal-DjYSyktj.woff2 +0 -0
  1189. package/public/assets/ibm-plex-sans-jp-19-600-normal-ce3oirTN.woff +0 -0
  1190. package/public/assets/ibm-plex-sans-jp-19-700-normal-D-Zw0iJQ.woff2 +0 -0
  1191. package/public/assets/ibm-plex-sans-jp-19-700-normal-DDYMc675.woff +0 -0
  1192. package/public/assets/ibm-plex-sans-jp-20-400-normal-2E5UN6VC.woff +0 -0
  1193. package/public/assets/ibm-plex-sans-jp-20-400-normal-BQfFM2B0.woff2 +0 -0
  1194. package/public/assets/ibm-plex-sans-jp-20-600-normal-CYRAtz-I.woff2 +0 -0
  1195. package/public/assets/ibm-plex-sans-jp-20-600-normal-DwptQupD.woff +0 -0
  1196. package/public/assets/ibm-plex-sans-jp-20-700-normal-80GIv_X2.woff +0 -0
  1197. package/public/assets/ibm-plex-sans-jp-20-700-normal-Ca_HRr3E.woff2 +0 -0
  1198. package/public/assets/ibm-plex-sans-jp-21-400-normal-BFnRtDEF.woff +0 -0
  1199. package/public/assets/ibm-plex-sans-jp-21-400-normal-Zr4ScQUF.woff2 +0 -0
  1200. package/public/assets/ibm-plex-sans-jp-21-600-normal-BA-omFPG.woff2 +0 -0
  1201. package/public/assets/ibm-plex-sans-jp-21-600-normal-CVckMbS4.woff +0 -0
  1202. package/public/assets/ibm-plex-sans-jp-21-700-normal-BPImLHVa.woff +0 -0
  1203. package/public/assets/ibm-plex-sans-jp-21-700-normal-CytBm2Nt.woff2 +0 -0
  1204. package/public/assets/ibm-plex-sans-jp-22-400-normal-IznGQDkP.woff2 +0 -0
  1205. package/public/assets/ibm-plex-sans-jp-22-400-normal-qTFopCxn.woff +0 -0
  1206. package/public/assets/ibm-plex-sans-jp-22-600-normal-BWt9cZAr.woff2 +0 -0
  1207. package/public/assets/ibm-plex-sans-jp-22-600-normal-DuqSwCFh.woff +0 -0
  1208. package/public/assets/ibm-plex-sans-jp-22-700-normal--3UpG_YA.woff2 +0 -0
  1209. package/public/assets/ibm-plex-sans-jp-22-700-normal-DnloFB68.woff +0 -0
  1210. package/public/assets/ibm-plex-sans-jp-23-400-normal-Bdkhc9Iw.woff2 +0 -0
  1211. package/public/assets/ibm-plex-sans-jp-23-400-normal-BtixcB0-.woff +0 -0
  1212. package/public/assets/ibm-plex-sans-jp-23-600-normal-Dq8e8WbN.woff +0 -0
  1213. package/public/assets/ibm-plex-sans-jp-23-600-normal-O2srJ8a2.woff2 +0 -0
  1214. package/public/assets/ibm-plex-sans-jp-23-700-normal-C-Wvz07b.woff2 +0 -0
  1215. package/public/assets/ibm-plex-sans-jp-23-700-normal-QWySKNit.woff +0 -0
  1216. package/public/assets/ibm-plex-sans-jp-24-400-normal-B3OOo0lL.woff +0 -0
  1217. package/public/assets/ibm-plex-sans-jp-24-400-normal-McxyvMnV.woff2 +0 -0
  1218. package/public/assets/ibm-plex-sans-jp-24-600-normal-A46asPGd.woff +0 -0
  1219. package/public/assets/ibm-plex-sans-jp-24-600-normal-CTyo1FsZ.woff2 +0 -0
  1220. package/public/assets/ibm-plex-sans-jp-24-700-normal-Ira2Rc5z.woff2 +0 -0
  1221. package/public/assets/ibm-plex-sans-jp-24-700-normal-dhK6LPCU.woff +0 -0
  1222. package/public/assets/ibm-plex-sans-jp-25-400-normal-BFxbWz5n.woff +0 -0
  1223. package/public/assets/ibm-plex-sans-jp-25-400-normal-DFuJhyl7.woff2 +0 -0
  1224. package/public/assets/ibm-plex-sans-jp-25-600-normal-B2RU3Dvp.woff +0 -0
  1225. package/public/assets/ibm-plex-sans-jp-25-600-normal-DJ9_bhYp.woff2 +0 -0
  1226. package/public/assets/ibm-plex-sans-jp-25-700-normal-6YS9BiKL.woff +0 -0
  1227. package/public/assets/ibm-plex-sans-jp-25-700-normal-CpbQwqpL.woff2 +0 -0
  1228. package/public/assets/ibm-plex-sans-jp-26-400-normal-DNzE_dbG.woff2 +0 -0
  1229. package/public/assets/ibm-plex-sans-jp-26-400-normal-D_cpF5EA.woff +0 -0
  1230. package/public/assets/ibm-plex-sans-jp-26-600-normal-ByYIbTSk.woff +0 -0
  1231. package/public/assets/ibm-plex-sans-jp-26-600-normal-Dblu0l-8.woff2 +0 -0
  1232. package/public/assets/ibm-plex-sans-jp-26-700-normal-B-a8fp43.woff2 +0 -0
  1233. package/public/assets/ibm-plex-sans-jp-26-700-normal-oM62RKsO.woff +0 -0
  1234. package/public/assets/ibm-plex-sans-jp-27-400-normal-CG_CPqz1.woff +0 -0
  1235. package/public/assets/ibm-plex-sans-jp-27-400-normal-c2jdwsOE.woff2 +0 -0
  1236. package/public/assets/ibm-plex-sans-jp-27-600-normal-3axrvVxa.woff +0 -0
  1237. package/public/assets/ibm-plex-sans-jp-27-600-normal-CffTHcnn.woff2 +0 -0
  1238. package/public/assets/ibm-plex-sans-jp-27-700-normal-CFbifBY3.woff +0 -0
  1239. package/public/assets/ibm-plex-sans-jp-27-700-normal-MrPgyLwW.woff2 +0 -0
  1240. package/public/assets/ibm-plex-sans-jp-28-400-normal-C5RxoJ3V.woff +0 -0
  1241. package/public/assets/ibm-plex-sans-jp-28-400-normal-DXIBRRx0.woff2 +0 -0
  1242. package/public/assets/ibm-plex-sans-jp-28-600-normal-BHA5xHG-.woff2 +0 -0
  1243. package/public/assets/ibm-plex-sans-jp-28-600-normal-t8w8Pigz.woff +0 -0
  1244. package/public/assets/ibm-plex-sans-jp-28-700-normal-CfJC1veY.woff2 +0 -0
  1245. package/public/assets/ibm-plex-sans-jp-28-700-normal-DuTXC6M7.woff +0 -0
  1246. package/public/assets/ibm-plex-sans-jp-29-400-normal-4EOJmPpr.woff +0 -0
  1247. package/public/assets/ibm-plex-sans-jp-29-400-normal-DPDbHGRJ.woff2 +0 -0
  1248. package/public/assets/ibm-plex-sans-jp-29-600-normal-Ca71NnU-.woff +0 -0
  1249. package/public/assets/ibm-plex-sans-jp-29-600-normal-jeFY9Hf_.woff2 +0 -0
  1250. package/public/assets/ibm-plex-sans-jp-29-700-normal-C11KYH68.woff2 +0 -0
  1251. package/public/assets/ibm-plex-sans-jp-29-700-normal-CzNKW3WB.woff +0 -0
  1252. package/public/assets/ibm-plex-sans-jp-3-400-normal-BpFIRrIG.woff +0 -0
  1253. package/public/assets/ibm-plex-sans-jp-3-400-normal-CSnRHPqi.woff2 +0 -0
  1254. package/public/assets/ibm-plex-sans-jp-3-600-normal-C7pAJQf3.woff +0 -0
  1255. package/public/assets/ibm-plex-sans-jp-3-600-normal-SFbjSSXG.woff2 +0 -0
  1256. package/public/assets/ibm-plex-sans-jp-3-700-normal-57H5kXpk.woff +0 -0
  1257. package/public/assets/ibm-plex-sans-jp-3-700-normal-BrLJmDFd.woff2 +0 -0
  1258. package/public/assets/ibm-plex-sans-jp-30-400-normal-CE7Y9E5I.woff2 +0 -0
  1259. package/public/assets/ibm-plex-sans-jp-30-400-normal-CkxUuY_J.woff +0 -0
  1260. package/public/assets/ibm-plex-sans-jp-30-600-normal-B2Z1u9V0.woff +0 -0
  1261. package/public/assets/ibm-plex-sans-jp-30-600-normal-BNiX9WYe.woff2 +0 -0
  1262. package/public/assets/ibm-plex-sans-jp-30-700-normal-BEFP-jPj.woff2 +0 -0
  1263. package/public/assets/ibm-plex-sans-jp-30-700-normal-BarKnue-.woff +0 -0
  1264. package/public/assets/ibm-plex-sans-jp-31-400-normal-CaOERqUu.woff2 +0 -0
  1265. package/public/assets/ibm-plex-sans-jp-31-400-normal-DQ8k7O-z.woff +0 -0
  1266. package/public/assets/ibm-plex-sans-jp-31-600-normal-ChsH3Xz1.woff +0 -0
  1267. package/public/assets/ibm-plex-sans-jp-31-600-normal-DfrgvMVe.woff2 +0 -0
  1268. package/public/assets/ibm-plex-sans-jp-31-700-normal-9QmoGV7n.woff2 +0 -0
  1269. package/public/assets/ibm-plex-sans-jp-31-700-normal-uPx24aJ3.woff +0 -0
  1270. package/public/assets/ibm-plex-sans-jp-32-400-normal-DCgv6PbD.woff +0 -0
  1271. package/public/assets/ibm-plex-sans-jp-32-400-normal-oBOpBx6K.woff2 +0 -0
  1272. package/public/assets/ibm-plex-sans-jp-32-600-normal-BVvFPwh-.woff +0 -0
  1273. package/public/assets/ibm-plex-sans-jp-32-600-normal-C6iWVt4P.woff2 +0 -0
  1274. package/public/assets/ibm-plex-sans-jp-32-700-normal-BrzljjIv.woff +0 -0
  1275. package/public/assets/ibm-plex-sans-jp-32-700-normal-Ck00YIbi.woff2 +0 -0
  1276. package/public/assets/ibm-plex-sans-jp-33-400-normal-7syfOPuJ.woff +0 -0
  1277. package/public/assets/ibm-plex-sans-jp-33-400-normal-CRgD0sTN.woff2 +0 -0
  1278. package/public/assets/ibm-plex-sans-jp-33-600-normal-6C8BpThh.woff +0 -0
  1279. package/public/assets/ibm-plex-sans-jp-33-600-normal-Di883cZY.woff2 +0 -0
  1280. package/public/assets/ibm-plex-sans-jp-33-700-normal-BocR-vpi.woff +0 -0
  1281. package/public/assets/ibm-plex-sans-jp-33-700-normal-CQH8I4uz.woff2 +0 -0
  1282. package/public/assets/ibm-plex-sans-jp-34-400-normal-CW90qVjA.woff +0 -0
  1283. package/public/assets/ibm-plex-sans-jp-34-400-normal-DteAo9_1.woff2 +0 -0
  1284. package/public/assets/ibm-plex-sans-jp-34-600-normal-BBai0ku9.woff +0 -0
  1285. package/public/assets/ibm-plex-sans-jp-34-600-normal-BUBreiOx.woff2 +0 -0
  1286. package/public/assets/ibm-plex-sans-jp-34-700-normal-BQMQzFvO.woff2 +0 -0
  1287. package/public/assets/ibm-plex-sans-jp-34-700-normal-BYKYx0HK.woff +0 -0
  1288. package/public/assets/ibm-plex-sans-jp-35-400-normal-_GHhCQ5l.woff2 +0 -0
  1289. package/public/assets/ibm-plex-sans-jp-35-400-normal-oyHCgG2o.woff +0 -0
  1290. package/public/assets/ibm-plex-sans-jp-35-600-normal-B3Re-brg.woff +0 -0
  1291. package/public/assets/ibm-plex-sans-jp-35-600-normal-DSSj8dPk.woff2 +0 -0
  1292. package/public/assets/ibm-plex-sans-jp-35-700-normal-BoDC0KzR.woff2 +0 -0
  1293. package/public/assets/ibm-plex-sans-jp-35-700-normal-CvQah7db.woff +0 -0
  1294. package/public/assets/ibm-plex-sans-jp-36-400-normal-BizbVEtQ.woff2 +0 -0
  1295. package/public/assets/ibm-plex-sans-jp-36-400-normal-D7gQSpeq.woff +0 -0
  1296. package/public/assets/ibm-plex-sans-jp-36-600-normal-BiBUOoTN.woff +0 -0
  1297. package/public/assets/ibm-plex-sans-jp-36-600-normal-CVgRkKvZ.woff2 +0 -0
  1298. package/public/assets/ibm-plex-sans-jp-36-700-normal-Cx600hZn.woff +0 -0
  1299. package/public/assets/ibm-plex-sans-jp-36-700-normal-Dxydenfw.woff2 +0 -0
  1300. package/public/assets/ibm-plex-sans-jp-37-400-normal-B-iV2FCz.woff +0 -0
  1301. package/public/assets/ibm-plex-sans-jp-37-400-normal-CrxhJitf.woff2 +0 -0
  1302. package/public/assets/ibm-plex-sans-jp-37-600-normal-56davMJK.woff +0 -0
  1303. package/public/assets/ibm-plex-sans-jp-37-600-normal-BMpyr2ZA.woff2 +0 -0
  1304. package/public/assets/ibm-plex-sans-jp-37-700-normal-Cr4qQ6-_.woff2 +0 -0
  1305. package/public/assets/ibm-plex-sans-jp-37-700-normal-D6fQD8s2.woff +0 -0
  1306. package/public/assets/ibm-plex-sans-jp-38-400-normal-D1Vp2bgS.woff2 +0 -0
  1307. package/public/assets/ibm-plex-sans-jp-38-400-normal-DH9qOlQO.woff +0 -0
  1308. package/public/assets/ibm-plex-sans-jp-38-600-normal-BtzFMeyM.woff +0 -0
  1309. package/public/assets/ibm-plex-sans-jp-38-600-normal-DgBl-sfZ.woff2 +0 -0
  1310. package/public/assets/ibm-plex-sans-jp-38-700-normal-BnkgwyNC.woff2 +0 -0
  1311. package/public/assets/ibm-plex-sans-jp-38-700-normal-DrLlCQdP.woff +0 -0
  1312. package/public/assets/ibm-plex-sans-jp-39-400-normal-D5wsbWuV.woff2 +0 -0
  1313. package/public/assets/ibm-plex-sans-jp-39-400-normal-Dk7rkHeG.woff +0 -0
  1314. package/public/assets/ibm-plex-sans-jp-39-600-normal-CGMVkPUQ.woff +0 -0
  1315. package/public/assets/ibm-plex-sans-jp-39-600-normal-D_kp1-X0.woff2 +0 -0
  1316. package/public/assets/ibm-plex-sans-jp-39-700-normal-ADsZ937l.woff2 +0 -0
  1317. package/public/assets/ibm-plex-sans-jp-39-700-normal-tkFC4Fme.woff +0 -0
  1318. package/public/assets/ibm-plex-sans-jp-4-400-normal-mGIBpTDA.woff +0 -0
  1319. package/public/assets/ibm-plex-sans-jp-4-600-normal-ItZEXAoj.woff +0 -0
  1320. package/public/assets/ibm-plex-sans-jp-4-700-normal-B2Sn8ODt.woff +0 -0
  1321. package/public/assets/ibm-plex-sans-jp-40-400-normal-DRF-ZkFr.woff2 +0 -0
  1322. package/public/assets/ibm-plex-sans-jp-40-400-normal-Dye9yGvg.woff +0 -0
  1323. package/public/assets/ibm-plex-sans-jp-40-600-normal-DD0bpqGF.woff2 +0 -0
  1324. package/public/assets/ibm-plex-sans-jp-40-600-normal-DSxToWDI.woff +0 -0
  1325. package/public/assets/ibm-plex-sans-jp-40-700-normal-D9qdrR16.woff +0 -0
  1326. package/public/assets/ibm-plex-sans-jp-40-700-normal-DJ9uBiDw.woff2 +0 -0
  1327. package/public/assets/ibm-plex-sans-jp-41-400-normal-BqAaxgfH.woff2 +0 -0
  1328. package/public/assets/ibm-plex-sans-jp-41-400-normal-CsmxKILz.woff +0 -0
  1329. package/public/assets/ibm-plex-sans-jp-41-600-normal-BQOZ4bZi.woff2 +0 -0
  1330. package/public/assets/ibm-plex-sans-jp-41-600-normal-Jx8Bp44x.woff +0 -0
  1331. package/public/assets/ibm-plex-sans-jp-41-700-normal-BGJMzr3_.woff2 +0 -0
  1332. package/public/assets/ibm-plex-sans-jp-41-700-normal-UuW3VIUX.woff +0 -0
  1333. package/public/assets/ibm-plex-sans-jp-42-400-normal-Bwv1VfH1.woff +0 -0
  1334. package/public/assets/ibm-plex-sans-jp-42-400-normal-Dl6WfOX3.woff2 +0 -0
  1335. package/public/assets/ibm-plex-sans-jp-42-600-normal-Bpb5tt9_.woff +0 -0
  1336. package/public/assets/ibm-plex-sans-jp-42-600-normal-DIFsJkow.woff2 +0 -0
  1337. package/public/assets/ibm-plex-sans-jp-42-700-normal-BSSeJztI.woff +0 -0
  1338. package/public/assets/ibm-plex-sans-jp-42-700-normal-DSVZ1AdV.woff2 +0 -0
  1339. package/public/assets/ibm-plex-sans-jp-43-400-normal-BWVo0zWK.woff2 +0 -0
  1340. package/public/assets/ibm-plex-sans-jp-43-400-normal-d-ngL4VK.woff +0 -0
  1341. package/public/assets/ibm-plex-sans-jp-43-600-normal-BQhDNXpW.woff2 +0 -0
  1342. package/public/assets/ibm-plex-sans-jp-43-600-normal-BcvVxmDS.woff +0 -0
  1343. package/public/assets/ibm-plex-sans-jp-43-700-normal-BzUW0Dn4.woff +0 -0
  1344. package/public/assets/ibm-plex-sans-jp-43-700-normal-DKxEyxqG.woff2 +0 -0
  1345. package/public/assets/ibm-plex-sans-jp-44-400-normal-C6WuUhoa.woff2 +0 -0
  1346. package/public/assets/ibm-plex-sans-jp-44-400-normal-Dpw9oVkY.woff +0 -0
  1347. package/public/assets/ibm-plex-sans-jp-44-600-normal-BAOsDDVH.woff2 +0 -0
  1348. package/public/assets/ibm-plex-sans-jp-44-600-normal-Bt-5iAy-.woff +0 -0
  1349. package/public/assets/ibm-plex-sans-jp-44-700-normal-CKy2WdQj.woff2 +0 -0
  1350. package/public/assets/ibm-plex-sans-jp-44-700-normal-DWwfiF2R.woff +0 -0
  1351. package/public/assets/ibm-plex-sans-jp-45-400-normal-B9Y_v3iL.woff2 +0 -0
  1352. package/public/assets/ibm-plex-sans-jp-45-400-normal-Cw08yPg4.woff +0 -0
  1353. package/public/assets/ibm-plex-sans-jp-45-600-normal-C3VBxVTw.woff2 +0 -0
  1354. package/public/assets/ibm-plex-sans-jp-45-600-normal-CPG32_M5.woff +0 -0
  1355. package/public/assets/ibm-plex-sans-jp-45-700-normal-B2EBYgsw.woff2 +0 -0
  1356. package/public/assets/ibm-plex-sans-jp-45-700-normal-CBBnYnrG.woff +0 -0
  1357. package/public/assets/ibm-plex-sans-jp-46-400-normal-Bo2fKdUV.woff2 +0 -0
  1358. package/public/assets/ibm-plex-sans-jp-46-400-normal-Dya4Xg3C.woff +0 -0
  1359. package/public/assets/ibm-plex-sans-jp-46-600-normal-BZxPnU9z.woff +0 -0
  1360. package/public/assets/ibm-plex-sans-jp-46-600-normal-BwyRFFoW.woff2 +0 -0
  1361. package/public/assets/ibm-plex-sans-jp-46-700-normal-BWHZA6Va.woff +0 -0
  1362. package/public/assets/ibm-plex-sans-jp-46-700-normal-DGQdaffJ.woff2 +0 -0
  1363. package/public/assets/ibm-plex-sans-jp-47-400-normal-BaRCXue3.woff2 +0 -0
  1364. package/public/assets/ibm-plex-sans-jp-47-400-normal-DWeXBY63.woff +0 -0
  1365. package/public/assets/ibm-plex-sans-jp-47-600-normal-BJMJyZ3V.woff2 +0 -0
  1366. package/public/assets/ibm-plex-sans-jp-47-600-normal-CyutRTf1.woff +0 -0
  1367. package/public/assets/ibm-plex-sans-jp-47-700-normal-N6twIXlf.woff +0 -0
  1368. package/public/assets/ibm-plex-sans-jp-47-700-normal-_dAzPdKJ.woff2 +0 -0
  1369. package/public/assets/ibm-plex-sans-jp-48-400-normal-JS-IrZBF.woff +0 -0
  1370. package/public/assets/ibm-plex-sans-jp-48-400-normal-ezIou-vd.woff2 +0 -0
  1371. package/public/assets/ibm-plex-sans-jp-48-600-normal-BKUm06v8.woff +0 -0
  1372. package/public/assets/ibm-plex-sans-jp-48-600-normal-SLeRHHzg.woff2 +0 -0
  1373. package/public/assets/ibm-plex-sans-jp-48-700-normal-B5gMlKVs.woff2 +0 -0
  1374. package/public/assets/ibm-plex-sans-jp-48-700-normal-DQ5H61GM.woff +0 -0
  1375. package/public/assets/ibm-plex-sans-jp-49-400-normal-BGMyUOoF.woff2 +0 -0
  1376. package/public/assets/ibm-plex-sans-jp-49-400-normal-CpOmgEj1.woff +0 -0
  1377. package/public/assets/ibm-plex-sans-jp-49-600-normal-DASryXO5.woff2 +0 -0
  1378. package/public/assets/ibm-plex-sans-jp-49-600-normal-DyDLcZM_.woff +0 -0
  1379. package/public/assets/ibm-plex-sans-jp-49-700-normal-C2pGRKdb.woff2 +0 -0
  1380. package/public/assets/ibm-plex-sans-jp-49-700-normal-dsyop0xt.woff +0 -0
  1381. package/public/assets/ibm-plex-sans-jp-5-400-normal-CUIc6NHY.woff2 +0 -0
  1382. package/public/assets/ibm-plex-sans-jp-5-400-normal-D2dVMMqj.woff +0 -0
  1383. package/public/assets/ibm-plex-sans-jp-5-600-normal-7tGyeWfE.woff2 +0 -0
  1384. package/public/assets/ibm-plex-sans-jp-5-600-normal-LSwIbfT4.woff +0 -0
  1385. package/public/assets/ibm-plex-sans-jp-5-700-normal-4pOvaKVD.woff2 +0 -0
  1386. package/public/assets/ibm-plex-sans-jp-5-700-normal-BdZNxX81.woff +0 -0
  1387. package/public/assets/ibm-plex-sans-jp-50-400-normal-DDJncqjC.woff +0 -0
  1388. package/public/assets/ibm-plex-sans-jp-50-400-normal-DU9yuSzL.woff2 +0 -0
  1389. package/public/assets/ibm-plex-sans-jp-50-600-normal-KlXN5ii8.woff +0 -0
  1390. package/public/assets/ibm-plex-sans-jp-50-600-normal-bZ0wMfTu.woff2 +0 -0
  1391. package/public/assets/ibm-plex-sans-jp-50-700-normal-C3Bon6kP.woff +0 -0
  1392. package/public/assets/ibm-plex-sans-jp-50-700-normal-CKBR3dTc.woff2 +0 -0
  1393. package/public/assets/ibm-plex-sans-jp-52-400-normal-B6ntzhez.woff +0 -0
  1394. package/public/assets/ibm-plex-sans-jp-52-400-normal-DxvfHPiZ.woff2 +0 -0
  1395. package/public/assets/ibm-plex-sans-jp-52-600-normal-CxAqcrGJ.woff +0 -0
  1396. package/public/assets/ibm-plex-sans-jp-52-600-normal-ofakrDYw.woff2 +0 -0
  1397. package/public/assets/ibm-plex-sans-jp-52-700-normal-Bfs6gmfs.woff +0 -0
  1398. package/public/assets/ibm-plex-sans-jp-52-700-normal-D9sJhzsn.woff2 +0 -0
  1399. package/public/assets/ibm-plex-sans-jp-53-400-normal-BNzLW3gK.woff2 +0 -0
  1400. package/public/assets/ibm-plex-sans-jp-53-400-normal-arm4ZLbG.woff +0 -0
  1401. package/public/assets/ibm-plex-sans-jp-53-600-normal-BYo95wdR.woff2 +0 -0
  1402. package/public/assets/ibm-plex-sans-jp-53-600-normal-CTWAZiwT.woff +0 -0
  1403. package/public/assets/ibm-plex-sans-jp-53-700-normal-7icOh9fn.woff2 +0 -0
  1404. package/public/assets/ibm-plex-sans-jp-53-700-normal-CXC3RG0Y.woff +0 -0
  1405. package/public/assets/ibm-plex-sans-jp-55-400-normal-CXMVQbir.woff +0 -0
  1406. package/public/assets/ibm-plex-sans-jp-55-400-normal-CgSa9olG.woff2 +0 -0
  1407. package/public/assets/ibm-plex-sans-jp-55-600-normal-5IjjJd2s.woff2 +0 -0
  1408. package/public/assets/ibm-plex-sans-jp-55-600-normal-Dp8k-UQr.woff +0 -0
  1409. package/public/assets/ibm-plex-sans-jp-55-700-normal-eDLHHM6r.woff +0 -0
  1410. package/public/assets/ibm-plex-sans-jp-55-700-normal-ecLDx596.woff2 +0 -0
  1411. package/public/assets/ibm-plex-sans-jp-56-400-normal-BImwtP9C.woff2 +0 -0
  1412. package/public/assets/ibm-plex-sans-jp-56-400-normal-BikO35BJ.woff +0 -0
  1413. package/public/assets/ibm-plex-sans-jp-56-600-normal-DsSHHMYs.woff2 +0 -0
  1414. package/public/assets/ibm-plex-sans-jp-56-600-normal-fFxOmumy.woff +0 -0
  1415. package/public/assets/ibm-plex-sans-jp-56-700-normal-Dg77fDuG.woff2 +0 -0
  1416. package/public/assets/ibm-plex-sans-jp-56-700-normal-DiUSRVIQ.woff +0 -0
  1417. package/public/assets/ibm-plex-sans-jp-58-400-normal-Iyqdz6U_.woff +0 -0
  1418. package/public/assets/ibm-plex-sans-jp-58-400-normal-jeWDsIkS.woff2 +0 -0
  1419. package/public/assets/ibm-plex-sans-jp-58-600-normal-Bma8ReWy.woff2 +0 -0
  1420. package/public/assets/ibm-plex-sans-jp-58-600-normal-D3LkCFqf.woff +0 -0
  1421. package/public/assets/ibm-plex-sans-jp-58-700-normal-BgsgXhin.woff +0 -0
  1422. package/public/assets/ibm-plex-sans-jp-58-700-normal-DQNvf_Pi.woff2 +0 -0
  1423. package/public/assets/ibm-plex-sans-jp-59-400-normal-CkeNzekL.woff +0 -0
  1424. package/public/assets/ibm-plex-sans-jp-59-400-normal-D7J9HacT.woff2 +0 -0
  1425. package/public/assets/ibm-plex-sans-jp-59-600-normal-B0Hs_yqp.woff +0 -0
  1426. package/public/assets/ibm-plex-sans-jp-59-600-normal-y8o2u47q.woff2 +0 -0
  1427. package/public/assets/ibm-plex-sans-jp-59-700-normal-BEPxXZmH.woff2 +0 -0
  1428. package/public/assets/ibm-plex-sans-jp-59-700-normal-CqOqqrqQ.woff +0 -0
  1429. package/public/assets/ibm-plex-sans-jp-6-400-normal-CK1rBi2w.woff2 +0 -0
  1430. package/public/assets/ibm-plex-sans-jp-6-400-normal-DQz22aVW.woff +0 -0
  1431. package/public/assets/ibm-plex-sans-jp-6-600-normal-Bgp388lR.woff2 +0 -0
  1432. package/public/assets/ibm-plex-sans-jp-6-600-normal-DZtAE4NN.woff +0 -0
  1433. package/public/assets/ibm-plex-sans-jp-6-700-normal-BFaRWvXD.woff +0 -0
  1434. package/public/assets/ibm-plex-sans-jp-6-700-normal-UVZzLgo1.woff2 +0 -0
  1435. package/public/assets/ibm-plex-sans-jp-60-400-normal-Bc0pWfYQ.woff2 +0 -0
  1436. package/public/assets/ibm-plex-sans-jp-60-400-normal-DU4X4cgu.woff +0 -0
  1437. package/public/assets/ibm-plex-sans-jp-60-600-normal-D22FGjEf.woff +0 -0
  1438. package/public/assets/ibm-plex-sans-jp-60-600-normal-DGaJXlcP.woff2 +0 -0
  1439. package/public/assets/ibm-plex-sans-jp-60-700-normal-B4sph3s0.woff2 +0 -0
  1440. package/public/assets/ibm-plex-sans-jp-60-700-normal-DBfqpTpp.woff +0 -0
  1441. package/public/assets/ibm-plex-sans-jp-61-400-normal-BTqxO8KS.woff2 +0 -0
  1442. package/public/assets/ibm-plex-sans-jp-61-400-normal-BZ_Lvmfb.woff +0 -0
  1443. package/public/assets/ibm-plex-sans-jp-61-600-normal-BkIPCguy.woff +0 -0
  1444. package/public/assets/ibm-plex-sans-jp-61-600-normal-D_Q2U_HY.woff2 +0 -0
  1445. package/public/assets/ibm-plex-sans-jp-61-700-normal-BkfJ-_O-.woff +0 -0
  1446. package/public/assets/ibm-plex-sans-jp-61-700-normal-CwN3DFq1.woff2 +0 -0
  1447. package/public/assets/ibm-plex-sans-jp-62-400-normal-CRZQtL4e.woff +0 -0
  1448. package/public/assets/ibm-plex-sans-jp-62-400-normal-DSLFRuBi.woff2 +0 -0
  1449. package/public/assets/ibm-plex-sans-jp-62-600-normal-CAFV2WS-.woff2 +0 -0
  1450. package/public/assets/ibm-plex-sans-jp-62-600-normal-DRBwH2wC.woff +0 -0
  1451. package/public/assets/ibm-plex-sans-jp-62-700-normal-D9oj9FbO.woff +0 -0
  1452. package/public/assets/ibm-plex-sans-jp-62-700-normal-gTii6YIK.woff2 +0 -0
  1453. package/public/assets/ibm-plex-sans-jp-63-400-normal-BCOcqFvH.woff +0 -0
  1454. package/public/assets/ibm-plex-sans-jp-63-400-normal-NWeXooWt.woff2 +0 -0
  1455. package/public/assets/ibm-plex-sans-jp-63-600-normal-Dwsde-Vo.woff2 +0 -0
  1456. package/public/assets/ibm-plex-sans-jp-63-600-normal-rFqEK_Cq.woff +0 -0
  1457. package/public/assets/ibm-plex-sans-jp-63-700-normal-B4li38vl.woff +0 -0
  1458. package/public/assets/ibm-plex-sans-jp-63-700-normal-DYsI6Aeh.woff2 +0 -0
  1459. package/public/assets/ibm-plex-sans-jp-64-400-normal-DjS9hHaA.woff +0 -0
  1460. package/public/assets/ibm-plex-sans-jp-64-400-normal-DplHNRWf.woff2 +0 -0
  1461. package/public/assets/ibm-plex-sans-jp-64-600-normal-8FGNeBVO.woff +0 -0
  1462. package/public/assets/ibm-plex-sans-jp-64-600-normal-BE-tQzc4.woff2 +0 -0
  1463. package/public/assets/ibm-plex-sans-jp-64-700-normal-X_3qL3eD.woff +0 -0
  1464. package/public/assets/ibm-plex-sans-jp-64-700-normal-_sOvmSPU.woff2 +0 -0
  1465. package/public/assets/ibm-plex-sans-jp-65-400-normal-BIWHDE_t.woff2 +0 -0
  1466. package/public/assets/ibm-plex-sans-jp-65-400-normal-DNiOFlC5.woff +0 -0
  1467. package/public/assets/ibm-plex-sans-jp-65-600-normal-8ErTTni6.woff2 +0 -0
  1468. package/public/assets/ibm-plex-sans-jp-65-600-normal-Ckksq6Um.woff +0 -0
  1469. package/public/assets/ibm-plex-sans-jp-65-700-normal-9c1B3ugf.woff +0 -0
  1470. package/public/assets/ibm-plex-sans-jp-65-700-normal-C2SAUond.woff2 +0 -0
  1471. package/public/assets/ibm-plex-sans-jp-66-400-normal-BfKrnenI.woff +0 -0
  1472. package/public/assets/ibm-plex-sans-jp-66-400-normal-CNxVmlv6.woff2 +0 -0
  1473. package/public/assets/ibm-plex-sans-jp-66-600-normal-hyHZDzzP.woff2 +0 -0
  1474. package/public/assets/ibm-plex-sans-jp-66-600-normal-nq1zdTbH.woff +0 -0
  1475. package/public/assets/ibm-plex-sans-jp-66-700-normal-Ctdcjw58.woff +0 -0
  1476. package/public/assets/ibm-plex-sans-jp-66-700-normal-D_FuIz1A.woff2 +0 -0
  1477. package/public/assets/ibm-plex-sans-jp-67-400-normal-D3j6dBx3.woff +0 -0
  1478. package/public/assets/ibm-plex-sans-jp-67-400-normal-lzlrdx0G.woff2 +0 -0
  1479. package/public/assets/ibm-plex-sans-jp-67-600-normal-6KKBCWxa.woff2 +0 -0
  1480. package/public/assets/ibm-plex-sans-jp-67-600-normal-DgWoOUUg.woff +0 -0
  1481. package/public/assets/ibm-plex-sans-jp-67-700-normal-B3QY7F5h.woff2 +0 -0
  1482. package/public/assets/ibm-plex-sans-jp-67-700-normal-Bk31nBaz.woff +0 -0
  1483. package/public/assets/ibm-plex-sans-jp-68-400-normal-BpRgjvkz.woff +0 -0
  1484. package/public/assets/ibm-plex-sans-jp-68-400-normal-CfTKk1Ti.woff2 +0 -0
  1485. package/public/assets/ibm-plex-sans-jp-68-600-normal-BlYm4TE_.woff2 +0 -0
  1486. package/public/assets/ibm-plex-sans-jp-68-600-normal-DiY9dfka.woff +0 -0
  1487. package/public/assets/ibm-plex-sans-jp-68-700-normal-C6ZrhK66.woff +0 -0
  1488. package/public/assets/ibm-plex-sans-jp-68-700-normal-Cb_onqwe.woff2 +0 -0
  1489. package/public/assets/ibm-plex-sans-jp-69-400-normal-ClpMq853.woff2 +0 -0
  1490. package/public/assets/ibm-plex-sans-jp-69-400-normal-DIRwnaAC.woff +0 -0
  1491. package/public/assets/ibm-plex-sans-jp-69-600-normal-Bsq_ALiN.woff2 +0 -0
  1492. package/public/assets/ibm-plex-sans-jp-69-600-normal-D5M2jRxh.woff +0 -0
  1493. package/public/assets/ibm-plex-sans-jp-69-700-normal-D25giLXx.woff +0 -0
  1494. package/public/assets/ibm-plex-sans-jp-69-700-normal-DJ24ly1p.woff2 +0 -0
  1495. package/public/assets/ibm-plex-sans-jp-7-400-normal-BlNTLUxk.woff +0 -0
  1496. package/public/assets/ibm-plex-sans-jp-7-400-normal-Ce6XQT-X.woff2 +0 -0
  1497. package/public/assets/ibm-plex-sans-jp-7-600-normal-BIimYJ8p.woff2 +0 -0
  1498. package/public/assets/ibm-plex-sans-jp-7-600-normal-u7RE7Vcl.woff +0 -0
  1499. package/public/assets/ibm-plex-sans-jp-7-700-normal-BxRQ3DPg.woff +0 -0
  1500. package/public/assets/ibm-plex-sans-jp-7-700-normal-DK5zmmDo.woff2 +0 -0
  1501. package/public/assets/ibm-plex-sans-jp-70-400-normal-BQZWkZap.woff2 +0 -0
  1502. package/public/assets/ibm-plex-sans-jp-70-400-normal-BvYVJLC-.woff +0 -0
  1503. package/public/assets/ibm-plex-sans-jp-70-600-normal-COjhVT5P.woff +0 -0
  1504. package/public/assets/ibm-plex-sans-jp-70-600-normal-D_nkzVDi.woff2 +0 -0
  1505. package/public/assets/ibm-plex-sans-jp-70-700-normal-BJsNk892.woff +0 -0
  1506. package/public/assets/ibm-plex-sans-jp-70-700-normal-D0rsZ7c1.woff2 +0 -0
  1507. package/public/assets/ibm-plex-sans-jp-71-400-normal-BF8CoFgI.woff +0 -0
  1508. package/public/assets/ibm-plex-sans-jp-71-400-normal-HbsCI6VV.woff2 +0 -0
  1509. package/public/assets/ibm-plex-sans-jp-71-600-normal-CfPjA3xh.woff +0 -0
  1510. package/public/assets/ibm-plex-sans-jp-71-600-normal-ChBeHVSC.woff2 +0 -0
  1511. package/public/assets/ibm-plex-sans-jp-71-700-normal-B88Gnili.woff +0 -0
  1512. package/public/assets/ibm-plex-sans-jp-71-700-normal-D9HVw03N.woff2 +0 -0
  1513. package/public/assets/ibm-plex-sans-jp-72-400-normal-BKinYB31.woff +0 -0
  1514. package/public/assets/ibm-plex-sans-jp-72-400-normal-D3NTG_Qr.woff2 +0 -0
  1515. package/public/assets/ibm-plex-sans-jp-72-600-normal-BpU6wBwH.woff +0 -0
  1516. package/public/assets/ibm-plex-sans-jp-72-600-normal-rfJ4c39Q.woff2 +0 -0
  1517. package/public/assets/ibm-plex-sans-jp-72-700-normal-DClz9Dhe.woff +0 -0
  1518. package/public/assets/ibm-plex-sans-jp-72-700-normal-DnfTuI4o.woff2 +0 -0
  1519. package/public/assets/ibm-plex-sans-jp-73-400-normal-B9cHSeQ5.woff2 +0 -0
  1520. package/public/assets/ibm-plex-sans-jp-73-400-normal-HVPdCDZ0.woff +0 -0
  1521. package/public/assets/ibm-plex-sans-jp-73-600-normal-BL0EAwDJ.woff +0 -0
  1522. package/public/assets/ibm-plex-sans-jp-73-600-normal-CoMSI1sj.woff2 +0 -0
  1523. package/public/assets/ibm-plex-sans-jp-73-700-normal-5BseSrpV.woff +0 -0
  1524. package/public/assets/ibm-plex-sans-jp-73-700-normal-DW-mflD2.woff2 +0 -0
  1525. package/public/assets/ibm-plex-sans-jp-74-400-normal-BM6YwLsn.woff2 +0 -0
  1526. package/public/assets/ibm-plex-sans-jp-74-400-normal-BTWjvuog.woff +0 -0
  1527. package/public/assets/ibm-plex-sans-jp-74-600-normal-CxFvTzoC.woff2 +0 -0
  1528. package/public/assets/ibm-plex-sans-jp-74-600-normal-D51sy90d.woff +0 -0
  1529. package/public/assets/ibm-plex-sans-jp-74-700-normal-Bp0aGueO.woff2 +0 -0
  1530. package/public/assets/ibm-plex-sans-jp-74-700-normal-CQdRArtb.woff +0 -0
  1531. package/public/assets/ibm-plex-sans-jp-75-400-normal-DX0jfUHx.woff +0 -0
  1532. package/public/assets/ibm-plex-sans-jp-75-400-normal-DrNdqo4y.woff2 +0 -0
  1533. package/public/assets/ibm-plex-sans-jp-75-600-normal-DvAVPJPm.woff +0 -0
  1534. package/public/assets/ibm-plex-sans-jp-75-600-normal-DzUkgy6d.woff2 +0 -0
  1535. package/public/assets/ibm-plex-sans-jp-75-700-normal-BUGpoCPv.woff2 +0 -0
  1536. package/public/assets/ibm-plex-sans-jp-75-700-normal-CbVTJJOJ.woff +0 -0
  1537. package/public/assets/ibm-plex-sans-jp-76-400-normal-BtXAriso.woff2 +0 -0
  1538. package/public/assets/ibm-plex-sans-jp-76-400-normal-DvZrEIB3.woff +0 -0
  1539. package/public/assets/ibm-plex-sans-jp-76-600-normal-Bkns-GmL.woff +0 -0
  1540. package/public/assets/ibm-plex-sans-jp-76-600-normal-XH04BMqX.woff2 +0 -0
  1541. package/public/assets/ibm-plex-sans-jp-76-700-normal-BfaxMcpg.woff2 +0 -0
  1542. package/public/assets/ibm-plex-sans-jp-76-700-normal-DC5DjlVx.woff +0 -0
  1543. package/public/assets/ibm-plex-sans-jp-77-400-normal-C8x5jxqc.woff2 +0 -0
  1544. package/public/assets/ibm-plex-sans-jp-77-400-normal-DIwXWqjG.woff +0 -0
  1545. package/public/assets/ibm-plex-sans-jp-77-600-normal-Dst0n_2I.woff2 +0 -0
  1546. package/public/assets/ibm-plex-sans-jp-77-600-normal-TveJi30r.woff +0 -0
  1547. package/public/assets/ibm-plex-sans-jp-77-700-normal-BXcw4A5K.woff2 +0 -0
  1548. package/public/assets/ibm-plex-sans-jp-77-700-normal-C5mt5pwb.woff +0 -0
  1549. package/public/assets/ibm-plex-sans-jp-78-400-normal-DUw4O9kJ.woff2 +0 -0
  1550. package/public/assets/ibm-plex-sans-jp-78-400-normal-DdAHar7U.woff +0 -0
  1551. package/public/assets/ibm-plex-sans-jp-78-600-normal-CdDbCMo5.woff2 +0 -0
  1552. package/public/assets/ibm-plex-sans-jp-78-600-normal-WSGX5G5j.woff +0 -0
  1553. package/public/assets/ibm-plex-sans-jp-78-700-normal-BX4TFa2_.woff2 +0 -0
  1554. package/public/assets/ibm-plex-sans-jp-78-700-normal-DQFNc6DE.woff +0 -0
  1555. package/public/assets/ibm-plex-sans-jp-79-400-normal-CHV4cTl6.woff2 +0 -0
  1556. package/public/assets/ibm-plex-sans-jp-79-400-normal-DKXEv0-8.woff +0 -0
  1557. package/public/assets/ibm-plex-sans-jp-79-600-normal-BwemUgt7.woff2 +0 -0
  1558. package/public/assets/ibm-plex-sans-jp-79-600-normal-jqoE6MSf.woff +0 -0
  1559. package/public/assets/ibm-plex-sans-jp-79-700-normal-C7dv3Yp1.woff +0 -0
  1560. package/public/assets/ibm-plex-sans-jp-79-700-normal-Dc8--5xr.woff2 +0 -0
  1561. package/public/assets/ibm-plex-sans-jp-8-400-normal-SmEnIkYa.woff +0 -0
  1562. package/public/assets/ibm-plex-sans-jp-8-400-normal-tFiGs3IA.woff2 +0 -0
  1563. package/public/assets/ibm-plex-sans-jp-8-600-normal-BXRUM-0I.woff2 +0 -0
  1564. package/public/assets/ibm-plex-sans-jp-8-600-normal-G3AQr80e.woff +0 -0
  1565. package/public/assets/ibm-plex-sans-jp-8-700-normal-BJ-eyJFM.woff2 +0 -0
  1566. package/public/assets/ibm-plex-sans-jp-8-700-normal-D8XNQCXr.woff +0 -0
  1567. package/public/assets/ibm-plex-sans-jp-80-400-normal-B1EBYabM.woff +0 -0
  1568. package/public/assets/ibm-plex-sans-jp-80-400-normal-boMeGYwE.woff2 +0 -0
  1569. package/public/assets/ibm-plex-sans-jp-80-600-normal-5_89urOt.woff +0 -0
  1570. package/public/assets/ibm-plex-sans-jp-80-600-normal-Cn0IXtFE.woff2 +0 -0
  1571. package/public/assets/ibm-plex-sans-jp-80-700-normal-BOd0bDGO.woff +0 -0
  1572. package/public/assets/ibm-plex-sans-jp-80-700-normal-C26YuVxL.woff2 +0 -0
  1573. package/public/assets/ibm-plex-sans-jp-81-400-normal-BRtTCfUk.woff +0 -0
  1574. package/public/assets/ibm-plex-sans-jp-81-400-normal-D32P0Vtu.woff2 +0 -0
  1575. package/public/assets/ibm-plex-sans-jp-81-600-normal-BrNo5bPi.woff2 +0 -0
  1576. package/public/assets/ibm-plex-sans-jp-81-600-normal-ic2OowiW.woff +0 -0
  1577. package/public/assets/ibm-plex-sans-jp-81-700-normal-CVYiHbL6.woff +0 -0
  1578. package/public/assets/ibm-plex-sans-jp-81-700-normal-u-vEkTpG.woff2 +0 -0
  1579. package/public/assets/ibm-plex-sans-jp-82-400-normal-BQWp4BEz.woff +0 -0
  1580. package/public/assets/ibm-plex-sans-jp-82-400-normal-DDpDjsGx.woff2 +0 -0
  1581. package/public/assets/ibm-plex-sans-jp-82-600-normal-DajH-4xp.woff2 +0 -0
  1582. package/public/assets/ibm-plex-sans-jp-82-600-normal-icuQ__PU.woff +0 -0
  1583. package/public/assets/ibm-plex-sans-jp-82-700-normal-ClV-zSDt.woff +0 -0
  1584. package/public/assets/ibm-plex-sans-jp-82-700-normal-CnyrRvpH.woff2 +0 -0
  1585. package/public/assets/ibm-plex-sans-jp-83-400-normal-Bw_rXMEi.woff2 +0 -0
  1586. package/public/assets/ibm-plex-sans-jp-83-400-normal-yc2U6i4H.woff +0 -0
  1587. package/public/assets/ibm-plex-sans-jp-83-600-normal-C2uell5V.woff +0 -0
  1588. package/public/assets/ibm-plex-sans-jp-83-600-normal-DsLbRz3E.woff2 +0 -0
  1589. package/public/assets/ibm-plex-sans-jp-83-700-normal-2GacE3N5.woff +0 -0
  1590. package/public/assets/ibm-plex-sans-jp-83-700-normal-EpYP79Ha.woff2 +0 -0
  1591. package/public/assets/ibm-plex-sans-jp-84-400-normal-C14BeeRx.woff2 +0 -0
  1592. package/public/assets/ibm-plex-sans-jp-84-400-normal-C_JCm1wG.woff +0 -0
  1593. package/public/assets/ibm-plex-sans-jp-84-600-normal-CCq3cWfr.woff2 +0 -0
  1594. package/public/assets/ibm-plex-sans-jp-84-600-normal-CNKfBGzf.woff +0 -0
  1595. package/public/assets/ibm-plex-sans-jp-84-700-normal-DvPwdAi9.woff +0 -0
  1596. package/public/assets/ibm-plex-sans-jp-84-700-normal-bReT13VI.woff2 +0 -0
  1597. package/public/assets/ibm-plex-sans-jp-85-400-normal-CxNRCaXC.woff +0 -0
  1598. package/public/assets/ibm-plex-sans-jp-85-400-normal-DIfXns4-.woff2 +0 -0
  1599. package/public/assets/ibm-plex-sans-jp-85-600-normal-8jj6aRvF.woff2 +0 -0
  1600. package/public/assets/ibm-plex-sans-jp-85-600-normal-DlyOX1Qf.woff +0 -0
  1601. package/public/assets/ibm-plex-sans-jp-85-700-normal-D8sN10Nm.woff +0 -0
  1602. package/public/assets/ibm-plex-sans-jp-85-700-normal-og8bjehs.woff2 +0 -0
  1603. package/public/assets/ibm-plex-sans-jp-86-400-normal-Bb5ShdOk.woff +0 -0
  1604. package/public/assets/ibm-plex-sans-jp-86-400-normal-Dwyie3Iv.woff2 +0 -0
  1605. package/public/assets/ibm-plex-sans-jp-86-600-normal-CdiZE1rm.woff2 +0 -0
  1606. package/public/assets/ibm-plex-sans-jp-86-600-normal-sZuKvaH0.woff +0 -0
  1607. package/public/assets/ibm-plex-sans-jp-86-700-normal-BTXGcZ1f.woff2 +0 -0
  1608. package/public/assets/ibm-plex-sans-jp-86-700-normal-BfB1Adps.woff +0 -0
  1609. package/public/assets/ibm-plex-sans-jp-87-400-normal-9iA5aW6B.woff2 +0 -0
  1610. package/public/assets/ibm-plex-sans-jp-87-400-normal-BlQLoLxo.woff +0 -0
  1611. package/public/assets/ibm-plex-sans-jp-87-600-normal-CuP_sqvk.woff +0 -0
  1612. package/public/assets/ibm-plex-sans-jp-87-600-normal-DJDdt009.woff2 +0 -0
  1613. package/public/assets/ibm-plex-sans-jp-87-700-normal-T5FoFJ7Z.woff +0 -0
  1614. package/public/assets/ibm-plex-sans-jp-87-700-normal-ZAIr8xfv.woff2 +0 -0
  1615. package/public/assets/ibm-plex-sans-jp-88-400-normal-47Y8c3gi.woff +0 -0
  1616. package/public/assets/ibm-plex-sans-jp-88-400-normal-Ce6Hc4-O.woff2 +0 -0
  1617. package/public/assets/ibm-plex-sans-jp-88-600-normal-C0xzysV4.woff +0 -0
  1618. package/public/assets/ibm-plex-sans-jp-88-600-normal-R7ba6CXY.woff2 +0 -0
  1619. package/public/assets/ibm-plex-sans-jp-88-700-normal-BhgGw4mN.woff +0 -0
  1620. package/public/assets/ibm-plex-sans-jp-88-700-normal-DqgQgYzO.woff2 +0 -0
  1621. package/public/assets/ibm-plex-sans-jp-89-400-normal-BQ1quosg.woff +0 -0
  1622. package/public/assets/ibm-plex-sans-jp-89-400-normal-DWWwgYkQ.woff2 +0 -0
  1623. package/public/assets/ibm-plex-sans-jp-89-600-normal-C2tA-5LU.woff +0 -0
  1624. package/public/assets/ibm-plex-sans-jp-89-600-normal-DhA0Dlsd.woff2 +0 -0
  1625. package/public/assets/ibm-plex-sans-jp-89-700-normal-BhPAGixe.woff2 +0 -0
  1626. package/public/assets/ibm-plex-sans-jp-89-700-normal-Q4Ct26U-.woff +0 -0
  1627. package/public/assets/ibm-plex-sans-jp-9-400-normal--2P0gMaE.woff2 +0 -0
  1628. package/public/assets/ibm-plex-sans-jp-9-400-normal-DOuCM5BV.woff +0 -0
  1629. package/public/assets/ibm-plex-sans-jp-9-600-normal-BWVUGdkT.woff2 +0 -0
  1630. package/public/assets/ibm-plex-sans-jp-9-600-normal-DKQ7A1j0.woff +0 -0
  1631. package/public/assets/ibm-plex-sans-jp-9-700-normal-CeF5ynVi.woff +0 -0
  1632. package/public/assets/ibm-plex-sans-jp-9-700-normal-U3Fi3Xkr.woff2 +0 -0
  1633. package/public/assets/ibm-plex-sans-jp-90-400-normal-CfqeE6EG.woff +0 -0
  1634. package/public/assets/ibm-plex-sans-jp-90-400-normal-D_k1n-D_.woff2 +0 -0
  1635. package/public/assets/ibm-plex-sans-jp-90-600-normal-Bwsph-Eg.woff +0 -0
  1636. package/public/assets/ibm-plex-sans-jp-90-600-normal-DhhMI-5X.woff2 +0 -0
  1637. package/public/assets/ibm-plex-sans-jp-90-700-normal-B0dGlL2-.woff +0 -0
  1638. package/public/assets/ibm-plex-sans-jp-90-700-normal-C8Hbz-dX.woff2 +0 -0
  1639. package/public/assets/ibm-plex-sans-jp-91-400-normal-Ciy4dQcd.woff +0 -0
  1640. package/public/assets/ibm-plex-sans-jp-91-400-normal-Dqn0gBBY.woff2 +0 -0
  1641. package/public/assets/ibm-plex-sans-jp-91-600-normal-CMZZHiYs.woff2 +0 -0
  1642. package/public/assets/ibm-plex-sans-jp-91-600-normal-D3h_qbuq.woff +0 -0
  1643. package/public/assets/ibm-plex-sans-jp-91-700-normal-B1DETJv2.woff2 +0 -0
  1644. package/public/assets/ibm-plex-sans-jp-91-700-normal-M5nVKp2A.woff +0 -0
  1645. package/public/assets/ibm-plex-sans-jp-92-400-normal-BfkGgwSg.woff2 +0 -0
  1646. package/public/assets/ibm-plex-sans-jp-92-400-normal-DoNv6QKI.woff +0 -0
  1647. package/public/assets/ibm-plex-sans-jp-92-600-normal-9-dsEf5V.woff2 +0 -0
  1648. package/public/assets/ibm-plex-sans-jp-92-600-normal-cJ6s0u50.woff +0 -0
  1649. package/public/assets/ibm-plex-sans-jp-92-700-normal-ByHPz9kn.woff +0 -0
  1650. package/public/assets/ibm-plex-sans-jp-92-700-normal-D6FBL1WO.woff2 +0 -0
  1651. package/public/assets/ibm-plex-sans-jp-93-400-normal-B6WlHkvJ.woff +0 -0
  1652. package/public/assets/ibm-plex-sans-jp-93-400-normal-CXc_m19k.woff2 +0 -0
  1653. package/public/assets/ibm-plex-sans-jp-93-600-normal-BSK1xVrb.woff2 +0 -0
  1654. package/public/assets/ibm-plex-sans-jp-93-600-normal-OQ8utWzT.woff +0 -0
  1655. package/public/assets/ibm-plex-sans-jp-93-700-normal-B6i_9_xV.woff2 +0 -0
  1656. package/public/assets/ibm-plex-sans-jp-93-700-normal-C0PiAt94.woff +0 -0
  1657. package/public/assets/ibm-plex-sans-jp-94-400-normal-B4bajS3c.woff2 +0 -0
  1658. package/public/assets/ibm-plex-sans-jp-94-400-normal-FBGzvyjM.woff +0 -0
  1659. package/public/assets/ibm-plex-sans-jp-94-600-normal-Cl_ZMZu8.woff2 +0 -0
  1660. package/public/assets/ibm-plex-sans-jp-94-600-normal-pqZtpQem.woff +0 -0
  1661. package/public/assets/ibm-plex-sans-jp-94-700-normal-BhojjqGx.woff2 +0 -0
  1662. package/public/assets/ibm-plex-sans-jp-94-700-normal-DWNWPMXr.woff +0 -0
  1663. package/public/assets/ibm-plex-sans-jp-95-400-normal-BaY9CSq2.woff +0 -0
  1664. package/public/assets/ibm-plex-sans-jp-95-400-normal-DPH1GVj3.woff2 +0 -0
  1665. package/public/assets/ibm-plex-sans-jp-95-600-normal-BcydLyYe.woff +0 -0
  1666. package/public/assets/ibm-plex-sans-jp-95-600-normal-DqzXikSS.woff2 +0 -0
  1667. package/public/assets/ibm-plex-sans-jp-95-700-normal-0cKlfajM.woff +0 -0
  1668. package/public/assets/ibm-plex-sans-jp-95-700-normal-BNFDc8MW.woff2 +0 -0
  1669. package/public/assets/ibm-plex-sans-jp-96-400-normal-CXuQ_R0S.woff +0 -0
  1670. package/public/assets/ibm-plex-sans-jp-96-400-normal-OCME7gOK.woff2 +0 -0
  1671. package/public/assets/ibm-plex-sans-jp-96-600-normal-BgkVLddD.woff +0 -0
  1672. package/public/assets/ibm-plex-sans-jp-96-600-normal-GzZNxGhs.woff2 +0 -0
  1673. package/public/assets/ibm-plex-sans-jp-96-700-normal-Qh65nqz2.woff +0 -0
  1674. package/public/assets/ibm-plex-sans-jp-96-700-normal-a40eS-gV.woff2 +0 -0
  1675. package/public/assets/ibm-plex-sans-jp-97-400-normal-4k_rP24C.woff2 +0 -0
  1676. package/public/assets/ibm-plex-sans-jp-97-400-normal-CP6Nx25U.woff +0 -0
  1677. package/public/assets/ibm-plex-sans-jp-97-600-normal-CIqUzk_a.woff2 +0 -0
  1678. package/public/assets/ibm-plex-sans-jp-97-600-normal-DCSYk_Yh.woff +0 -0
  1679. package/public/assets/ibm-plex-sans-jp-97-700-normal-DnbCIk-O.woff +0 -0
  1680. package/public/assets/ibm-plex-sans-jp-97-700-normal-zgPUJYJw.woff2 +0 -0
  1681. package/public/assets/ibm-plex-sans-jp-98-400-normal-B515X6p6.woff2 +0 -0
  1682. package/public/assets/ibm-plex-sans-jp-98-400-normal-Cf7sm02w.woff +0 -0
  1683. package/public/assets/ibm-plex-sans-jp-98-600-normal-DugMp3FI.woff +0 -0
  1684. package/public/assets/ibm-plex-sans-jp-98-600-normal-pBxafNws.woff2 +0 -0
  1685. package/public/assets/ibm-plex-sans-jp-98-700-normal-7KdM18gu.woff +0 -0
  1686. package/public/assets/ibm-plex-sans-jp-98-700-normal-CMi4ZY-h.woff2 +0 -0
  1687. package/public/assets/ibm-plex-sans-jp-99-400-normal-BcrT9Fgn.woff +0 -0
  1688. package/public/assets/ibm-plex-sans-jp-99-400-normal-DmQyl23y.woff2 +0 -0
  1689. package/public/assets/ibm-plex-sans-jp-99-600-normal-CeMMRcA6.woff +0 -0
  1690. package/public/assets/ibm-plex-sans-jp-99-600-normal-DnK7T1fc.woff2 +0 -0
  1691. package/public/assets/ibm-plex-sans-jp-99-700-normal-CINNKEoN.woff +0 -0
  1692. package/public/assets/ibm-plex-sans-jp-99-700-normal-sDTGjBrk.woff2 +0 -0
  1693. package/public/assets/ibm-plex-sans-jp-cyrillic-400-normal-B9g1Ctqd.woff2 +0 -0
  1694. package/public/assets/ibm-plex-sans-jp-cyrillic-400-normal-DJG00D-p.woff +0 -0
  1695. package/public/assets/ibm-plex-sans-jp-cyrillic-600-normal-B4enfOPB.woff +0 -0
  1696. package/public/assets/ibm-plex-sans-jp-cyrillic-600-normal-DCQl7zAm.woff2 +0 -0
  1697. package/public/assets/ibm-plex-sans-jp-cyrillic-700-normal-CqLTajqw.woff2 +0 -0
  1698. package/public/assets/ibm-plex-sans-jp-cyrillic-700-normal-hKVirjqK.woff +0 -0
  1699. package/public/assets/ibm-plex-sans-jp-latin-400-normal-CDdMl-oX.woff2 +0 -0
  1700. package/public/assets/ibm-plex-sans-jp-latin-400-normal-D5LEXcjN.woff +0 -0
  1701. package/public/assets/ibm-plex-sans-jp-latin-600-normal-DmCaZeJ-.woff2 +0 -0
  1702. package/public/assets/ibm-plex-sans-jp-latin-600-normal-Ds_Fb90o.woff +0 -0
  1703. package/public/assets/ibm-plex-sans-jp-latin-700-normal-8D2N3nxA.woff +0 -0
  1704. package/public/assets/ibm-plex-sans-jp-latin-700-normal-BTYOjzj6.woff2 +0 -0
  1705. package/public/assets/ibm-plex-sans-kr-0-400-normal-COdVePwF.woff2 +0 -0
  1706. package/public/assets/ibm-plex-sans-kr-0-400-normal-DEF_oZFa.woff +0 -0
  1707. package/public/assets/ibm-plex-sans-kr-0-600-normal-DLXpb0hq.woff +0 -0
  1708. package/public/assets/ibm-plex-sans-kr-0-600-normal-DuzcAQdo.woff2 +0 -0
  1709. package/public/assets/ibm-plex-sans-kr-0-700-normal-BKXIEbM-.woff +0 -0
  1710. package/public/assets/ibm-plex-sans-kr-0-700-normal-C-cy4WQL.woff2 +0 -0
  1711. package/public/assets/ibm-plex-sans-kr-10-400-normal-BOnpTeYv.woff2 +0 -0
  1712. package/public/assets/ibm-plex-sans-kr-10-400-normal-CRn7_mZz.woff +0 -0
  1713. package/public/assets/ibm-plex-sans-kr-10-600-normal-BAjKvcG-.woff2 +0 -0
  1714. package/public/assets/ibm-plex-sans-kr-10-600-normal-DIq7Gv9V.woff +0 -0
  1715. package/public/assets/ibm-plex-sans-kr-10-700-normal-CO8B564V.woff +0 -0
  1716. package/public/assets/ibm-plex-sans-kr-10-700-normal-CYiGY1Yb.woff2 +0 -0
  1717. package/public/assets/ibm-plex-sans-kr-100-400-normal-3DeNbFry.woff2 +0 -0
  1718. package/public/assets/ibm-plex-sans-kr-100-400-normal-BQdwTqgb.woff +0 -0
  1719. package/public/assets/ibm-plex-sans-kr-100-600-normal-CcI0wmDd.woff2 +0 -0
  1720. package/public/assets/ibm-plex-sans-kr-100-600-normal-ZYmKSXu1.woff +0 -0
  1721. package/public/assets/ibm-plex-sans-kr-100-700-normal-BzrrxQTg.woff2 +0 -0
  1722. package/public/assets/ibm-plex-sans-kr-100-700-normal-CMsSAe0_.woff +0 -0
  1723. package/public/assets/ibm-plex-sans-kr-101-400-normal-CwhtzdGH.woff2 +0 -0
  1724. package/public/assets/ibm-plex-sans-kr-101-400-normal-DQN8MKOE.woff +0 -0
  1725. package/public/assets/ibm-plex-sans-kr-101-600-normal-Cf7HWvBM.woff2 +0 -0
  1726. package/public/assets/ibm-plex-sans-kr-101-600-normal-DOUVV8ig.woff +0 -0
  1727. package/public/assets/ibm-plex-sans-kr-101-700-normal-CByVAW_A.woff2 +0 -0
  1728. package/public/assets/ibm-plex-sans-kr-101-700-normal-VIPXB5Il.woff +0 -0
  1729. package/public/assets/ibm-plex-sans-kr-102-400-normal-BC0mCFX2.woff2 +0 -0
  1730. package/public/assets/ibm-plex-sans-kr-102-400-normal-DHfan8x-.woff +0 -0
  1731. package/public/assets/ibm-plex-sans-kr-102-600-normal-BIIL4Btv.woff +0 -0
  1732. package/public/assets/ibm-plex-sans-kr-102-600-normal-CN8RaHGd.woff2 +0 -0
  1733. package/public/assets/ibm-plex-sans-kr-102-700-normal-BMMLfFhV.woff2 +0 -0
  1734. package/public/assets/ibm-plex-sans-kr-102-700-normal-DmfLM_GL.woff +0 -0
  1735. package/public/assets/ibm-plex-sans-kr-103-400-normal-BQNnzD7b.woff +0 -0
  1736. package/public/assets/ibm-plex-sans-kr-103-400-normal-CYHfi_5o.woff2 +0 -0
  1737. package/public/assets/ibm-plex-sans-kr-103-600-normal-8oNp3a_g.woff2 +0 -0
  1738. package/public/assets/ibm-plex-sans-kr-103-600-normal-BKXxr4Vf.woff +0 -0
  1739. package/public/assets/ibm-plex-sans-kr-103-700-normal-BcdoKDVA.woff +0 -0
  1740. package/public/assets/ibm-plex-sans-kr-103-700-normal-Dxy_7wWe.woff2 +0 -0
  1741. package/public/assets/ibm-plex-sans-kr-104-400-normal-BrHR60F5.woff2 +0 -0
  1742. package/public/assets/ibm-plex-sans-kr-104-400-normal-kn3L8mkz.woff +0 -0
  1743. package/public/assets/ibm-plex-sans-kr-104-600-normal-DHHBh9NH.woff2 +0 -0
  1744. package/public/assets/ibm-plex-sans-kr-104-600-normal-DbfrFOKo.woff +0 -0
  1745. package/public/assets/ibm-plex-sans-kr-104-700-normal-BBQprcoA.woff +0 -0
  1746. package/public/assets/ibm-plex-sans-kr-104-700-normal-DIYBHFGo.woff2 +0 -0
  1747. package/public/assets/ibm-plex-sans-kr-105-400-normal-BY6JiZG_.woff2 +0 -0
  1748. package/public/assets/ibm-plex-sans-kr-105-400-normal-D20hKn8x.woff +0 -0
  1749. package/public/assets/ibm-plex-sans-kr-105-600-normal-Bdo6QjXy.woff2 +0 -0
  1750. package/public/assets/ibm-plex-sans-kr-105-600-normal-DU6215sy.woff +0 -0
  1751. package/public/assets/ibm-plex-sans-kr-105-700-normal-CNeD7cKc.woff +0 -0
  1752. package/public/assets/ibm-plex-sans-kr-105-700-normal-D4WgQZhf.woff2 +0 -0
  1753. package/public/assets/ibm-plex-sans-kr-106-400-normal-CKM4EqLH.woff2 +0 -0
  1754. package/public/assets/ibm-plex-sans-kr-106-400-normal-DRimGseV.woff +0 -0
  1755. package/public/assets/ibm-plex-sans-kr-106-600-normal-CIkK4pwL.woff +0 -0
  1756. package/public/assets/ibm-plex-sans-kr-106-600-normal-o84Tuavw.woff2 +0 -0
  1757. package/public/assets/ibm-plex-sans-kr-106-700-normal-DKK03KYp.woff2 +0 -0
  1758. package/public/assets/ibm-plex-sans-kr-106-700-normal-Sq9FhKgR.woff +0 -0
  1759. package/public/assets/ibm-plex-sans-kr-107-400-normal-9_m442uC.woff +0 -0
  1760. package/public/assets/ibm-plex-sans-kr-107-400-normal-DFBsPAhk.woff2 +0 -0
  1761. package/public/assets/ibm-plex-sans-kr-107-600-normal-Bj6Oga3u.woff2 +0 -0
  1762. package/public/assets/ibm-plex-sans-kr-107-600-normal-IB6GFZTf.woff +0 -0
  1763. package/public/assets/ibm-plex-sans-kr-107-700-normal-BPp3kOId.woff2 +0 -0
  1764. package/public/assets/ibm-plex-sans-kr-107-700-normal-CXE0S75n.woff +0 -0
  1765. package/public/assets/ibm-plex-sans-kr-108-400-normal-D7nsD7Wm.woff +0 -0
  1766. package/public/assets/ibm-plex-sans-kr-108-400-normal-DbmD_Owd.woff2 +0 -0
  1767. package/public/assets/ibm-plex-sans-kr-108-600-normal-C5FnASlc.woff +0 -0
  1768. package/public/assets/ibm-plex-sans-kr-108-600-normal-Cz9v4gjx.woff2 +0 -0
  1769. package/public/assets/ibm-plex-sans-kr-108-700-normal-BeBTa0LV.woff2 +0 -0
  1770. package/public/assets/ibm-plex-sans-kr-108-700-normal-DblVcY4a.woff +0 -0
  1771. package/public/assets/ibm-plex-sans-kr-109-400-normal-Ch-uxywT.woff +0 -0
  1772. package/public/assets/ibm-plex-sans-kr-109-400-normal-ChZ2CLi-.woff2 +0 -0
  1773. package/public/assets/ibm-plex-sans-kr-109-600-normal-BkGpNJKI.woff2 +0 -0
  1774. package/public/assets/ibm-plex-sans-kr-109-600-normal-CG9-PeCF.woff +0 -0
  1775. package/public/assets/ibm-plex-sans-kr-109-700-normal-CZW29fAQ.woff +0 -0
  1776. package/public/assets/ibm-plex-sans-kr-109-700-normal-CkMuXuOj.woff2 +0 -0
  1777. package/public/assets/ibm-plex-sans-kr-11-400-normal-CN_UQa3U.woff +0 -0
  1778. package/public/assets/ibm-plex-sans-kr-11-400-normal-DY57wkwV.woff2 +0 -0
  1779. package/public/assets/ibm-plex-sans-kr-11-600-normal-BUarw7E5.woff +0 -0
  1780. package/public/assets/ibm-plex-sans-kr-11-600-normal-Ds-mjTNk.woff2 +0 -0
  1781. package/public/assets/ibm-plex-sans-kr-11-700-normal-BntN_kys.woff2 +0 -0
  1782. package/public/assets/ibm-plex-sans-kr-11-700-normal-DoPFrHSK.woff +0 -0
  1783. package/public/assets/ibm-plex-sans-kr-110-400-normal-D259vsJ_.woff +0 -0
  1784. package/public/assets/ibm-plex-sans-kr-110-400-normal-DvUF8GMi.woff2 +0 -0
  1785. package/public/assets/ibm-plex-sans-kr-110-600-normal-CisRgCMg.woff2 +0 -0
  1786. package/public/assets/ibm-plex-sans-kr-110-600-normal-ReaqIn5m.woff +0 -0
  1787. package/public/assets/ibm-plex-sans-kr-110-700-normal-BIiZFSUQ.woff2 +0 -0
  1788. package/public/assets/ibm-plex-sans-kr-110-700-normal-BylngM58.woff +0 -0
  1789. package/public/assets/ibm-plex-sans-kr-111-400-normal-BqppHOeA.woff +0 -0
  1790. package/public/assets/ibm-plex-sans-kr-111-400-normal-DaCXFUcH.woff2 +0 -0
  1791. package/public/assets/ibm-plex-sans-kr-111-600-normal-2DkYfPPb.woff +0 -0
  1792. package/public/assets/ibm-plex-sans-kr-111-600-normal-DN6cN55_.woff2 +0 -0
  1793. package/public/assets/ibm-plex-sans-kr-111-700-normal-DjiLTpOV.woff +0 -0
  1794. package/public/assets/ibm-plex-sans-kr-111-700-normal-zUtSBhiX.woff2 +0 -0
  1795. package/public/assets/ibm-plex-sans-kr-112-400-normal-B8TcbMdb.woff +0 -0
  1796. package/public/assets/ibm-plex-sans-kr-112-400-normal-BJLUyYDo.woff2 +0 -0
  1797. package/public/assets/ibm-plex-sans-kr-112-600-normal-lS3UdozO.woff +0 -0
  1798. package/public/assets/ibm-plex-sans-kr-112-600-normal-nFX-cMXi.woff2 +0 -0
  1799. package/public/assets/ibm-plex-sans-kr-112-700-normal-DYzxzB3U.woff +0 -0
  1800. package/public/assets/ibm-plex-sans-kr-112-700-normal-NT-G-2lC.woff2 +0 -0
  1801. package/public/assets/ibm-plex-sans-kr-113-400-normal-CEDRAc_f.woff2 +0 -0
  1802. package/public/assets/ibm-plex-sans-kr-113-400-normal-DlThbTsi.woff +0 -0
  1803. package/public/assets/ibm-plex-sans-kr-113-600-normal-C_RUWM8I.woff +0 -0
  1804. package/public/assets/ibm-plex-sans-kr-113-600-normal-Dhfyy0ky.woff2 +0 -0
  1805. package/public/assets/ibm-plex-sans-kr-113-700-normal-CdI89zbS.woff2 +0 -0
  1806. package/public/assets/ibm-plex-sans-kr-113-700-normal-DRor3NKv.woff +0 -0
  1807. package/public/assets/ibm-plex-sans-kr-114-400-normal-5bMSGSar.woff +0 -0
  1808. package/public/assets/ibm-plex-sans-kr-114-400-normal-Bpqw4_PX.woff2 +0 -0
  1809. package/public/assets/ibm-plex-sans-kr-114-600-normal-BKj6RBZ7.woff +0 -0
  1810. package/public/assets/ibm-plex-sans-kr-114-600-normal-CjRp-Iz4.woff2 +0 -0
  1811. package/public/assets/ibm-plex-sans-kr-114-700-normal-BXC27J9C.woff +0 -0
  1812. package/public/assets/ibm-plex-sans-kr-114-700-normal-JtZooioR.woff2 +0 -0
  1813. package/public/assets/ibm-plex-sans-kr-115-400-normal-6-qa9Uj4.woff2 +0 -0
  1814. package/public/assets/ibm-plex-sans-kr-115-400-normal-CM7tVCiU.woff +0 -0
  1815. package/public/assets/ibm-plex-sans-kr-115-600-normal-CokKDsRY.woff2 +0 -0
  1816. package/public/assets/ibm-plex-sans-kr-115-600-normal-c6nUiZEv.woff +0 -0
  1817. package/public/assets/ibm-plex-sans-kr-115-700-normal-BCRYVYbj.woff +0 -0
  1818. package/public/assets/ibm-plex-sans-kr-115-700-normal-C4o110v7.woff2 +0 -0
  1819. package/public/assets/ibm-plex-sans-kr-116-400-normal-BCjvaIwI.woff +0 -0
  1820. package/public/assets/ibm-plex-sans-kr-116-400-normal-CPQAppG5.woff2 +0 -0
  1821. package/public/assets/ibm-plex-sans-kr-116-600-normal-2NuQXMn5.woff +0 -0
  1822. package/public/assets/ibm-plex-sans-kr-116-600-normal-pwYieqoq.woff2 +0 -0
  1823. package/public/assets/ibm-plex-sans-kr-116-700-normal-DTiOP-RD.woff +0 -0
  1824. package/public/assets/ibm-plex-sans-kr-116-700-normal-J2K8ygE7.woff2 +0 -0
  1825. package/public/assets/ibm-plex-sans-kr-117-400-normal-Bqi1rgUh.woff2 +0 -0
  1826. package/public/assets/ibm-plex-sans-kr-117-400-normal-CAkrqKEd.woff +0 -0
  1827. package/public/assets/ibm-plex-sans-kr-117-600-normal-BUVowAmE.woff +0 -0
  1828. package/public/assets/ibm-plex-sans-kr-117-600-normal-CVV1AoIy.woff2 +0 -0
  1829. package/public/assets/ibm-plex-sans-kr-117-700-normal-B_WqVFu8.woff2 +0 -0
  1830. package/public/assets/ibm-plex-sans-kr-117-700-normal-C-GRhBDF.woff +0 -0
  1831. package/public/assets/ibm-plex-sans-kr-118-400-normal-BvkVX0xm.woff +0 -0
  1832. package/public/assets/ibm-plex-sans-kr-118-400-normal-CPvF_U24.woff2 +0 -0
  1833. package/public/assets/ibm-plex-sans-kr-118-600-normal-BKNr8HaE.woff +0 -0
  1834. package/public/assets/ibm-plex-sans-kr-118-600-normal-SYUuQfwq.woff2 +0 -0
  1835. package/public/assets/ibm-plex-sans-kr-118-700-normal-6t-D5P6M.woff +0 -0
  1836. package/public/assets/ibm-plex-sans-kr-118-700-normal-Cwb_HiV8.woff2 +0 -0
  1837. package/public/assets/ibm-plex-sans-kr-119-400-normal-BVAYXEqw.woff +0 -0
  1838. package/public/assets/ibm-plex-sans-kr-119-400-normal-CF0EWuft.woff2 +0 -0
  1839. package/public/assets/ibm-plex-sans-kr-119-600-normal-CSej5QVJ.woff +0 -0
  1840. package/public/assets/ibm-plex-sans-kr-119-600-normal-CWNURXbv.woff2 +0 -0
  1841. package/public/assets/ibm-plex-sans-kr-119-700-normal-DqmD0X2I.woff +0 -0
  1842. package/public/assets/ibm-plex-sans-kr-119-700-normal-DvZpuW9q.woff2 +0 -0
  1843. package/public/assets/ibm-plex-sans-kr-12-400-normal-AF35YmmH.woff2 +0 -0
  1844. package/public/assets/ibm-plex-sans-kr-12-400-normal-J5xWG5gS.woff +0 -0
  1845. package/public/assets/ibm-plex-sans-kr-12-600-normal-Ba8rnT7_.woff2 +0 -0
  1846. package/public/assets/ibm-plex-sans-kr-12-600-normal-Cdi7mG90.woff +0 -0
  1847. package/public/assets/ibm-plex-sans-kr-12-700-normal-4ZbirUQU.woff2 +0 -0
  1848. package/public/assets/ibm-plex-sans-kr-12-700-normal-Coj3Y2Vv.woff +0 -0
  1849. package/public/assets/ibm-plex-sans-kr-13-400-normal-CpXdOOTc.woff2 +0 -0
  1850. package/public/assets/ibm-plex-sans-kr-13-400-normal-eM8eMXyQ.woff +0 -0
  1851. package/public/assets/ibm-plex-sans-kr-13-600-normal-DXBEl0OU.woff +0 -0
  1852. package/public/assets/ibm-plex-sans-kr-13-600-normal-ON8tPSnT.woff2 +0 -0
  1853. package/public/assets/ibm-plex-sans-kr-13-700-normal-Bbz7lyAG.woff2 +0 -0
  1854. package/public/assets/ibm-plex-sans-kr-13-700-normal-DfbGPVVb.woff +0 -0
  1855. package/public/assets/ibm-plex-sans-kr-14-400-normal-C-oyfrUa.woff2 +0 -0
  1856. package/public/assets/ibm-plex-sans-kr-14-400-normal-DPe2AXol.woff +0 -0
  1857. package/public/assets/ibm-plex-sans-kr-14-600-normal-BEKBLOkr.woff2 +0 -0
  1858. package/public/assets/ibm-plex-sans-kr-14-600-normal-BZRywIXe.woff +0 -0
  1859. package/public/assets/ibm-plex-sans-kr-14-700-normal-DChZSEXi.woff2 +0 -0
  1860. package/public/assets/ibm-plex-sans-kr-14-700-normal-JLAmA7_6.woff +0 -0
  1861. package/public/assets/ibm-plex-sans-kr-15-400-normal-CBiEIaz5.woff2 +0 -0
  1862. package/public/assets/ibm-plex-sans-kr-15-400-normal-D-mZ9inR.woff +0 -0
  1863. package/public/assets/ibm-plex-sans-kr-15-600-normal-CAapLUyl.woff2 +0 -0
  1864. package/public/assets/ibm-plex-sans-kr-15-600-normal-Dl-orC8M.woff +0 -0
  1865. package/public/assets/ibm-plex-sans-kr-15-700-normal-JEDfv4vZ.woff2 +0 -0
  1866. package/public/assets/ibm-plex-sans-kr-15-700-normal-xL2psWlD.woff +0 -0
  1867. package/public/assets/ibm-plex-sans-kr-16-400-normal-CKSk9toV.woff2 +0 -0
  1868. package/public/assets/ibm-plex-sans-kr-16-400-normal-DNGmaJIL.woff +0 -0
  1869. package/public/assets/ibm-plex-sans-kr-16-600-normal-DDZagcz1.woff +0 -0
  1870. package/public/assets/ibm-plex-sans-kr-16-600-normal-DloGa7SL.woff2 +0 -0
  1871. package/public/assets/ibm-plex-sans-kr-16-700-normal-Bv7EAOP1.woff +0 -0
  1872. package/public/assets/ibm-plex-sans-kr-16-700-normal-CCA2fInu.woff2 +0 -0
  1873. package/public/assets/ibm-plex-sans-kr-17-400-normal-BDhrvRnL.woff2 +0 -0
  1874. package/public/assets/ibm-plex-sans-kr-17-400-normal-BOjgDpon.woff +0 -0
  1875. package/public/assets/ibm-plex-sans-kr-17-600-normal-BeTmwP_K.woff2 +0 -0
  1876. package/public/assets/ibm-plex-sans-kr-17-600-normal-uD_8VqjX.woff +0 -0
  1877. package/public/assets/ibm-plex-sans-kr-17-700-normal-C-NBohiT.woff2 +0 -0
  1878. package/public/assets/ibm-plex-sans-kr-17-700-normal-sVUIRMKd.woff +0 -0
  1879. package/public/assets/ibm-plex-sans-kr-18-400-normal-BTtbRNyU.woff +0 -0
  1880. package/public/assets/ibm-plex-sans-kr-18-400-normal-Bs1zlN0G.woff2 +0 -0
  1881. package/public/assets/ibm-plex-sans-kr-18-600-normal-3CkcYQgr.woff2 +0 -0
  1882. package/public/assets/ibm-plex-sans-kr-18-600-normal-C0tjZHt0.woff +0 -0
  1883. package/public/assets/ibm-plex-sans-kr-18-700-normal-DjrHhANL.woff +0 -0
  1884. package/public/assets/ibm-plex-sans-kr-18-700-normal-UPAurMge.woff2 +0 -0
  1885. package/public/assets/ibm-plex-sans-kr-19-400-normal-CCVU2G9b.woff2 +0 -0
  1886. package/public/assets/ibm-plex-sans-kr-19-400-normal-dcW_ilWW.woff +0 -0
  1887. package/public/assets/ibm-plex-sans-kr-19-600-normal-DcS6irVl.woff2 +0 -0
  1888. package/public/assets/ibm-plex-sans-kr-19-600-normal-w0hsbhoe.woff +0 -0
  1889. package/public/assets/ibm-plex-sans-kr-19-700-normal-CazBSycC.woff2 +0 -0
  1890. package/public/assets/ibm-plex-sans-kr-19-700-normal-CvRuq6Vw.woff +0 -0
  1891. package/public/assets/ibm-plex-sans-kr-2-400-normal-CnxhIj-f.woff2 +0 -0
  1892. package/public/assets/ibm-plex-sans-kr-2-400-normal-ZCEqhetZ.woff +0 -0
  1893. package/public/assets/ibm-plex-sans-kr-2-600-normal-BBWiOGe2.woff +0 -0
  1894. package/public/assets/ibm-plex-sans-kr-2-600-normal-i3phtpOA.woff2 +0 -0
  1895. package/public/assets/ibm-plex-sans-kr-2-700-normal-DO0ByKpJ.woff2 +0 -0
  1896. package/public/assets/ibm-plex-sans-kr-2-700-normal-Dei1Gj2q.woff +0 -0
  1897. package/public/assets/ibm-plex-sans-kr-20-400-normal-2BRpmgCV.woff2 +0 -0
  1898. package/public/assets/ibm-plex-sans-kr-20-400-normal-B2cWSh78.woff +0 -0
  1899. package/public/assets/ibm-plex-sans-kr-20-600-normal-CKeHRgKb.woff +0 -0
  1900. package/public/assets/ibm-plex-sans-kr-20-600-normal-CXFU6tjk.woff2 +0 -0
  1901. package/public/assets/ibm-plex-sans-kr-20-700-normal-CTtpPuSd.woff2 +0 -0
  1902. package/public/assets/ibm-plex-sans-kr-20-700-normal-N5V03xjS.woff +0 -0
  1903. package/public/assets/ibm-plex-sans-kr-21-400-normal-Cv3FeIij.woff2 +0 -0
  1904. package/public/assets/ibm-plex-sans-kr-21-400-normal-Dml5TFym.woff +0 -0
  1905. package/public/assets/ibm-plex-sans-kr-21-600-normal-CJHvMuEH.woff2 +0 -0
  1906. package/public/assets/ibm-plex-sans-kr-21-600-normal-ChXV0eBj.woff +0 -0
  1907. package/public/assets/ibm-plex-sans-kr-21-700-normal-BR1fDv7I.woff +0 -0
  1908. package/public/assets/ibm-plex-sans-kr-21-700-normal-kWux5vbT.woff2 +0 -0
  1909. package/public/assets/ibm-plex-sans-kr-22-400-normal-3CnvMMD7.woff2 +0 -0
  1910. package/public/assets/ibm-plex-sans-kr-22-400-normal-TNl1bUeL.woff +0 -0
  1911. package/public/assets/ibm-plex-sans-kr-22-600-normal-B4PQFGba.woff2 +0 -0
  1912. package/public/assets/ibm-plex-sans-kr-22-600-normal-bBSJai_o.woff +0 -0
  1913. package/public/assets/ibm-plex-sans-kr-22-700-normal-BAbSphgc.woff2 +0 -0
  1914. package/public/assets/ibm-plex-sans-kr-22-700-normal-HHyMEHBJ.woff +0 -0
  1915. package/public/assets/ibm-plex-sans-kr-23-400-normal-CUhld-kf.woff2 +0 -0
  1916. package/public/assets/ibm-plex-sans-kr-23-400-normal-DTBYTMn7.woff +0 -0
  1917. package/public/assets/ibm-plex-sans-kr-23-600-normal-CR-CWSvQ.woff2 +0 -0
  1918. package/public/assets/ibm-plex-sans-kr-23-600-normal-Cq5mpPr_.woff +0 -0
  1919. package/public/assets/ibm-plex-sans-kr-23-700-normal-D-oyN10X.woff +0 -0
  1920. package/public/assets/ibm-plex-sans-kr-23-700-normal-DQNF9HpE.woff2 +0 -0
  1921. package/public/assets/ibm-plex-sans-kr-24-400-normal-BCEQWDh5.woff2 +0 -0
  1922. package/public/assets/ibm-plex-sans-kr-24-400-normal-DDVUYQLq.woff +0 -0
  1923. package/public/assets/ibm-plex-sans-kr-24-600-normal-DL0LF1av.woff +0 -0
  1924. package/public/assets/ibm-plex-sans-kr-24-600-normal-DyaIQrhK.woff2 +0 -0
  1925. package/public/assets/ibm-plex-sans-kr-24-700-normal-B0AxqRZO.woff2 +0 -0
  1926. package/public/assets/ibm-plex-sans-kr-24-700-normal-Inz-d5-8.woff +0 -0
  1927. package/public/assets/ibm-plex-sans-kr-25-400-normal-C5hUXC4y.woff2 +0 -0
  1928. package/public/assets/ibm-plex-sans-kr-25-400-normal-CSCHltyB.woff +0 -0
  1929. package/public/assets/ibm-plex-sans-kr-25-600-normal-ClJ2q6nT.woff +0 -0
  1930. package/public/assets/ibm-plex-sans-kr-25-600-normal-CpgWTSx7.woff2 +0 -0
  1931. package/public/assets/ibm-plex-sans-kr-25-700-normal-BSArHqh9.woff2 +0 -0
  1932. package/public/assets/ibm-plex-sans-kr-25-700-normal-BVRIUm2S.woff +0 -0
  1933. package/public/assets/ibm-plex-sans-kr-26-400-normal-BDNWBg-b.woff +0 -0
  1934. package/public/assets/ibm-plex-sans-kr-26-400-normal-BnV7FV79.woff2 +0 -0
  1935. package/public/assets/ibm-plex-sans-kr-26-600-normal-BQpAkNz5.woff2 +0 -0
  1936. package/public/assets/ibm-plex-sans-kr-26-600-normal-bxA4bluv.woff +0 -0
  1937. package/public/assets/ibm-plex-sans-kr-26-700-normal-95lB4fwA.woff +0 -0
  1938. package/public/assets/ibm-plex-sans-kr-26-700-normal-VgtqRBM7.woff2 +0 -0
  1939. package/public/assets/ibm-plex-sans-kr-27-400-normal-B5ZhKYLO.woff2 +0 -0
  1940. package/public/assets/ibm-plex-sans-kr-27-400-normal-Dy5-YEOY.woff +0 -0
  1941. package/public/assets/ibm-plex-sans-kr-27-600-normal-C07c5If1.woff +0 -0
  1942. package/public/assets/ibm-plex-sans-kr-27-600-normal-C6bVD75P.woff2 +0 -0
  1943. package/public/assets/ibm-plex-sans-kr-27-700-normal-_7qWVHie.woff2 +0 -0
  1944. package/public/assets/ibm-plex-sans-kr-27-700-normal-h3oxUHXv.woff +0 -0
  1945. package/public/assets/ibm-plex-sans-kr-28-400-normal-Bwghrgjh.woff2 +0 -0
  1946. package/public/assets/ibm-plex-sans-kr-28-400-normal-DNnelfuN.woff +0 -0
  1947. package/public/assets/ibm-plex-sans-kr-28-600-normal-BBQsSgWd.woff2 +0 -0
  1948. package/public/assets/ibm-plex-sans-kr-28-600-normal-BeDPvyp8.woff +0 -0
  1949. package/public/assets/ibm-plex-sans-kr-28-700-normal-Cjg_wNSB.woff +0 -0
  1950. package/public/assets/ibm-plex-sans-kr-28-700-normal-DY_bvrHQ.woff2 +0 -0
  1951. package/public/assets/ibm-plex-sans-kr-29-400-normal-Dj7VksMf.woff +0 -0
  1952. package/public/assets/ibm-plex-sans-kr-29-400-normal-gP3qcvie.woff2 +0 -0
  1953. package/public/assets/ibm-plex-sans-kr-29-600-normal-B0Nsm10J.woff +0 -0
  1954. package/public/assets/ibm-plex-sans-kr-29-600-normal-Dn9kzegM.woff2 +0 -0
  1955. package/public/assets/ibm-plex-sans-kr-29-700-normal-BaagHPlF.woff2 +0 -0
  1956. package/public/assets/ibm-plex-sans-kr-29-700-normal-sM5sErEE.woff +0 -0
  1957. package/public/assets/ibm-plex-sans-kr-3-400-normal-01r-uCGK.woff +0 -0
  1958. package/public/assets/ibm-plex-sans-kr-3-400-normal-MpgNCYqt.woff2 +0 -0
  1959. package/public/assets/ibm-plex-sans-kr-3-600-normal-CuyoBBEp.woff2 +0 -0
  1960. package/public/assets/ibm-plex-sans-kr-3-600-normal-OOnXi3dj.woff +0 -0
  1961. package/public/assets/ibm-plex-sans-kr-3-700-normal-GjYjPFRF.woff +0 -0
  1962. package/public/assets/ibm-plex-sans-kr-3-700-normal-Vr7CPe4d.woff2 +0 -0
  1963. package/public/assets/ibm-plex-sans-kr-30-400-normal-4H84KBjL.woff +0 -0
  1964. package/public/assets/ibm-plex-sans-kr-30-400-normal-D9W6fT0U.woff2 +0 -0
  1965. package/public/assets/ibm-plex-sans-kr-30-600-normal-CHYuKtvD.woff +0 -0
  1966. package/public/assets/ibm-plex-sans-kr-30-600-normal-DAX8ENIb.woff2 +0 -0
  1967. package/public/assets/ibm-plex-sans-kr-30-700-normal-DvDs5GHe.woff2 +0 -0
  1968. package/public/assets/ibm-plex-sans-kr-30-700-normal-kGpxnFlG.woff +0 -0
  1969. package/public/assets/ibm-plex-sans-kr-31-400-normal-BnpH2dyr.woff +0 -0
  1970. package/public/assets/ibm-plex-sans-kr-31-400-normal-DhPplA2S.woff2 +0 -0
  1971. package/public/assets/ibm-plex-sans-kr-31-600-normal-BDIwmQD2.woff +0 -0
  1972. package/public/assets/ibm-plex-sans-kr-31-600-normal-DWFfqfVJ.woff2 +0 -0
  1973. package/public/assets/ibm-plex-sans-kr-31-700-normal-BEM3LLr5.woff +0 -0
  1974. package/public/assets/ibm-plex-sans-kr-31-700-normal-BH_9UzMR.woff2 +0 -0
  1975. package/public/assets/ibm-plex-sans-kr-32-400-normal-BkNndOiq.woff2 +0 -0
  1976. package/public/assets/ibm-plex-sans-kr-32-400-normal-GRBsq_TQ.woff +0 -0
  1977. package/public/assets/ibm-plex-sans-kr-32-600-normal-Dc31ixSD.woff2 +0 -0
  1978. package/public/assets/ibm-plex-sans-kr-32-600-normal-qBGKeeZh.woff +0 -0
  1979. package/public/assets/ibm-plex-sans-kr-32-700-normal-CKh4-8lS.woff +0 -0
  1980. package/public/assets/ibm-plex-sans-kr-32-700-normal-SEF2IUu4.woff2 +0 -0
  1981. package/public/assets/ibm-plex-sans-kr-33-400-normal-BEJcB5Pj.woff +0 -0
  1982. package/public/assets/ibm-plex-sans-kr-33-400-normal-DOnua0XC.woff2 +0 -0
  1983. package/public/assets/ibm-plex-sans-kr-33-600-normal-Dk43PWfK.woff +0 -0
  1984. package/public/assets/ibm-plex-sans-kr-33-600-normal-_9rnVtrt.woff2 +0 -0
  1985. package/public/assets/ibm-plex-sans-kr-33-700-normal-BkaB_Reu.woff +0 -0
  1986. package/public/assets/ibm-plex-sans-kr-33-700-normal-DbnutdYp.woff2 +0 -0
  1987. package/public/assets/ibm-plex-sans-kr-34-400-normal-BFI-kcuc.woff +0 -0
  1988. package/public/assets/ibm-plex-sans-kr-34-400-normal-b_F-aCuz.woff2 +0 -0
  1989. package/public/assets/ibm-plex-sans-kr-34-600-normal-BwgNjnnm.woff2 +0 -0
  1990. package/public/assets/ibm-plex-sans-kr-34-600-normal-Dkhx4lxu.woff +0 -0
  1991. package/public/assets/ibm-plex-sans-kr-34-700-normal-UpohLQJI.woff2 +0 -0
  1992. package/public/assets/ibm-plex-sans-kr-34-700-normal-Yul5WPNb.woff +0 -0
  1993. package/public/assets/ibm-plex-sans-kr-35-400-normal-CHpiv9C7.woff2 +0 -0
  1994. package/public/assets/ibm-plex-sans-kr-35-400-normal-D8XpW-jV.woff +0 -0
  1995. package/public/assets/ibm-plex-sans-kr-35-600-normal-CD4ArYzM.woff2 +0 -0
  1996. package/public/assets/ibm-plex-sans-kr-35-600-normal-M066d6gr.woff +0 -0
  1997. package/public/assets/ibm-plex-sans-kr-35-700-normal-DV4atPPn.woff2 +0 -0
  1998. package/public/assets/ibm-plex-sans-kr-35-700-normal-hjVn7kub.woff +0 -0
  1999. package/public/assets/ibm-plex-sans-kr-36-400-normal-BT6SwwtR.woff2 +0 -0
  2000. package/public/assets/ibm-plex-sans-kr-36-400-normal-Cd-eoA5H.woff +0 -0
  2001. package/public/assets/ibm-plex-sans-kr-36-600-normal-DsGroCqE.woff +0 -0
  2002. package/public/assets/ibm-plex-sans-kr-36-600-normal-kFFPHZH9.woff2 +0 -0
  2003. package/public/assets/ibm-plex-sans-kr-36-700-normal-CO6mIiJi.woff +0 -0
  2004. package/public/assets/ibm-plex-sans-kr-36-700-normal-DfKrXTUN.woff2 +0 -0
  2005. package/public/assets/ibm-plex-sans-kr-37-400-normal-BiWBJPQ7.woff2 +0 -0
  2006. package/public/assets/ibm-plex-sans-kr-37-400-normal-Bj7jp-Iz.woff +0 -0
  2007. package/public/assets/ibm-plex-sans-kr-37-600-normal-CnPg-4RZ.woff2 +0 -0
  2008. package/public/assets/ibm-plex-sans-kr-37-600-normal-Cvgtdz7H.woff +0 -0
  2009. package/public/assets/ibm-plex-sans-kr-37-700-normal-BtF0jwlF.woff +0 -0
  2010. package/public/assets/ibm-plex-sans-kr-37-700-normal-C4IDZ9L-.woff2 +0 -0
  2011. package/public/assets/ibm-plex-sans-kr-38-400-normal-B4UIE9Zj.woff +0 -0
  2012. package/public/assets/ibm-plex-sans-kr-38-400-normal-CLr3K58D.woff2 +0 -0
  2013. package/public/assets/ibm-plex-sans-kr-38-600-normal-Dln3mVPi.woff +0 -0
  2014. package/public/assets/ibm-plex-sans-kr-38-600-normal-Uy8tuoQH.woff2 +0 -0
  2015. package/public/assets/ibm-plex-sans-kr-38-700-normal-DClAUGO7.woff +0 -0
  2016. package/public/assets/ibm-plex-sans-kr-38-700-normal-DHBmduQt.woff2 +0 -0
  2017. package/public/assets/ibm-plex-sans-kr-39-400-normal-BzR2eDWi.woff2 +0 -0
  2018. package/public/assets/ibm-plex-sans-kr-39-400-normal-WTG9_11D.woff +0 -0
  2019. package/public/assets/ibm-plex-sans-kr-39-600-normal-DHmemGdc.woff +0 -0
  2020. package/public/assets/ibm-plex-sans-kr-39-600-normal-DxNgVy70.woff2 +0 -0
  2021. package/public/assets/ibm-plex-sans-kr-39-700-normal-B7V6NyLX.woff +0 -0
  2022. package/public/assets/ibm-plex-sans-kr-39-700-normal-CijZ21_m.woff2 +0 -0
  2023. package/public/assets/ibm-plex-sans-kr-4-400-normal-1GfpLFeR.woff +0 -0
  2024. package/public/assets/ibm-plex-sans-kr-4-400-normal-BSOJFi3M.woff2 +0 -0
  2025. package/public/assets/ibm-plex-sans-kr-4-600-normal-BGAcZoa5.woff +0 -0
  2026. package/public/assets/ibm-plex-sans-kr-4-600-normal-DP-OzMv8.woff2 +0 -0
  2027. package/public/assets/ibm-plex-sans-kr-4-700-normal-BTl2LovL.woff +0 -0
  2028. package/public/assets/ibm-plex-sans-kr-4-700-normal-PLU2uOG6.woff2 +0 -0
  2029. package/public/assets/ibm-plex-sans-kr-40-400-normal-BJCaISym.woff +0 -0
  2030. package/public/assets/ibm-plex-sans-kr-40-400-normal-DxlOKNb6.woff2 +0 -0
  2031. package/public/assets/ibm-plex-sans-kr-40-600-normal-D79iYZbh.woff +0 -0
  2032. package/public/assets/ibm-plex-sans-kr-40-600-normal-DyMFY3yG.woff2 +0 -0
  2033. package/public/assets/ibm-plex-sans-kr-40-700-normal-BOSqPgLZ.woff2 +0 -0
  2034. package/public/assets/ibm-plex-sans-kr-40-700-normal-Bs7eQneK.woff +0 -0
  2035. package/public/assets/ibm-plex-sans-kr-41-400-normal-Ce6_8B6O.woff +0 -0
  2036. package/public/assets/ibm-plex-sans-kr-41-400-normal-THO3jy3s.woff2 +0 -0
  2037. package/public/assets/ibm-plex-sans-kr-41-600-normal-Ck2K5Ulf.woff2 +0 -0
  2038. package/public/assets/ibm-plex-sans-kr-41-600-normal-Df3Wep6L.woff +0 -0
  2039. package/public/assets/ibm-plex-sans-kr-41-700-normal-B-9pR0B0.woff2 +0 -0
  2040. package/public/assets/ibm-plex-sans-kr-41-700-normal-vrmrQol7.woff +0 -0
  2041. package/public/assets/ibm-plex-sans-kr-42-400-normal-Cgyyi6Mk.woff2 +0 -0
  2042. package/public/assets/ibm-plex-sans-kr-42-400-normal-mWRC9cE4.woff +0 -0
  2043. package/public/assets/ibm-plex-sans-kr-42-600-normal-BIw3yp_o.woff +0 -0
  2044. package/public/assets/ibm-plex-sans-kr-42-600-normal-CgHlrSUg.woff2 +0 -0
  2045. package/public/assets/ibm-plex-sans-kr-42-700-normal-CE4g_Vnr.woff2 +0 -0
  2046. package/public/assets/ibm-plex-sans-kr-42-700-normal-OHitFFYG.woff +0 -0
  2047. package/public/assets/ibm-plex-sans-kr-43-400-normal-DofKP3XM.woff2 +0 -0
  2048. package/public/assets/ibm-plex-sans-kr-43-400-normal-rklqUmDh.woff +0 -0
  2049. package/public/assets/ibm-plex-sans-kr-43-600-normal-BPJjrS1c.woff2 +0 -0
  2050. package/public/assets/ibm-plex-sans-kr-43-600-normal-Dl6BB-Lj.woff +0 -0
  2051. package/public/assets/ibm-plex-sans-kr-43-700-normal-B4zrRhmq.woff2 +0 -0
  2052. package/public/assets/ibm-plex-sans-kr-43-700-normal-Vq2Xt21W.woff +0 -0
  2053. package/public/assets/ibm-plex-sans-kr-44-400-normal-BPQ_BGOm.woff +0 -0
  2054. package/public/assets/ibm-plex-sans-kr-44-400-normal-BvoXxhh-.woff2 +0 -0
  2055. package/public/assets/ibm-plex-sans-kr-44-600-normal-B1scqjS5.woff2 +0 -0
  2056. package/public/assets/ibm-plex-sans-kr-44-600-normal-B1vhjtxY.woff +0 -0
  2057. package/public/assets/ibm-plex-sans-kr-44-700-normal-CdiYya7N.woff +0 -0
  2058. package/public/assets/ibm-plex-sans-kr-44-700-normal-CizxTCTp.woff2 +0 -0
  2059. package/public/assets/ibm-plex-sans-kr-45-400-normal-BN1x-JCl.woff +0 -0
  2060. package/public/assets/ibm-plex-sans-kr-45-400-normal-DMKz6H_F.woff2 +0 -0
  2061. package/public/assets/ibm-plex-sans-kr-45-600-normal-D74kcLg1.woff +0 -0
  2062. package/public/assets/ibm-plex-sans-kr-45-600-normal-DNXvxDIf.woff2 +0 -0
  2063. package/public/assets/ibm-plex-sans-kr-45-700-normal-BdAAndOM.woff2 +0 -0
  2064. package/public/assets/ibm-plex-sans-kr-45-700-normal-DeYHlTSC.woff +0 -0
  2065. package/public/assets/ibm-plex-sans-kr-46-400-normal-K8yMYku4.woff +0 -0
  2066. package/public/assets/ibm-plex-sans-kr-46-400-normal-Z0YZvJMA.woff2 +0 -0
  2067. package/public/assets/ibm-plex-sans-kr-46-600-normal-CfEBl86K.woff2 +0 -0
  2068. package/public/assets/ibm-plex-sans-kr-46-600-normal-Yu7W5Ur_.woff +0 -0
  2069. package/public/assets/ibm-plex-sans-kr-46-700-normal-C2i6qX8o.woff2 +0 -0
  2070. package/public/assets/ibm-plex-sans-kr-46-700-normal-Ck28wpb6.woff +0 -0
  2071. package/public/assets/ibm-plex-sans-kr-47-400-normal-BHD-6hCF.woff +0 -0
  2072. package/public/assets/ibm-plex-sans-kr-47-400-normal-DapCxPvn.woff2 +0 -0
  2073. package/public/assets/ibm-plex-sans-kr-47-600-normal-CxMB4f1K.woff +0 -0
  2074. package/public/assets/ibm-plex-sans-kr-47-600-normal-tmv6xC_z.woff2 +0 -0
  2075. package/public/assets/ibm-plex-sans-kr-47-700-normal-ByTiuiZy.woff +0 -0
  2076. package/public/assets/ibm-plex-sans-kr-47-700-normal-C_LnNwcx.woff2 +0 -0
  2077. package/public/assets/ibm-plex-sans-kr-48-400-normal-5VJWa5C8.woff +0 -0
  2078. package/public/assets/ibm-plex-sans-kr-48-400-normal-CBCdCJJN.woff2 +0 -0
  2079. package/public/assets/ibm-plex-sans-kr-48-600-normal-DAbbVYEi.woff +0 -0
  2080. package/public/assets/ibm-plex-sans-kr-48-600-normal-QEQJ2vNg.woff2 +0 -0
  2081. package/public/assets/ibm-plex-sans-kr-48-700-normal-D9NnIF6F.woff2 +0 -0
  2082. package/public/assets/ibm-plex-sans-kr-48-700-normal-gCAr-9Ui.woff +0 -0
  2083. package/public/assets/ibm-plex-sans-kr-49-400-normal-BENNdZwd.woff2 +0 -0
  2084. package/public/assets/ibm-plex-sans-kr-49-400-normal-DrUErJVA.woff +0 -0
  2085. package/public/assets/ibm-plex-sans-kr-49-600-normal-B9kwAyIi.woff2 +0 -0
  2086. package/public/assets/ibm-plex-sans-kr-49-600-normal-DHvPm2NF.woff +0 -0
  2087. package/public/assets/ibm-plex-sans-kr-49-700-normal-C7LprN_f.woff2 +0 -0
  2088. package/public/assets/ibm-plex-sans-kr-49-700-normal-C80RxHso.woff +0 -0
  2089. package/public/assets/ibm-plex-sans-kr-5-400-normal-B1Nb7Dqt.woff +0 -0
  2090. package/public/assets/ibm-plex-sans-kr-5-400-normal-BBWPbJ8R.woff2 +0 -0
  2091. package/public/assets/ibm-plex-sans-kr-5-600-normal-BV1Q-ya9.woff2 +0 -0
  2092. package/public/assets/ibm-plex-sans-kr-5-600-normal-vSSmYEgt.woff +0 -0
  2093. package/public/assets/ibm-plex-sans-kr-5-700-normal-88k3u19j.woff2 +0 -0
  2094. package/public/assets/ibm-plex-sans-kr-5-700-normal-Bm4AIB4W.woff +0 -0
  2095. package/public/assets/ibm-plex-sans-kr-50-400-normal-DSyr09Pi.woff +0 -0
  2096. package/public/assets/ibm-plex-sans-kr-50-400-normal-wVEmJJbn.woff2 +0 -0
  2097. package/public/assets/ibm-plex-sans-kr-50-600-normal-CNwgbPME.woff2 +0 -0
  2098. package/public/assets/ibm-plex-sans-kr-50-600-normal-DwlyYo3O.woff +0 -0
  2099. package/public/assets/ibm-plex-sans-kr-50-700-normal-BpuC-Ja2.woff2 +0 -0
  2100. package/public/assets/ibm-plex-sans-kr-50-700-normal-DJ4qrNjm.woff +0 -0
  2101. package/public/assets/ibm-plex-sans-kr-51-400-normal-CI8zKOiq.woff2 +0 -0
  2102. package/public/assets/ibm-plex-sans-kr-51-400-normal-Nb_ATV55.woff +0 -0
  2103. package/public/assets/ibm-plex-sans-kr-51-600-normal-D1q9iZG9.woff2 +0 -0
  2104. package/public/assets/ibm-plex-sans-kr-51-600-normal-DCKOx3do.woff +0 -0
  2105. package/public/assets/ibm-plex-sans-kr-51-700-normal-CDxcnlps.woff2 +0 -0
  2106. package/public/assets/ibm-plex-sans-kr-51-700-normal-CrbVhrAy.woff +0 -0
  2107. package/public/assets/ibm-plex-sans-kr-52-400-normal-DgbfUacv.woff +0 -0
  2108. package/public/assets/ibm-plex-sans-kr-52-400-normal-Dqrwgacb.woff2 +0 -0
  2109. package/public/assets/ibm-plex-sans-kr-52-600-normal-DpEHO2lx.woff +0 -0
  2110. package/public/assets/ibm-plex-sans-kr-52-600-normal-HtoGXJPD.woff2 +0 -0
  2111. package/public/assets/ibm-plex-sans-kr-52-700-normal-6UeGb2y_.woff +0 -0
  2112. package/public/assets/ibm-plex-sans-kr-52-700-normal-Cj2MbqkN.woff2 +0 -0
  2113. package/public/assets/ibm-plex-sans-kr-53-400-normal-BPlmQmyN.woff +0 -0
  2114. package/public/assets/ibm-plex-sans-kr-53-400-normal-uFBOSatZ.woff2 +0 -0
  2115. package/public/assets/ibm-plex-sans-kr-53-600-normal-3e73VLox.woff2 +0 -0
  2116. package/public/assets/ibm-plex-sans-kr-53-600-normal-CHFWjDbo.woff +0 -0
  2117. package/public/assets/ibm-plex-sans-kr-53-700-normal-BtF7lJZ6.woff2 +0 -0
  2118. package/public/assets/ibm-plex-sans-kr-53-700-normal-D1_BFs6r.woff +0 -0
  2119. package/public/assets/ibm-plex-sans-kr-54-400-normal-B_JBM8HP.woff2 +0 -0
  2120. package/public/assets/ibm-plex-sans-kr-54-400-normal-DShvO3nx.woff +0 -0
  2121. package/public/assets/ibm-plex-sans-kr-54-600-normal-CIir-_6C.woff2 +0 -0
  2122. package/public/assets/ibm-plex-sans-kr-54-600-normal-HSAnxCQg.woff +0 -0
  2123. package/public/assets/ibm-plex-sans-kr-54-700-normal-DOcpS_k9.woff2 +0 -0
  2124. package/public/assets/ibm-plex-sans-kr-54-700-normal-DR_NIHG9.woff +0 -0
  2125. package/public/assets/ibm-plex-sans-kr-55-400-normal-BIBVbLNo.woff2 +0 -0
  2126. package/public/assets/ibm-plex-sans-kr-55-400-normal-DACpgdpL.woff +0 -0
  2127. package/public/assets/ibm-plex-sans-kr-55-600-normal-ByArDHHI.woff2 +0 -0
  2128. package/public/assets/ibm-plex-sans-kr-55-600-normal-CNKcN-Ig.woff +0 -0
  2129. package/public/assets/ibm-plex-sans-kr-55-700-normal-9BGvVFJG.woff +0 -0
  2130. package/public/assets/ibm-plex-sans-kr-55-700-normal-DCUUt7cX.woff2 +0 -0
  2131. package/public/assets/ibm-plex-sans-kr-56-400-normal-D6a133Nk.woff +0 -0
  2132. package/public/assets/ibm-plex-sans-kr-56-400-normal-E_0UP4jm.woff2 +0 -0
  2133. package/public/assets/ibm-plex-sans-kr-56-600-normal-DScuu4Uu.woff2 +0 -0
  2134. package/public/assets/ibm-plex-sans-kr-56-600-normal-hzikha37.woff +0 -0
  2135. package/public/assets/ibm-plex-sans-kr-56-700-normal-BCQXFjgs.woff +0 -0
  2136. package/public/assets/ibm-plex-sans-kr-56-700-normal-CfjdYZM4.woff2 +0 -0
  2137. package/public/assets/ibm-plex-sans-kr-57-400-normal-CBQftTJt.woff +0 -0
  2138. package/public/assets/ibm-plex-sans-kr-57-400-normal-F8LL-J5_.woff2 +0 -0
  2139. package/public/assets/ibm-plex-sans-kr-57-600-normal-BR6Du0PQ.woff +0 -0
  2140. package/public/assets/ibm-plex-sans-kr-57-600-normal-CQ1redVd.woff2 +0 -0
  2141. package/public/assets/ibm-plex-sans-kr-57-700-normal-DQEJ1-LS.woff2 +0 -0
  2142. package/public/assets/ibm-plex-sans-kr-57-700-normal-FH-ttKed.woff +0 -0
  2143. package/public/assets/ibm-plex-sans-kr-58-400-normal-DqIzdKrV.woff +0 -0
  2144. package/public/assets/ibm-plex-sans-kr-58-400-normal-i71EDyfV.woff2 +0 -0
  2145. package/public/assets/ibm-plex-sans-kr-58-600-normal-Bpgq8MX2.woff +0 -0
  2146. package/public/assets/ibm-plex-sans-kr-58-600-normal-Bqgrv0lo.woff2 +0 -0
  2147. package/public/assets/ibm-plex-sans-kr-58-700-normal-Bj2HnGEw.woff +0 -0
  2148. package/public/assets/ibm-plex-sans-kr-58-700-normal-DYsLBu1T.woff2 +0 -0
  2149. package/public/assets/ibm-plex-sans-kr-59-400-normal-B-8F2Uet.woff +0 -0
  2150. package/public/assets/ibm-plex-sans-kr-59-400-normal-BHAiqXEM.woff2 +0 -0
  2151. package/public/assets/ibm-plex-sans-kr-59-600-normal-B-CGe3sL.woff2 +0 -0
  2152. package/public/assets/ibm-plex-sans-kr-59-600-normal-BuQf4YmM.woff +0 -0
  2153. package/public/assets/ibm-plex-sans-kr-59-700-normal-BZ9z_FHx.woff +0 -0
  2154. package/public/assets/ibm-plex-sans-kr-59-700-normal-CWSgjf9c.woff2 +0 -0
  2155. package/public/assets/ibm-plex-sans-kr-6-400-normal-AY_mybA2.woff +0 -0
  2156. package/public/assets/ibm-plex-sans-kr-6-400-normal-CTPxjOYB.woff2 +0 -0
  2157. package/public/assets/ibm-plex-sans-kr-6-600-normal-CdfPYwdk.woff2 +0 -0
  2158. package/public/assets/ibm-plex-sans-kr-6-600-normal-oGadQOpD.woff +0 -0
  2159. package/public/assets/ibm-plex-sans-kr-6-700-normal-DLe2ZT_Q.woff2 +0 -0
  2160. package/public/assets/ibm-plex-sans-kr-6-700-normal-bXRUCZKE.woff +0 -0
  2161. package/public/assets/ibm-plex-sans-kr-60-400-normal-CEDE9rS0.woff +0 -0
  2162. package/public/assets/ibm-plex-sans-kr-60-400-normal-z5dDoQx9.woff2 +0 -0
  2163. package/public/assets/ibm-plex-sans-kr-60-600-normal-Bl94dFYa.woff2 +0 -0
  2164. package/public/assets/ibm-plex-sans-kr-60-600-normal-OLqttnKu.woff +0 -0
  2165. package/public/assets/ibm-plex-sans-kr-60-700-normal-CYME5EXY.woff2 +0 -0
  2166. package/public/assets/ibm-plex-sans-kr-60-700-normal-I1XysYDt.woff +0 -0
  2167. package/public/assets/ibm-plex-sans-kr-61-400-normal-Ci1tC2DE.woff +0 -0
  2168. package/public/assets/ibm-plex-sans-kr-61-400-normal-DnyFjM_B.woff2 +0 -0
  2169. package/public/assets/ibm-plex-sans-kr-61-600-normal-BZxjTCO5.woff +0 -0
  2170. package/public/assets/ibm-plex-sans-kr-61-600-normal-ChG7s6jj.woff2 +0 -0
  2171. package/public/assets/ibm-plex-sans-kr-61-700-normal-Bi5bgOa-.woff +0 -0
  2172. package/public/assets/ibm-plex-sans-kr-61-700-normal-CCHPFSSV.woff2 +0 -0
  2173. package/public/assets/ibm-plex-sans-kr-62-400-normal-BIF8JT4K.woff2 +0 -0
  2174. package/public/assets/ibm-plex-sans-kr-62-400-normal-BMQQOADr.woff +0 -0
  2175. package/public/assets/ibm-plex-sans-kr-62-600-normal-BwPZY4No.woff +0 -0
  2176. package/public/assets/ibm-plex-sans-kr-62-600-normal-CCy9m1Yi.woff2 +0 -0
  2177. package/public/assets/ibm-plex-sans-kr-62-700-normal-CUKZrRn4.woff +0 -0
  2178. package/public/assets/ibm-plex-sans-kr-62-700-normal-PUE26tsV.woff2 +0 -0
  2179. package/public/assets/ibm-plex-sans-kr-63-400-normal-Bi-DePsy.woff +0 -0
  2180. package/public/assets/ibm-plex-sans-kr-63-400-normal-DbEg4X6i.woff2 +0 -0
  2181. package/public/assets/ibm-plex-sans-kr-63-600-normal-B_hznMYb.woff2 +0 -0
  2182. package/public/assets/ibm-plex-sans-kr-63-600-normal-DXp5U46T.woff +0 -0
  2183. package/public/assets/ibm-plex-sans-kr-63-700-normal-CdRKaRR8.woff +0 -0
  2184. package/public/assets/ibm-plex-sans-kr-63-700-normal-d_p4qgBI.woff2 +0 -0
  2185. package/public/assets/ibm-plex-sans-kr-64-400-normal-BoOvEFVR.woff2 +0 -0
  2186. package/public/assets/ibm-plex-sans-kr-64-400-normal-DhttFBeF.woff +0 -0
  2187. package/public/assets/ibm-plex-sans-kr-64-600-normal-DdDi5wpQ.woff2 +0 -0
  2188. package/public/assets/ibm-plex-sans-kr-64-600-normal-DnHS-nmP.woff +0 -0
  2189. package/public/assets/ibm-plex-sans-kr-64-700-normal-DvcYr3Tg.woff2 +0 -0
  2190. package/public/assets/ibm-plex-sans-kr-64-700-normal-Z-oKOpcu.woff +0 -0
  2191. package/public/assets/ibm-plex-sans-kr-65-600-normal-CuB_ApqX.woff2 +0 -0
  2192. package/public/assets/ibm-plex-sans-kr-65-700-normal-OQGIHpUr.woff2 +0 -0
  2193. package/public/assets/ibm-plex-sans-kr-7-400-normal-CDkAi-IU.woff2 +0 -0
  2194. package/public/assets/ibm-plex-sans-kr-7-400-normal-VZ_YUdPy.woff +0 -0
  2195. package/public/assets/ibm-plex-sans-kr-7-600-normal-CeGVp1rD.woff +0 -0
  2196. package/public/assets/ibm-plex-sans-kr-7-600-normal-Dh7JSXz4.woff2 +0 -0
  2197. package/public/assets/ibm-plex-sans-kr-7-700-normal-C-GGubNS.woff +0 -0
  2198. package/public/assets/ibm-plex-sans-kr-7-700-normal-DkDnzNv2.woff2 +0 -0
  2199. package/public/assets/ibm-plex-sans-kr-8-400-normal-BmMhoS32.woff2 +0 -0
  2200. package/public/assets/ibm-plex-sans-kr-8-400-normal-Ci0W5IWz.woff +0 -0
  2201. package/public/assets/ibm-plex-sans-kr-8-600-normal-B0rxBWNc.woff2 +0 -0
  2202. package/public/assets/ibm-plex-sans-kr-8-600-normal-BJjl00Le.woff +0 -0
  2203. package/public/assets/ibm-plex-sans-kr-8-700-normal-5jYiHHRz.woff2 +0 -0
  2204. package/public/assets/ibm-plex-sans-kr-8-700-normal-BEKQdV0c.woff +0 -0
  2205. package/public/assets/ibm-plex-sans-kr-9-400-normal-CeBwsqAD.woff +0 -0
  2206. package/public/assets/ibm-plex-sans-kr-9-400-normal-DJinq116.woff2 +0 -0
  2207. package/public/assets/ibm-plex-sans-kr-9-600-normal-DWoOSbq5.woff +0 -0
  2208. package/public/assets/ibm-plex-sans-kr-9-600-normal-DraA-1Zl.woff2 +0 -0
  2209. package/public/assets/ibm-plex-sans-kr-9-700-normal-BkZ1vv2G.woff +0 -0
  2210. package/public/assets/ibm-plex-sans-kr-9-700-normal-CymJjnAS.woff2 +0 -0
  2211. package/public/assets/ibm-plex-sans-kr-93-400-normal-5J6UR9CM.woff2 +0 -0
  2212. package/public/assets/ibm-plex-sans-kr-93-400-normal-Cdi-IBra.woff +0 -0
  2213. package/public/assets/ibm-plex-sans-kr-93-600-normal-4KzAAJzD.woff +0 -0
  2214. package/public/assets/ibm-plex-sans-kr-93-600-normal-C3ObUrek.woff2 +0 -0
  2215. package/public/assets/ibm-plex-sans-kr-93-700-normal-BEo_xrjH.woff +0 -0
  2216. package/public/assets/ibm-plex-sans-kr-93-700-normal-DYlKYBEL.woff2 +0 -0
  2217. package/public/assets/ibm-plex-sans-kr-94-400-normal-CLS33fqM.woff +0 -0
  2218. package/public/assets/ibm-plex-sans-kr-94-400-normal-CsJn1kPf.woff2 +0 -0
  2219. package/public/assets/ibm-plex-sans-kr-94-600-normal-BqkCATJS.woff2 +0 -0
  2220. package/public/assets/ibm-plex-sans-kr-94-600-normal-DGs8D_d9.woff +0 -0
  2221. package/public/assets/ibm-plex-sans-kr-94-700-normal-BcAowvjY.woff2 +0 -0
  2222. package/public/assets/ibm-plex-sans-kr-94-700-normal-Rande0GP.woff +0 -0
  2223. package/public/assets/ibm-plex-sans-kr-96-400-normal-DqxPcneT.woff2 +0 -0
  2224. package/public/assets/ibm-plex-sans-kr-96-400-normal-m9r3xH18.woff +0 -0
  2225. package/public/assets/ibm-plex-sans-kr-96-600-normal-E6j9XpvP.woff +0 -0
  2226. package/public/assets/ibm-plex-sans-kr-96-600-normal-qnNrW3Df.woff2 +0 -0
  2227. package/public/assets/ibm-plex-sans-kr-96-700-normal-D_kcIWRN.woff +0 -0
  2228. package/public/assets/ibm-plex-sans-kr-96-700-normal-DafuQoH3.woff2 +0 -0
  2229. package/public/assets/ibm-plex-sans-kr-97-400-normal-DOlHHts_.woff2 +0 -0
  2230. package/public/assets/ibm-plex-sans-kr-97-400-normal-TWLDWHgL.woff +0 -0
  2231. package/public/assets/ibm-plex-sans-kr-97-600-normal-CHxkMEAU.woff2 +0 -0
  2232. package/public/assets/ibm-plex-sans-kr-97-600-normal-CXVo40nf.woff +0 -0
  2233. package/public/assets/ibm-plex-sans-kr-97-700-normal-BdFpzIjS.woff2 +0 -0
  2234. package/public/assets/ibm-plex-sans-kr-97-700-normal-C5vPlSUB.woff +0 -0
  2235. package/public/assets/ibm-plex-sans-kr-98-400-normal-CyxDRXqs.woff2 +0 -0
  2236. package/public/assets/ibm-plex-sans-kr-98-400-normal-D-_zohjb.woff +0 -0
  2237. package/public/assets/ibm-plex-sans-kr-98-600-normal-CizO16Ew.woff +0 -0
  2238. package/public/assets/ibm-plex-sans-kr-98-600-normal-D-SBD5Hk.woff2 +0 -0
  2239. package/public/assets/ibm-plex-sans-kr-98-700-normal-BArUuixv.woff2 +0 -0
  2240. package/public/assets/ibm-plex-sans-kr-98-700-normal-O_rp84MR.woff +0 -0
  2241. package/public/assets/ibm-plex-sans-kr-99-400-normal-COuj214s.woff2 +0 -0
  2242. package/public/assets/ibm-plex-sans-kr-99-600-normal-j_ccRvHi.woff2 +0 -0
  2243. package/public/assets/ibm-plex-sans-kr-99-700-normal-BGCe6SPX.woff2 +0 -0
  2244. package/public/assets/ibm-plex-sans-kr-latin-400-normal-7kwLL-e3.woff +0 -0
  2245. package/public/assets/ibm-plex-sans-kr-latin-400-normal-Bc7vhvxM.woff2 +0 -0
  2246. package/public/assets/ibm-plex-sans-kr-latin-600-normal-n-2PV5Ut.woff2 +0 -0
  2247. package/public/assets/ibm-plex-sans-kr-latin-600-normal-yks4z4wu.woff +0 -0
  2248. package/public/assets/ibm-plex-sans-kr-latin-700-normal-Bj41MRxQ.woff +0 -0
  2249. package/public/assets/ibm-plex-sans-kr-latin-700-normal-CIbXnLaA.woff2 +0 -0
  2250. package/public/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  2251. package/public/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  2252. package/public/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
  2253. package/public/assets/index-CS23Ozt6.js +11 -0
  2254. package/public/assets/index-CS23Ozt6.js.map +1 -0
  2255. package/public/assets/index-DZyHRhbQ.css +2 -0
  2256. package/public/assets/initial-avatar-CtuDUz_W.js +2 -0
  2257. package/public/assets/initial-avatar-CtuDUz_W.js.map +1 -0
  2258. package/public/assets/input-CzQki7k6.js +2 -0
  2259. package/public/assets/input-CzQki7k6.js.map +1 -0
  2260. package/public/assets/key-round-CdvHb8vT.js +2 -0
  2261. package/public/assets/key-round-CdvHb8vT.js.map +1 -0
  2262. package/public/assets/labeled-separator-CV7nb0XW.js +2 -0
  2263. package/public/assets/labeled-separator-CV7nb0XW.js.map +1 -0
  2264. package/public/assets/link-C-WdTj3F.js +2 -0
  2265. package/public/assets/link-C-WdTj3F.js.map +1 -0
  2266. package/public/assets/lock-7NRyvXBS.js +2 -0
  2267. package/public/assets/lock-7NRyvXBS.js.map +1 -0
  2268. package/public/assets/login-C5vUVgr_.js +2 -0
  2269. package/public/assets/login-C5vUVgr_.js.map +1 -0
  2270. package/public/assets/login-nukebli4.js +2 -0
  2271. package/public/assets/login-nukebli4.js.map +1 -0
  2272. package/public/assets/logout-B5T52P8u.js +2 -0
  2273. package/public/assets/logout-B5T52P8u.js.map +1 -0
  2274. package/public/assets/mail-D0B_1Dzd.js +2 -0
  2275. package/public/assets/mail-D0B_1Dzd.js.map +1 -0
  2276. package/public/assets/modal-BDQFucjz.js +2 -0
  2277. package/public/assets/modal-BDQFucjz.js.map +1 -0
  2278. package/public/assets/mutationOptions-DyYFUbyn.js +2 -0
  2279. package/public/assets/mutationOptions-DyYFUbyn.js.map +1 -0
  2280. package/public/assets/passkey-BE9JvJOP.js +2 -0
  2281. package/public/assets/passkey-BE9JvJOP.js.map +1 -0
  2282. package/public/assets/passkey-C5vUVgr_.js +2 -0
  2283. package/public/assets/passkey-C5vUVgr_.js.map +1 -0
  2284. package/public/assets/passkey-CynCz1Dt.js +2 -0
  2285. package/public/assets/passkey-CynCz1Dt.js.map +1 -0
  2286. package/public/assets/passkey-J1qnYp9A.js +2 -0
  2287. package/public/assets/passkey-J1qnYp9A.js.map +1 -0
  2288. package/public/assets/passkey-error-ZqqPQUta.js +2 -0
  2289. package/public/assets/passkey-error-ZqqPQUta.js.map +1 -0
  2290. package/public/assets/password-C5vUVgr_.js +2 -0
  2291. package/public/assets/password-C5vUVgr_.js.map +1 -0
  2292. package/public/assets/password-RkUttbhD.js +2 -0
  2293. package/public/assets/password-RkUttbhD.js.map +1 -0
  2294. package/public/assets/password-reset-sU5KkBKi.js +2 -0
  2295. package/public/assets/password-reset-sU5KkBKi.js.map +1 -0
  2296. package/public/assets/password-strength-BeSOu_Ga.js +2 -0
  2297. package/public/assets/password-strength-BeSOu_Ga.js.map +1 -0
  2298. package/public/assets/pin-input-Cc-VkrQ3.js +2 -0
  2299. package/public/assets/pin-input-Cc-VkrQ3.js.map +1 -0
  2300. package/public/assets/plus-DSBBSrgj.js +2 -0
  2301. package/public/assets/plus-DSBBSrgj.js.map +1 -0
  2302. package/public/assets/profile-B5NaJfeS.js +2 -0
  2303. package/public/assets/profile-B5NaJfeS.js.map +1 -0
  2304. package/public/assets/profile-BcjsVYOx.js +2 -0
  2305. package/public/assets/profile-BcjsVYOx.js.map +1 -0
  2306. package/public/assets/promise-OpBtq8tG.js +2 -0
  2307. package/public/assets/promise-OpBtq8tG.js.map +1 -0
  2308. package/public/assets/provider-logos-u1YURWQr.js +2 -0
  2309. package/public/assets/provider-logos-u1YURWQr.js.map +1 -0
  2310. package/public/assets/recovery-PnUATiUi.js +2 -0
  2311. package/public/assets/recovery-PnUATiUi.js.map +1 -0
  2312. package/public/assets/register-C5vUVgr_.js +2 -0
  2313. package/public/assets/register-C5vUVgr_.js.map +1 -0
  2314. package/public/assets/register-DQXhru0_.js +2 -0
  2315. package/public/assets/register-DQXhru0_.js.map +1 -0
  2316. package/public/assets/reset-C5vUVgr_.js +2 -0
  2317. package/public/assets/reset-C5vUVgr_.js.map +1 -0
  2318. package/public/assets/reset-CQgIa3yf.js +2 -0
  2319. package/public/assets/reset-CQgIa3yf.js.map +1 -0
  2320. package/public/assets/routes-CAIeH5mq.js +2 -0
  2321. package/public/assets/routes-CAIeH5mq.js.map +1 -0
  2322. package/public/assets/select-C5vUVgr_.js +2 -0
  2323. package/public/assets/select-C5vUVgr_.js.map +1 -0
  2324. package/public/assets/select-DqZynXSt.js +2 -0
  2325. package/public/assets/select-DqZynXSt.js.map +1 -0
  2326. package/public/assets/separator-B0Bvh1he.js +2 -0
  2327. package/public/assets/separator-B0Bvh1he.js.map +1 -0
  2328. package/public/assets/shell-header-bar-CjG5qvPg.js +2 -0
  2329. package/public/assets/shell-header-bar-CjG5qvPg.js.map +1 -0
  2330. package/public/assets/shield-check-D_p8H0ni.js +2 -0
  2331. package/public/assets/shield-check-D_p8H0ni.js.map +1 -0
  2332. package/public/assets/standard-schema-e8gtSzGE.js +2 -0
  2333. package/public/assets/standard-schema-e8gtSzGE.js.map +1 -0
  2334. package/public/assets/terms-B5NaJfeS.js +2 -0
  2335. package/public/assets/terms-B5NaJfeS.js.map +1 -0
  2336. package/public/assets/terms-BHDAgn-H.js +2 -0
  2337. package/public/assets/terms-BHDAgn-H.js.map +1 -0
  2338. package/public/assets/terms-checkbox-list-6jteUTIZ.js +2 -0
  2339. package/public/assets/terms-checkbox-list-6jteUTIZ.js.map +1 -0
  2340. package/public/assets/totp-BNZ904Zm.js +2 -0
  2341. package/public/assets/totp-BNZ904Zm.js.map +1 -0
  2342. package/public/assets/totp-CJtfVNEq.js +2 -0
  2343. package/public/assets/totp-CJtfVNEq.js.map +1 -0
  2344. package/public/assets/totp-ECvOUcFx.js +2 -0
  2345. package/public/assets/totp-ECvOUcFx.js.map +1 -0
  2346. package/public/assets/trash-2-DZdKBLvC.js +2 -0
  2347. package/public/assets/trash-2-DZdKBLvC.js.map +1 -0
  2348. package/public/assets/triangle-alert-CqNn0kPs.js +2 -0
  2349. package/public/assets/triangle-alert-CqNn0kPs.js.map +1 -0
  2350. package/public/assets/use-totp-setup-BbS3XcZA.js +3 -0
  2351. package/public/assets/use-totp-setup-BbS3XcZA.js.map +1 -0
  2352. package/public/assets/useAriaLabelledBy-ByuMi3Ry.js +2 -0
  2353. package/public/assets/useAriaLabelledBy-ByuMi3Ry.js.map +1 -0
  2354. package/public/assets/useMutation-BWZ0G4Td.js +2 -0
  2355. package/public/assets/useMutation-BWZ0G4Td.js.map +1 -0
  2356. package/public/assets/useQuery-Ckxjmvtl.js +2 -0
  2357. package/public/assets/useQuery-Ckxjmvtl.js.map +1 -0
  2358. package/public/assets/users-CmFxrCQT.js +2 -0
  2359. package/public/assets/users-CmFxrCQT.js.map +1 -0
  2360. package/public/assets/valueToPercent-LgbY_prH.js +2 -0
  2361. package/public/assets/valueToPercent-LgbY_prH.js.map +1 -0
  2362. package/public/assets/zod-C87S6Tec.js +66 -0
  2363. package/public/assets/zod-C87S6Tec.js.map +1 -0
  2364. package/public/index.html +31 -0
  2365. package/public/vite.svg +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey-J1qnYp9A.js","names":[],"sources":["../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/identifyRegistrationError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/methods/startRegistration.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js","../../../../node_modules/.pnpm/@simplewebauthn+browser@13.3.0/node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js","../../../frontend/src/queries/passkey.ts"],"sourcesContent":["/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex was originally sourced from here, then remixed to add punycode support:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n // Support punycode (ACE) or ascii labels and domains\n /^((xn--[a-z0-9-]+|[a-z0-9]+(-[a-z0-9]+)*)\\.)+([a-z]{2,}|xn--[a-z0-9-]+)$/i.test(hostname));\n}\n","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.create()`\n */\nexport function identifyRegistrationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Registration ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'ConstraintError') {\n if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 4)\n return new WebAuthnError({\n message: 'Discoverable credentials were required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n cause: error,\n });\n }\n else if (\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n options.mediation === 'conditional' &&\n publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://w3c.github.io/webauthn/#sctn-createCredential (Step 22.4)\n return new WebAuthnError({\n message: 'User verification was required during automatic registration but it could not be performed',\n code: 'ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE',\n cause: error,\n });\n }\n else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 5)\n return new WebAuthnError({\n message: 'User verification was required but no available authenticator supported it',\n code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n cause: error,\n });\n }\n }\n else if (error.name === 'InvalidStateError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 20)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 3)\n return new WebAuthnError({\n message: 'The authenticator was previously registered',\n code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n cause: error,\n });\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'NotSupportedError') {\n const validPubKeyCredParams = publicKey.pubKeyCredParams.filter((param) => param.type === 'public-key');\n if (validPubKeyCredParams.length === 0) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 10)\n return new WebAuthnError({\n message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n cause: error,\n });\n }\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 2)\n return new WebAuthnError({\n message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 7)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rp.id !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 8)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'TypeError') {\n if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 5)\n return new WebAuthnError({\n message: 'User ID was not between 1 and 64 characters',\n code: 'ERROR_INVALID_USER_ID_LENGTH',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-make-cred (Step 8)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyRegistrationError } from '../helpers/identifyRegistrationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"registration\" via WebAuthn attestation\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateRegistrationOptions()`\n * @param useAutoRegister (Optional) Try to silently create a passkey with the password manager that the user just signed in with. Defaults to `false`.\n */\nexport async function startRegistration(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startRegistration() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useAutoRegister = false } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n user: {\n ...optionsJSON.user,\n id: base64URLStringToBuffer(optionsJSON.user.id),\n },\n excludeCredentials: optionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n };\n // Prepare options for `.create()`\n const createOptions = {};\n /**\n * Try to use conditional create to register a passkey for the user with the password manager\n * the user just used to authenticate with. The user won't be shown any prominent UI by the\n * browser.\n */\n if (useAutoRegister) {\n // @ts-ignore: `mediation` doesn't yet exist on CredentialCreationOptions but it's possible as of Sept 2024\n createOptions.mediation = 'conditional';\n }\n // Finalize options\n createOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n createOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete attestation\n let credential;\n try {\n credential = (await navigator.credentials.create(createOptions));\n }\n catch (err) {\n throw identifyRegistrationError({ error: err, options: createOptions });\n }\n if (!credential) {\n throw new Error('Registration was not completed');\n }\n const { id, rawId, response, type } = credential;\n // Continue to play it safe with `getTransports()` for now, even when L3 types say it's required\n let transports = undefined;\n if (typeof response.getTransports === 'function') {\n transports = response.getTransports();\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responsePublicKeyAlgorithm = undefined;\n if (typeof response.getPublicKeyAlgorithm === 'function') {\n try {\n responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKeyAlgorithm()', error);\n }\n }\n let responsePublicKey = undefined;\n if (typeof response.getPublicKey === 'function') {\n try {\n const _publicKey = response.getPublicKey();\n if (_publicKey !== null) {\n responsePublicKey = bufferToBase64URLString(_publicKey);\n }\n }\n catch (error) {\n warnOnBrokenImplementation('getPublicKey()', error);\n }\n }\n // L3 says this is required, but browser and webview support are still not guaranteed.\n let responseAuthenticatorData;\n if (typeof response.getAuthenticatorData === 'function') {\n try {\n responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n }\n catch (error) {\n warnOnBrokenImplementation('getAuthenticatorData()', error);\n }\n }\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n attestationObject: bufferToBase64URLString(response.attestationObject),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n transports,\n publicKeyAlgorithm: responsePublicKeyAlgorithm,\n publicKey: responsePublicKey,\n authenticatorData: responseAuthenticatorData,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n/**\n * Visibly warn when we detect an issue related to a passkey provider intercepting WebAuthn API\n * calls\n */\nfunction warnOnBrokenImplementation(methodName, cause) {\n console.warn(`The browser extension that intercepted this WebAuthn API call incorrectly implemented ${methodName}. You should report this error to them.\\n`, cause);\n}\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `<input>` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an <input> with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No <input> with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import {\n startAuthentication,\n startRegistration,\n} from '@simplewebauthn/browser';\nimport { mutationOptions, queryOptions } from '@tanstack/react-query';\nimport type { InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\nimport { queryKeys } from './keys';\nimport type { AuthResponse } from './session';\n\nexport type PasskeysResponse = InferResponseType<\n (typeof client.api.user.passkeys)['$get'],\n 200\n>;\n\nexport type PasskeyInfo = PasskeysResponse['passkeys'][number];\n\nexport type PasskeySetupVerifyResponse = InferResponseType<\n (typeof client.api.user.passkeys.register.verify)['$post'],\n 200\n>;\n\n/**\n * Get all passkeys for current user\n */\nexport const getPasskeysQueryOptions = queryOptions({\n queryKey: queryKeys.passkeys(),\n queryFn: async () => {\n const res = await client.api.user.passkeys.$get();\n return jsonOk(res);\n },\n});\n\n/**\n * Register a new passkey\n */\nexport type RegisterPasskeyParams = {\n name?: string;\n};\n\nexport const registerPasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: RegisterPasskeyParams) => {\n // Step 1: Get registration options from server\n const optionsRes = await client.api.user.passkeys.register.options.$post();\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn registration in browser\n const registrationResponse = await startRegistration({\n optionsJSON: options,\n });\n\n // Step 3: Send registration response to server\n const verifyRes = await client.api.user.passkeys.register.verify.$post({\n json: {\n response: registrationResponse,\n name: params.name,\n },\n });\n return jsonOk(verifyRes);\n },\n});\n\n/**\n * Delete a passkey\n */\nexport type DeletePasskeyParams = {\n id: string;\n};\n\nexport const deletePasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: DeletePasskeyParams) => {\n const res = await client.api.user.passkeys[':id'].$delete({\n param: { id: params.id },\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Rename a passkey\n */\nexport type RenamePasskeyParams = {\n id: string;\n name: string;\n};\n\nexport const renamePasskeyMutationOptions = mutationOptions({\n mutationFn: async (params: RenamePasskeyParams) => {\n const res = await client.api.user.passkeys[':id'].$patch({\n param: { id: params.id },\n json: { name: params.name },\n });\n return jsonOk(res);\n },\n});\n\n/**\n * Authenticate with passkey (supports both passwordless\n * and 2FA)\n *\n * The server automatically determines the mode based on\n * session state:\n * - If pending2FAUser session exists: 2FA mode\n * - Otherwise: Passwordless mode (discoverable\n * credentials)\n */\nexport const authenticateWithPasskeyMutationOptions = mutationOptions({\n mutationFn: async () => {\n // Step 1: Get authentication options from server\n const optionsRes = await client.api.auth.passkey.options.$post();\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn authentication in browser\n const authenticationResponse = await startAuthentication({\n optionsJSON: options,\n });\n\n // Step 3: Send authentication response to server\n const verifyRes = await client.api.auth.passkey.verify.$post({\n json: {\n response: {\n ...authenticationResponse,\n clientExtensionResults: {\n ...authenticationResponse.clientExtensionResults,\n },\n },\n },\n });\n return jsonOk(verifyRes);\n },\n});\n\n/**\n * Start conditional passkey authentication (browser\n * autofill / Conditional UI)\n *\n * This enables the browser to suggest passkeys in the\n * autofill dropdown when the user focuses on an input\n * with autocomplete=\"username webauthn\".\n *\n * Should be called on page load and runs in the background\n * until:\n * - User selects a passkey from the autofill dropdown\n * - The AbortController is aborted (e.g., on component\n * unmount)\n *\n * @param onSuccess - Callback when passkey authentication\n * succeeds\n * @param abortSignal - AbortSignal to cancel the\n * conditional authentication\n */\nexport const startConditionalPasskeyAuth = async (\n onSuccess: (data: AuthResponse) => void,\n abortSignal: AbortSignal,\n): Promise<void> => {\n try {\n // Step 1: Get authentication options from server\n const optionsRes = await client.api.auth.passkey.options.$post(\n {},\n { init: { signal: abortSignal } },\n );\n const { options } = await jsonOk(optionsRes);\n\n // Step 2: Start WebAuthn with conditional mediation\n const authenticationResponse = await startAuthentication({\n optionsJSON: options,\n useBrowserAutofill: true,\n });\n\n // Step 3: Send authentication response to server\n const verifyRes = await client.api.auth.passkey.verify.$post(\n {\n json: {\n response: {\n ...authenticationResponse,\n clientExtensionResults: {\n ...authenticationResponse.clientExtensionResults,\n },\n },\n },\n },\n { init: { signal: abortSignal } },\n );\n const data = await jsonOk(verifyRes);\n onSuccess(data);\n } catch (error) {\n // AbortError is expected when component unmounts\n if (error instanceof Error && error.name !== 'AbortError') {\n // Non-abort error - could be handled here in the future\n }\n }\n};\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./createLucideIcon-BPpAIXR_.js";var t=new Set([`NotSupportedError`,`SecurityError`]),n=new Set([`AbortError`,`NotAllowedError`,`InvalidStateError`]),r=new Set([`PASSKEY_CHALLENGE_EXPIRED`,`PASSKEY_CHALLENGE_NOT_FOUND`,`PASSKEY_NOT_FOUND`,`PASSKEY_NOT_ENABLED`,`PASSKEY_VERIFICATION_FAILED`,`UNKNOWN_ERROR`]);function i(){return typeof window>`u`||window.isSecureContext===!1?!0:!(`PublicKeyCredential`in window)}function a(e){return e instanceof Error?e.name:null}function o(o){if(o instanceof e){if(o.code===`SECOND_FACTOR_SESSION_EXPIRED`)return`expired`;if(o.code===`PASSKEY_USER_MISMATCH`)return`user_mismatch`;if(r.has(o.code))return`verification_failed`}let s=a(o);return s&&t.has(s)?`unsupported`:s&&n.has(s)?`not_allowed`:i()?`unsupported`:`verification_failed`}export{o as t};
2
+ //# sourceMappingURL=passkey-error-ZqqPQUta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey-error-ZqqPQUta.js","names":[],"sources":["../../../frontend/src/libs/passkey-error.ts"],"sourcesContent":["import { IssuaryError } from './error.ts';\n\nexport type PasskeyErrorReason =\n | 'unsupported'\n | 'not_allowed'\n | 'expired'\n | 'user_mismatch'\n | 'verification_failed';\n\nconst UNSUPPORTED_ERROR_NAMES = new Set(['NotSupportedError', 'SecurityError']);\n\nconst NOT_ALLOWED_ERROR_NAMES = new Set([\n 'AbortError',\n 'NotAllowedError',\n 'InvalidStateError',\n]);\n\nconst VERIFICATION_FAILED_CODES = new Set([\n 'PASSKEY_CHALLENGE_EXPIRED',\n 'PASSKEY_CHALLENGE_NOT_FOUND',\n 'PASSKEY_NOT_FOUND',\n 'PASSKEY_NOT_ENABLED',\n 'PASSKEY_VERIFICATION_FAILED',\n 'UNKNOWN_ERROR',\n]);\n\nfunction browserCannotUsePasskeys(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (window.isSecureContext === false) {\n return true;\n }\n\n return !('PublicKeyCredential' in window);\n}\n\nfunction errorName(error: unknown): string | null {\n if (error instanceof Error) {\n return error.name;\n }\n\n return null;\n}\n\nexport function classifyPasskeyError(error: unknown): PasskeyErrorReason {\n if (error instanceof IssuaryError) {\n if (error.code === 'SECOND_FACTOR_SESSION_EXPIRED') {\n return 'expired';\n }\n\n if (error.code === 'PASSKEY_USER_MISMATCH') {\n return 'user_mismatch';\n }\n\n if (VERIFICATION_FAILED_CODES.has(error.code)) {\n return 'verification_failed';\n }\n }\n\n const name = errorName(error);\n if (name && UNSUPPORTED_ERROR_NAMES.has(name)) {\n return 'unsupported';\n }\n\n if (name && NOT_ALLOWED_ERROR_NAMES.has(name)) {\n return 'not_allowed';\n }\n\n if (browserCannotUsePasskeys()) {\n return 'unsupported';\n }\n\n return 'verification_failed';\n}\n"],"mappings":"mDASA,IAAM,EAA0B,IAAI,IAAI,CAAC,oBAAqB,eAAe,CAAC,EAExE,EAA0B,IAAI,IAAI,CACtC,aACA,kBACA,mBACF,CAAC,EAEK,EAA4B,IAAI,IAAI,CACxC,4BACA,8BACA,oBACA,sBACA,8BACA,eACF,CAAC,EAED,SAAS,GAAoC,CAS3C,OARI,OAAO,OAAW,KAIlB,OAAO,kBAAoB,GACtB,GAGF,EAAE,wBAAyB,OACpC,CAEA,SAAS,EAAU,EAA+B,CAKhD,OAJI,aAAiB,MACZ,EAAM,KAGR,IACT,CAEA,SAAgB,EAAqB,EAAoC,CACvE,GAAI,aAAiB,EAAc,CACjC,GAAI,EAAM,OAAS,gCACjB,MAAO,UAGT,GAAI,EAAM,OAAS,wBACjB,MAAO,gBAGT,GAAI,EAA0B,IAAI,EAAM,IAAI,EAC1C,MAAO,qBAEX,CAEA,IAAM,EAAO,EAAU,CAAK,EAa5B,OAZI,GAAQ,EAAwB,IAAI,CAAI,EACnC,cAGL,GAAQ,EAAwB,IAAI,CAAI,EACnC,cAGL,EAAyB,EACpB,cAGF,qBACT"}
@@ -0,0 +1,2 @@
1
+ import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
+ //# sourceMappingURL=password-C5vUVgr_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-C5vUVgr_.js","names":["RouteErrorFallback","SplitErrorComponent","errorComponent"],"sources":["../../../frontend/src/routes/login/password/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRLink } from '@tinyrack/ui/components/link';\nimport { LockIcon, MailIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n hasAuthorizationContext,\n isOAuthFlow,\n type OAuthSearch,\n OAuthSearchSchema,\n type SecondFactorMethod,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getAuthorizationContextQueryOptions } from '#frontend/queries/authorization-context.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { loginMutationOptions } from '#frontend/queries/login.ts';\nimport { startConditionalPasskeyAuth } from '#frontend/queries/passkey.ts';\nimport {\n type AuthResponse,\n getSessionQueryOptions,\n} from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/login/password/')({\n component: LoginPassword,\n errorComponent: RouteErrorFallback,\n validateSearch: SearchSchema,\n loaderDeps: ({ search }) => ({\n search,\n }),\n loader: async ({ context, deps }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n if (hasAuthorizationContext(deps.search)) {\n await context.queryClient.ensureQueryData(\n getAuthorizationContextQueryOptions(deps.search),\n );\n }\n },\n});\n\nfunction LoginPassword() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const authorizeSearch: OAuthSearch =\n search.account_selection_state &&\n search.prompt?.split(' ').includes('login')\n ? { ...search, account_selected: 1 }\n : search;\n const lang = search.lang ?? i18n.language;\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n const isPasswordAuthEnabled = configData.auth.password.enabled;\n const isPasskeyEnabled = configData.auth.passkey.enabled;\n const hasMultipleLoginMethods =\n configData.identity_providers.length +\n (isPasswordAuthEnabled ? 1 : 0) +\n (isPasskeyEnabled ? 1 : 0) >\n 1;\n\n const loginSchema = useMemo(\n () =>\n z.object({\n email: z\n .string()\n .min(1, t('validation.email.required'))\n .pipe(z.email(t('validation.email.invalid'))),\n password: z.string().min(1, t('validation.password.required')),\n }),\n [t],\n );\n\n const loginMutation = useMutation({\n ...loginMutationOptions,\n onSuccess: async (data, params) => {\n const user = data.user;\n\n if (user.email_verification_required && !user.email_verified) {\n router.navigate({\n to: '/verify/email',\n search: {\n email: params.email,\n ...extractOAuthParams(search),\n },\n });\n return;\n }\n\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: user,\n });\n await tick();\n\n const registered_2fa_methods: SecondFactorMethod[] = [];\n if (configData.auth.password.totp.enabled && user.totp_registered) {\n registered_2fa_methods.push('totp');\n }\n if (configData.auth.passkey.enabled && user.passkey_count > 0) {\n registered_2fa_methods.push('passkey');\n }\n\n if (user.second_factor_required && registered_2fa_methods.length === 0) {\n if (configData.available_2fa_setup_methods.length > 1) {\n return router.navigate({\n to: '/setup/2fa',\n search: extractOAuthParams(search),\n });\n } else if (configData.available_2fa_setup_methods.length === 1) {\n const method = configData.available_2fa_setup_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/setup/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/setup/passkey',\n search: {\n ...extractOAuthParams(search),\n passkey_name: 'default',\n },\n });\n }\n }\n }\n\n if (registered_2fa_methods.length > 1) {\n return router.navigate({\n to: '/verify/2fa',\n search: extractOAuthParams(search),\n });\n } else if (registered_2fa_methods.length === 1) {\n const method = registered_2fa_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/verify/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/verify/passkey',\n search: extractOAuthParams(search),\n });\n }\n } else {\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n return router.navigate({ to: '/profile' });\n }\n }\n },\n onError: (_error) => {\n setError('email', {\n type: 'manual',\n message: t('login.error.failed'),\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const handlePasskeySuccess = useCallback(\n async (data: AuthResponse) => {\n if (data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, data);\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n router.navigate({ to: '/profile' });\n }\n }\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n [queryClient, router, search, authorizeSearch],\n );\n\n // Conditional UI: Start passkey autofill on page load\n const abortControllerRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (!isPasskeyEnabled || !isPasswordAuthEnabled) {\n return;\n }\n\n abortControllerRef.current = new AbortController();\n startConditionalPasskeyAuth(\n handlePasskeySuccess,\n abortControllerRef.current.signal,\n );\n\n return () => {\n abortControllerRef.current?.abort();\n };\n }, [isPasskeyEnabled, isPasswordAuthEnabled, handlePasskeySuccess]);\n\n const {\n register,\n setError,\n handleSubmit,\n formState: { errors },\n } = useForm({\n defaultValues: {\n email: '',\n password: '',\n },\n resolver: standardSchemaResolver(loginSchema),\n });\n\n const onSubmit = async (values: z.infer<typeof loginSchema>) => {\n loginMutation.mutate(values);\n };\n\n return (\n <AuthLayout>\n {/* Branding lives in the layout's brand panel — see /login. */}\n <AuthPageHeader\n subtitle={t('login.selectMethod.subtitle') || undefined}\n title={t('login.title')}\n />\n\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <form\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n autoComplete=\"username webauthn\"\n error={errors.email}\n icon={MailIcon}\n label={t('login.email.label')}\n placeholder={t('login.email.placeholder')}\n {...register('email')}\n type=\"email\"\n />\n\n <AuthField\n autoComplete=\"current-password\"\n error={errors.password}\n icon={LockIcon}\n label={t('login.password.label')}\n /*\n * On the label row rather than under the field: it belongs to the\n * password, and putting it between the field and the submit button\n * separated the two things the user is actually trying to do.\n */\n labelAction={\n configData.email.enabled ? (\n <TRLink\n className=\"text-tinyrack-xs\"\n render={<Link to=\"/password/forgot\" />}\n >\n {t('login.link.forgotPassword')}\n </TRLink>\n ) : undefined\n }\n placeholder={t('login.password.placeholder')}\n {...register('password')}\n type=\"password\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={loginMutation.isPending}\n loadingLabel={t('login.submitting')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('login.submit')}\n </TRButton>\n </form>\n )}\n\n {implicitNotice && (\n <div\n className=\"prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!\"\n dangerouslySetInnerHTML={{ __html: implicitNotice }}\n />\n )}\n\n {(configData.registration.public_registration ||\n hasMultipleLoginMethods) && (\n <AuthFooter>\n {configData.registration.public_registration && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/register\">\n {t('login.link.register')}\n </Link>\n }\n text={t('login.footer.noAccount')}\n />\n )}\n {hasMultipleLoginMethods && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('login.password.backToMethods')}\n </Link>\n }\n />\n )}\n </AuthFooter>\n )}\n </AuthLayout>\n );\n}\n"],"mappings":"wCAqBsF,IAAAC,EAA7ED"}
@@ -0,0 +1,2 @@
1
+ import{J as e,Z as t,i as n,q as r,s as i}from"./createLucideIcon-BPpAIXR_.js";import{On as a,Sn as o,Sr as s,i as c,r as l,t as u}from"./config-DTQCUlfZ.js";import{t as d}from"./mutationOptions-DyYFUbyn.js";import{t as f}from"./useMutation-BWZ0G4Td.js";import{tt as p}from"./shell-header-bar-CjG5qvPg.js";import{t as m}from"./auth-field-DD8kvl--.js";import{t as h}from"./authorization-context-banner-SOuBHWIb.js";import{t as g}from"./lock-7NRyvXBS.js";import{t as _}from"./mail-D0B_1Dzd.js";import{c as v,i as y,o as b}from"./zod-C87S6Tec.js";import{F as x,N as S,S as C,j as w,s as T}from"./index-CS23Ozt6.js";import{t as E}from"./auth-page-header-CIn2E4zI.js";import{t as D}from"./auth-layout-VtpryDof.js";import{t as O}from"./promise-OpBtq8tG.js";import{t as k}from"./link-C-WdTj3F.js";import{n as A,t as j}from"./auth-footer-Cz5ivsDc.js";import{o as M}from"./passkey-J1qnYp9A.js";import{r as N,t as P}from"./standard-schema-e8gtSzGE.js";var F=t(e()),I=d({mutationFn:async e=>c(await l.api.auth.login.$post({json:e}))}),L=r();function R(){let{t:e,i18n:t}=n(),r=a(),c=s(),l=T.useSearch(),d=l.account_selection_state&&l.prompt?.split(` `).includes(`login`)?{...l,account_selected:1}:l,R=l.lang??t.language,{data:z}=p(u),B=z.registration.signup_notice?.[R]??z.registration.signup_notice?.[z.i18n.fallback_language],V=z.auth.password.enabled,H=z.auth.passkey.enabled,U=z.identity_providers.length+ +!!V+ +!!H>1,W=(0,F.useMemo)(()=>b({email:v().min(1,e(`validation.email.required`)).pipe(y(e(`validation.email.invalid`))),password:v().min(1,e(`validation.password.required`))}),[e]),G=f({...I,onSuccess:async(e,t)=>{let n=e.user;if(n.email_verification_required&&!n.email_verified){r.navigate({to:`/verify/email`,search:{email:t.email,...S(l)}});return}c.setQueryData(C.queryKey,{user:n}),await O();let i=[];if(z.auth.password.totp.enabled&&n.totp_registered&&i.push(`totp`),z.auth.passkey.enabled&&n.passkey_count>0&&i.push(`passkey`),n.second_factor_required&&i.length===0){if(z.available_2fa_setup_methods.length>1)return r.navigate({to:`/setup/2fa`,search:S(l)});if(z.available_2fa_setup_methods.length===1)return z.available_2fa_setup_methods[0]===`totp`?r.navigate({to:`/setup/totp`,search:S(l)}):r.navigate({to:`/setup/passkey`,search:{...S(l),passkey_name:`default`}})}if(i.length>1)return r.navigate({to:`/verify/2fa`,search:S(l)});if(i.length===1)return i[0]===`totp`?r.navigate({to:`/verify/totp`,search:S(l)}):r.navigate({to:`/verify/passkey`,search:S(l)});if(x(l))window.location.href=w(d);else return r.navigate({to:`/profile`})},onError:t=>{Y(`email`,{type:`manual`,message:e(`login.error.failed`)})},onSettled:()=>{c.invalidateQueries({queryKey:C.queryKey})}}),K=(0,F.useCallback)(async e=>{e.user&&(c.setQueryData(C.queryKey,e),await O(),x(l)?window.location.href=w(d):r.navigate({to:`/profile`})),c.invalidateQueries({queryKey:C.queryKey})},[c,r,l,d]),q=(0,F.useRef)(null);(0,F.useEffect)(()=>{if(!(!H||!V))return q.current=new AbortController,M(K,q.current.signal),()=>{q.current?.abort()}},[H,V,K]);let{register:J,setError:Y,handleSubmit:X,formState:{errors:Z}}=N({defaultValues:{email:``,password:``},resolver:P(W)});return(0,L.jsxs)(D,{children:[(0,L.jsx)(E,{subtitle:e(`login.selectMethod.subtitle`)||void 0,title:e(`login.title`)}),(0,L.jsx)(h,{search:l}),V&&(0,L.jsxs)(`form`,{className:`flex flex-col gap-tinyrack-lg`,onSubmit:X(async e=>{G.mutate(e)}),children:[(0,L.jsx)(m,{autoComplete:`username webauthn`,error:Z.email,icon:_,label:e(`login.email.label`),placeholder:e(`login.email.placeholder`),...J(`email`),type:`email`}),(0,L.jsx)(m,{autoComplete:`current-password`,error:Z.password,icon:g,label:e(`login.password.label`),labelAction:z.email.enabled?(0,L.jsx)(k,{className:`text-tinyrack-xs`,render:(0,L.jsx)(o,{to:`/password/forgot`}),children:e(`login.link.forgotPassword`)}):void 0,placeholder:e(`login.password.placeholder`),...J(`password`),type:`password`}),(0,L.jsx)(i,{className:`w-full`,intent:`primary`,loading:G.isPending,loadingLabel:e(`login.submitting`),type:`submit`,uiSize:`lg`,children:e(`login.submit`)})]}),B&&(0,L.jsx)(`div`,{className:`prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!`,dangerouslySetInnerHTML:{__html:B}}),(z.registration.public_registration||U)&&(0,L.jsxs)(j,{children:[z.registration.public_registration&&(0,L.jsx)(A,{link:(0,L.jsx)(o,{search:S(l),to:`/register`,children:e(`login.link.register`)}),text:e(`login.footer.noAccount`)}),U&&(0,L.jsx)(A,{link:(0,L.jsx)(o,{search:S(l),to:`/login`,children:e(`login.password.backToMethods`)})})]})]})}export{R as component};
2
+ //# sourceMappingURL=password-RkUttbhD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-RkUttbhD.js","names":["standardSchemaResolver","useMutation","useQueryClient","useSuspenseQuery","Link","useRouter","TRButton","TRLink","LockIcon","MailIcon","useCallback","useEffect","useMemo","useRef","useForm","useTranslation","z","AuthField","AuthFooter","AuthFooterLink","AuthPageHeader","AuthorizationContextBanner","AuthLayout","buildAuthenticatedAuthorizeUrl","extractOAuthParams","isOAuthFlow","tick","appConfigQueryOptions","loginMutationOptions","startConditionalPasskeyAuth","getSessionQueryOptions","Route","LoginPassword","t","i18n","router","queryClient","search","useSearch","authorizeSearch","OAuthSearch","account_selection_state","prompt","split","includes","account_selected","lang","language","data","configData","implicitNotice","registration","signup_notice","fallback_language","isPasswordAuthEnabled","auth","password","enabled","isPasskeyEnabled","passkey","hasMultipleLoginMethods","identity_providers","length","loginSchema","object","email","string","min","pipe","loginMutation","onSuccess","params","user","email_verification_required","email_verified","navigate","to","setQueryData","queryKey","registered_2fa_methods","SecondFactorMethod","totp","totp_registered","push","passkey_count","second_factor_required","available_2fa_setup_methods","method","passkey_name","window","location","href","onError","_error","setError","type","message","onSettled","invalidateQueries","handlePasskeySuccess","AuthResponse","abortControllerRef","AbortController","current","signal","abort","register","handleSubmit","formState","errors","defaultValues","resolver","onSubmit","values","infer","mutate","undefined","isPending","__html","public_registration","component"],"sources":["../../../frontend/src/queries/login.ts","../../../frontend/src/routes/login/password/index.tsx?tsr-split=component"],"sourcesContent":["import { mutationOptions } from '@tanstack/react-query';\nimport type { InferRequestType, InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\n\nexport type LoginParams = InferRequestType<\n (typeof client.api.auth.login)['$post']\n>['json'];\n\nexport type LoginResponse = InferResponseType<\n (typeof client.api.auth.login)['$post'],\n 200\n>;\n\nexport const loginMutationOptions = mutationOptions({\n mutationFn: async (values: LoginParams) => {\n const res = await client.api.auth.login.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n","import { standardSchemaResolver } from '@hookform/resolvers/standard-schema';\nimport {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, Link, useRouter } from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRLink } from '@tinyrack/ui/components/link';\nimport { LockIcon, MailIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthField } from '#frontend/components/auth/auth-field.tsx';\nimport {\n AuthFooter,\n AuthFooterLink,\n} from '#frontend/components/auth/auth-footer.tsx';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { AuthorizationContextBanner } from '#frontend/components/auth/authorization-context-banner.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AuthLayout } from '#frontend/features/layout/auth-layout.tsx';\nimport {\n buildAuthenticatedAuthorizeUrl,\n extractOAuthParams,\n hasAuthorizationContext,\n isOAuthFlow,\n type OAuthSearch,\n OAuthSearchSchema,\n type SecondFactorMethod,\n} from '#frontend/libs/oauth-search.ts';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { getAuthorizationContextQueryOptions } from '#frontend/queries/authorization-context.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { loginMutationOptions } from '#frontend/queries/login.ts';\nimport { startConditionalPasskeyAuth } from '#frontend/queries/passkey.ts';\nimport {\n type AuthResponse,\n getSessionQueryOptions,\n} from '#frontend/queries/session.ts';\n\nconst SearchSchema = OAuthSearchSchema;\n\nexport const Route = createFileRoute('/login/password/')({\n component: LoginPassword,\n errorComponent: RouteErrorFallback,\n validateSearch: SearchSchema,\n loaderDeps: ({ search }) => ({\n search,\n }),\n loader: async ({ context, deps }) => {\n await context.queryClient.ensureQueryData(appConfigQueryOptions);\n if (hasAuthorizationContext(deps.search)) {\n await context.queryClient.ensureQueryData(\n getAuthorizationContextQueryOptions(deps.search),\n );\n }\n },\n});\n\nfunction LoginPassword() {\n const { t, i18n } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n const authorizeSearch: OAuthSearch =\n search.account_selection_state &&\n search.prompt?.split(' ').includes('login')\n ? { ...search, account_selected: 1 }\n : search;\n const lang = search.lang ?? i18n.language;\n\n const { data: configData } = useSuspenseQuery(appConfigQueryOptions);\n\n const implicitNotice =\n configData.registration.signup_notice?.[lang] ??\n configData.registration.signup_notice?.[configData.i18n.fallback_language];\n const isPasswordAuthEnabled = configData.auth.password.enabled;\n const isPasskeyEnabled = configData.auth.passkey.enabled;\n const hasMultipleLoginMethods =\n configData.identity_providers.length +\n (isPasswordAuthEnabled ? 1 : 0) +\n (isPasskeyEnabled ? 1 : 0) >\n 1;\n\n const loginSchema = useMemo(\n () =>\n z.object({\n email: z\n .string()\n .min(1, t('validation.email.required'))\n .pipe(z.email(t('validation.email.invalid'))),\n password: z.string().min(1, t('validation.password.required')),\n }),\n [t],\n );\n\n const loginMutation = useMutation({\n ...loginMutationOptions,\n onSuccess: async (data, params) => {\n const user = data.user;\n\n if (user.email_verification_required && !user.email_verified) {\n router.navigate({\n to: '/verify/email',\n search: {\n email: params.email,\n ...extractOAuthParams(search),\n },\n });\n return;\n }\n\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: user,\n });\n await tick();\n\n const registered_2fa_methods: SecondFactorMethod[] = [];\n if (configData.auth.password.totp.enabled && user.totp_registered) {\n registered_2fa_methods.push('totp');\n }\n if (configData.auth.passkey.enabled && user.passkey_count > 0) {\n registered_2fa_methods.push('passkey');\n }\n\n if (user.second_factor_required && registered_2fa_methods.length === 0) {\n if (configData.available_2fa_setup_methods.length > 1) {\n return router.navigate({\n to: '/setup/2fa',\n search: extractOAuthParams(search),\n });\n } else if (configData.available_2fa_setup_methods.length === 1) {\n const method = configData.available_2fa_setup_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/setup/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/setup/passkey',\n search: {\n ...extractOAuthParams(search),\n passkey_name: 'default',\n },\n });\n }\n }\n }\n\n if (registered_2fa_methods.length > 1) {\n return router.navigate({\n to: '/verify/2fa',\n search: extractOAuthParams(search),\n });\n } else if (registered_2fa_methods.length === 1) {\n const method = registered_2fa_methods[0];\n if (method === 'totp') {\n return router.navigate({\n to: '/verify/totp',\n search: extractOAuthParams(search),\n });\n } else {\n return router.navigate({\n to: '/verify/passkey',\n search: extractOAuthParams(search),\n });\n }\n } else {\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n return router.navigate({ to: '/profile' });\n }\n }\n },\n onError: (_error) => {\n setError('email', {\n type: 'manual',\n message: t('login.error.failed'),\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const handlePasskeySuccess = useCallback(\n async (data: AuthResponse) => {\n if (data.user) {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, data);\n await tick();\n\n if (isOAuthFlow(search)) {\n window.location.href =\n buildAuthenticatedAuthorizeUrl(authorizeSearch);\n } else {\n router.navigate({ to: '/profile' });\n }\n }\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n [queryClient, router, search, authorizeSearch],\n );\n\n // Conditional UI: Start passkey autofill on page load\n const abortControllerRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (!isPasskeyEnabled || !isPasswordAuthEnabled) {\n return;\n }\n\n abortControllerRef.current = new AbortController();\n startConditionalPasskeyAuth(\n handlePasskeySuccess,\n abortControllerRef.current.signal,\n );\n\n return () => {\n abortControllerRef.current?.abort();\n };\n }, [isPasskeyEnabled, isPasswordAuthEnabled, handlePasskeySuccess]);\n\n const {\n register,\n setError,\n handleSubmit,\n formState: { errors },\n } = useForm({\n defaultValues: {\n email: '',\n password: '',\n },\n resolver: standardSchemaResolver(loginSchema),\n });\n\n const onSubmit = async (values: z.infer<typeof loginSchema>) => {\n loginMutation.mutate(values);\n };\n\n return (\n <AuthLayout>\n {/* Branding lives in the layout's brand panel — see /login. */}\n <AuthPageHeader\n subtitle={t('login.selectMethod.subtitle') || undefined}\n title={t('login.title')}\n />\n\n <AuthorizationContextBanner search={search} />\n\n {isPasswordAuthEnabled && (\n <form\n className=\"flex flex-col gap-tinyrack-lg\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <AuthField\n autoComplete=\"username webauthn\"\n error={errors.email}\n icon={MailIcon}\n label={t('login.email.label')}\n placeholder={t('login.email.placeholder')}\n {...register('email')}\n type=\"email\"\n />\n\n <AuthField\n autoComplete=\"current-password\"\n error={errors.password}\n icon={LockIcon}\n label={t('login.password.label')}\n /*\n * On the label row rather than under the field: it belongs to the\n * password, and putting it between the field and the submit button\n * separated the two things the user is actually trying to do.\n */\n labelAction={\n configData.email.enabled ? (\n <TRLink\n className=\"text-tinyrack-xs\"\n render={<Link to=\"/password/forgot\" />}\n >\n {t('login.link.forgotPassword')}\n </TRLink>\n ) : undefined\n }\n placeholder={t('login.password.placeholder')}\n {...register('password')}\n type=\"password\"\n />\n\n <TRButton\n className=\"w-full\"\n intent=\"primary\"\n loading={loginMutation.isPending}\n loadingLabel={t('login.submitting')}\n type=\"submit\"\n uiSize=\"lg\"\n >\n {t('login.submit')}\n </TRButton>\n </form>\n )}\n\n {implicitNotice && (\n <div\n className=\"prose prose-sm text-center text-tinyrack-text-muted text-tinyrack-xs! **:text-tinyrack-xs!\"\n dangerouslySetInnerHTML={{ __html: implicitNotice }}\n />\n )}\n\n {(configData.registration.public_registration ||\n hasMultipleLoginMethods) && (\n <AuthFooter>\n {configData.registration.public_registration && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/register\">\n {t('login.link.register')}\n </Link>\n }\n text={t('login.footer.noAccount')}\n />\n )}\n {hasMultipleLoginMethods && (\n <AuthFooterLink\n link={\n <Link search={extractOAuthParams(search)} to=\"/login\">\n {t('login.password.backToMethods')}\n </Link>\n }\n />\n )}\n </AuthFooter>\n )}\n </AuthLayout>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{i as e,r as t}from"./config-DTQCUlfZ.js";import{t as n}from"./mutationOptions-DyYFUbyn.js";var r=n({mutationFn:async n=>e(await t.api.auth.password.forgot.$post({json:n,header:{}}))}),i=n({mutationFn:async n=>e(await t.api.auth.password.reset.$post({json:n}))});export{i as n,r as t};
2
+ //# sourceMappingURL=password-reset-sU5KkBKi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-reset-sU5KkBKi.js","names":[],"sources":["../../../frontend/src/queries/password-reset.ts"],"sourcesContent":["import { mutationOptions } from '@tanstack/react-query';\nimport type { InferRequestType, InferResponseType } from 'hono/client';\nimport { client, jsonOk } from '#frontend/libs/api.ts';\n\nexport type ForgotPasswordParams = InferRequestType<\n (typeof client.api.auth.password.forgot)['$post']\n>['json'];\n\nexport type ForgotPasswordResponse = InferResponseType<\n (typeof client.api.auth.password.forgot)['$post'],\n 200\n>;\n\nexport const forgotPasswordMutationOptions = mutationOptions({\n mutationFn: async (values: ForgotPasswordParams) => {\n const res = await client.api.auth.password.forgot.$post({\n json: values,\n header: {},\n });\n return jsonOk(res);\n },\n});\n\nexport type ResetPasswordParams = InferRequestType<\n (typeof client.api.auth.password.reset)['$post']\n>['json'];\n\nexport type ResetPasswordResponse = InferResponseType<\n (typeof client.api.auth.password.reset)['$post'],\n 200\n>;\n\nexport const resetPasswordMutationOptions = mutationOptions({\n mutationFn: async (values: ResetPasswordParams) => {\n const res = await client.api.auth.password.reset.$post({\n json: values,\n });\n return jsonOk(res);\n },\n});\n"],"mappings":"kGAaA,IAAa,EAAgC,EAAgB,CAC3D,WAAY,KAAO,IAKV,EAAO,MAJI,EAAO,IAAI,KAAK,SAAS,OAAO,MAAM,CACtD,KAAM,EACN,OAAQ,CAAC,CACX,CAAC,CACgB,CAErB,CAAC,EAWY,EAA+B,EAAgB,CAC1D,WAAY,KAAO,IAIV,EAAO,MAHI,EAAO,IAAI,KAAK,SAAS,MAAM,MAAM,CACrD,KAAM,CACR,CAAC,CACgB,CAErB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import{G as e,J as t,Z as n,c as r,i,n as a,q as o,v as s}from"./createLucideIcon-BPpAIXR_.js";import{bn as c,bt as l,st as u}from"./config-DTQCUlfZ.js";import{f as d}from"./shell-header-bar-CjG5qvPg.js";import{n as f,t as p}from"./valueToPercent-LgbY_prH.js";var m=n(t(),1),h=m.createContext(void 0);function g(){let e=m.useContext(h);if(e===void 0)throw Error(s(38));return e}var _=o(),v=m.forwardRef(function(e,t){let{format:n,getAriaValueText:i,locale:a,max:o=100,min:s=0,value:c,render:d,className:g,children:v,style:y,...b}=e,[x,S]=m.useState(),C=p(c,s,o),w=u(Number.isNaN(C)?0:C,0,100),T=u(Number.isNaN(c)?s:c,s,o),E=n?f(T,a,n):f(w/100,a,{style:`percent`}),D=E;i&&(D=i(E,c));let O={"aria-labelledby":x,"aria-valuemax":o,"aria-valuemin":s,"aria-valuenow":T,"aria-valuetext":D,role:`meter`,children:(0,_.jsxs)(m.Fragment,{children:[v,(0,_.jsx)(`span`,{role:`presentation`,style:l,children:`x`})]})},k=m.useMemo(()=>({formattedValue:E,percentageValue:w,setLabelId:S,value:c}),[E,w,S,c]),A=r(`div`,e,{ref:t,props:[O,b]});return(0,_.jsx)(h.Provider,{value:k,children:A})}),y=m.forwardRef(function(e,t){let{render:n,className:i,style:a,...o}=e;return r(`div`,e,{ref:t,props:o})}),b=m.forwardRef(function(e,t){let{render:n,className:i,style:a,...o}=e,{percentageValue:s}=g();return r(`div`,e,{ref:t,props:[{style:{insetInlineStart:0,height:`inherit`,width:`${s}%`}},o]})}),x=m.forwardRef(function(e,t){let{className:n,render:i,children:a,style:o,...s}=e,{value:c,formattedValue:l}=g();return r(`span`,e,{ref:t,props:[{"aria-hidden":!0,children:typeof a==`function`?a(l,c):l},s]})}),S=m.forwardRef(function(e,t){let{render:n,className:i,style:a,id:o,...s}=e,{setLabelId:c}=g();return r(`span`,e,{ref:t,props:[{id:d(o,c),role:`presentation`},s]})}),C=c(b,`tr-meter-indicator`),w=c(S,`tr-meter-label`);function T({className:t,max:n=100,min:r=0,value:i,variant:a=`neutral`,...o}){let s=Math.min(n,Math.max(r,Number.isNaN(i)?r:i));return(0,_.jsx)(v,{...o,className:e(`tr-meter`,t),"data-variant":a,max:n,min:r,value:s})}var E={Root:T,Track:c(y,`tr-meter-track`),Indicator:C,Value:c(x,`tr-meter-value`),Label:w},D=[`weak`,`fair`,`good`,`strong`],O={weak:`danger`,fair:`warning`,good:`info`,strong:`success`};function k(e,t){if(e.length===0)return 0;if(e.length<t.min_length)return 1;let n=[/[a-z]/,/[A-Z]/,/\d/,/[^a-zA-Z0-9]/].filter(t=>t.test(e)).length,r=e.length>=t.min_length+4;return n>=3&&r?4:n>=2&&r?3:2}function A({password:e,policy:t}){let{t:n}=i(),r=k(e,t);if(r===0)return null;let o=D[r-1];return(0,_.jsxs)(E.Root,{"aria-live":`polite`,className:`flex flex-col gap-tinyrack-xs`,max:4,min:0,value:r,variant:O[o],children:[(0,_.jsxs)(`div`,{className:`flex items-baseline justify-between gap-tinyrack-sm`,children:[(0,_.jsx)(E.Label,{render:(0,_.jsx)(a,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.label`)})}),(0,_.jsx)(E.Value,{render:(0,_.jsx)(a,{color:`muted`,variant:`caption`,children:n(`validation.password.strength.${o}`)})})]}),(0,_.jsx)(E.Track,{children:(0,_.jsx)(E.Indicator,{})})]})}export{A as t};
2
+ //# sourceMappingURL=password-strength-BeSOu_Ga.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-strength-BeSOu_Ga.js","names":["_formatErrorMessage","Meter.Indicator","Meter.Label","Meter.Root","Meter.Track","Meter.Value"],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/root/MeterRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/root/MeterRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/track/MeterTrack.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/indicator/MeterIndicator.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/value/MeterValue.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/meter/label/MeterLabel.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-indicator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-label.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-track.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/meter-value.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/meter/index.js","../../../frontend/src/components/auth/password-strength.tsx"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const MeterRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") MeterRootContext.displayName = \"MeterRootContext\";\nexport function useMeterRootContext() {\n const context = React.useContext(MeterRootContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: MeterRootContext is missing. Meter parts must be placed within <Meter.Root>.' : _formatErrorMessage(38));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { visuallyHidden } from '@base-ui/utils/visuallyHidden';\nimport { MeterRootContext } from \"./MeterRootContext.mjs\";\nimport { formatNumber } from \"../../utils/formatNumber.mjs\";\nimport { valueToPercent } from \"../../utils/valueToPercent.mjs\";\nimport { clamp } from \"../../internals/clamp.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups all parts of the meter and provides the value for screen readers.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const MeterRoot = /*#__PURE__*/React.forwardRef(function MeterRoot(componentProps, forwardedRef) {\n const {\n format,\n getAriaValueText,\n locale,\n max = 100,\n min = 0,\n value: valueProp,\n render,\n className,\n children,\n style,\n ...elementProps\n } = componentProps;\n const [labelId, setLabelId] = React.useState();\n\n // `clamp` handles infinity, but NaN needs an explicit fallback before normalizing range outputs.\n const rawPercentage = valueToPercent(valueProp, min, max);\n const percentageValue = clamp(Number.isNaN(rawPercentage) ? 0 : rawPercentage, 0, 100);\n const clampedValue = clamp(Number.isNaN(valueProp) ? min : valueProp, min, max);\n\n // Format the clamped value so visible and accessible text stay in sync with `aria-valuenow` and\n // the indicator fill. The raw value remains available as the second `getAriaValueText` argument.\n const formattedValue = format ? formatNumber(clampedValue, locale, format) : formatNumber(percentageValue / 100, locale, {\n style: 'percent'\n });\n let ariaValuetext = formattedValue;\n if (getAriaValueText) {\n ariaValuetext = getAriaValueText(formattedValue, valueProp);\n }\n const defaultProps = {\n 'aria-labelledby': labelId,\n 'aria-valuemax': max,\n 'aria-valuemin': min,\n 'aria-valuenow': clampedValue,\n 'aria-valuetext': ariaValuetext,\n role: 'meter',\n children: /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children, /*#__PURE__*/_jsx(\"span\", {\n role: \"presentation\",\n style: visuallyHidden,\n children: \"x\"\n })]\n })\n };\n const contextValue = React.useMemo(() => ({\n formattedValue,\n percentageValue,\n setLabelId,\n value: valueProp\n }), [formattedValue, percentageValue, setLabelId, valueProp]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [defaultProps, elementProps]\n });\n return /*#__PURE__*/_jsx(MeterRootContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterRoot.displayName = \"MeterRoot\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Contains the meter indicator and represents the entire range of the meter.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterTrack = /*#__PURE__*/React.forwardRef(function MeterTrack(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: elementProps\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterTrack.displayName = \"MeterTrack\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Visualizes the position of the value along the range.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterIndicator = /*#__PURE__*/React.forwardRef(function MeterIndicator(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n percentageValue\n } = useMeterRootContext();\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [{\n style: {\n insetInlineStart: 0,\n height: 'inherit',\n width: `${percentageValue}%`\n }\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterIndicator.displayName = \"MeterIndicator\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * A text element displaying the current value.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterValue = /*#__PURE__*/React.forwardRef(function MeterValue(componentProps, forwardedRef) {\n const {\n className,\n render,\n children,\n style,\n ...elementProps\n } = componentProps;\n const {\n value,\n formattedValue\n } = useMeterRootContext();\n return useRenderElement('span', componentProps, {\n ref: forwardedRef,\n props: [{\n 'aria-hidden': true,\n children: typeof children === 'function' ? children(formattedValue, value) : formattedValue\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterValue.displayName = \"MeterValue\";","'use client';\n\nimport * as React from 'react';\nimport { useMeterRootContext } from \"../root/MeterRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\n\n/**\n * An accessible label for the meter.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Meter](https://base-ui.com/react/components/meter)\n */\nexport const MeterLabel = /*#__PURE__*/React.forwardRef(function MeterLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n setLabelId\n } = useMeterRootContext();\n const id = useRegisteredLabelId(idProp, setLabelId);\n return useRenderElement('span', componentProps, {\n ref: forwardedRef,\n props: [{\n id,\n role: 'presentation'\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") MeterLabel.displayName = \"MeterLabel\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-indicator.tsx\nconst TRMeterIndicator = createComponentPart(Meter.Indicator, \"tr-meter-indicator\");\n//#endregion\nexport { TRMeterIndicator };\n\n//# sourceMappingURL=meter-indicator.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-label.tsx\nconst TRMeterLabel = createComponentPart(Meter.Label, \"tr-meter-label\");\n//#endregion\nexport { TRMeterLabel };\n\n//# sourceMappingURL=meter-label.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-root.tsx\nfunction TRMeterRoot({ className, max = 100, min = 0, value, variant = \"neutral\", ...props }) {\n\tconst clampedValue = Math.min(max, Math.max(min, Number.isNaN(value) ? min : value));\n\treturn /* @__PURE__ */ jsx(Meter.Root, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-meter\", className),\n\t\t\"data-variant\": variant,\n\t\tmax,\n\t\tmin,\n\t\tvalue: clampedValue\n\t});\n}\n//#endregion\nexport { TRMeterRoot };\n\n//# sourceMappingURL=meter-root.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-track.tsx\nconst TRMeterTrack = createComponentPart(Meter.Track, \"tr-meter-track\");\n//#endregion\nexport { TRMeterTrack };\n\n//# sourceMappingURL=meter-track.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Meter } from \"@base-ui/react/meter\";\n//#region src/components/meter/meter-value.tsx\nconst TRMeterValue = createComponentPart(Meter.Value, \"tr-meter-value\");\n//#endregion\nexport { TRMeterValue };\n\n//# sourceMappingURL=meter-value.js.map","import { TRMeterIndicator } from \"./meter-indicator.js\";\nimport { TRMeterLabel } from \"./meter-label.js\";\nimport { TRMeterRoot } from \"./meter-root.js\";\nimport { TRMeterTrack } from \"./meter-track.js\";\nimport { TRMeterValue } from \"./meter-value.js\";\n//#region src/components/meter/index.tsx\nconst TRMeter = {\n\tRoot: TRMeterRoot,\n\tTrack: TRMeterTrack,\n\tIndicator: TRMeterIndicator,\n\tValue: TRMeterValue,\n\tLabel: TRMeterLabel\n};\n//#endregion\nexport { TRMeter, TRMeterIndicator, TRMeterLabel, TRMeterRoot, TRMeterTrack, TRMeterValue };\n\n//# sourceMappingURL=index.js.map","import { TRMeter } from '@tinyrack/ui/components/meter';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { useTranslation } from 'react-i18next';\n\ntype PasswordPolicy = {\n min_length: number;\n max_length: number;\n};\n\ntype PasswordStrengthProps = {\n password: string;\n policy: PasswordPolicy;\n};\n\nconst LEVELS = ['weak', 'fair', 'good', 'strong'] as const;\n\nconst VARIANTS = {\n weak: 'danger',\n fair: 'warning',\n good: 'info',\n strong: 'success',\n} as const;\n\n/**\n * Scores a password 1-4 for feedback only.\n *\n * Deliberately simple: length against the deployment's own policy plus\n * character-class variety. The server is the authority on what is acceptable,\n * so this only needs to steer the user, and a full entropy estimator would be\n * a large dependency for a hint bar.\n *\n * Returns 0 for \"nothing to say yet\" so the caller can stay silent.\n */\nfunction scorePassword(password: string, policy: PasswordPolicy): number {\n if (password.length === 0) {\n return 0;\n }\n if (password.length < policy.min_length) {\n return 1;\n }\n\n const classes = [/[a-z]/, /[A-Z]/, /\\d/, /[^a-zA-Z0-9]/].filter((pattern) =>\n pattern.test(password),\n ).length;\n\n const isLong = password.length >= policy.min_length + 4;\n\n if (classes >= 3 && isLong) {\n return 4;\n }\n if (classes >= 2 && isLong) {\n return 3;\n }\n return 2;\n}\n\n/**\n * Strength hint under a new-password field.\n *\n * Renders nothing for an empty field so the form does not shift as soon as it\n * is focused. Announced politely rather than assertively — it updates on every\n * keystroke and should not interrupt typing.\n */\nexport function PasswordStrength({ password, policy }: PasswordStrengthProps) {\n const { t } = useTranslation();\n const score = scorePassword(password, policy);\n\n if (score === 0) {\n return null;\n }\n\n const level = LEVELS[score - 1];\n\n return (\n <TRMeter.Root\n aria-live=\"polite\"\n className=\"flex flex-col gap-tinyrack-xs\"\n max={4}\n min={0}\n value={score}\n variant={VARIANTS[level]}\n >\n <div className=\"flex items-baseline justify-between gap-tinyrack-sm\">\n <TRMeter.Label\n render={\n <TRText color=\"muted\" variant=\"caption\">\n {t('validation.password.strength.label')}\n </TRText>\n }\n />\n <TRMeter.Value\n render={\n <TRText color=\"muted\" variant=\"caption\">\n {t(`validation.password.strength.${level}`)}\n </TRText>\n }\n />\n </div>\n <TRMeter.Track>\n <TRMeter.Indicator />\n </TRMeter.Track>\n </TRMeter.Root>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{G as e,J as t,Z as n,_ as r,b as i,c as a,i as o,q as s,v as c,x as l}from"./createLucideIcon-BPpAIXR_.js";import{F as u,G as d,P as f,S as ee,U as p,Vt as m,W as h,Zt as te,bn as g,bt as ne,k as _,q as re,xt as v}from"./config-DTQCUlfZ.js";import{S as ie,T as ae,_ as oe,b as se,g as ce,h as le,i as y,u as b,w as x,y as ue}from"./shell-header-bar-CjG5qvPg.js";import{t as S}from"./useAriaLabelledBy-ByuMi3Ry.js";import{t as C}from"./field-Cn4H1CUj.js";import{t as w}from"./separator-B0Bvh1he.js";var T=n(t(),1),E=T.createContext(void 0);function de(){let e=T.useContext(E);if(e===void 0)throw Error(c(98));return e}function D(e,t,n){return{...e,value:t,index:n,filled:t!==``}}var O={value:()=>null,length:()=>null,...x},k={value:()=>null,index:()=>null,...x},A={numeric:{slotPattern:`\\d{1}`,getRootPattern:e=>`\\d{${e}}`,regexp:/[^\d]/g,inputMode:`numeric`},alpha:{slotPattern:`[a-zA-Z]{1}`,getRootPattern:e=>`[a-zA-Z]{${e}}`,regexp:/[^a-zA-Z]/g,inputMode:`text`},alphanumeric:{slotPattern:`[a-zA-Z0-9]{1}`,getRootPattern:e=>`[a-zA-Z0-9]{${e}}`,regexp:/[^a-zA-Z0-9]/g,inputMode:`text`}};function j(e){return e===`none`?null:A[e]}function M(e){return(e??``).replace(/\s/g,``)}function fe(e,t){return t?e.replace(t.regexp,``):e}function N(e,t,n,r){let i=M(e),a=j(n),o=fe(i,a),s=i.length>o.length;if(r){let e=r(o);s||=o.length>e.length,o=fe(e,a),s||=e.length>o.length}let c=t<0?0:t,l=Array.from(o);return[l.slice(0,c).join(``),s||l.length>c]}function P(e,t,n,r){return N(e,t,n,r)[0]}function pe(e,t,n,r,i,a){let o=P(n,r,i,a);return P(`${e.slice(0,t)}${o}${e.slice(t+o.length)}`,r,i,a)}function F(e,t){return t<0||t>=e.length?e:`${e.slice(0,t)}${e.slice(t+1)}`}var I=s(),L=T.forwardRef(function(e,t){let{"aria-describedby":n,"aria-labelledby":o,id:s,autoComplete:c=`one-time-code`,defaultValue:d,value:ee,onValueChange:p,onValueComplete:m,form:h,length:g,autoSubmit:re=!1,mask:y=!1,inputMode:x,validationType:C=`numeric`,normalizeValue:w,disabled:de=!1,readOnly:D=!1,required:k=!1,name:A,onValueInvalid:M,render:fe,className:pe,style:F,...L}=e,{setDirty:z,validityData:B,disabled:V,setFilled:H,invalid:U,name:me,state:he,validation:W,validationMode:ge,setFocused:_e,setTouched:ve}=ie(),{clearErrors:ye}=ce(),{getDescriptionProps:be,labelId:xe}=ue(),G=V||de,K=me??A,[Se,Ce]=ae({controlled:ee,default:d,name:`OTPField`,state:`value`}),we=T.useRef(null),q=T.useRef([]),Te=T.useRef(null),J=T.useRef(null),Ee=T.useMemo(()=>({get current(){return q.current[0]??null}}),[]),Y=oe({id:s}),De=S(o,xe,Ee,!0,Y),Oe=o==null?De:void 0,ke=R(n,be({})[`aria-describedby`]),Ae=j(C),je=Ae?.slotPattern,Me=Ae?.getRootPattern(g),Ne=x??Ae?.inputMode,Pe=Number.isInteger(g)&&g>0,X=P(Se,g,C,w),Z=_(X),Q=X!==``,[Fe,Ie]=T.useState(0),[Le,Re]=T.useState(()=>Math.min(X.length,g-1)),[ze,Be]=T.useState(!1),Ve=ze?Math.min(Le,Math.max(g-1,0)):Math.min(X.length,g-1);i(()=>{H(Q)},[Q,H]),se(Ee,Y,X,void 0,!G,A);let $=l(e=>{let t=Math.min(Math.max(e,0),Math.max(q.current.length-1,0)),n=q.current[t];n?.focus(),n?.select()}),He=l((e,t)=>{Te.current={index:e,value:t}});function Ue(){let e=W.inputRef.current?.form??q.current[0]?.form??null;if(h){let t=r(we.current).getElementById(h);t?.tagName===`FORM`&&(e=t)}e&&typeof e.requestSubmit==`function`&&e.requestSubmit()}function We(e,t){m?.(e,t),re&&Ue()}le(X,()=>{ye(K),z(X!==B.initialValue),W.change(X);let e=Te.current;e!=null&&(Te.current=null,e.value===X&&$(e.index));let t=J.current;t!=null&&(J.current=null,t.value===X&&We(X,t.eventDetails))});let Ge=l((e,t)=>{let n=P(e,g,C,w),r=(t.reason===`input-change`||t.reason===`input-paste`)&&n.length===g&&(Z.current.length!==g||t.reason===`input-paste`)?u(t.reason,t.event):null;return n===Z.current?(r!=null&&We(n,r),null):(p?.(n,t),t.isCanceled?null:(Ce(n),r==null?n.length!==g&&(J.current=null):J.current={value:n,eventDetails:r},n))}),Ke=l((e,t)=>{M?.(e,t)}),qe=l((e,t)=>{if(e>Z.current.length){$(Math.min(Z.current.length,g-1));return}Re(e),Be(!0),_e(!0),t.currentTarget.select()}),Je=l(e=>{te(we.current,e.relatedTarget)||(ve(!0),Be(!1),_e(!1),ge===`onBlur`&&W.commit(Z.current))}),Ye=T.useCallback(e=>{if(Y!=null)return e===0?Y:`${Y}-${e+1}`},[Y]),Xe=T.useMemo(()=>({...he,complete:X.length===g,disabled:G,filled:Q,focused:ze,length:g,readOnly:D,required:k,value:X}),[G,he,Q,ze,g,D,k,X]),Ze=T.useMemo(()=>({autoComplete:c,activeIndex:Ve,disabled:G,form:h,focusInput:$,queueFocusInput:He,getInputId:Ye,handleInputBlur:Je,handleInputFocus:qe,inputMode:Ne,inputAriaLabelledBy:Oe,invalid:U,length:g,mask:y,pattern:je,reportValueInvalid:Ke,readOnly:D,required:k,normalizeValue:w,setValue:Ge,state:Xe,validationType:C,value:X}),[Ve,c,G,$,h,Ye,Je,qe,Ne,Oe,U,g,y,je,He,D,Ke,k,w,Ge,Xe,C,X]),Qe=a(`div`,e,{ref:[t,we],state:Xe,props:[{role:`group`,"aria-describedby":ke,"aria-labelledby":De},L],stateAttributesMapping:O});return(0,I.jsx)(b,{elementsRef:q,onMapChange:e=>{Ie(e.size)},children:(0,I.jsxs)(E.Provider,{value:Ze,children:[Qe,Pe&&(0,I.jsx)(`input`,{...W.getValidationProps(G,{onFocus(){$(0)},onChange(e){if(e.nativeEvent.defaultPrevented||G||D)return;let t=e.currentTarget.value,[n,r]=N(t,g,C,w);r&&Ke(t,u(`input-change`,e.nativeEvent));let i=Ge(n,f(`input-change`,e.nativeEvent));i!=null&&i!==``&&He(i.length-1,i)}}),ref:W.inputRef,type:`text`,id:Y&&K==null?`${Y}-hidden-input`:void 0,form:h,name:K,value:X,autoComplete:c,inputMode:Ne,minLength:g,maxLength:g,pattern:Me,disabled:G,readOnly:D,required:k,"aria-hidden":!0,tabIndex:-1,style:K?v:ne})]})})});function R(...e){let t=e.flatMap(e=>e?.split(/\s+/).filter(Boolean)??[]);return t.length>0?Array.from(new Set(t)).join(` `):void 0}var z=g(T.forwardRef(function(e,t){let{"aria-label":n,"aria-labelledby":r,render:i,className:o,style:s,...c}=e,{activeIndex:l,autoComplete:te,disabled:g,form:ne,focusInput:_,queueFocusInput:v,getInputId:ie,handleInputBlur:ae,handleInputFocus:oe,inputMode:se,inputAriaLabelledBy:ce,invalid:le,length:b,mask:x,pattern:ue,reportValueInvalid:S,readOnly:C,required:w,normalizeValue:E,setValue:O,state:A,validationType:j,value:M}=de(),{ref:fe,index:P}=y({guess:!0}),I=T.useRef(null),L=ee(),R=M[P]??``,z=D(A,R,P),B=n,V=r??ce,H=P===0?void 0:B,U={id:ie(P),value:R,type:x?`password`:`text`,inputMode:se,autoComplete:P===0?te:`off`,autoCorrect:`off`,spellCheck:`false`,enterKeyHint:P===b-1?`done`:`next`,maxLength:P===0?b:void 0,tabIndex:l===P?0:-1,disabled:g,form:ne,pattern:ue,readOnly:C,required:w,"aria-labelledby":H==null?V:void 0,"aria-invalid":!g&&le?!0:void 0,"aria-label":H,onMouseDown(e){e.defaultPrevented||g||(e.preventDefault(),_(P))},onFocus(e){e.defaultPrevented||g||oe(P,e)},onBlur(e){e.defaultPrevented||ae(e)},onChange(e){if(e.defaultPrevented||g||C)return;let t=e.currentTarget.value,[n,r]=N(t,b,j,E);if(r&&S(t,u(p,e.nativeEvent)),n===``){t===``?O(F(M,P),f(h,e.nativeEvent)):R!==``&&(e.currentTarget.value=R,e.currentTarget.select());return}let i=pe(M,P,n,b,j,E),a=O(i,f(p,e.nativeEvent));if(a!=null){let e=Math.min(P+n.length,b-1);v(e,a)}},onKeyDown(e){if(e.defaultPrevented||g)return;let t=Math.max(b-1,0),n=Math.min(M.length,t),r=(e.ctrlKey||e.metaKey)&&!e.altKey,i=L===`rtl`,a=i?`ArrowRight`:`ArrowLeft`,o=i?`ArrowLeft`:`ArrowRight`;if(e.key===a){m(e),_(r?0:Math.max(0,P-1));return}if(e.key===o){m(e),_(r?n:Math.min(t,P+1));return}if(e.key===`Home`||e.key===`ArrowUp`){m(e),_(0);return}if(e.key===`End`||e.key===`ArrowDown`){m(e),_(n);return}if(C)return;function s(t,n){let r=O(t,f(re,e.nativeEvent));r!=null&&v(n,r)}if(e.key===`Backspace`&&r){m(e),s(``,0);return}if(e.key===`Delete`){m(e),s(F(M,P),P);return}let c=e.currentTarget.value,l=e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===c.length;if(e.key.length===1&&l&&R===e.key){m(e),P<b-1&&_(P+1);return}if(e.key===`Backspace`){m(e);let t=Math.max(0,P-1);s(F(M,R===``?t:P),t)}},onPaste(e){if(e.defaultPrevented||g||C)return;let t=``;try{t=e.clipboardData?.getData(`text/plain`)??``}catch{return}e.preventDefault();let[n,r]=N(t,b,j,E);if(r&&S(t,u(d,e.nativeEvent)),n===``)return;let i=O(pe(M,P,n,b,j,E),f(d,e.nativeEvent));if(i!=null){let e=Math.min(P+n.length,b-1);v(e,i)}}};return a(`input`,e,{ref:[t,fe,I],state:z,props:[U,c],stateAttributesMapping:k})}),`tr-otp-field-digit`,{tracksFocusModality:!0});function B({appearance:t=`solid`,className:n,uiSize:r=`md`,...i}){return(0,I.jsx)(L,{...i,className:e(`tr-otp-field`,n),"data-appearance":t,"data-ui-size":r})}function V({className:t,orientation:n=`vertical`,...r}){return(0,I.jsx)(w,{...r,className:e(`tr-otp-field-separator`,t),orientation:n})}var H={Root:B,Input:z,Separator:V},U=(0,T.forwardRef)(function({length:e=6,error:t,disabled:n=!1,onComplete:r,onChange:i,value:a,autoFocus:s=!1,className:c=``},l){let{t:u}=o(),d=(0,T.useId)(),f=(0,T.useRef)(null),[ee,p]=(0,T.useState)(a??``);(0,T.useEffect)(()=>{a!==void 0&&p(a)},[a]),(0,T.useImperativeHandle)(l,()=>({focus:()=>{(f.current?.querySelector(`input`))?.focus()},clear:()=>{p(``),(f.current?.querySelector(`input`))?.focus()}}),[]);let m=(0,T.useCallback)(e=>{p(e),i?.(e)},[i]),h=(0,T.useCallback)(e=>{r?.(e)},[r]);return(0,I.jsxs)(C.Root,{className:c,ref:f,children:[(0,I.jsx)(C.Label,{className:`sr-only`,htmlFor:d,children:u(`common.otp.label`)}),(0,I.jsx)(H.Root,{disabled:n,id:d,length:e,onValueChange:m,onValueComplete:h,uiSize:`md`,validationType:`numeric`,value:ee,children:Array.from({length:e},(t,n)=>(0,I.jsx)(H.Input,{"aria-label":n===0?void 0:u(`common.otp.digit`,{label:u(`common.otp.label`),position:n+1,total:e}),autoFocus:s&&n===0},n))}),t&&(0,I.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-danger text-tinyrack-sm`,"data-testid":`pin-input-error`,children:t.message})]})});export{U as t};
2
+ //# sourceMappingURL=pin-input-Cc-VkrQ3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin-input-Cc-VkrQ3.js","names":["_formatErrorMessage","REASONS.inputChange","REASONS.inputClear","REASONS.keyboard","REASONS.inputPaste","OTPField.Input","OTPField.Root"],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/root/OTPFieldRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/utils/stateAttributesMapping.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/utils/otp.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/root/OTPFieldRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/otp-field/input/OTPFieldInput.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-input.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/otp-field-separator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/otp-field/index.js","../../../frontend/src/components/ui/pin-input.tsx"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const OTPFieldRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") OTPFieldRootContext.displayName = \"OTPFieldRootContext\";\nexport function useOTPFieldRootContext() {\n const context = React.useContext(OTPFieldRootContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: OTPFieldRootContext is missing. OTPField parts must be placed within <OTPField.Root>.' : _formatErrorMessage(98));\n }\n return context;\n}\nexport function getOTPFieldInputState(state, value, index) {\n return {\n ...state,\n value,\n index,\n filled: value !== ''\n };\n}","import { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nexport const rootStateAttributesMapping = {\n value: () => null,\n length: () => null,\n ...fieldValidityMapping\n};\nexport const inputStateAttributesMapping = {\n value: () => null,\n index: () => null,\n ...fieldValidityMapping\n};","const OTP_VALIDATION_CONFIG = {\n numeric: {\n slotPattern: '\\\\d{1}',\n getRootPattern: length => `\\\\d{${length}}`,\n regexp: /[^\\d]/g,\n inputMode: 'numeric'\n },\n alpha: {\n slotPattern: '[a-zA-Z]{1}',\n getRootPattern: length => `[a-zA-Z]{${length}}`,\n regexp: /[^a-zA-Z]/g,\n inputMode: 'text'\n },\n alphanumeric: {\n slotPattern: '[a-zA-Z0-9]{1}',\n getRootPattern: length => `[a-zA-Z0-9]{${length}}`,\n regexp: /[^a-zA-Z0-9]/g,\n inputMode: 'text'\n }\n};\nexport function getOTPValidationConfig(validationType) {\n if (validationType === 'none') {\n return null;\n }\n return OTP_VALIDATION_CONFIG[validationType];\n}\nexport function stripOTPWhitespace(value) {\n return (value ?? '').replace(/\\s/g, '');\n}\nfunction applyOTPValidation(value, validation) {\n return validation ? value.replace(validation.regexp, '') : value;\n}\n\n/**\n * Normalizes user-entered OTP text by stripping whitespace, applying validation and custom\n * normalization, and clamping the final value to the configured slot count.\n */\nexport function normalizeOTPValueWithDetails(value, length, validationType, normalizeValue) {\n const strippedValue = stripOTPWhitespace(value);\n const validation = getOTPValidationConfig(validationType);\n let normalizedValue = applyOTPValidation(strippedValue, validation);\n let didRejectCharacters = strippedValue.length > normalizedValue.length;\n if (normalizeValue) {\n const customNormalizedValue = normalizeValue(normalizedValue);\n didRejectCharacters ||= normalizedValue.length > customNormalizedValue.length;\n normalizedValue = applyOTPValidation(customNormalizedValue, validation);\n didRejectCharacters ||= customNormalizedValue.length > normalizedValue.length;\n }\n\n // Slice by Unicode code points so multi-byte characters do not split across OTP slots.\n const maxLength = length < 0 ? 0 : length;\n const normalizedCharacters = Array.from(normalizedValue);\n return [normalizedCharacters.slice(0, maxLength).join(''), didRejectCharacters || normalizedCharacters.length > maxLength];\n}\nexport function normalizeOTPValue(value, length, validationType, normalizeValue) {\n return normalizeOTPValueWithDetails(value, length, validationType, normalizeValue)[0];\n}\n\n/**\n * Replaces characters starting at the provided slot index, then re-normalizes the final OTP value\n * so paste and multi-character edits stay contiguous and length-bounded.\n */\nexport function replaceOTPValue(currentValue, index, nextValue, length, validationType, normalizeValue) {\n const normalizedValue = normalizeOTPValue(nextValue, length, validationType, normalizeValue);\n const prefix = currentValue.slice(0, index);\n const suffix = currentValue.slice(index + normalizedValue.length);\n return normalizeOTPValue(`${prefix}${normalizedValue}${suffix}`, length, validationType, normalizeValue);\n}\nexport function removeOTPCharacter(currentValue, index) {\n if (index < 0 || index >= currentValue.length) {\n return currentValue;\n }\n return `${currentValue.slice(0, index)}${currentValue.slice(index + 1)}`;\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { warn } from '@base-ui/utils/warn';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { contains } from \"../../floating-ui-react/utils.mjs\";\nimport { CompositeList } from \"../../internals/composite/list/CompositeList.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useRegisterFieldControl } from \"../../internals/field-register-control/useRegisterFieldControl.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { useAriaLabelledBy } from \"../../internals/labelable-provider/useAriaLabelledBy.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useValueChanged } from \"../../internals/useValueChanged.mjs\";\nimport { createChangeEventDetails, createGenericEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { OTPFieldRootContext } from \"./OTPFieldRootContext.mjs\";\nimport { rootStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { getOTPValidationConfig, normalizeOTPValue, normalizeOTPValueWithDetails } from \"../utils/otp.mjs\";\n\n/**\n * Groups all OTP field parts and manages their state.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI OTP Field](https://base-ui.com/react/components/otp-field)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const OTPFieldRoot = /*#__PURE__*/React.forwardRef(function OTPFieldRoot(componentProps, forwardedRef) {\n const {\n 'aria-describedby': ariaDescribedByProp,\n 'aria-labelledby': ariaLabelledByProp,\n id: idProp,\n autoComplete = 'one-time-code',\n defaultValue,\n value: valueProp,\n onValueChange,\n onValueComplete: onValueCompleteProp,\n form,\n length,\n autoSubmit = false,\n mask = false,\n inputMode: inputModeProp,\n validationType = 'numeric',\n normalizeValue,\n disabled: disabledProp = false,\n readOnly = false,\n required = false,\n name: nameProp,\n onValueInvalid,\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n setDirty,\n validityData,\n disabled: fieldDisabled,\n setFilled,\n invalid,\n name: fieldName,\n state: fieldState,\n validation,\n validationMode,\n setFocused,\n setTouched\n } = useFieldRootContext();\n const {\n clearErrors\n } = useFormContext();\n const {\n getDescriptionProps,\n labelId\n } = useLabelableContext();\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const [valueUnwrapped, setValueUnwrapped] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'OTPField',\n state: 'value'\n });\n const rootRef = React.useRef(null);\n const inputRefs = React.useRef([]);\n const pendingFocusRef = React.useRef(null);\n const pendingCompleteValueRef = React.useRef(null);\n const firstInputRef = React.useMemo(() => ({\n get current() {\n return inputRefs.current[0] ?? null;\n }\n }), []);\n const id = useLabelableId({\n id: idProp\n });\n const ariaLabelledBy = useAriaLabelledBy(ariaLabelledByProp, labelId, firstInputRef, true, id);\n const inputAriaLabelledBy = ariaLabelledByProp == null ? ariaLabelledBy : undefined;\n const fieldDescriptionProps = getDescriptionProps({});\n const ariaDescribedBy = mergeAriaIds(ariaDescribedByProp, fieldDescriptionProps['aria-describedby']);\n const validationConfig = getOTPValidationConfig(validationType);\n const pattern = validationConfig?.slotPattern;\n const hiddenInputPattern = validationConfig?.getRootPattern(length);\n const inputMode = inputModeProp ?? validationConfig?.inputMode;\n const hasValidLength = Number.isInteger(length) && length > 0;\n const value = normalizeOTPValue(valueUnwrapped, length, validationType, normalizeValue);\n const valueRef = useValueAsRef(value);\n const filled = value !== '';\n const [inputCount, setInputCount] = React.useState(0);\n const [focusedIndex, setFocusedIndex] = React.useState(() => Math.min(value.length, length - 1));\n const [focused, setFocusedState] = React.useState(false);\n const activeIndex = focused ? Math.min(focusedIndex, Math.max(length - 1, 0)) : Math.min(value.length, length - 1);\n useIsoLayoutEffect(() => {\n setFilled(filled);\n }, [filled, setFilled]);\n\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useOTPFieldRootDevWarnings({\n inputCount,\n length\n });\n }\n useRegisterFieldControl(firstInputRef, id, value, undefined, !disabled, nameProp);\n const focusInput = useStableCallback(index => {\n const targetIndex = Math.min(Math.max(index, 0), Math.max(inputRefs.current.length - 1, 0));\n const target = inputRefs.current[targetIndex];\n target?.focus();\n target?.select();\n });\n const queueFocusInput = useStableCallback((index, nextValue) => {\n pendingFocusRef.current = {\n index,\n value: nextValue\n };\n });\n function requestSubmit() {\n // The hidden validation input only renders for a valid `length`, but the slots always do,\n // so fall back to the owning form of the first slot.\n let formElement = validation.inputRef.current?.form ?? inputRefs.current[0]?.form ?? null;\n if (form) {\n const associatedElement = ownerDocument(rootRef.current).getElementById(form);\n if (associatedElement?.tagName === 'FORM') {\n formElement = associatedElement;\n }\n }\n if (formElement && typeof formElement.requestSubmit === 'function') {\n formElement.requestSubmit();\n }\n }\n function completeValue(completedValue, eventDetails) {\n onValueCompleteProp?.(completedValue, eventDetails);\n if (autoSubmit) {\n requestSubmit();\n }\n }\n useValueChanged(value, () => {\n clearErrors(name);\n setDirty(value !== validityData.initialValue);\n validation.change(value);\n const pendingFocus = pendingFocusRef.current;\n if (pendingFocus != null) {\n pendingFocusRef.current = null;\n if (pendingFocus.value === value) {\n focusInput(pendingFocus.index);\n }\n }\n const pendingCompleteValue = pendingCompleteValueRef.current;\n if (pendingCompleteValue != null) {\n pendingCompleteValueRef.current = null;\n if (pendingCompleteValue.value === value) {\n completeValue(value, pendingCompleteValue.eventDetails);\n }\n }\n });\n const setValue = useStableCallback((nextValue, details) => {\n const normalizedValue = normalizeOTPValue(nextValue, length, validationType, normalizeValue);\n const canComplete = details.reason === REASONS.inputChange || details.reason === REASONS.inputPaste;\n const completeEventDetails = canComplete && normalizedValue.length === length && (valueRef.current.length !== length || details.reason === REASONS.inputPaste) ? createGenericEventDetails(details.reason, details.event) : null;\n if (normalizedValue === valueRef.current) {\n if (completeEventDetails != null) {\n completeValue(normalizedValue, completeEventDetails);\n }\n return null;\n }\n onValueChange?.(normalizedValue, details);\n if (details.isCanceled) {\n return null;\n }\n setValueUnwrapped(normalizedValue);\n if (completeEventDetails != null) {\n pendingCompleteValueRef.current = {\n value: normalizedValue,\n eventDetails: completeEventDetails\n };\n } else if (normalizedValue.length !== length) {\n pendingCompleteValueRef.current = null;\n }\n return normalizedValue;\n });\n const reportValueInvalid = useStableCallback((invalidValue, details) => {\n onValueInvalid?.(invalidValue, details);\n });\n const handleInputFocus = useStableCallback((index, event) => {\n if (index > valueRef.current.length) {\n focusInput(Math.min(valueRef.current.length, length - 1));\n return;\n }\n setFocusedIndex(index);\n setFocusedState(true);\n setFocused(true);\n event.currentTarget.select();\n });\n const handleInputBlur = useStableCallback(event => {\n if (contains(rootRef.current, event.relatedTarget)) {\n return;\n }\n setTouched(true);\n setFocusedState(false);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(valueRef.current);\n }\n });\n const getInputId = React.useCallback(index => {\n if (id == null) {\n return undefined;\n }\n return index === 0 ? id : `${id}-${index + 1}`;\n }, [id]);\n const state = React.useMemo(() => ({\n ...fieldState,\n complete: value.length === length,\n disabled,\n filled,\n focused,\n length,\n readOnly,\n required,\n value\n }), [disabled, fieldState, filled, focused, length, readOnly, required, value]);\n const contextValue = React.useMemo(() => ({\n autoComplete,\n activeIndex,\n disabled,\n form,\n focusInput,\n queueFocusInput,\n getInputId,\n handleInputBlur,\n handleInputFocus,\n inputMode,\n inputAriaLabelledBy,\n invalid,\n length,\n mask,\n pattern,\n reportValueInvalid,\n readOnly,\n required,\n normalizeValue,\n setValue,\n state,\n validationType,\n value\n }), [activeIndex, autoComplete, disabled, focusInput, form, getInputId, handleInputBlur, handleInputFocus, inputMode, inputAriaLabelledBy, invalid, length, mask, pattern, queueFocusInput, readOnly, reportValueInvalid, required, normalizeValue, setValue, state, validationType, value]);\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, rootRef],\n state,\n props: [{\n role: 'group',\n 'aria-describedby': ariaDescribedBy,\n 'aria-labelledby': ariaLabelledBy\n }, elementProps],\n stateAttributesMapping: rootStateAttributesMapping\n });\n return /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: inputRefs,\n onMapChange: newMap => {\n setInputCount(newMap.size);\n },\n children: /*#__PURE__*/_jsxs(OTPFieldRootContext.Provider, {\n value: contextValue,\n children: [element, hasValidLength && /*#__PURE__*/_jsx(\"input\", {\n ...validation.getValidationProps(disabled, {\n onFocus() {\n focusInput(0);\n },\n onChange(event) {\n if (event.nativeEvent.defaultPrevented || disabled || readOnly) {\n return;\n }\n const rawValue = event.currentTarget.value;\n const [normalizedValue, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputChange, event.nativeEvent));\n }\n const committedValue = setValue(normalizedValue, createChangeEventDetails(REASONS.inputChange, event.nativeEvent));\n if (committedValue != null && committedValue !== '') {\n queueFocusInput(committedValue.length - 1, committedValue);\n }\n }\n }),\n ref: validation.inputRef,\n type: \"text\",\n id: id && name == null ? `${id}-hidden-input` : undefined,\n form: form,\n name: name,\n value: value,\n autoComplete: autoComplete,\n inputMode: inputMode,\n minLength: length,\n maxLength: length,\n pattern: hiddenInputPattern,\n disabled: disabled,\n readOnly: readOnly,\n required: required,\n \"aria-hidden\": true,\n tabIndex: -1,\n style: name ? visuallyHiddenInput : visuallyHidden\n })]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") OTPFieldRoot.displayName = \"OTPFieldRoot\";\nfunction mergeAriaIds(...values) {\n const ids = values.flatMap(value => value?.split(/\\s+/).filter(Boolean) ?? []);\n return ids.length > 0 ? Array.from(new Set(ids)).join(' ') : undefined;\n}\nfunction useOTPFieldRootDevWarnings(parameters) {\n const {\n inputCount,\n length\n } = parameters;\n React.useEffect(() => {\n if (!Number.isInteger(length) || length <= 0 || inputCount === 0 || inputCount === length) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n const message = '<OTPField.Root> `length` must match the number of rendered ' + `<OTPField.Input /> parts. Received \\`length={${length}}\\` but rendered ` + `${inputCount} input${inputCount === 1 ? '' : 's'}.`;\n warn(message, ownerStackMessage);\n }, [inputCount, length]);\n React.useEffect(() => {\n if (Number.isInteger(length) && length > 0) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn(`<OTPField.Root> \\`length\\` must be a positive integer. Received \\`length={${String(length)}}\\`.`, ownerStackMessage);\n }, [length]);\n}","'use client';\n\nimport * as React from 'react';\nimport { SafeReact } from '@base-ui/utils/safeReact';\nimport { warn } from '@base-ui/utils/warn';\nimport { stopEvent } from \"../../floating-ui-react/utils.mjs\";\nimport { useCompositeListItem } from \"../../internals/composite/list/useCompositeListItem.mjs\";\nimport { useDirection } from \"../../internals/direction-context/DirectionContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { createChangeEventDetails, createGenericEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useOTPFieldRootContext, getOTPFieldInputState } from \"../root/OTPFieldRootContext.mjs\";\nimport { inputStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\nimport { normalizeOTPValueWithDetails, removeOTPCharacter, replaceOTPValue } from \"../utils/otp.mjs\";\n\n/**\n * An individual OTP character input.\n * Renders an `<input>` element.\n *\n * Documentation: [Base UI OTP Field](https://base-ui.com/react/components/otp-field)\n */\nexport const OTPFieldInput = /*#__PURE__*/React.forwardRef(function OTPFieldInput(componentProps, forwardedRef) {\n const {\n 'aria-label': externalAriaLabel,\n 'aria-labelledby': externalAriaLabelledBy,\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n activeIndex,\n autoComplete,\n disabled,\n form,\n focusInput,\n queueFocusInput,\n getInputId,\n handleInputBlur,\n handleInputFocus,\n inputMode,\n inputAriaLabelledBy,\n invalid,\n length,\n mask,\n pattern,\n reportValueInvalid,\n readOnly,\n required,\n normalizeValue,\n setValue,\n state,\n validationType,\n value\n } = useOTPFieldRootContext();\n const {\n ref: listItemRef,\n index\n } = useCompositeListItem({\n guess: true\n });\n const inputRef = React.useRef(null);\n const direction = useDirection();\n const slotValue = value[index] ?? '';\n const inputState = getOTPFieldInputState(state, slotValue, index);\n const slotAriaLabel = externalAriaLabel;\n const inheritedLabel = externalAriaLabelledBy ?? inputAriaLabelledBy;\n const ariaLabel = index === 0 ? undefined : slotAriaLabel;\n\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (index !== 0 || slotAriaLabel == null || inputRef.current?.labels?.length) {\n return;\n }\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn('<OTPField.Input> ignores `aria-label` on the first input. Use a `<label>` or `<Field.Label>` to label the OTP field.', ownerStackMessage);\n }, [index, slotAriaLabel]);\n }\n const inputProps = {\n id: getInputId(index),\n value: slotValue,\n type: mask ? 'password' : 'text',\n inputMode,\n autoComplete: index === 0 ? autoComplete : 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n enterKeyHint: index === length - 1 ? 'done' : 'next',\n // Only the first slot has a max length to avoid password manager bubbles appearing after later inputs.\n maxLength: index === 0 ? length : undefined,\n tabIndex: activeIndex === index ? 0 : -1,\n disabled,\n form,\n pattern,\n readOnly,\n required,\n 'aria-labelledby': ariaLabel == null ? inheritedLabel : undefined,\n 'aria-invalid': !disabled && invalid ? true : undefined,\n 'aria-label': ariaLabel,\n onMouseDown(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n event.preventDefault();\n focusInput(index);\n },\n onFocus(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n handleInputFocus(index, event);\n },\n onBlur(event) {\n if (event.defaultPrevented) {\n return;\n }\n handleInputBlur(event);\n },\n onChange(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n const rawValue = event.currentTarget.value;\n const [nextDigits, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputChange, event.nativeEvent));\n }\n if (nextDigits === '') {\n if (rawValue === '') {\n setValue(removeOTPCharacter(value, index), createChangeEventDetails(REASONS.inputClear, event.nativeEvent));\n } else if (slotValue !== '') {\n event.currentTarget.value = slotValue;\n event.currentTarget.select();\n }\n return;\n }\n const nextValue = replaceOTPValue(value, index, nextDigits, length, validationType, normalizeValue);\n const committedValue = setValue(nextValue, createChangeEventDetails(REASONS.inputChange, event.nativeEvent));\n if (committedValue != null) {\n const nextInput = Math.min(index + nextDigits.length, length - 1);\n queueFocusInput(nextInput, committedValue);\n }\n },\n onKeyDown(event) {\n if (event.defaultPrevented || disabled) {\n return;\n }\n const firstIndex = 0;\n const lastIndex = Math.max(length - 1, firstIndex);\n const endTargetIndex = Math.min(value.length, lastIndex);\n const hasBoundaryModifier = (event.ctrlKey || event.metaKey) && !event.altKey;\n const isRtl = direction === 'rtl';\n const previousKey = isRtl ? 'ArrowRight' : 'ArrowLeft';\n const nextKey = isRtl ? 'ArrowLeft' : 'ArrowRight';\n if (event.key === previousKey) {\n stopEvent(event);\n focusInput(hasBoundaryModifier ? firstIndex : Math.max(firstIndex, index - 1));\n return;\n }\n if (event.key === nextKey) {\n stopEvent(event);\n focusInput(hasBoundaryModifier ? endTargetIndex : Math.min(lastIndex, index + 1));\n return;\n }\n if (event.key === 'Home' || event.key === 'ArrowUp') {\n stopEvent(event);\n focusInput(firstIndex);\n return;\n }\n if (event.key === 'End' || event.key === 'ArrowDown') {\n stopEvent(event);\n focusInput(endTargetIndex);\n return;\n }\n if (readOnly) {\n return;\n }\n function setKeyboardValue(nextValue, targetIndex) {\n const committedValue = setValue(nextValue, createChangeEventDetails(REASONS.keyboard, event.nativeEvent));\n if (committedValue != null) {\n queueFocusInput(targetIndex, committedValue);\n }\n }\n if (event.key === 'Backspace' && hasBoundaryModifier) {\n stopEvent(event);\n setKeyboardValue('', firstIndex);\n return;\n }\n if (event.key === 'Delete') {\n stopEvent(event);\n setKeyboardValue(removeOTPCharacter(value, index), index);\n return;\n }\n const inputValue = event.currentTarget.value;\n const fullSelection = event.currentTarget.selectionStart === 0 && event.currentTarget.selectionEnd === inputValue.length;\n if (event.key.length === 1 && fullSelection && slotValue === event.key) {\n stopEvent(event);\n if (index < length - 1) {\n focusInput(index + 1);\n }\n return;\n }\n if (event.key === 'Backspace') {\n stopEvent(event);\n const targetIndex = Math.max(firstIndex, index - 1);\n const deleteIndex = slotValue === '' ? targetIndex : index;\n setKeyboardValue(removeOTPCharacter(value, deleteIndex), targetIndex);\n }\n },\n onPaste(event) {\n if (event.defaultPrevented || disabled || readOnly) {\n return;\n }\n let rawValue = '';\n try {\n rawValue = event.clipboardData?.getData('text/plain') ?? '';\n } catch {\n /* istanbul ignore else -- `process.env.NODE_ENV` is a build-time constant under test */\n if (process.env.NODE_ENV !== 'production') {\n const ownerStackMessage = SafeReact.captureOwnerStack?.() || '';\n warn('<OTPField.Input> could not read clipboard text during paste handling.', ownerStackMessage);\n }\n return;\n }\n event.preventDefault();\n const [nextDigits, didRejectCharacters] = normalizeOTPValueWithDetails(rawValue, length, validationType, normalizeValue);\n if (didRejectCharacters) {\n reportValueInvalid(rawValue, createGenericEventDetails(REASONS.inputPaste, event.nativeEvent));\n }\n if (nextDigits === '') {\n return;\n }\n const committedValue = setValue(replaceOTPValue(value, index, nextDigits, length, validationType, normalizeValue), createChangeEventDetails(REASONS.inputPaste, event.nativeEvent));\n if (committedValue != null) {\n const nextInput = Math.min(index + nextDigits.length, length - 1);\n queueFocusInput(nextInput, committedValue);\n }\n }\n };\n const element = useRenderElement('input', componentProps, {\n ref: [forwardedRef, listItemRef, inputRef],\n state: inputState,\n props: [inputProps, elementProps],\n stateAttributesMapping: inputStateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") OTPFieldInput.displayName = \"OTPFieldInput\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { OTPField } from \"@base-ui/react/otp-field\";\n//#region src/components/otp-field/otp-field-input.tsx\nconst TROTPFieldInput = createComponentPart(OTPField.Input, \"tr-otp-field-digit\", { tracksFocusModality: true });\n//#endregion\nexport { TROTPFieldInput };\n\n//# sourceMappingURL=otp-field-input.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { OTPField } from \"@base-ui/react/otp-field\";\n//#region src/components/otp-field/otp-field-root.tsx\nfunction TROTPFieldRoot({ appearance = \"solid\", className, uiSize = \"md\", ...props }) {\n\treturn /* @__PURE__ */ jsx(OTPField.Root, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-otp-field\", className),\n\t\t\"data-appearance\": appearance,\n\t\t\"data-ui-size\": uiSize\n\t});\n}\n//#endregion\nexport { TROTPFieldRoot };\n\n//# sourceMappingURL=otp-field-root.js.map","import { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { TRSeparator } from \"../separator/separator.js\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/otp-field/otp-field-separator.tsx\nfunction TROTPFieldSeparator({ className, orientation = \"vertical\", ...props }) {\n\treturn /* @__PURE__ */ jsx(TRSeparator, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-otp-field-separator\", className),\n\t\torientation\n\t});\n}\n//#endregion\nexport { TROTPFieldSeparator };\n\n//# sourceMappingURL=otp-field-separator.js.map","import { TROTPFieldInput } from \"./otp-field-input.js\";\nimport { TROTPFieldRoot } from \"./otp-field-root.js\";\nimport { TROTPFieldSeparator } from \"./otp-field-separator.js\";\n//#region src/components/otp-field/index.tsx\nconst TROTPField = {\n\tRoot: TROTPFieldRoot,\n\tInput: TROTPFieldInput,\n\tSeparator: TROTPFieldSeparator\n};\n//#endregion\nexport { TROTPField, TROTPFieldInput, TROTPFieldRoot, TROTPFieldSeparator };\n\n//# sourceMappingURL=index.js.map","import { TRField } from '@tinyrack/ui/components/field';\nimport { TROTPField } from '@tinyrack/ui/components/otp-field';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport type { FieldError } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n\nexport type PinInputRef = {\n focus: () => void;\n clear: () => void;\n};\n\ntype PinInputProps = {\n length?: number;\n error?: FieldError;\n disabled?: boolean;\n onComplete?: (value: string) => void;\n onChange?: (value: string) => void;\n value?: string;\n autoFocus?: boolean;\n className?: string;\n};\n\nexport const PinInput = forwardRef<PinInputRef, PinInputProps>(\n function PinInput(\n {\n length = 6,\n error,\n disabled = false,\n onComplete,\n onChange,\n value: controlledValue,\n autoFocus = false,\n className = '',\n },\n ref,\n ) {\n const { t } = useTranslation();\n const otpId = useId();\n const containerRef = useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = useState(controlledValue ?? '');\n\n useEffect(() => {\n if (controlledValue !== undefined) {\n setInternalValue(controlledValue);\n }\n }, [controlledValue]);\n\n useImperativeHandle(\n ref,\n () => ({\n focus: () => {\n const firstInput = containerRef.current?.querySelector('input');\n firstInput?.focus();\n },\n clear: () => {\n setInternalValue('');\n const firstInput = containerRef.current?.querySelector('input');\n firstInput?.focus();\n },\n }),\n [],\n );\n\n const handleValueChange = useCallback(\n (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [onChange],\n );\n\n const handleValueComplete = useCallback(\n (completedValue: string) => {\n onComplete?.(completedValue);\n },\n [onComplete],\n );\n\n return (\n <TRField.Root className={className} ref={containerRef}>\n {/*\n A real label, not `aria-label`: Base UI deliberately ignores\n `aria-label` on the first OTP input and warns to use a label instead,\n because that input is also the one password managers autofill.\n Visually hidden — the screen's own heading already says what the code\n is, so showing it twice would be noise.\n */}\n <TRField.Label className=\"sr-only\" htmlFor={otpId}>\n {t('common.otp.label')}\n </TRField.Label>\n <TROTPField.Root\n disabled={disabled}\n /*\n * Base UI gives the first slot the root's own id and derives the\n * rest from it, so naming the root is what lets the label point at\n * a real input rather than at the wrapping group.\n */\n id={otpId}\n length={length}\n onValueChange={handleValueChange}\n onValueComplete={handleValueComplete}\n uiSize=\"md\"\n validationType=\"numeric\"\n value={internalValue}\n >\n {/*\n Each box is a separate input, so each needs to say which position\n it is. Two Base UI behaviours shape this: the first box ignores\n `aria-label` outright (it is the one password managers autofill, so\n it takes the field's own label), and on the rest an `aria-label`\n *replaces* the inherited field name rather than adding to it. So\n the field name is folded into the per-box string, and box one is\n left to the label above.\n */}\n {Array.from({ length }, (_, index) => (\n <TROTPField.Input\n aria-label={\n index === 0\n ? undefined\n : t('common.otp.digit', {\n label: t('common.otp.label'),\n position: index + 1,\n total: length,\n })\n }\n autoFocus={autoFocus && index === 0}\n key={index}\n />\n ))}\n </TROTPField.Root>\n {error && (\n <p\n className=\"mt-tinyrack-sm text-center text-tinyrack-danger text-tinyrack-sm\"\n data-testid=\"pin-input-error\"\n >\n {error.message}\n </p>\n )}\n </TRField.Root>\n );\n },\n);\n\nexport default PinInput;\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./createLucideIcon-BPpAIXR_.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
2
+ //# sourceMappingURL=plus-DSBBSrgj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plus-DSBBSrgj.js","names":[],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/plus.mjs"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n];\nconst Plus = createLucideIcon(\"plus\", __iconNode);\n\nexport { __iconNode, Plus as default };\n//# sourceMappingURL=plus.mjs.map\n"],"x_google_ignoreList":[0],"mappings":"mDAaA,IAAM,EAAO,EAAiB,OAAQ,CAHpC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,EACzC,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAEL,CAAU"}
@@ -0,0 +1,2 @@
1
+ import{q as e}from"./createLucideIcon-BPpAIXR_.js";import{I as t}from"./index-CS23Ozt6.js";var n=e();function r(e){return(0,n.jsx)(t,{...e,onUnauthorized:()=>{window.location.href=`/login`}})}export{r as errorComponent};
2
+ //# sourceMappingURL=profile-B5NaJfeS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-B5NaJfeS.js","names":["RouteErrorFallback","PasswordModalType","TotpModalType","PasskeyModalType","ProfileError","props","ErrorComponentProps","window","location","href","errorComponent"],"sources":["../../../frontend/src/routes/profile/index.tsx?tsr-split=errorComponent"],"sourcesContent":["import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport {\n createFileRoute,\n type ErrorComponentProps,\n redirect,\n useRouter,\n} from '@tanstack/react-router';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCard } from '@tinyrack/ui/components/card';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { CircleAlertIcon, LogOutIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { z } from 'zod';\nimport { AuthPageHeader } from '#frontend/components/auth/auth-page-header.tsx';\nimport { DangerZoneSection } from '#frontend/components/profile/danger-zone-section.tsx';\nimport { LinkedAccountsSection } from '#frontend/components/profile/linked-accounts-section.tsx';\nimport { PasskeySection } from '#frontend/components/profile/passkey-section.tsx';\nimport { PasswordSection } from '#frontend/components/profile/password-section.tsx';\nimport { TotpSection } from '#frontend/components/profile/totp-section.tsx';\nimport { UnlinkOAuthModal } from '#frontend/components/profile/unlink-oauth-modal.tsx';\nimport { UserInfoSection } from '#frontend/components/profile/user-info-section.tsx';\nimport { Alert } from '#frontend/components/ui/alert.tsx';\nimport { InitialAvatar } from '#frontend/components/ui/initial-avatar.tsx';\nimport { RouteErrorFallback } from '#frontend/components/ui/route-error-fallback.tsx';\nimport { AppLayout } from '#frontend/features/layout/app-layout.tsx';\nimport { ChangePasswordModal } from '#frontend/features/profile/change-password-modal.tsx';\nimport { DeleteAccountModal } from '#frontend/features/profile/delete-account-modal.tsx';\nimport { DisableTotpModal } from '#frontend/features/profile/disable-totp-modal.tsx';\nimport { ManagePasskeysModal } from '#frontend/features/profile/manage-passkeys-modal.tsx';\nimport { RegenerateTotpRecoveryCodesModal } from '#frontend/features/profile/regenerate-totp-recovery-codes-modal.tsx';\nimport { RemovePasswordModal } from '#frontend/features/profile/remove-password-modal.tsx';\nimport { SetPasswordModal } from '#frontend/features/profile/set-password-modal.tsx';\nimport { SetupPasskeyModal } from '#frontend/features/profile/setup-passkey-modal.tsx';\nimport { SetupTotpModal } from '#frontend/features/profile/setup-totp-modal.tsx';\nimport { tick } from '#frontend/libs/promise.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport { logoutMutationOptions } from '#frontend/queries/logout.ts';\nimport {\n getOAuthAuthorizeUrl,\n oauthAccountsQueryOptions,\n unlinkOAuthMutationOptions,\n} from '#frontend/queries/oauth.ts';\nimport { getSessionQueryOptions } from '#frontend/queries/session.ts';\n\ntype PasswordModalType = 'set' | 'change' | 'remove' | null;\ntype TotpModalType = 'setup' | 'disable' | 'regenerate' | null;\ntype PasskeyModalType = 'setup' | 'manage' | null;\n\nconst SearchSchema = z.object({\n oauth_error: z.string().optional(),\n oauth_error_description: z.string().optional(),\n});\n\nconst OAUTH_ERROR_I18N_MAP: Record<string, string> = {\n access_denied: 'oauth.error.accessDenied',\n temporarily_unavailable: 'oauth.error.temporarilyUnavailable',\n server_error: 'oauth.error.serverError',\n};\n\nfunction ProfileError(props: ErrorComponentProps) {\n return (\n <RouteErrorFallback\n {...props}\n onUnauthorized={() => {\n window.location.href = '/login';\n }}\n />\n );\n}\n\nexport const Route = createFileRoute('/profile/')({\n component: Profile,\n errorComponent: ProfileError,\n validateSearch: SearchSchema,\n beforeLoad: async ({ context }) => {\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n loader: async ({ context }) => {\n await Promise.all([\n context.queryClient.ensureQueryData(getSessionQueryOptions),\n context.queryClient.ensureQueryData(oauthAccountsQueryOptions),\n context.queryClient.ensureQueryData(appConfigQueryOptions),\n ]);\n },\n});\n\nfunction Profile() {\n const { t } = useTranslation();\n const router = useRouter();\n const queryClient = useQueryClient();\n const search = Route.useSearch();\n\n const oauthError = search.oauth_error;\n const oauthErrorMessage = oauthError\n ? t(OAUTH_ERROR_I18N_MAP[oauthError] ?? 'oauth.error.failed')\n : undefined;\n const [unlinkingProvider, setUnlinkingProvider] = useState<string | null>(\n null,\n );\n const [unlinkModal, setUnlinkModal] = useState<{\n id: string;\n name: string;\n } | null>(null);\n const [passwordModal, setPasswordModal] = useState<PasswordModalType>(null);\n const [totpModal, setTotpModal] = useState<TotpModalType>(null);\n const [passkeyModal, setPasskeyModal] = useState<PasskeyModalType>(null);\n const [showDeleteModal, setShowDeleteModal] = useState(false);\n\n const { data: session } = useSuspenseQuery(getSessionQueryOptions);\n const { data: oauthAccountsData } = useSuspenseQuery(\n oauthAccountsQueryOptions,\n );\n const { data: appConfig } = useSuspenseQuery(appConfigQueryOptions);\n\n const logoutMutation = useMutation({\n ...logoutMutationOptions,\n onSuccess: async () => {\n queryClient.setQueryData(getSessionQueryOptions.queryKey, {\n user: null,\n });\n await tick();\n router.navigate({\n to: '/login',\n });\n },\n onSettled: () => {\n queryClient.invalidateQueries({\n queryKey: getSessionQueryOptions.queryKey,\n });\n },\n });\n\n const unlinkMutation = useMutation({\n ...unlinkOAuthMutationOptions,\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: oauthAccountsQueryOptions.queryKey,\n });\n },\n onSettled: () => {\n setUnlinkingProvider(null);\n },\n });\n\n const handleUnlinkConfirm = async () => {\n if (!unlinkModal) return;\n setUnlinkingProvider(unlinkModal.id);\n await unlinkMutation.mutateAsync(unlinkModal.id);\n };\n\n if (!session.user) {\n return null;\n }\n\n const user = session.user;\n const availableProviders = oauthAccountsData.available_providers;\n const hasLinkedOAuth = availableProviders.some((p) => p.linked);\n const isConfigManaged = user.managed_by === 'config';\n\n const passwordAuthMethod = appConfig.auth.password;\n const passkeyAuthMethod = appConfig.auth.passkey;\n const totpEnabled = passwordAuthMethod.totp.enabled;\n const passkeyEnabled = passkeyAuthMethod.enabled;\n\n const accountDeletionEnabled = appConfig.account_deletion.enabled;\n const retentionPeriod = appConfig.account_deletion.retention;\n\n const retentionDays = (() => {\n const match = retentionPeriod.match(/^(\\d+)([dmy])$/);\n if (!match) return 30;\n const value = parseInt(match[1], 10);\n const unit = match[2];\n switch (unit) {\n case 'd':\n return value;\n case 'm':\n return value * 30;\n case 'y':\n return value * 365;\n default:\n return 30;\n }\n })();\n\n const showPasswordSection = true;\n const showTotpSection = !isConfigManaged && totpEnabled;\n const showPasskeySection = !isConfigManaged && passkeyEnabled;\n const showLinkedAccounts = availableProviders.length > 0;\n const hasSecurityOptions =\n showPasswordSection || showTotpSection || showPasskeySection;\n\n return (\n <AppLayout\n headerActions={\n <TRButton\n appearance=\"ghost\"\n /*\n The visible label collapses below `sm:`, which would leave the\n control unnamed on a phone. `profile.logout` is the same string\n the label renders, so this does not shadow it.\n */\n aria-label={t('profile.logout')}\n data-testid=\"profile-logout\"\n disabled={logoutMutation.isPending}\n loading={logoutMutation.isPending}\n onClick={() => logoutMutation.mutate()}\n type=\"button\"\n uiSize=\"sm\"\n >\n {logoutMutation.isPending ? undefined : (\n <>\n <LogOutIcon aria-hidden className=\"size-tinyrack-lg\" />\n <span className=\"hidden sm:inline\">{t('profile.logout')}</span>\n </>\n )}\n </TRButton>\n }\n >\n <div className=\"flex items-center gap-tinyrack-lg\">\n <InitialAvatar email={user.email} size=\"lg\" />\n <div className=\"flex min-w-0 flex-col gap-tinyrack-3xs\">\n <AuthPageHeader title={t('profile.title')} />\n {/*\n Rendered here rather than as the header's `subtitle`: this node\n carries a testid and needs to truncate, neither of which the\n shared header does, and growing its API for one non-auth caller\n would be the wrong trade.\n */}\n <TRText\n as=\"p\"\n color=\"muted\"\n data-testid=\"profile-user-email\"\n truncate\n variant=\"bodySm\"\n >\n {user.email}\n </TRText>\n </div>\n </div>\n\n {oauthErrorMessage && (\n <Alert icon={CircleAlertIcon} type=\"error\">\n {oauthErrorMessage}\n </Alert>\n )}\n\n {user && <UserInfoSection user={user} />}\n\n {hasSecurityOptions && (\n <TRCard.Root variant=\"outlined\">\n <TRCard.Header className=\"border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md\">\n <TRCard.Title>{t('profile.security.title')}</TRCard.Title>\n <TRCard.Description>\n {t('profile.security.description')}\n </TRCard.Description>\n </TRCard.Header>\n {showTotpSection && user.totp_recovery_codes_missing && (\n <div\n className=\"border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md\"\n data-testid=\"profile-totp-recovery-warning\"\n >\n <Alert icon={CircleAlertIcon} type=\"warning\">\n {t('profile.totp.recoveryCodesMissing')}\n </Alert>\n </div>\n )}\n <TRCard.Content className=\"divide-y divide-tinyrack-border p-0\">\n {showPasswordSection && (\n <PasswordSection\n hasLinkedOAuth={hasLinkedOAuth}\n hasPassword={user.has_password}\n hasSecondFactorOnly={\n user.has_password &&\n !hasLinkedOAuth &&\n (user.totp_registered || user.passkey_count > 0)\n }\n isConfigManaged={isConfigManaged}\n onOpenModal={setPasswordModal}\n />\n )}\n {showTotpSection && (\n <TotpSection\n onOpenModal={setTotpModal}\n recoveryCodesMissing={user.totp_recovery_codes_missing}\n totpEnabled={user.totp_registered}\n />\n )}\n {showPasskeySection && (\n <PasskeySection\n onOpenModal={setPasskeyModal}\n passkeyCount={user.passkey_count}\n />\n )}\n </TRCard.Content>\n </TRCard.Root>\n )}\n\n {showLinkedAccounts && (\n <LinkedAccountsSection\n getAuthorizeUrl={getOAuthAuthorizeUrl}\n onUnlinkRequest={(provider) =>\n setUnlinkModal({\n id: provider.id,\n name: provider.display_name,\n })\n }\n providers={availableProviders}\n unlinkingProvider={unlinkingProvider}\n />\n )}\n\n <DangerZoneSection\n isConfigManaged={isConfigManaged}\n isDeletionEnabled={accountDeletionEnabled}\n onDeleteClick={() => setShowDeleteModal(true)}\n />\n\n <SetPasswordModal\n isOpen={passwordModal === 'set'}\n onClose={() => setPasswordModal(null)}\n />\n <ChangePasswordModal\n isOpen={passwordModal === 'change'}\n onClose={() => setPasswordModal(null)}\n />\n <RemovePasswordModal\n isOpen={passwordModal === 'remove'}\n onClose={() => setPasswordModal(null)}\n />\n\n <SetupTotpModal\n isOpen={totpModal === 'setup'}\n onClose={() => setTotpModal(null)}\n />\n <DisableTotpModal\n isOpen={totpModal === 'disable'}\n onClose={() => setTotpModal(null)}\n />\n <RegenerateTotpRecoveryCodesModal\n isOpen={totpModal === 'regenerate'}\n onClose={() => setTotpModal(null)}\n />\n\n <SetupPasskeyModal\n isOpen={passkeyModal === 'setup'}\n onClose={() => setPasskeyModal(null)}\n />\n <ManagePasskeysModal\n isOpen={passkeyModal === 'manage'}\n onAddNew={() => setPasskeyModal('setup')}\n onClose={() => setPasskeyModal(null)}\n />\n\n <UnlinkOAuthModal\n isOpen={unlinkModal !== null}\n isPending={unlinkMutation.isPending}\n onClose={() => setUnlinkModal(null)}\n onConfirm={handleUnlinkConfirm}\n providerName={unlinkModal?.name ?? ''}\n />\n\n <DeleteAccountModal\n isOpen={showDeleteModal}\n onClose={() => setShowDeleteModal(false)}\n retentionDays={retentionDays}\n />\n </AppLayout>\n );\n}\n"],"mappings":"qGAgEA,SAASI,EAAaC,EAA4B,CAChD,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,GAAIA,EACJ,mBAAsB,CACpBE,OAAOC,SAASC,KAAO,QACzB,CAAE,CAAA,CAGR"}