@tinyrack/issuary-server 0.26.0 → 0.27.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 (386) hide show
  1. package/dist/entities/terms-content.entity.d.ts +9 -0
  2. package/dist/entities/terms-content.entity.d.ts.map +1 -1
  3. package/dist/entities/terms.entity.d.ts +9 -0
  4. package/dist/entities/terms.entity.d.ts.map +1 -1
  5. package/dist/entities/terms.entity.js +4 -0
  6. package/dist/entities/terms.entity.js.map +1 -1
  7. package/dist/entities/user-terms-consent.entity.d.ts +9 -0
  8. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
  9. package/dist/entrypoints/app.d.ts +598 -3
  10. package/dist/entrypoints/app.d.ts.map +1 -1
  11. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +19 -16
  12. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  13. package/dist/entrypoints/database/postgres/compiled-functions.js +133 -76
  14. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  15. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +19 -16
  16. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  17. package/dist/entrypoints/database/sqlite/compiled-functions.js +133 -76
  18. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  19. package/dist/lib/config/branding.d.ts +5 -0
  20. package/dist/lib/config/branding.d.ts.map +1 -1
  21. package/dist/lib/config/branding.js +23 -1
  22. package/dist/lib/config/branding.js.map +1 -1
  23. package/dist/lib/config/resolved.d.ts +3 -0
  24. package/dist/lib/config/resolved.d.ts.map +1 -1
  25. package/dist/lib/interpolate-html.d.ts +3 -3
  26. package/dist/lib/interpolate-html.js +3 -3
  27. package/dist/lib/interpolate-html.js.map +1 -1
  28. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts +6 -0
  29. package/dist/migrations/postgres/Migration20260827090000_archive_terms.d.ts.map +1 -0
  30. package/dist/migrations/postgres/Migration20260827090000_archive_terms.js +12 -0
  31. package/dist/migrations/postgres/Migration20260827090000_archive_terms.js.map +1 -0
  32. package/dist/migrations/postgres/index.d.ts.map +1 -1
  33. package/dist/migrations/postgres/index.js +2 -0
  34. package/dist/migrations/postgres/index.js.map +1 -1
  35. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.d.ts +6 -0
  36. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.d.ts.map +1 -0
  37. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.js +12 -0
  38. package/dist/migrations/sqlite/Migration20260827090000_archive_terms.js.map +1 -0
  39. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  40. package/dist/migrations/sqlite/index.js +2 -0
  41. package/dist/migrations/sqlite/index.js.map +1 -1
  42. package/dist/repositories/terms.repository.d.ts.map +1 -1
  43. package/dist/repositories/terms.repository.js +1 -1
  44. package/dist/repositories/terms.repository.js.map +1 -1
  45. package/dist/routes/api/admin/console/index.d.ts +523 -0
  46. package/dist/routes/api/admin/console/index.d.ts.map +1 -0
  47. package/dist/routes/api/admin/console/index.js +212 -0
  48. package/dist/routes/api/admin/console/index.js.map +1 -0
  49. package/dist/routes/api/admin/index.d.ts +584 -0
  50. package/dist/routes/api/admin/index.d.ts.map +1 -1
  51. package/dist/routes/api/admin/index.js +3 -1
  52. package/dist/routes/api/admin/index.js.map +1 -1
  53. package/dist/routes/api/admin/users/index.d.ts +64 -0
  54. package/dist/routes/api/admin/users/index.d.ts.map +1 -1
  55. package/dist/routes/api/admin/users/index.js +47 -0
  56. package/dist/routes/api/admin/users/index.js.map +1 -1
  57. package/dist/routes/api/config/get.d.ts +10 -3
  58. package/dist/routes/api/config/get.d.ts.map +1 -1
  59. package/dist/routes/api/config/get.js +3 -0
  60. package/dist/routes/api/config/get.js.map +1 -1
  61. package/dist/routes/api/config/index.d.ts +10 -3
  62. package/dist/routes/api/config/index.d.ts.map +1 -1
  63. package/dist/routes/api/index.d.ts +594 -3
  64. package/dist/routes/api/index.d.ts.map +1 -1
  65. package/dist/routes/index.d.ts +594 -3
  66. package/dist/routes/index.d.ts.map +1 -1
  67. package/dist/schemas/response.d.ts +4 -1
  68. package/dist/schemas/response.d.ts.map +1 -1
  69. package/dist/schemas/response.js +11 -2
  70. package/dist/schemas/response.js.map +1 -1
  71. package/dist/services/admin-console.service.d.ts +407 -0
  72. package/dist/services/admin-console.service.d.ts.map +1 -0
  73. package/dist/services/admin-console.service.js +377 -0
  74. package/dist/services/admin-console.service.js.map +1 -0
  75. package/dist/services/container.d.ts +5 -0
  76. package/dist/services/container.d.ts.map +1 -1
  77. package/dist/services/container.js +3 -0
  78. package/dist/services/container.js.map +1 -1
  79. package/dist/services/user.service.d.ts +21 -0
  80. package/dist/services/user.service.d.ts.map +1 -1
  81. package/dist/services/user.service.js +65 -1
  82. package/dist/services/user.service.js.map +1 -1
  83. package/package.json +1 -1
  84. package/public/assets/2fa-BowFczF7.js +2 -0
  85. package/public/assets/2fa-BowFczF7.js.map +1 -0
  86. package/public/assets/2fa-C_pA-n2i.js +2 -0
  87. package/public/assets/{2fa-DFTcWEMb.js.map → 2fa-C_pA-n2i.js.map} +1 -1
  88. package/public/assets/2fa-Cpfhakvn.js +2 -0
  89. package/public/assets/{2fa-huNZDYU9.js.map → 2fa-Cpfhakvn.js.map} +1 -1
  90. package/public/assets/2fa-o1a13VHx.js +2 -0
  91. package/public/assets/2fa-o1a13VHx.js.map +1 -0
  92. package/public/assets/FieldControl-ShLuCjvG.js +2 -0
  93. package/public/assets/FieldControl-ShLuCjvG.js.map +1 -0
  94. package/public/assets/Separator-C6MmGAmP.js +2 -0
  95. package/public/assets/Separator-C6MmGAmP.js.map +1 -0
  96. package/public/assets/admin-_jFLs8Ve.js +2 -0
  97. package/public/assets/admin-_jFLs8Ve.js.map +1 -0
  98. package/public/assets/admin-shell-B91U4-Ro.js +2 -0
  99. package/public/assets/admin-shell-B91U4-Ro.js.map +1 -0
  100. package/public/assets/alert-D3aaK-_3.js +2 -0
  101. package/public/assets/alert-D3aaK-_3.js.map +1 -0
  102. package/public/assets/alert-kRxM1xsM.js +2 -0
  103. package/public/assets/alert-kRxM1xsM.js.map +1 -0
  104. package/public/assets/auth-choice-row-h4heOMHs.js +2 -0
  105. package/public/assets/auth-choice-row-h4heOMHs.js.map +1 -0
  106. package/public/assets/auth-field-BpJ4AHtU.js +2 -0
  107. package/public/assets/{auth-field-CWyXGKoC.js.map → auth-field-BpJ4AHtU.js.map} +1 -1
  108. package/public/assets/auth-footer-Du6S-oDG.js +2 -0
  109. package/public/assets/auth-footer-Du6S-oDG.js.map +1 -0
  110. package/public/assets/auth-layout-BdRRr0vT.js +2 -0
  111. package/public/assets/auth-layout-BdRRr0vT.js.map +1 -0
  112. package/public/assets/auth-page-header-ChaCNNrn.js +2 -0
  113. package/public/assets/{auth-page-header-DgGAaIiP.js.map → auth-page-header-ChaCNNrn.js.map} +1 -1
  114. package/public/assets/authorization-context-banner-zVxGX5e8.js +2 -0
  115. package/public/assets/{authorization-context-banner-DznMDPOX.js.map → authorization-context-banner-zVxGX5e8.js.map} +1 -1
  116. package/public/assets/avatar-BxTPQIDp.js +2 -0
  117. package/public/assets/{avatar-D-FRGa1m.js.map → avatar-BxTPQIDp.js.map} +1 -1
  118. package/public/assets/badge-B8D0Q2qq.js +2 -0
  119. package/public/assets/{badge-CsOfUji0.js.map → badge-B8D0Q2qq.js.map} +1 -1
  120. package/public/assets/checkbox-DTPGfvmq.js +2 -0
  121. package/public/assets/{checkbox-C90dDDza.js.map → checkbox-DTPGfvmq.js.map} +1 -1
  122. package/public/assets/{circle-check-6QTLhwM_.js → circle-check-Cnzuu7xR.js} +2 -2
  123. package/public/assets/{circle-check-6QTLhwM_.js.map → circle-check-Cnzuu7xR.js.map} +1 -1
  124. package/public/assets/clients-DLqy7K3N.js +5 -0
  125. package/public/assets/clients-DLqy7K3N.js.map +1 -0
  126. package/public/assets/config-C18-l7z7.js +2 -0
  127. package/public/assets/config-C18-l7z7.js.map +1 -0
  128. package/public/assets/{consent-RtCi_85E.js → consent-BWniDzI3.js} +2 -2
  129. package/public/assets/{consent-RtCi_85E.js.map → consent-BWniDzI3.js.map} +1 -1
  130. package/public/assets/consent-r_tX8DTb.js +2 -0
  131. package/public/assets/{consent-B9sQEyO8.js.map → consent-r_tX8DTb.js.map} +1 -1
  132. package/public/assets/{createLucideIcon-BPpAIXR_.js → createLucideIcon-D-yizrWN.js} +2 -2
  133. package/public/assets/{createLucideIcon-BPpAIXR_.js.map → createLucideIcon-D-yizrWN.js.map} +1 -1
  134. package/public/assets/design-system-rich-text-B3NzIRoJ.js +2 -0
  135. package/public/assets/design-system-rich-text-B3NzIRoJ.js.map +1 -0
  136. package/public/assets/email-Bx9JlWp3.js +2 -0
  137. package/public/assets/email-Bx9JlWp3.js.map +1 -0
  138. package/public/assets/email-Cpfhakvn.js +2 -0
  139. package/public/assets/email-Cpfhakvn.js.map +1 -0
  140. package/public/assets/error-DDY8m_Px.js +2 -0
  141. package/public/assets/error-DDY8m_Px.js.map +1 -0
  142. package/public/assets/field-CsrUbl__.js +3 -0
  143. package/public/assets/field-CsrUbl__.js.map +1 -0
  144. package/public/assets/{fingerprint-pattern-DP62Vk8x.js → fingerprint-pattern-BwUoN1_w.js} +2 -2
  145. package/public/assets/{fingerprint-pattern-DP62Vk8x.js.map → fingerprint-pattern-BwUoN1_w.js.map} +1 -1
  146. package/public/assets/forgot-Cpfhakvn.js +2 -0
  147. package/public/assets/forgot-Cpfhakvn.js.map +1 -0
  148. package/public/assets/forgot-u52JMu6e.js +2 -0
  149. package/public/assets/forgot-u52JMu6e.js.map +1 -0
  150. package/public/assets/form-sJw-V9wb.js +2 -0
  151. package/public/assets/form-sJw-V9wb.js.map +1 -0
  152. package/public/assets/index-8mX6CKcW.css +2 -0
  153. package/public/assets/index-lTEyHSus.js +11 -0
  154. package/public/assets/index-lTEyHSus.js.map +1 -0
  155. package/public/assets/initial-avatar-WMjxW3Zz.js +2 -0
  156. package/public/assets/initial-avatar-WMjxW3Zz.js.map +1 -0
  157. package/public/assets/input-QvBxPgy5.js +2 -0
  158. package/public/assets/{input-CxVeC8Pn.js.map → input-QvBxPgy5.js.map} +1 -1
  159. package/public/assets/{key-round-CdvHb8vT.js → key-round-BxWppK6h.js} +2 -2
  160. package/public/assets/{key-round-CdvHb8vT.js.map → key-round-BxWppK6h.js.map} +1 -1
  161. package/public/assets/labeled-separator-DdkyYDWH.js +2 -0
  162. package/public/assets/labeled-separator-DdkyYDWH.js.map +1 -0
  163. package/public/assets/link-BHmn75Zo.js +2 -0
  164. package/public/assets/{link-C-WdTj3F.js.map → link-BHmn75Zo.js.map} +1 -1
  165. package/public/assets/{lock-7NRyvXBS.js → lock-8wpR2C78.js} +2 -2
  166. package/public/assets/{lock-7NRyvXBS.js.map → lock-8wpR2C78.js.map} +1 -1
  167. package/public/assets/login-Cpfhakvn.js +2 -0
  168. package/public/assets/login-Cpfhakvn.js.map +1 -0
  169. package/public/assets/login-DRcHjJ2-.js +2 -0
  170. package/public/assets/login-DRcHjJ2-.js.map +1 -0
  171. package/public/assets/logout-Dphj1d_0.js +2 -0
  172. package/public/assets/logout-Dphj1d_0.js.map +1 -0
  173. package/public/assets/{mail-D0B_1Dzd.js → mail-DVP_XMUi.js} +2 -2
  174. package/public/assets/{mail-D0B_1Dzd.js.map → mail-DVP_XMUi.js.map} +1 -1
  175. package/public/assets/modal-JuaLVSyx.js +2 -0
  176. package/public/assets/modal-JuaLVSyx.js.map +1 -0
  177. package/public/assets/mutationOptions-Cv_vJkJn.js +2 -0
  178. package/public/assets/{mutationOptions-DyYFUbyn.js.map → mutationOptions-Cv_vJkJn.js.map} +1 -1
  179. package/public/assets/passkey-CObBlfKK.js +2 -0
  180. package/public/assets/passkey-CObBlfKK.js.map +1 -0
  181. package/public/assets/{passkey-J1qnYp9A.js → passkey-CWTjw19S.js} +2 -2
  182. package/public/assets/{passkey-J1qnYp9A.js.map → passkey-CWTjw19S.js.map} +1 -1
  183. package/public/assets/passkey-CavITajY.js +2 -0
  184. package/public/assets/passkey-CavITajY.js.map +1 -0
  185. package/public/assets/passkey-Cpfhakvn.js +2 -0
  186. package/public/assets/passkey-Cpfhakvn.js.map +1 -0
  187. package/public/assets/{passkey-error-ZqqPQUta.js → passkey-error-CZ26Ss-I.js} +2 -2
  188. package/public/assets/{passkey-error-ZqqPQUta.js.map → passkey-error-CZ26Ss-I.js.map} +1 -1
  189. package/public/assets/password-Cpfhakvn.js +2 -0
  190. package/public/assets/password-Cpfhakvn.js.map +1 -0
  191. package/public/assets/password-Dk8PwtZN.js +2 -0
  192. package/public/assets/password-Dk8PwtZN.js.map +1 -0
  193. package/public/assets/password-reset-BcFpGOop.js +2 -0
  194. package/public/assets/{password-reset-sU5KkBKi.js.map → password-reset-BcFpGOop.js.map} +1 -1
  195. package/public/assets/password-strength-Bgvy7kz6.js +2 -0
  196. package/public/assets/{password-strength-BIPcWiM_.js.map → password-strength-Bgvy7kz6.js.map} +1 -1
  197. package/public/assets/pin-input-DhsRO4Ei.js +2 -0
  198. package/public/assets/{pin-input-CITrr-Yc.js.map → pin-input-DhsRO4Ei.js.map} +1 -1
  199. package/public/assets/profile-PjXEnzA-.js +2 -0
  200. package/public/assets/profile-PjXEnzA-.js.map +1 -0
  201. package/public/assets/profile-k66ruDWl.js +2 -0
  202. package/public/assets/{profile-BHPL9Px_.js.map → profile-k66ruDWl.js.map} +1 -1
  203. package/public/assets/provider-mark-CeYazOfu.js +2 -0
  204. package/public/assets/provider-mark-CeYazOfu.js.map +1 -0
  205. package/public/assets/recovery-hdRyezmb.js +2 -0
  206. package/public/assets/recovery-hdRyezmb.js.map +1 -0
  207. package/public/assets/register-Cpfhakvn.js +2 -0
  208. package/public/assets/register-Cpfhakvn.js.map +1 -0
  209. package/public/assets/register-DMgKT_fm.js +2 -0
  210. package/public/assets/register-DMgKT_fm.js.map +1 -0
  211. package/public/assets/reset-Cpfhakvn.js +2 -0
  212. package/public/assets/reset-Cpfhakvn.js.map +1 -0
  213. package/public/assets/reset-DBu3wYpE.js +2 -0
  214. package/public/assets/reset-DBu3wYpE.js.map +1 -0
  215. package/public/assets/select-5LheSsRl.js +2 -0
  216. package/public/assets/select-5LheSsRl.js.map +1 -0
  217. package/public/assets/select-Cpfhakvn.js +2 -0
  218. package/public/assets/{select-huNZDYU9.js.map → select-Cpfhakvn.js.map} +1 -1
  219. package/public/assets/separator-CMGc2Y1q.js +2 -0
  220. package/public/assets/separator-CMGc2Y1q.js.map +1 -0
  221. package/public/assets/settings-BVe4k3kJ.js +2 -0
  222. package/public/assets/settings-BVe4k3kJ.js.map +1 -0
  223. package/public/assets/shell-header-bar-CdOEWmCT.js +2 -0
  224. package/public/assets/shell-header-bar-CdOEWmCT.js.map +1 -0
  225. package/public/assets/{shield-check-D_p8H0ni.js → shield-check-DpYF8yeI.js} +2 -2
  226. package/public/assets/{shield-check-D_p8H0ni.js.map → shield-check-DpYF8yeI.js.map} +1 -1
  227. package/public/assets/standard-schema-C50nwAaQ.js +2 -0
  228. package/public/assets/{standard-schema-e8gtSzGE.js.map → standard-schema-C50nwAaQ.js.map} +1 -1
  229. package/public/assets/system-BoUqxc5h.js +2 -0
  230. package/public/assets/system-BoUqxc5h.js.map +1 -0
  231. package/public/assets/table-Dl89o43x.js +2 -0
  232. package/public/assets/table-Dl89o43x.js.map +1 -0
  233. package/public/assets/terms-B2wWfx1d.js +2 -0
  234. package/public/assets/terms-B2wWfx1d.js.map +1 -0
  235. package/public/assets/terms-COr3cDw5.js +2 -0
  236. package/public/assets/terms-COr3cDw5.js.map +1 -0
  237. package/public/assets/terms-checkbox-list-C9TkDC8Y.js +2 -0
  238. package/public/assets/terms-checkbox-list-C9TkDC8Y.js.map +1 -0
  239. package/public/assets/terms-k66ruDWl.js +2 -0
  240. package/public/assets/terms-k66ruDWl.js.map +1 -0
  241. package/public/assets/totp-BJycMMTC.js +2 -0
  242. package/public/assets/totp-BJycMMTC.js.map +1 -0
  243. package/public/assets/{totp-BNZ904Zm.js → totp-BhElob6P.js} +2 -2
  244. package/public/assets/{totp-BNZ904Zm.js.map → totp-BhElob6P.js.map} +1 -1
  245. package/public/assets/totp-C1ba10Is.js +2 -0
  246. package/public/assets/totp-C1ba10Is.js.map +1 -0
  247. package/public/assets/{trash-2-DZdKBLvC.js → trash-2-B3NVE8pR.js} +2 -2
  248. package/public/assets/{trash-2-DZdKBLvC.js.map → trash-2-B3NVE8pR.js.map} +1 -1
  249. package/public/assets/{triangle-alert-CqNn0kPs.js → triangle-alert-DATO9o3k.js} +2 -2
  250. package/public/assets/{triangle-alert-CqNn0kPs.js.map → triangle-alert-DATO9o3k.js.map} +1 -1
  251. package/public/assets/use-admin-selection-D2b7jnym.js +2 -0
  252. package/public/assets/use-admin-selection-D2b7jnym.js.map +1 -0
  253. package/public/assets/use-totp-setup-KOVNS2DC.js +3 -0
  254. package/public/assets/use-totp-setup-KOVNS2DC.js.map +1 -0
  255. package/public/assets/useAriaLabelledBy-CF3crxLc.js +2 -0
  256. package/public/assets/{useAriaLabelledBy-IIwdHUss.js.map → useAriaLabelledBy-CF3crxLc.js.map} +1 -1
  257. package/public/assets/useMutation-DqIIIiBW.js +2 -0
  258. package/public/assets/{useMutation-BWZ0G4Td.js.map → useMutation-DqIIIiBW.js.map} +1 -1
  259. package/public/assets/useQuery-CLr9TaKA.js +2 -0
  260. package/public/assets/{useQuery-Ccv_nzQl.js.map → useQuery-CLr9TaKA.js.map} +1 -1
  261. package/public/assets/users-BQQQm353.js +2 -0
  262. package/public/assets/users-BQQQm353.js.map +1 -0
  263. package/public/assets/{zod-C87S6Tec.js → zod-Dszyrytb.js} +2 -2
  264. package/public/assets/{zod-C87S6Tec.js.map → zod-Dszyrytb.js.map} +1 -1
  265. package/public/index.html +6 -6
  266. package/public/issuary-app-icon-512.png +0 -0
  267. package/public/issuary-app-icon.svg +8 -0
  268. package/public/assets/2fa-C9wUlSBS.js +0 -2
  269. package/public/assets/2fa-C9wUlSBS.js.map +0 -1
  270. package/public/assets/2fa-DFTcWEMb.js +0 -2
  271. package/public/assets/2fa-TtshNxXv.js +0 -2
  272. package/public/assets/2fa-TtshNxXv.js.map +0 -1
  273. package/public/assets/2fa-huNZDYU9.js +0 -2
  274. package/public/assets/DialogHandle-DICBMcjK.js +0 -2
  275. package/public/assets/DialogHandle-DICBMcjK.js.map +0 -1
  276. package/public/assets/FieldItemContext-BeNfhOsU.js +0 -2
  277. package/public/assets/FieldItemContext-BeNfhOsU.js.map +0 -1
  278. package/public/assets/admin-CFZaO1bM.js +0 -2
  279. package/public/assets/admin-CFZaO1bM.js.map +0 -1
  280. package/public/assets/admin-users-BK_BN8jm.js +0 -2
  281. package/public/assets/admin-users-BK_BN8jm.js.map +0 -1
  282. package/public/assets/alert-leqyvHOp.js +0 -2
  283. package/public/assets/alert-leqyvHOp.js.map +0 -1
  284. package/public/assets/auth-choice-row-CXuyJgkR.js +0 -2
  285. package/public/assets/auth-choice-row-CXuyJgkR.js.map +0 -1
  286. package/public/assets/auth-field-CWyXGKoC.js +0 -2
  287. package/public/assets/auth-footer-Cz5ivsDc.js +0 -2
  288. package/public/assets/auth-footer-Cz5ivsDc.js.map +0 -1
  289. package/public/assets/auth-layout-CiNn2-Nb.js +0 -2
  290. package/public/assets/auth-layout-CiNn2-Nb.js.map +0 -1
  291. package/public/assets/auth-page-header-DgGAaIiP.js +0 -2
  292. package/public/assets/authorization-context-banner-DznMDPOX.js +0 -2
  293. package/public/assets/avatar-D-FRGa1m.js +0 -2
  294. package/public/assets/badge-CsOfUji0.js +0 -2
  295. package/public/assets/checkbox-C90dDDza.js +0 -2
  296. package/public/assets/chevron-right-CN0jUyV0.js +0 -2
  297. package/public/assets/chevron-right-CN0jUyV0.js.map +0 -1
  298. package/public/assets/config-DTQCUlfZ.js +0 -2
  299. package/public/assets/config-DTQCUlfZ.js.map +0 -1
  300. package/public/assets/consent-B9sQEyO8.js +0 -2
  301. package/public/assets/email-8RKQzeig.js +0 -2
  302. package/public/assets/email-8RKQzeig.js.map +0 -1
  303. package/public/assets/email-huNZDYU9.js +0 -2
  304. package/public/assets/email-huNZDYU9.js.map +0 -1
  305. package/public/assets/error-BYe3gUMO.js +0 -2
  306. package/public/assets/error-BYe3gUMO.js.map +0 -1
  307. package/public/assets/field-BMT214_m.js +0 -3
  308. package/public/assets/field-BMT214_m.js.map +0 -1
  309. package/public/assets/forgot-BenoOUxC.js +0 -2
  310. package/public/assets/forgot-BenoOUxC.js.map +0 -1
  311. package/public/assets/forgot-huNZDYU9.js +0 -2
  312. package/public/assets/forgot-huNZDYU9.js.map +0 -1
  313. package/public/assets/index-CKpnrw9M.js +0 -11
  314. package/public/assets/index-CKpnrw9M.js.map +0 -1
  315. package/public/assets/index-Ct9o0oCZ.css +0 -2
  316. package/public/assets/initial-avatar-E5DK9Igm.js +0 -2
  317. package/public/assets/initial-avatar-E5DK9Igm.js.map +0 -1
  318. package/public/assets/input-CxVeC8Pn.js +0 -2
  319. package/public/assets/labeled-separator-CV7nb0XW.js +0 -2
  320. package/public/assets/labeled-separator-CV7nb0XW.js.map +0 -1
  321. package/public/assets/link-C-WdTj3F.js +0 -2
  322. package/public/assets/login-1YuiZD30.js +0 -2
  323. package/public/assets/login-1YuiZD30.js.map +0 -1
  324. package/public/assets/login-huNZDYU9.js +0 -2
  325. package/public/assets/login-huNZDYU9.js.map +0 -1
  326. package/public/assets/logout-B5T52P8u.js +0 -2
  327. package/public/assets/logout-B5T52P8u.js.map +0 -1
  328. package/public/assets/modal-tByFpy18.js +0 -2
  329. package/public/assets/modal-tByFpy18.js.map +0 -1
  330. package/public/assets/mutationOptions-DyYFUbyn.js +0 -2
  331. package/public/assets/passkey-CgAHaQ1p.js +0 -2
  332. package/public/assets/passkey-CgAHaQ1p.js.map +0 -1
  333. package/public/assets/passkey-huNZDYU9.js +0 -2
  334. package/public/assets/passkey-huNZDYU9.js.map +0 -1
  335. package/public/assets/passkey-v9Pzv-4A.js +0 -2
  336. package/public/assets/passkey-v9Pzv-4A.js.map +0 -1
  337. package/public/assets/password-Cuh9Hnjp.js +0 -2
  338. package/public/assets/password-Cuh9Hnjp.js.map +0 -1
  339. package/public/assets/password-huNZDYU9.js +0 -2
  340. package/public/assets/password-huNZDYU9.js.map +0 -1
  341. package/public/assets/password-reset-sU5KkBKi.js +0 -2
  342. package/public/assets/password-strength-BIPcWiM_.js +0 -2
  343. package/public/assets/pin-input-CITrr-Yc.js +0 -2
  344. package/public/assets/plus-DSBBSrgj.js +0 -2
  345. package/public/assets/plus-DSBBSrgj.js.map +0 -1
  346. package/public/assets/profile-BHPL9Px_.js +0 -2
  347. package/public/assets/profile-C8KaELVe.js +0 -2
  348. package/public/assets/profile-C8KaELVe.js.map +0 -1
  349. package/public/assets/provider-logos-u1YURWQr.js +0 -2
  350. package/public/assets/provider-logos-u1YURWQr.js.map +0 -1
  351. package/public/assets/recovery-CVROV9nj.js +0 -2
  352. package/public/assets/recovery-CVROV9nj.js.map +0 -1
  353. package/public/assets/register-cpxjX3qr.js +0 -2
  354. package/public/assets/register-cpxjX3qr.js.map +0 -1
  355. package/public/assets/register-huNZDYU9.js +0 -2
  356. package/public/assets/register-huNZDYU9.js.map +0 -1
  357. package/public/assets/reset-huNZDYU9.js +0 -2
  358. package/public/assets/reset-huNZDYU9.js.map +0 -1
  359. package/public/assets/reset-iNqYdsoa.js +0 -2
  360. package/public/assets/reset-iNqYdsoa.js.map +0 -1
  361. package/public/assets/select-DdjQtcLJ.js +0 -2
  362. package/public/assets/select-DdjQtcLJ.js.map +0 -1
  363. package/public/assets/select-huNZDYU9.js +0 -2
  364. package/public/assets/separator-B0Bvh1he.js +0 -2
  365. package/public/assets/separator-B0Bvh1he.js.map +0 -1
  366. package/public/assets/shell-header-bar-JcFhS7mb.js +0 -2
  367. package/public/assets/shell-header-bar-JcFhS7mb.js.map +0 -1
  368. package/public/assets/standard-schema-e8gtSzGE.js +0 -2
  369. package/public/assets/terms-BHPL9Px_.js +0 -2
  370. package/public/assets/terms-BHPL9Px_.js.map +0 -1
  371. package/public/assets/terms-BjwMWDFp.js +0 -2
  372. package/public/assets/terms-BjwMWDFp.js.map +0 -1
  373. package/public/assets/terms-checkbox-list-DNOq4Pb2.js +0 -2
  374. package/public/assets/terms-checkbox-list-DNOq4Pb2.js.map +0 -1
  375. package/public/assets/totp-D_EWG1h8.js +0 -2
  376. package/public/assets/totp-D_EWG1h8.js.map +0 -1
  377. package/public/assets/totp-DetFwOkk.js +0 -2
  378. package/public/assets/totp-DetFwOkk.js.map +0 -1
  379. package/public/assets/use-totp-setup-DtlgPUPJ.js +0 -3
  380. package/public/assets/use-totp-setup-DtlgPUPJ.js.map +0 -1
  381. package/public/assets/useAriaLabelledBy-IIwdHUss.js +0 -2
  382. package/public/assets/useMutation-BWZ0G4Td.js +0 -2
  383. package/public/assets/useQuery-Ccv_nzQl.js +0 -2
  384. package/public/assets/users-B1gvPM_x.js +0 -2
  385. package/public/assets/users-B1gvPM_x.js.map +0 -1
  386. package/public/vite.svg +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients-DLqy7K3N.js","names":["EMPTY_ARRAY","Toolbar.Button","Toolbar.Group","Toolbar.Input","Toolbar.Link","Toolbar.Root","Toolbar.Separator","useMutation","useQueryClient","useSuspenseQuery","TRBadge","TRButton","TRCheckbox","TRCode","TRField","TRForm","TRInput","TRSelect","TRTable","TRText","TRToolbar","useState","useTranslation","Modal","ModalActions","AdminBulkBar","AdminFilterSelect","AdminListToolbar","AdminPagination","AdminRowCheckbox","AdminSelectAll","AdminSortButton","AdminStickyActionCell","AdminStickyIdentityCell","AdminStickySelectCell","AdminTable","AdminTableFrame","AdminGateScreen","AdminShell","useAdminSelection","adminClientsQueryOptions","bulkSetAdminClientsActive","createAdminClient","rotateAdminClientSecret","updateAdminClient","appConfigQueryOptions","Route","AdminClientsPage","user","useRouteContext","select","context","role","AdminClientsGate","SessionUser","data","config","admin","enabled","AdminClientsContent","t","queryClient","draftQuery","setDraftQuery","filters","setFilters","AdminClientsQuery","page","pageSize","editing","setEditing","AdminClient","bulkActive","setBulkActive","secret","setSecret","selection","clients","map","client","id","invalidate","invalidateQueries","queryKey","createMutation","mutationFn","onSuccess","result","client_secret","updateMutation","input","Omit","AdminClientInput","rotateMutation","bulkMutation","clear","selected","kind","pagination","total","selectedCount","target","AdminClientBulkTarget","filter","query","managed_by","managedBy","ids","setFilter","next","trim","value","type","undefined","allOnPage","someOnPage","togglePage","direction","length","isSelected","name","checked","toggleOne","client_id","redirect_uris","scopes","join","mutate","active","selectFilter","isPending","ignoredClientId","ignoredType","update","stringValue","FormData","get","listValue","split","Boolean","ClientModal","isOpen","pending","onClose","onSubmit","submit","event","FormEvent","HTMLFormElement","preventDefault","currentTarget","post_logout_redirect_uris","web_origins","grant_types","response_types","skip_consent","ClientField","label","defaultValue","disabled","required","FormSelect","options","Array","find","text","BulkConfirm","count","filterSelected","onRun","scope","component"],"sources":["../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/toolbar/separator/ToolbarSeparator.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/internals/composite/constants.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/internals/composite/root/useCompositeRoot.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/internals/composite/root/CompositeRoot.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/toolbar/root/ToolbarRoot.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/toolbar/group/ToolbarGroupContext.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/toolbar/group/ToolbarGroup.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/toolbar/button/ToolbarButton.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/toolbar/link/ToolbarLink.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/toolbar/input/ToolbarInput.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-button.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-group.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-input.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-link.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/toolbar-separator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.31.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.4.2_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/toolbar/index.js","../../../frontend/src/routes/admin/clients/index.tsx?tsr-split=component"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Separator } from \"../../separator/index.mjs\";\nimport { useToolbarRootContext } from \"../root/ToolbarRootContext.mjs\";\n\n/**\n * A separator element accessible to screen readers.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ToolbarSeparator = /*#__PURE__*/React.forwardRef(function ToolbarSeparator(props, forwardedRef) {\n const context = useToolbarRootContext();\n const orientation = context.orientation === 'vertical' ? 'horizontal' : 'vertical';\n return /*#__PURE__*/_jsx(Separator, {\n orientation: orientation,\n ...props,\n ref: forwardedRef\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarSeparator.displayName = \"ToolbarSeparator\";","export const ACTIVE_COMPOSITE_ITEM = 'data-composite-item-active';","'use client';\n\nimport * as React from 'react';\nimport { isElementDisabled } from '@base-ui/utils/isElementDisabled';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { COMPOSITE_KEYS, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, HOME, MODIFIER_KEYS, findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isListIndexDisabled, isIndexOutOfListBounds, isNativeInput, scrollIntoViewIfNeeded } from \"../composite.mjs\";\nimport { ACTIVE_COMPOSITE_ITEM } from \"../constants.mjs\";\nimport { getTarget } from \"../../../floating-ui-react/utils.mjs\";\nconst EMPTY_ARRAY = [];\nexport function useCompositeRoot(params) {\n const {\n loopFocus = true,\n orientation = 'both',\n grid,\n onLoop,\n direction,\n highlightedIndex: externalHighlightedIndex,\n onHighlightedIndexChange: externalSetHighlightedIndex,\n rootRef: externalRef,\n enableHomeAndEndKeys = false,\n stopEventPropagation,\n disabledIndices,\n modifierKeys = EMPTY_ARRAY\n } = params;\n const [internalHighlightedIndex, internalSetHighlightedIndex] = React.useState(0);\n const isGrid = grid != null;\n const rootRef = React.useRef(null);\n const mergedRef = useMergedRefs(rootRef, externalRef);\n const elementsRef = React.useRef([]);\n const hasSetDefaultIndexRef = React.useRef(false);\n const highlightedIndex = externalHighlightedIndex ?? internalHighlightedIndex;\n const onHighlightedIndexChange = useStableCallback((index, shouldScrollIntoView = false) => {\n (externalSetHighlightedIndex ?? internalSetHighlightedIndex)(index);\n if (shouldScrollIntoView) {\n const newActiveItem = elementsRef.current[index];\n scrollIntoViewIfNeeded(rootRef.current, newActiveItem, direction, orientation);\n }\n });\n const onMapChange = useStableCallback(map => {\n if (map.size === 0 || hasSetDefaultIndexRef.current) {\n return;\n }\n hasSetDefaultIndexRef.current = true;\n const sortedElements = Array.from(map.keys());\n const activeItem = sortedElements.find(compositeElement => compositeElement?.hasAttribute(ACTIVE_COMPOSITE_ITEM)) ?? null;\n // Set the default highlighted index of an arbitrary composite item. The map value carries\n // the item's own index, which is not its position among the keys once a list mixes explicit\n // and automatic indexes and leaves gaps.\n const activeIndex = activeItem ? map.get(activeItem)?.index ?? -1 : -1;\n if (activeIndex !== -1) {\n onHighlightedIndexChange(activeIndex);\n } else if (isListIndexDisabled(sortedElements, highlightedIndex, disabledIndices)) {\n // The default highlighted item is disabled, so it should not hold the single\n // roving tab stop: a natively disabled element is removed from the tab order,\n // and an aria-disabled one should not be the entry point. Move the tab stop\n // to the first enabled item. If every item is disabled, keep the current\n // highlighted index.\n const firstEnabledIndex = findNonDisabledListIndex(sortedElements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(sortedElements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n scrollIntoViewIfNeeded(rootRef.current, activeItem, direction, orientation);\n });\n useIsoLayoutEffect(() => {\n // `disabledIndices` can resolve a render after the initial map population\n // (e.g. Toolbar derives it from item metadata through a state update), so the\n // default tab stop at index 0 may now point at a disabled item, leaving the\n // composite without a reachable tab stop. Re-validate and move it to the first\n // enabled item. Gated on `disabledIndices` being provided so composites that\n // rely on the DOM disabled fallback keep their existing behavior.\n if (disabledIndices == null || externalHighlightedIndex != null || !hasSetDefaultIndexRef.current) {\n return;\n }\n const elements = elementsRef.current;\n if (isListIndexDisabled(elements, highlightedIndex, disabledIndices)) {\n const firstEnabledIndex = findNonDisabledListIndex(elements, {\n disabledIndices\n });\n if (!isIndexOutOfListBounds(elements, firstEnabledIndex)) {\n onHighlightedIndexChange(firstEnabledIndex);\n }\n }\n }, [disabledIndices, externalHighlightedIndex, highlightedIndex, elementsRef, onHighlightedIndexChange]);\n const wrappedOnLoop = useStableCallback((event, prevIndex, nextIndex) => {\n if (!onLoop) {\n return nextIndex;\n }\n return onLoop(event, prevIndex, nextIndex, elementsRef);\n });\n\n // Stable so that `relayKeyboardEvent` does not invalidate identity-sensitive\n // consumers (the `CompositeRootContext` value and trigger data forwarding).\n const onKeyDown = useStableCallback(event => {\n const isHomeOrEnd = event.key === HOME || event.key === END;\n if (!COMPOSITE_KEYS.has(event.key) || !enableHomeAndEndKeys && isHomeOrEnd) {\n return;\n }\n if (isModifierKeySet(event, modifierKeys)) {\n return;\n }\n const element = rootRef.current;\n if (!element) {\n return;\n }\n const isRtl = direction === 'rtl';\n const horizontalForwardKey = isRtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalBackwardKey = isRtl ? ARROW_RIGHT : ARROW_LEFT;\n const forwardKey = orientation === 'vertical' ? ARROW_DOWN : horizontalForwardKey;\n const backwardKey = orientation === 'vertical' ? ARROW_UP : horizontalBackwardKey;\n const target = getTarget(event.nativeEvent);\n if (target != null && isNativeInput(target) && !isElementDisabled(target)) {\n const selectionStart = target.selectionStart;\n const selectionEnd = target.selectionEnd;\n const textContent = target.value;\n // return to native textbox behavior when\n // 1 - Shift is held to make a text selection, or if there already is a text selection\n if (selectionStart == null || event.shiftKey || selectionStart !== selectionEnd) {\n return;\n }\n // 2 - arrow-ing forward and not in the last position of the text\n if (event.key !== backwardKey && selectionStart < textContent.length) {\n return;\n }\n // 3 -arrow-ing backward and not in the first position of the text\n if (event.key !== forwardKey && selectionStart > 0) {\n return;\n }\n }\n let nextIndex = highlightedIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n if (grid != null) {\n nextIndex = grid({\n disabledIndices,\n elementsRef,\n event,\n highlightedIndex,\n loopFocus,\n maxIndex,\n minIndex,\n onLoop: wrappedOnLoop,\n orientation,\n rtl: isRtl\n });\n }\n const isForwardKey = orientation !== 'vertical' && event.key === horizontalForwardKey || orientation !== 'horizontal' && event.key === ARROW_DOWN;\n const isBackwardKey = orientation !== 'vertical' && event.key === horizontalBackwardKey || orientation !== 'horizontal' && event.key === ARROW_UP;\n if (enableHomeAndEndKeys) {\n if (event.key === HOME) {\n nextIndex = minIndex;\n } else if (event.key === END) {\n nextIndex = maxIndex;\n }\n }\n if (nextIndex === highlightedIndex && (isForwardKey || isBackwardKey)) {\n if (loopFocus && nextIndex === maxIndex && isForwardKey) {\n nextIndex = minIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else if (loopFocus && nextIndex === minIndex && isBackwardKey) {\n nextIndex = maxIndex;\n if (onLoop) {\n nextIndex = onLoop(event, highlightedIndex, nextIndex, elementsRef);\n }\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef.current, {\n startingIndex: nextIndex,\n decrement: isBackwardKey,\n disabledIndices\n });\n }\n }\n if (nextIndex !== highlightedIndex && !isIndexOutOfListBounds(elementsRef.current, nextIndex)) {\n if (stopEventPropagation) {\n event.stopPropagation();\n }\n if (isGrid || isHomeOrEnd || isForwardKey || isBackwardKey) {\n event.preventDefault();\n }\n onHighlightedIndexChange(nextIndex, true);\n\n // Wait for FocusManager `returnFocus` to execute.\n queueMicrotask(() => {\n elementsRef.current[nextIndex]?.focus();\n });\n }\n });\n const props = {\n ref: mergedRef,\n onFocus(event) {\n const element = rootRef.current;\n const target = getTarget(event.nativeEvent);\n if (!element || target == null || !isNativeInput(target)) {\n return;\n }\n target.setSelectionRange(0, target.value.length);\n },\n onKeyDown\n };\n return {\n props,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange,\n relayKeyboardEvent: onKeyDown\n };\n}\nfunction isModifierKeySet(event, ignoredModifierKeys) {\n for (const key of MODIFIER_KEYS) {\n if (ignoredModifierKeys.includes(key)) {\n continue;\n }\n if (event.getModifierState(key)) {\n return true;\n }\n }\n return false;\n}","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { CompositeList } from \"../list/CompositeList.mjs\";\nimport { useCompositeRoot } from \"./useCompositeRoot.mjs\";\nimport { CompositeRootContext } from \"./CompositeRootContext.mjs\";\nimport { useRenderElement } from \"../../useRenderElement.mjs\";\nimport { useDirection } from \"../../direction-context/DirectionContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function CompositeRoot(componentProps) {\n const {\n render,\n className,\n style,\n refs = EMPTY_ARRAY,\n props = EMPTY_ARRAY,\n state = EMPTY_OBJECT,\n stateAttributesMapping,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n orientation,\n grid,\n loopFocus,\n onLoop,\n enableHomeAndEndKeys,\n onMapChange: onMapChangeProp,\n stopEventPropagation = true,\n rootRef,\n disabledIndices,\n modifierKeys,\n highlightItemOnHover = false,\n tag = 'div',\n ...elementProps\n } = componentProps;\n const direction = useDirection();\n const {\n props: defaultProps,\n highlightedIndex,\n onHighlightedIndexChange,\n elementsRef,\n onMapChange: onMapChangeUnwrapped,\n relayKeyboardEvent\n } = useCompositeRoot({\n grid,\n loopFocus,\n onLoop,\n orientation,\n highlightedIndex: highlightedIndexProp,\n onHighlightedIndexChange: onHighlightedIndexChangeProp,\n rootRef,\n stopEventPropagation,\n enableHomeAndEndKeys,\n direction,\n disabledIndices,\n modifierKeys\n });\n const element = useRenderElement(tag, componentProps, {\n state,\n ref: refs,\n props: [defaultProps, ...props, elementProps],\n stateAttributesMapping\n });\n const contextValue = React.useMemo(() => ({\n highlightedIndex,\n onHighlightedIndexChange,\n highlightItemOnHover,\n relayKeyboardEvent\n }), [highlightedIndex, onHighlightedIndexChange, highlightItemOnHover, relayKeyboardEvent]);\n return /*#__PURE__*/_jsx(CompositeRootContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: elementsRef,\n onMapChange: newMap => {\n onMapChangeProp?.(newMap);\n onMapChangeUnwrapped(newMap);\n },\n children: element\n })\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { CompositeRoot } from \"../../internals/composite/root/CompositeRoot.mjs\";\nimport { ToolbarRootContext } from \"./ToolbarRootContext.mjs\";\n\n/**\n * A container for grouping a set of controls, such as buttons, toggle groups, or menus.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ToolbarRoot = /*#__PURE__*/React.forwardRef(function ToolbarRoot(componentProps, forwardedRef) {\n const {\n disabled = false,\n loopFocus,\n orientation = 'horizontal',\n className,\n render,\n style,\n ...elementProps\n } = componentProps;\n const [itemMap, setItemMap] = React.useState(() => new Map());\n const disabledIndices = React.useMemo(() => {\n const output = [];\n for (const itemMetadata of itemMap.values()) {\n // Only items that are disabled and not focusable when disabled\n // are removed from roving focus.\n if (itemMetadata.disabled && !itemMetadata.focusableWhenDisabled) {\n output.push(itemMetadata.index);\n }\n }\n return output;\n }, [itemMap]);\n const toolbarRootContext = React.useMemo(() => ({\n disabled,\n orientation\n }), [disabled, orientation]);\n const state = {\n disabled,\n orientation\n };\n const defaultProps = {\n 'aria-orientation': orientation,\n role: 'toolbar'\n };\n return /*#__PURE__*/_jsx(ToolbarRootContext.Provider, {\n value: toolbarRootContext,\n children: /*#__PURE__*/_jsx(CompositeRoot, {\n render: render,\n className: className,\n style: style,\n state: state,\n refs: [forwardedRef],\n props: [defaultProps, elementProps],\n disabledIndices: disabledIndices,\n loopFocus: loopFocus,\n onMapChange: setItemMap,\n orientation: orientation\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarRoot.displayName = \"ToolbarRoot\";","'use client';\n\nimport * as React from 'react';\nexport const ToolbarGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToolbarGroupContext.displayName = \"ToolbarGroupContext\";\nexport function useToolbarGroupContext() {\n return React.useContext(ToolbarGroupContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useToolbarRootContext } from \"../root/ToolbarRootContext.mjs\";\nimport { ToolbarGroupContext } from \"./ToolbarGroupContext.mjs\";\n\n/**\n * Groups several toolbar items or toggles.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ToolbarGroup = /*#__PURE__*/React.forwardRef(function ToolbarGroup(componentProps, forwardedRef) {\n const {\n className,\n disabled: disabledProp = false,\n render,\n style,\n ...elementProps\n } = componentProps;\n const {\n orientation,\n disabled: toolbarDisabled\n } = useToolbarRootContext();\n const disabled = toolbarDisabled || disabledProp;\n const contextValue = React.useMemo(() => ({\n disabled\n }), [disabled]);\n const state = {\n disabled,\n orientation\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n role: 'group'\n }, elementProps]\n });\n return /*#__PURE__*/_jsx(ToolbarGroupContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarGroup.displayName = \"ToolbarGroup\";","'use client';\n\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { useToolbarRootContext } from \"../root/ToolbarRootContext.mjs\";\nimport { useToolbarGroupContext } from \"../group/ToolbarGroupContext.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\n\n/**\n * A button that can be used as-is or as a trigger for other components.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ToolbarButton = /*#__PURE__*/React.forwardRef(function ToolbarButton(componentProps, forwardedRef) {\n const {\n className,\n disabled: disabledProp = false,\n focusableWhenDisabled = true,\n render,\n nativeButton,\n style,\n ...elementProps\n } = componentProps;\n const {\n disabled: toolbarDisabled,\n orientation\n } = useToolbarRootContext();\n const groupContext = useToolbarGroupContext();\n const disabled = toolbarDisabled || (groupContext?.disabled ?? false) || disabledProp;\n const itemMetadata = React.useMemo(() => ({\n disabled,\n focusableWhenDisabled\n }), [disabled, focusableWhenDisabled]);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled,\n native: nativeButton\n });\n const state = {\n disabled,\n orientation,\n focusable: focusableWhenDisabled\n };\n return /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"button\",\n render: render,\n className: className,\n style: style,\n metadata: itemMetadata,\n state: state,\n refs: [forwardedRef, buttonRef],\n props: [elementProps,\n // When a render prop is provided (typically another Base UI component\n // like Menu.Trigger), forward `disabled` so the rendered component can\n // derive its own disabled state. For the default toolbar button, avoid\n // forwarding a React `disabled` prop so focusable disabled buttons remain\n // hoverable for interactions like tooltips.\n // TODO: follow up after https://github.com/mui/base-ui/issues/1976#issuecomment-2916905663\n render ? {\n disabled\n } : EMPTY_OBJECT, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarButton.displayName = \"ToolbarButton\";","'use client';\n\nimport * as React from 'react';\nimport { useToolbarRootContext } from \"../root/ToolbarRootContext.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TOOLBAR_LINK_METADATA = {\n // Links cannot be disabled, but they still occupy a focusable composite item slot.\n disabled: false,\n focusableWhenDisabled: true\n};\n\n/**\n * A link component.\n * Renders an `<a>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nexport const ToolbarLink = /*#__PURE__*/React.forwardRef(function ToolbarLink(componentProps, forwardedRef) {\n const {\n className,\n render,\n style,\n ...elementProps\n } = componentProps;\n const {\n orientation\n } = useToolbarRootContext();\n const state = {\n orientation\n };\n return /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"a\",\n render: render,\n className: className,\n style: style,\n metadata: TOOLBAR_LINK_METADATA,\n state: state,\n refs: [forwardedRef],\n props: [elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarLink.displayName = \"ToolbarLink\";","'use client';\n\nimport * as React from 'react';\nimport { useFocusableWhenDisabled } from \"../../utils/useFocusableWhenDisabled.mjs\";\nimport { useToolbarRootContext } from \"../root/ToolbarRootContext.mjs\";\nimport { useToolbarGroupContext } from \"../group/ToolbarGroupContext.mjs\";\nimport { CompositeItem } from \"../../internals/composite/item/CompositeItem.mjs\";\n\n/**\n * A native input element that integrates with Toolbar keyboard navigation.\n * Renders an `<input>` element.\n *\n * Documentation: [Base UI Toolbar](https://base-ui.com/react/components/toolbar)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const ToolbarInput = /*#__PURE__*/React.forwardRef(function ToolbarInput(componentProps, forwardedRef) {\n const {\n className,\n focusableWhenDisabled = true,\n render,\n disabled: disabledProp = false,\n style,\n ...elementProps\n } = componentProps;\n const {\n disabled: toolbarDisabled,\n orientation\n } = useToolbarRootContext();\n const groupContext = useToolbarGroupContext();\n const disabled = toolbarDisabled || (groupContext?.disabled ?? false) || disabledProp;\n const itemMetadata = React.useMemo(() => ({\n disabled,\n focusableWhenDisabled\n }), [disabled, focusableWhenDisabled]);\n const {\n props: focusableWhenDisabledProps\n } = useFocusableWhenDisabled({\n composite: true,\n disabled,\n focusableWhenDisabled,\n isNativeButton: false\n });\n const state = {\n disabled,\n orientation,\n focusable: focusableWhenDisabled\n };\n const preventWhenDisabled = event => {\n if (disabled) {\n event.preventDefault();\n }\n };\n const defaultProps = {\n onClick: preventWhenDisabled,\n onPointerDown: preventWhenDisabled\n };\n return /*#__PURE__*/_jsx(CompositeItem, {\n tag: \"input\",\n render: render,\n className: className,\n style: style,\n metadata: itemMetadata,\n state: state,\n refs: [forwardedRef],\n props: [defaultProps, elementProps, focusableWhenDisabledProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ToolbarInput.displayName = \"ToolbarInput\";","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-button.tsx\nconst TRToolbarButton = createComponentPart(Toolbar.Button, \"tr-toolbar-button\");\n//#endregion\nexport { TRToolbarButton };\n\n//# sourceMappingURL=toolbar-button.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-group.tsx\nconst TRToolbarGroup = createComponentPart(Toolbar.Group, \"tr-toolbar-group\");\n//#endregion\nexport { TRToolbarGroup };\n\n//# sourceMappingURL=toolbar-group.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-input.tsx\nconst TRToolbarInput = createComponentPart(Toolbar.Input, \"tr-toolbar-input\", { tracksFocusModality: true });\n//#endregion\nexport { TRToolbarInput };\n\n//# sourceMappingURL=toolbar-input.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-link.tsx\nconst TRToolbarLink = createComponentPart(Toolbar.Link, \"tr-toolbar-link\");\n//#endregion\nexport { TRToolbarLink };\n\n//# sourceMappingURL=toolbar-link.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-root.tsx\nconst TRToolbarRoot = createComponentPart(Toolbar.Root, \"tr-toolbar\");\n//#endregion\nexport { TRToolbarRoot };\n\n//# sourceMappingURL=toolbar-root.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Toolbar } from \"@base-ui/react/toolbar\";\n//#region src/components/toolbar/toolbar-separator.tsx\nconst TRToolbarSeparator = createComponentPart(Toolbar.Separator, \"tr-toolbar-separator\");\n//#endregion\nexport { TRToolbarSeparator };\n\n//# sourceMappingURL=toolbar-separator.js.map","import { TRToolbarButton } from \"./toolbar-button.js\";\nimport { TRToolbarGroup } from \"./toolbar-group.js\";\nimport { TRToolbarInput } from \"./toolbar-input.js\";\nimport { TRToolbarLink } from \"./toolbar-link.js\";\nimport { TRToolbarRoot } from \"./toolbar-root.js\";\nimport { TRToolbarSeparator } from \"./toolbar-separator.js\";\n//#region src/components/toolbar/index.tsx\nconst TRToolbar = {\n\tRoot: TRToolbarRoot,\n\tGroup: TRToolbarGroup,\n\tButton: TRToolbarButton,\n\tLink: TRToolbarLink,\n\tInput: TRToolbarInput,\n\tSeparator: TRToolbarSeparator\n};\n//#endregion\nexport { TRToolbar, TRToolbarButton, TRToolbarGroup, TRToolbarInput, TRToolbarLink, TRToolbarRoot, TRToolbarSeparator };\n\n//# sourceMappingURL=index.js.map","import {\n useMutation,\n useQueryClient,\n useSuspenseQuery,\n} from '@tanstack/react-query';\nimport { createFileRoute, redirect } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRButton } from '@tinyrack/ui/components/button';\nimport { TRCheckbox } from '@tinyrack/ui/components/checkbox';\nimport { TRCode } from '@tinyrack/ui/components/code';\nimport { TRField } from '@tinyrack/ui/components/field';\nimport { TRForm } from '@tinyrack/ui/components/form';\nimport { TRInput } from '@tinyrack/ui/components/input';\nimport { TRSelect } from '@tinyrack/ui/components/select';\nimport { TRTable } from '@tinyrack/ui/components/table';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { TRToolbar } from '@tinyrack/ui/components/toolbar';\nimport { type FormEvent, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Modal, ModalActions } from '#frontend/components/ui/modal.tsx';\nimport {\n AdminBulkBar,\n AdminFilterSelect,\n AdminListToolbar,\n AdminPagination,\n AdminRowCheckbox,\n AdminSelectAll,\n AdminSortButton,\n AdminStickyActionCell,\n AdminStickyIdentityCell,\n AdminStickySelectCell,\n AdminTable,\n AdminTableFrame,\n} from '#frontend/features/admin/admin-data-table.tsx';\nimport { AdminGateScreen } from '#frontend/features/admin/admin-gate-screen.tsx';\nimport { AdminShell } from '#frontend/features/admin/admin-shell.tsx';\nimport { useAdminSelection } from '#frontend/features/admin/use-admin-selection.ts';\nimport {\n type AdminClient,\n type AdminClientBulkTarget,\n type AdminClientInput,\n type AdminClientsQuery,\n adminClientsQueryOptions,\n bulkSetAdminClientsActive,\n createAdminClient,\n rotateAdminClientSecret,\n updateAdminClient,\n} from '#frontend/queries/admin-console.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport type { SessionUser } from '#frontend/queries/session.ts';\n\nexport const Route = createFileRoute('/admin/clients/')({\n component: AdminClientsPage,\n beforeLoad: async ({ context }) => {\n if (!context.user) throw redirect({ to: '/login' });\n },\n});\n\nfunction AdminClientsPage() {\n const user = Route.useRouteContext({ select: (context) => context.user });\n if (user?.role !== 'admin')\n return <AdminGateScreen reason=\"access-required\" />;\n return <AdminClientsGate user={user} />;\n}\n\nfunction AdminClientsGate({ user }: { user: SessionUser }) {\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n if (!config.admin.enabled)\n return <AdminGateScreen reason=\"console-disabled\" />;\n return <AdminClientsContent user={user} />;\n}\n\nfunction AdminClientsContent({ user }: { user: SessionUser }) {\n const { t } = useTranslation();\n const queryClient = useQueryClient();\n const [draftQuery, setDraftQuery] = useState('');\n const [filters, setFilters] = useState<AdminClientsQuery>({\n page: 1,\n pageSize: 20,\n });\n const [editing, setEditing] = useState<AdminClient | 'create' | null>(null);\n const [bulkActive, setBulkActive] = useState<boolean | null>(null);\n const [secret, setSecret] = useState<string | null>(null);\n const { data } = useSuspenseQuery(adminClientsQueryOptions(filters));\n const selection = useAdminSelection(data.clients.map((client) => client.id));\n const invalidate = () =>\n queryClient.invalidateQueries({ queryKey: ['admin'] });\n const createMutation = useMutation({\n mutationFn: createAdminClient,\n onSuccess: (result) => {\n void invalidate();\n setEditing(null);\n setSecret(result.client_secret ?? null);\n },\n });\n const updateMutation = useMutation({\n mutationFn: ({\n id,\n input,\n }: {\n id: string;\n input: Omit<AdminClientInput, 'client_id' | 'type'>;\n }) => updateAdminClient(id, input),\n onSuccess: () => {\n void invalidate();\n setEditing(null);\n },\n });\n const rotateMutation = useMutation({\n mutationFn: rotateAdminClientSecret,\n onSuccess: (result) => {\n void invalidate();\n setSecret(result.client_secret);\n },\n });\n const bulkMutation = useMutation({\n mutationFn: bulkSetAdminClientsActive,\n onSuccess: () => {\n void invalidate();\n selection.clear();\n setBulkActive(null);\n },\n });\n const page = filters.page ?? 1;\n const pageSize = filters.pageSize ?? 20;\n const selected =\n selection.selection.kind === 'filter'\n ? data.pagination.total\n : (selection.selectedCount ?? 0);\n const target: AdminClientBulkTarget =\n selection.selection.kind === 'filter'\n ? {\n kind: 'filter',\n filter: {\n query: filters.query,\n managed_by: filters.managedBy,\n enabled: filters.enabled,\n },\n }\n : { kind: 'ids', ids: [...selection.selection.ids] };\n const setFilter = (next: AdminClientsQuery) => {\n selection.clear();\n setFilters(next);\n };\n\n return (\n <AdminShell current=\"clients\" title={t('admin.clients.title')} user={user}>\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col\">\n <AdminListToolbar\n onCreate={() => setEditing('create')}\n onQueryChange={setDraftQuery}\n onSearch={() =>\n setFilter({ ...filters, query: draftQuery.trim(), page: 1 })\n }\n query={draftQuery}\n title={t('admin.clients.title')}\n total={data.pagination.total}\n >\n <AdminFilterSelect\n label={t('admin.clients.type')}\n onChange={(value) =>\n setFilter({\n ...filters,\n type:\n value === 'public'\n ? 'public'\n : value === 'confidential'\n ? 'confidential'\n : undefined,\n page: 1,\n })\n }\n options={[\n ['all', t('admin.filter.allTypes')],\n ['public', t('admin.clients.public')],\n ['confidential', t('admin.clients.confidential')],\n ]}\n value={filters.type ?? 'all'}\n />\n <AdminFilterSelect\n label={t('admin.table.status')}\n onChange={(value) =>\n setFilter({\n ...filters,\n enabled: value === 'all' ? undefined : value === 'active',\n page: 1,\n })\n }\n options={[\n ['all', t('admin.filter.allStatuses')],\n ['active', t('admin.status.active')],\n ['inactive', t('admin.status.inactive')],\n ]}\n value={\n filters.enabled === undefined\n ? 'all'\n : filters.enabled\n ? 'active'\n : 'inactive'\n }\n />\n </AdminListToolbar>\n <AdminTableFrame>\n <AdminTable label={t('admin.clients.title')}>\n <TRTable.Header className=\"sticky top-0 z-tinyrack-component-raised\">\n <TRTable.Row>\n <AdminStickySelectCell header>\n <AdminSelectAll\n checked={selection.allOnPage}\n indeterminate={selection.someOnPage}\n onChange={selection.togglePage}\n />\n </AdminStickySelectCell>\n <AdminStickyIdentityCell header>\n <AdminSortButton\n direction={filters.direction ?? 'asc'}\n label={t('admin.clients.name')}\n onClick={() =>\n setFilter({\n ...filters,\n direction:\n filters.direction === 'desc' ? 'asc' : 'desc',\n page: 1,\n })\n }\n />\n </AdminStickyIdentityCell>\n <TRTable.Head>{t('admin.clients.clientId')}</TRTable.Head>\n <TRTable.Head>{t('admin.clients.type')}</TRTable.Head>\n <TRTable.Head>{t('admin.clients.source')}</TRTable.Head>\n <TRTable.Head>{t('admin.table.status')}</TRTable.Head>\n <TRTable.Head>{t('admin.clients.redirects')}</TRTable.Head>\n <TRTable.Head>{t('admin.clients.scopes')}</TRTable.Head>\n <AdminStickyActionCell header>\n {t('admin.table.actions')}\n </AdminStickyActionCell>\n </TRTable.Row>\n </TRTable.Header>\n <TRTable.Body>\n {data.clients.length === 0 ? (\n <TRTable.Row>\n <TRTable.Cell\n className=\"py-tinyrack-3xl text-center\"\n colSpan={9}\n >\n {t('admin.table.empty')}\n </TRTable.Cell>\n </TRTable.Row>\n ) : (\n data.clients.map((client) => (\n <TRTable.Row\n className={\n selection.isSelected(client.id)\n ? 'bg-tinyrack-surface-selected'\n : undefined\n }\n data-selected={\n selection.isSelected(client.id) ? '' : undefined\n }\n key={client.id}\n >\n <AdminStickySelectCell\n selected={selection.isSelected(client.id)}\n >\n <AdminRowCheckbox\n checked={selection.isSelected(client.id)}\n label={t('admin.selection.row', { name: client.name })}\n onChange={(checked) =>\n selection.toggleOne(client.id, checked)\n }\n />\n </AdminStickySelectCell>\n <AdminStickyIdentityCell\n selected={selection.isSelected(client.id)}\n >\n <TRText as=\"p\" truncate variant=\"bodySm\" weight=\"medium\">\n {client.name}\n </TRText>\n </AdminStickyIdentityCell>\n <TRTable.Cell>\n <TRCode>{client.client_id}</TRCode>\n </TRTable.Cell>\n <TRTable.Cell>\n {t(`admin.clients.${client.type}`)}\n </TRTable.Cell>\n <TRTable.Cell>\n {t(`admin.source.${client.managed_by}`)}\n </TRTable.Cell>\n <TRTable.Cell>\n <TRBadge\n className=\"whitespace-nowrap\"\n variant={client.enabled ? 'success' : 'neutral'}\n >\n {t(\n client.enabled\n ? 'admin.status.active'\n : 'admin.status.inactive',\n )}\n </TRBadge>\n </TRTable.Cell>\n <TRTable.Cell>{client.redirect_uris.length}</TRTable.Cell>\n <TRTable.Cell>{client.scopes.join(', ')}</TRTable.Cell>\n <AdminStickyActionCell\n selected={selection.isSelected(client.id)}\n >\n <TRToolbar.Root className=\"flex justify-end gap-tinyrack-xs\">\n <TRButton\n appearance=\"ghost\"\n disabled={client.managed_by === 'config'}\n onClick={() => setEditing(client)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.actions.edit')}\n </TRButton>\n {client.type === 'confidential' ? (\n <TRButton\n appearance=\"ghost\"\n disabled={client.managed_by === 'config'}\n onClick={() => rotateMutation.mutate(client.id)}\n type=\"button\"\n uiSize=\"sm\"\n >\n {t('admin.clients.rotateSecret')}\n </TRButton>\n ) : null}\n <TRButton\n appearance=\"ghost\"\n disabled={client.managed_by === 'config'}\n onClick={() =>\n bulkMutation.mutate({\n target: { kind: 'ids', ids: [client.id] },\n active: !client.enabled,\n })\n }\n type=\"button\"\n uiSize=\"sm\"\n >\n {t(\n client.enabled\n ? 'admin.actions.deactivate'\n : 'admin.actions.restore',\n )}\n </TRButton>\n </TRToolbar.Root>\n </AdminStickyActionCell>\n </TRTable.Row>\n ))\n )}\n </TRTable.Body>\n </AdminTable>\n <AdminPagination\n onPageChange={(next) => setFilter({ ...filters, page: next })}\n onPageSizeChange={(next) =>\n setFilter({ ...filters, page: 1, pageSize: next })\n }\n page={page}\n pageSize={pageSize}\n total={data.pagination.total}\n />\n </AdminTableFrame>\n </div>\n {selected > 0 ? (\n <AdminBulkBar\n canExpand={\n selection.allOnPage && data.pagination.total > data.clients.length\n }\n filterSelected={selection.selection.kind === 'filter'}\n onActivate={() => setBulkActive(true)}\n onClear={selection.clear}\n onDeactivate={() => setBulkActive(false)}\n onExpand={selection.selectFilter}\n pending={bulkMutation.isPending}\n selected={selected}\n total={data.pagination.total}\n />\n ) : null}\n <BulkConfirm\n active={bulkActive}\n count={selected}\n filterSelected={selection.selection.kind === 'filter'}\n onClose={() => setBulkActive(null)}\n onRun={() =>\n bulkMutation.mutate({ target, active: bulkActive ?? true })\n }\n />\n <ClientModal\n client={editing === 'create' ? undefined : (editing ?? undefined)}\n isOpen={editing !== null}\n onClose={() => setEditing(null)}\n onSubmit={(input) => {\n if (editing && editing !== 'create') {\n const {\n client_id: ignoredClientId,\n type: ignoredType,\n ...update\n } = input;\n void ignoredClientId;\n void ignoredType;\n updateMutation.mutate({ id: editing.id, input: update });\n } else createMutation.mutate(input);\n }}\n pending={createMutation.isPending || updateMutation.isPending}\n />\n <Modal\n description={t('admin.clients.secretDescription')}\n isOpen={secret !== null}\n onClose={() => setSecret(null)}\n title={t('admin.clients.secretTitle')}\n >\n <div className=\"flex flex-col gap-tinyrack-md pt-tinyrack-lg\">\n <TRCode className=\"break-all rounded-tinyrack-md bg-tinyrack-surface-muted p-tinyrack-md\">\n {secret}\n </TRCode>\n <TRText color=\"warning\" variant=\"bodySm\">\n {t('admin.clients.secretWarning')}\n </TRText>\n <ModalActions>\n <TRButton onClick={() => setSecret(null)} type=\"button\">\n {t('common.dismiss')}\n </TRButton>\n </ModalActions>\n </div>\n </Modal>\n </AdminShell>\n );\n}\n\nfunction stringValue(data: FormData, name: string) {\n const value = data.get(name);\n return typeof value === 'string' ? value.trim() : '';\n}\nfunction listValue(data: FormData, name: string) {\n return stringValue(data, name)\n .split(/[\\n,]/)\n .map((value) => value.trim())\n .filter(Boolean);\n}\n\nfunction ClientModal({\n isOpen,\n client,\n pending,\n onClose,\n onSubmit,\n}: {\n isOpen: boolean;\n client?: AdminClient | undefined;\n pending: boolean;\n onClose: () => void;\n onSubmit: (input: AdminClientInput) => void;\n}) {\n const { t } = useTranslation();\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n const data = new FormData(event.currentTarget);\n const type = stringValue(data, 'type');\n onSubmit({\n client_id: stringValue(data, 'client_id'),\n name: stringValue(data, 'name'),\n type: type === 'confidential' ? 'confidential' : 'public',\n redirect_uris: listValue(data, 'redirect_uris'),\n post_logout_redirect_uris: listValue(data, 'post_logout_redirect_uris'),\n web_origins: listValue(data, 'web_origins'),\n grant_types: listValue(data, 'grant_types'),\n response_types: listValue(data, 'response_types'),\n scopes: listValue(data, 'scopes'),\n skip_consent: data.get('skip_consent') === 'on',\n });\n };\n return (\n <Modal\n description={t(\n client\n ? 'admin.clients.editDescription'\n : 'admin.clients.createDescription',\n )}\n isOpen={isOpen}\n onClose={onClose}\n title={t(\n client ? 'admin.clients.editTitle' : 'admin.clients.createTitle',\n )}\n >\n <TRForm\n className=\"grid gap-tinyrack-md pt-tinyrack-lg sm:grid-cols-2\"\n onSubmit={submit}\n >\n <ClientField\n defaultValue={client?.client_id}\n disabled={Boolean(client)}\n label={t('admin.clients.clientId')}\n name=\"client_id\"\n required\n />\n <ClientField\n defaultValue={client?.name}\n label={t('admin.clients.name')}\n name=\"name\"\n required\n />\n <FormSelect\n defaultValue={client?.type ?? 'public'}\n disabled={Boolean(client)}\n label={t('admin.clients.type')}\n name=\"type\"\n options={[\n ['public', t('admin.clients.public')],\n ['confidential', t('admin.clients.confidential')],\n ]}\n />\n <ClientField\n defaultValue={client?.scopes.join(', ')}\n label={t('admin.clients.scopes')}\n name=\"scopes\"\n required\n />\n <ClientField\n defaultValue={client?.redirect_uris.join('\\n')}\n label={t('admin.clients.redirectUris')}\n name=\"redirect_uris\"\n required\n />\n <ClientField\n defaultValue={client?.post_logout_redirect_uris.join('\\n')}\n label={t('admin.clients.postLogoutUris')}\n name=\"post_logout_redirect_uris\"\n />\n <ClientField\n defaultValue={client?.web_origins.join('\\n')}\n label={t('admin.clients.webOrigins')}\n name=\"web_origins\"\n />\n <ClientField\n defaultValue={client?.grant_types.join(', ') ?? 'authorization_code'}\n label={t('admin.clients.grantTypes')}\n name=\"grant_types\"\n required\n />\n <ClientField\n defaultValue={client?.response_types.join(', ') ?? 'code'}\n label={t('admin.clients.responseTypes')}\n name=\"response_types\"\n required\n />\n {/* tinyrack-check-ignore-next-line components/no-native-text -- Structural checkbox row; visible label uses TRText. */}\n <div className=\"flex items-center gap-tinyrack-sm\">\n <TRCheckbox.Root\n aria-label={t('admin.clients.skipConsent')}\n defaultChecked={client?.skip_consent}\n name=\"skip_consent\"\n value=\"on\"\n >\n <TRCheckbox.Indicator />\n </TRCheckbox.Root>\n <TRText variant=\"caption\">{t('admin.clients.skipConsent')}</TRText>\n </div>\n <ModalActions>\n <TRButton disabled={pending} onClick={onClose} type=\"button\">\n {t('common.dismiss')}\n </TRButton>\n <TRButton disabled={pending} intent=\"primary\" type=\"submit\">\n {t('admin.actions.save')}\n </TRButton>\n </ModalActions>\n </TRForm>\n </Modal>\n );\n}\n\nfunction ClientField({\n label,\n name,\n defaultValue,\n disabled,\n required,\n}: {\n label: string;\n name: string;\n defaultValue?: string | undefined;\n disabled?: boolean | undefined;\n required?: boolean | undefined;\n}) {\n return (\n <TRField.Root>\n <TRField.Label>{label}</TRField.Label>\n <TRInput\n defaultValue={defaultValue}\n disabled={disabled}\n name={name}\n required={required}\n uiSize=\"sm\"\n />\n </TRField.Root>\n );\n}\nfunction FormSelect({\n label,\n name,\n defaultValue,\n disabled,\n options,\n}: {\n label: string;\n name: string;\n defaultValue: string;\n disabled?: boolean | undefined;\n options: Array<[string, string]>;\n}) {\n return (\n <div className=\"flex flex-col gap-tinyrack-xs text-tinyrack-xs\">\n <TRText as=\"span\" variant=\"caption\">\n {label}\n </TRText>\n <TRSelect.Root\n defaultValue={defaultValue}\n disabled={disabled}\n name={name}\n >\n <TRSelect.Trigger aria-label={label} uiSize=\"sm\">\n <TRSelect.Value>\n {options.find(([value]) => value === defaultValue)?.[1] ??\n defaultValue}\n </TRSelect.Value>\n </TRSelect.Trigger>\n <TRSelect.Positioner>\n <TRSelect.Popup>\n <TRSelect.List>\n {options.map(([value, text]) => (\n <TRSelect.Item key={value} value={value}>\n <TRSelect.ItemText>{text}</TRSelect.ItemText>\n </TRSelect.Item>\n ))}\n </TRSelect.List>\n </TRSelect.Popup>\n </TRSelect.Positioner>\n </TRSelect.Root>\n </div>\n );\n}\n\nfunction BulkConfirm({\n active,\n count,\n filterSelected,\n onClose,\n onRun,\n}: {\n active: boolean | null;\n count: number;\n filterSelected: boolean;\n onClose: () => void;\n onRun: () => void;\n}) {\n const { t } = useTranslation();\n return (\n <Modal\n isOpen={active !== null}\n onClose={onClose}\n title={t(\n active ? 'admin.bulk.activateTitle' : 'admin.bulk.deactivateTitle',\n )}\n >\n <div className=\"pt-tinyrack-lg\">\n <TRText color=\"muted\" variant=\"bodySm\">\n {t('admin.bulk.confirm', {\n count,\n scope: t(\n filterSelected\n ? 'admin.selection.filterScope'\n : 'admin.selection.pageScope',\n ),\n })}\n </TRText>\n <ModalActions>\n <TRButton onClick={onClose} type=\"button\">\n {t('common.dismiss')}\n </TRButton>\n <TRButton\n intent={active ? 'primary' : 'danger'}\n onClick={onRun}\n type=\"button\"\n >\n {t('admin.bulk.run')}\n </TRButton>\n </ModalActions>\n </div>\n </Modal>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}