@tinyrack/issuary-server 0.22.0 → 0.23.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 (306) hide show
  1. package/dist/entities/oauth-client.entity.d.ts +0 -18
  2. package/dist/entities/oauth-client.entity.d.ts.map +1 -1
  3. package/dist/entities/oauth-code.entity.d.ts +0 -18
  4. package/dist/entities/oauth-code.entity.d.ts.map +1 -1
  5. package/dist/entities/oauth-device-code.entity.d.ts +0 -18
  6. package/dist/entities/oauth-device-code.entity.d.ts.map +1 -1
  7. package/dist/entities/revoked-token.entity.d.ts +0 -18
  8. package/dist/entities/revoked-token.entity.d.ts.map +1 -1
  9. package/dist/entities/terms-content.entity.d.ts +0 -9
  10. package/dist/entities/terms-content.entity.d.ts.map +1 -1
  11. package/dist/entities/terms.entity.d.ts +0 -9
  12. package/dist/entities/terms.entity.d.ts.map +1 -1
  13. package/dist/entities/user-consent.entity.d.ts +0 -18
  14. package/dist/entities/user-consent.entity.d.ts.map +1 -1
  15. package/dist/entities/user-terms-consent.entity.d.ts +0 -9
  16. package/dist/entities/user-terms-consent.entity.d.ts.map +1 -1
  17. package/dist/entities/user-totp-recovery-code.entity.d.ts +0 -9
  18. package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -1
  19. package/dist/entities/user-totp.entity.d.ts +0 -9
  20. package/dist/entities/user-totp.entity.d.ts.map +1 -1
  21. package/dist/entities/user.entity.d.ts +0 -9
  22. package/dist/entities/user.entity.d.ts.map +1 -1
  23. package/dist/entities/user.entity.js +0 -4
  24. package/dist/entities/user.entity.js.map +1 -1
  25. package/dist/entrypoints/app.d.ts +0 -53
  26. package/dist/entrypoints/app.d.ts.map +1 -1
  27. package/dist/entrypoints/database/postgres/compiled-functions.d.ts +20 -23
  28. package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -1
  29. package/dist/entrypoints/database/postgres/compiled-functions.js +104 -134
  30. package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -1
  31. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +20 -23
  32. package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -1
  33. package/dist/entrypoints/database/sqlite/compiled-functions.js +104 -134
  34. package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -1
  35. package/dist/lib/config/resolved.d.ts +0 -1
  36. package/dist/lib/config/resolved.d.ts.map +1 -1
  37. package/dist/lib/config/security.d.ts +0 -2
  38. package/dist/lib/config/security.d.ts.map +1 -1
  39. package/dist/lib/config/security.js +0 -5
  40. package/dist/lib/config/security.js.map +1 -1
  41. package/dist/middleware/auth.d.ts +0 -8
  42. package/dist/middleware/auth.d.ts.map +1 -1
  43. package/dist/middleware/auth.js +0 -64
  44. package/dist/middleware/auth.js.map +1 -1
  45. package/dist/middleware/session.d.ts +0 -9
  46. package/dist/middleware/session.d.ts.map +1 -1
  47. package/dist/middleware/session.js +0 -18
  48. package/dist/middleware/session.js.map +1 -1
  49. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.d.ts +6 -0
  50. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -0
  51. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.js +19 -0
  52. package/dist/migrations/postgres/Migration20260825140000_drop_password_reset_required.js.map +1 -0
  53. package/dist/migrations/postgres/index.d.ts.map +1 -1
  54. package/dist/migrations/postgres/index.js +2 -0
  55. package/dist/migrations/postgres/index.js.map +1 -1
  56. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.d.ts +6 -0
  57. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.d.ts.map +1 -0
  58. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.js +19 -0
  59. package/dist/migrations/sqlite/Migration20260825140000_drop_password_reset_required.js.map +1 -0
  60. package/dist/migrations/sqlite/index.d.ts.map +1 -1
  61. package/dist/migrations/sqlite/index.js +2 -0
  62. package/dist/migrations/sqlite/index.js.map +1 -1
  63. package/dist/repositories/oauth-code.repository.d.ts +2 -2
  64. package/dist/repositories/oauth-code.repository.d.ts.map +1 -1
  65. package/dist/repositories/oauth-code.repository.js +3 -7
  66. package/dist/repositories/oauth-code.repository.js.map +1 -1
  67. package/dist/repositories/oauth-device-code.repository.d.ts +4 -4
  68. package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -1
  69. package/dist/repositories/oauth-device-code.repository.js +6 -18
  70. package/dist/repositories/oauth-device-code.repository.js.map +1 -1
  71. package/dist/repositories/user-totp-recovery-code.repository.d.ts +1 -7
  72. package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -1
  73. package/dist/repositories/user-totp-recovery-code.repository.js +1 -2
  74. package/dist/repositories/user-totp-recovery-code.repository.js.map +1 -1
  75. package/dist/repositories/user-totp.repository.d.ts +0 -9
  76. package/dist/repositories/user-totp.repository.d.ts.map +1 -1
  77. package/dist/routes/api/auth/index.d.ts +0 -52
  78. package/dist/routes/api/auth/index.d.ts.map +1 -1
  79. package/dist/routes/api/auth/index.js +0 -2
  80. package/dist/routes/api/auth/index.js.map +1 -1
  81. package/dist/routes/api/auth/passkey/verify/post.d.ts +0 -37
  82. package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -1
  83. package/dist/routes/api/auth/passkey/verify/post.js +2 -8
  84. package/dist/routes/api/auth/passkey/verify/post.js.map +1 -1
  85. package/dist/routes/api/index.d.ts +0 -52
  86. package/dist/routes/api/index.d.ts.map +1 -1
  87. package/dist/routes/index.d.ts +0 -52
  88. package/dist/routes/index.d.ts.map +1 -1
  89. package/dist/routes/oauth/device/get-post.js +5 -5
  90. package/dist/routes/oauth/device/get-post.js.map +1 -1
  91. package/dist/schemas/error.d.ts +0 -25
  92. package/dist/schemas/error.d.ts.map +1 -1
  93. package/dist/schemas/error.js +0 -1
  94. package/dist/schemas/error.js.map +1 -1
  95. package/dist/schemas/response.d.ts +0 -22
  96. package/dist/schemas/response.d.ts.map +1 -1
  97. package/dist/schemas/response.js +0 -8
  98. package/dist/schemas/response.js.map +1 -1
  99. package/dist/seeders/config.seeder.js +0 -1
  100. package/dist/seeders/config.seeder.js.map +1 -1
  101. package/dist/services/container.d.ts +0 -1
  102. package/dist/services/container.d.ts.map +1 -1
  103. package/dist/services/container.js +0 -15
  104. package/dist/services/container.js.map +1 -1
  105. package/dist/services/oauth-client.service.d.ts +0 -1
  106. package/dist/services/oauth-client.service.d.ts.map +1 -1
  107. package/dist/services/oauth-client.service.js +2 -17
  108. package/dist/services/oauth-client.service.js.map +1 -1
  109. package/dist/services/oauth-connect.service.d.ts.map +1 -1
  110. package/dist/services/oauth-connect.service.js +0 -4
  111. package/dist/services/oauth-connect.service.js.map +1 -1
  112. package/dist/services/oauth-token.service.d.ts.map +1 -1
  113. package/dist/services/oauth-token.service.js +4 -4
  114. package/dist/services/oauth-token.service.js.map +1 -1
  115. package/dist/services/password-auth.service.d.ts.map +1 -1
  116. package/dist/services/password-auth.service.js +3 -12
  117. package/dist/services/password-auth.service.js.map +1 -1
  118. package/dist/services/security.service.d.ts +0 -8
  119. package/dist/services/security.service.d.ts.map +1 -1
  120. package/dist/services/security.service.js +21 -82
  121. package/dist/services/security.service.js.map +1 -1
  122. package/dist/services/totp.service.js +2 -2
  123. package/dist/services/totp.service.js.map +1 -1
  124. package/package.json +1 -1
  125. package/public/assets/2fa-B5vLgDXQ.js +2 -0
  126. package/public/assets/{2fa-BgveHSB_.js.map → 2fa-B5vLgDXQ.js.map} +1 -1
  127. package/public/assets/2fa-BqsM_D-X.js +2 -0
  128. package/public/assets/{2fa-kiqzGSz2.js.map → 2fa-BqsM_D-X.js.map} +1 -1
  129. package/public/assets/2fa-C5vUVgr_.js +2 -0
  130. package/public/assets/{2fa-UL_cNRnQ.js.map → 2fa-C5vUVgr_.js.map} +1 -1
  131. package/public/assets/2fa-CCOTIHDZ.js +2 -0
  132. package/public/assets/{2fa-C37MUkye.js.map → 2fa-CCOTIHDZ.js.map} +1 -1
  133. package/public/assets/{DialogHandle-Zvz8SgS0.js → DialogHandle-BmtK2pRn.js} +2 -2
  134. package/public/assets/{DialogHandle-Zvz8SgS0.js.map → DialogHandle-BmtK2pRn.js.map} +1 -1
  135. package/public/assets/admin-BPijkLw-.js +2 -0
  136. package/public/assets/{admin-DbDuu6AI.js.map → admin-BPijkLw-.js.map} +1 -1
  137. package/public/assets/admin-users-DvPbw1Vq.js +2 -0
  138. package/public/assets/{admin-users-CwTJdiih.js.map → admin-users-DvPbw1Vq.js.map} +1 -1
  139. package/public/assets/{auth-choice-row-BlSsUI7d.js → auth-choice-row-BCGjuedo.js} +2 -2
  140. package/public/assets/{auth-choice-row-BlSsUI7d.js.map → auth-choice-row-BCGjuedo.js.map} +1 -1
  141. package/public/assets/{auth-field-HwxENJnB.js → auth-field-DD8kvl--.js} +2 -2
  142. package/public/assets/{auth-field-HwxENJnB.js.map → auth-field-DD8kvl--.js.map} +1 -1
  143. package/public/assets/{auth-layout-CoeqNhTT.js → auth-layout-VtpryDof.js} +2 -2
  144. package/public/assets/{auth-layout-CoeqNhTT.js.map → auth-layout-VtpryDof.js.map} +1 -1
  145. package/public/assets/{auth-page-header-CIs08f5Y.js → auth-page-header-CIn2E4zI.js} +2 -2
  146. package/public/assets/{auth-page-header-CIs08f5Y.js.map → auth-page-header-CIn2E4zI.js.map} +1 -1
  147. package/public/assets/{authorization-context-banner-BbtQmMYH.js → authorization-context-banner-SOuBHWIb.js} +2 -2
  148. package/public/assets/{authorization-context-banner-BbtQmMYH.js.map → authorization-context-banner-SOuBHWIb.js.map} +1 -1
  149. package/public/assets/{avatar-CttWiIv3.js → avatar-BEQjf2x6.js} +2 -2
  150. package/public/assets/{avatar-CttWiIv3.js.map → avatar-BEQjf2x6.js.map} +1 -1
  151. package/public/assets/{checkbox-CJrRV8S1.js → checkbox-gdHnSFQ-.js} +2 -2
  152. package/public/assets/{checkbox-CJrRV8S1.js.map → checkbox-gdHnSFQ-.js.map} +1 -1
  153. package/public/assets/config-DTQCUlfZ.js +2 -0
  154. package/public/assets/config-DTQCUlfZ.js.map +1 -0
  155. package/public/assets/{consent-BIhxtXHx.js → consent-BqqFDdsr.js} +2 -2
  156. package/public/assets/{consent-BIhxtXHx.js.map → consent-BqqFDdsr.js.map} +1 -1
  157. package/public/assets/{consent-DRmENn26.js → consent-CfRbz2R7.js} +2 -2
  158. package/public/assets/{consent-DRmENn26.js.map → consent-CfRbz2R7.js.map} +1 -1
  159. package/public/assets/email-C5vUVgr_.js +2 -0
  160. package/public/assets/{email-UL_cNRnQ.js.map → email-C5vUVgr_.js.map} +1 -1
  161. package/public/assets/{email-CVRDeJ78.js → email-CKKakxPJ.js} +2 -2
  162. package/public/assets/{email-CVRDeJ78.js.map → email-CKKakxPJ.js.map} +1 -1
  163. package/public/assets/error-BMXxpgfR.js +2 -0
  164. package/public/assets/{error-2VPY5w8V.js.map → error-BMXxpgfR.js.map} +1 -1
  165. package/public/assets/{field-DDt6F9TZ.js → field-Cn4H1CUj.js} +2 -2
  166. package/public/assets/{field-DDt6F9TZ.js.map → field-Cn4H1CUj.js.map} +1 -1
  167. package/public/assets/forgot-C5vUVgr_.js +2 -0
  168. package/public/assets/{forgot-UL_cNRnQ.js.map → forgot-C5vUVgr_.js.map} +1 -1
  169. package/public/assets/forgot-rO9sByfV.js +2 -0
  170. package/public/assets/{forgot-DzDcduho.js.map → forgot-rO9sByfV.js.map} +1 -1
  171. package/public/assets/index-CS23Ozt6.js +11 -0
  172. package/public/assets/index-CS23Ozt6.js.map +1 -0
  173. package/public/assets/{initial-avatar-CZzHAPm3.js → initial-avatar-CtuDUz_W.js} +2 -2
  174. package/public/assets/{initial-avatar-CZzHAPm3.js.map → initial-avatar-CtuDUz_W.js.map} +1 -1
  175. package/public/assets/{input-CNRpSR08.js → input-CzQki7k6.js} +2 -2
  176. package/public/assets/{input-CNRpSR08.js.map → input-CzQki7k6.js.map} +1 -1
  177. package/public/assets/{labeled-separator-fnKySKv2.js → labeled-separator-CV7nb0XW.js} +2 -2
  178. package/public/assets/{labeled-separator-fnKySKv2.js.map → labeled-separator-CV7nb0XW.js.map} +1 -1
  179. package/public/assets/login-C5vUVgr_.js +2 -0
  180. package/public/assets/login-C5vUVgr_.js.map +1 -0
  181. package/public/assets/login-nukebli4.js +2 -0
  182. package/public/assets/login-nukebli4.js.map +1 -0
  183. package/public/assets/{logout-CHdmF_16.js → logout-B5T52P8u.js} +2 -2
  184. package/public/assets/{logout-CHdmF_16.js.map → logout-B5T52P8u.js.map} +1 -1
  185. package/public/assets/{modal-sCM_zT82.js → modal-BDQFucjz.js} +2 -2
  186. package/public/assets/{modal-sCM_zT82.js.map → modal-BDQFucjz.js.map} +1 -1
  187. package/public/assets/{mutationOptions-CrswitPs.js → mutationOptions-DyYFUbyn.js} +2 -2
  188. package/public/assets/{mutationOptions-CrswitPs.js.map → mutationOptions-DyYFUbyn.js.map} +1 -1
  189. package/public/assets/passkey-BE9JvJOP.js +2 -0
  190. package/public/assets/{passkey-CU8x9J2w.js.map → passkey-BE9JvJOP.js.map} +1 -1
  191. package/public/assets/passkey-C5vUVgr_.js +2 -0
  192. package/public/assets/{passkey-UL_cNRnQ.js.map → passkey-C5vUVgr_.js.map} +1 -1
  193. package/public/assets/passkey-CynCz1Dt.js +2 -0
  194. package/public/assets/{passkey-CEx1VZ5R.js.map → passkey-CynCz1Dt.js.map} +1 -1
  195. package/public/assets/passkey-J1qnYp9A.js +2 -0
  196. package/public/assets/{passkey-B2Blw47e.js.map → passkey-J1qnYp9A.js.map} +1 -1
  197. package/public/assets/password-C5vUVgr_.js +2 -0
  198. package/public/assets/password-C5vUVgr_.js.map +1 -0
  199. package/public/assets/password-RkUttbhD.js +2 -0
  200. package/public/assets/password-RkUttbhD.js.map +1 -0
  201. package/public/assets/password-reset-sU5KkBKi.js +2 -0
  202. package/public/assets/{password-reset-CIacHnvA.js.map → password-reset-sU5KkBKi.js.map} +1 -1
  203. package/public/assets/{password-strength-C0Zkrrct.js → password-strength-BeSOu_Ga.js} +2 -2
  204. package/public/assets/{password-strength-C0Zkrrct.js.map → password-strength-BeSOu_Ga.js.map} +1 -1
  205. package/public/assets/{pin-input-BlD4tPZJ.js → pin-input-Cc-VkrQ3.js} +2 -2
  206. package/public/assets/{pin-input-BlD4tPZJ.js.map → pin-input-Cc-VkrQ3.js.map} +1 -1
  207. package/public/assets/{profile-D43Yq-6S.js → profile-B5NaJfeS.js} +2 -2
  208. package/public/assets/{profile-D43Yq-6S.js.map → profile-B5NaJfeS.js.map} +1 -1
  209. package/public/assets/{profile-D1cEjfs8.js → profile-BcjsVYOx.js} +2 -2
  210. package/public/assets/{profile-D1cEjfs8.js.map → profile-BcjsVYOx.js.map} +1 -1
  211. package/public/assets/recovery-PnUATiUi.js +2 -0
  212. package/public/assets/{recovery-CLExnfYX.js.map → recovery-PnUATiUi.js.map} +1 -1
  213. package/public/assets/register-C5vUVgr_.js +2 -0
  214. package/public/assets/{register-UL_cNRnQ.js.map → register-C5vUVgr_.js.map} +1 -1
  215. package/public/assets/register-DQXhru0_.js +2 -0
  216. package/public/assets/{register-CZUyWXRO.js.map → register-DQXhru0_.js.map} +1 -1
  217. package/public/assets/reset-C5vUVgr_.js +2 -0
  218. package/public/assets/{reset-UL_cNRnQ.js.map → reset-C5vUVgr_.js.map} +1 -1
  219. package/public/assets/reset-CQgIa3yf.js +2 -0
  220. package/public/assets/reset-CQgIa3yf.js.map +1 -0
  221. package/public/assets/select-C5vUVgr_.js +2 -0
  222. package/public/assets/{select-UL_cNRnQ.js.map → select-C5vUVgr_.js.map} +1 -1
  223. package/public/assets/{select-CWdSzsVo.js → select-DqZynXSt.js} +2 -2
  224. package/public/assets/{select-CWdSzsVo.js.map → select-DqZynXSt.js.map} +1 -1
  225. package/public/assets/{separator-BWGym8uM.js → separator-B0Bvh1he.js} +2 -2
  226. package/public/assets/{separator-BWGym8uM.js.map → separator-B0Bvh1he.js.map} +1 -1
  227. package/public/assets/shell-header-bar-CjG5qvPg.js +2 -0
  228. package/public/assets/{shell-header-bar-C9AB5lT-.js.map → shell-header-bar-CjG5qvPg.js.map} +1 -1
  229. package/public/assets/{terms-D43Yq-6S.js → terms-B5NaJfeS.js} +2 -2
  230. package/public/assets/{terms-D43Yq-6S.js.map → terms-B5NaJfeS.js.map} +1 -1
  231. package/public/assets/{terms-COVFmzyl.js → terms-BHDAgn-H.js} +2 -2
  232. package/public/assets/{terms-COVFmzyl.js.map → terms-BHDAgn-H.js.map} +1 -1
  233. package/public/assets/{terms-checkbox-list-Cw0zB-lO.js → terms-checkbox-list-6jteUTIZ.js} +2 -2
  234. package/public/assets/{terms-checkbox-list-Cw0zB-lO.js.map → terms-checkbox-list-6jteUTIZ.js.map} +1 -1
  235. package/public/assets/{totp-BfCm6IWl.js → totp-BNZ904Zm.js} +2 -2
  236. package/public/assets/{totp-BfCm6IWl.js.map → totp-BNZ904Zm.js.map} +1 -1
  237. package/public/assets/totp-CJtfVNEq.js +2 -0
  238. package/public/assets/{totp-BFJEXxk0.js.map → totp-CJtfVNEq.js.map} +1 -1
  239. package/public/assets/totp-ECvOUcFx.js +2 -0
  240. package/public/assets/{totp-MINhsVxT.js.map → totp-ECvOUcFx.js.map} +1 -1
  241. package/public/assets/use-totp-setup-BbS3XcZA.js +3 -0
  242. package/public/assets/{use-totp-setup-C7Zk_2IY.js.map → use-totp-setup-BbS3XcZA.js.map} +1 -1
  243. package/public/assets/{useAriaLabelledBy-CiOCg6X5.js → useAriaLabelledBy-ByuMi3Ry.js} +2 -2
  244. package/public/assets/{useAriaLabelledBy-CiOCg6X5.js.map → useAriaLabelledBy-ByuMi3Ry.js.map} +1 -1
  245. package/public/assets/{useMutation-ZLFeJg75.js → useMutation-BWZ0G4Td.js} +2 -2
  246. package/public/assets/{useMutation-ZLFeJg75.js.map → useMutation-BWZ0G4Td.js.map} +1 -1
  247. package/public/assets/useQuery-Ckxjmvtl.js +2 -0
  248. package/public/assets/{useQuery-BvMz34BW.js.map → useQuery-Ckxjmvtl.js.map} +1 -1
  249. package/public/assets/{users-COM7u3A-.js → users-CmFxrCQT.js} +2 -2
  250. package/public/assets/{users-COM7u3A-.js.map → users-CmFxrCQT.js.map} +1 -1
  251. package/public/index.html +3 -4
  252. package/dist/routes/api/auth/password/reset-required/post.d.ts +0 -18
  253. package/dist/routes/api/auth/password/reset-required/post.d.ts.map +0 -1
  254. package/dist/routes/api/auth/password/reset-required/post.js +0 -39
  255. package/dist/routes/api/auth/password/reset-required/post.js.map +0 -1
  256. package/dist/services/legacy-credential-retirement.service.d.ts +0 -20
  257. package/dist/services/legacy-credential-retirement.service.d.ts.map +0 -1
  258. package/dist/services/legacy-credential-retirement.service.js +0 -90
  259. package/dist/services/legacy-credential-retirement.service.js.map +0 -1
  260. package/public/assets/2fa-BgveHSB_.js +0 -2
  261. package/public/assets/2fa-C37MUkye.js +0 -2
  262. package/public/assets/2fa-UL_cNRnQ.js +0 -2
  263. package/public/assets/2fa-kiqzGSz2.js +0 -2
  264. package/public/assets/admin-DbDuu6AI.js +0 -2
  265. package/public/assets/admin-users-CwTJdiih.js +0 -2
  266. package/public/assets/config-v3-oy_ef.js +0 -2
  267. package/public/assets/config-v3-oy_ef.js.map +0 -1
  268. package/public/assets/email-UL_cNRnQ.js +0 -2
  269. package/public/assets/error-2VPY5w8V.js +0 -2
  270. package/public/assets/forgot-DzDcduho.js +0 -2
  271. package/public/assets/forgot-UL_cNRnQ.js +0 -2
  272. package/public/assets/index-gliHKncz.js +0 -11
  273. package/public/assets/index-gliHKncz.js.map +0 -1
  274. package/public/assets/link-BN90emXr.js +0 -2
  275. package/public/assets/link-BN90emXr.js.map +0 -1
  276. package/public/assets/lock-keyhole-Cz72xkCn.js +0 -2
  277. package/public/assets/lock-keyhole-Cz72xkCn.js.map +0 -1
  278. package/public/assets/login-C6m2qSUt.js +0 -2
  279. package/public/assets/login-C6m2qSUt.js.map +0 -1
  280. package/public/assets/login-UL_cNRnQ.js +0 -2
  281. package/public/assets/login-UL_cNRnQ.js.map +0 -1
  282. package/public/assets/passkey-B2Blw47e.js +0 -2
  283. package/public/assets/passkey-CEx1VZ5R.js +0 -2
  284. package/public/assets/passkey-CU8x9J2w.js +0 -2
  285. package/public/assets/passkey-UL_cNRnQ.js +0 -2
  286. package/public/assets/password-BhU_a0cR.js +0 -2
  287. package/public/assets/password-BhU_a0cR.js.map +0 -1
  288. package/public/assets/password-UL_cNRnQ.js +0 -2
  289. package/public/assets/password-UL_cNRnQ.js.map +0 -1
  290. package/public/assets/password-reset-CIacHnvA.js +0 -2
  291. package/public/assets/recovery-CLExnfYX.js +0 -2
  292. package/public/assets/register-CZUyWXRO.js +0 -2
  293. package/public/assets/register-UL_cNRnQ.js +0 -2
  294. package/public/assets/reset-N3RQTYEB.js +0 -2
  295. package/public/assets/reset-N3RQTYEB.js.map +0 -1
  296. package/public/assets/reset-UL_cNRnQ.js +0 -2
  297. package/public/assets/reset-required-Cv5edDS6.js +0 -2
  298. package/public/assets/reset-required-Cv5edDS6.js.map +0 -1
  299. package/public/assets/reset-required-UL_cNRnQ.js +0 -2
  300. package/public/assets/reset-required-UL_cNRnQ.js.map +0 -1
  301. package/public/assets/select-UL_cNRnQ.js +0 -2
  302. package/public/assets/shell-header-bar-C9AB5lT-.js +0 -2
  303. package/public/assets/totp-BFJEXxk0.js +0 -2
  304. package/public/assets/totp-MINhsVxT.js +0 -2
  305. package/public/assets/use-totp-setup-C7Zk_2IY.js +0 -3
  306. package/public/assets/useQuery-BvMz34BW.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"DialogHandle-Zvz8SgS0.js","names":["_formatErrorMessage","REASONS.closePress","_formatErrorMessage","REASONS.imperativeAction","_formatErrorMessage","REASONS.imperativeAction"],"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/dialog/root/DialogRootContext.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/dialog/close/DialogClose.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/dialog/description/DialogDescription.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/dialog/portal/DialogPortalContext.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/dialog/portal/DialogPortal.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/dialog/root/useDialogRoot.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/dialog/store/DialogStore.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/dialog/root/useRenderDialogRoot.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/dialog/title/DialogTitle.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/dialog/trigger/DialogTrigger.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/dialog/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/dialog/viewport/DialogViewport.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/dialog/store/DialogHandle.mjs"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const DialogRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DialogRootContext.displayName = \"DialogRootContext\";\nexport function useDialogRootContext(optional) {\n const store = React.useContext(DialogRootContext);\n if (!optional && store === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: DialogRootContext is missing. Dialog parts must be placed within <Dialog.Root>.' : _formatErrorMessage(27));\n }\n return store;\n}","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\n\n/**\n * A button that closes the dialog.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogClose = /*#__PURE__*/React.forwardRef(function DialogClose(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled = false,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const open = store.useState('open');\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const state = {\n disabled\n };\n function handleClick(event) {\n if (open) {\n store.setOpen(false, createChangeEventDetails(REASONS.closePress, event.nativeEvent));\n }\n }\n return useRenderElement('button', componentProps, {\n state,\n ref: [forwardedRef, buttonRef],\n props: [{\n onClick: handleClick\n }, elementProps, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogClose.displayName = \"DialogClose\";","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\n/**\n * A paragraph with additional information about the dialog.\n * Renders a `<p>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogDescription = /*#__PURE__*/React.forwardRef(function DialogDescription(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const id = useBaseUiId(idProp);\n store.useSyncedValueWithCleanup('descriptionElementId', id);\n return useRenderElement('p', componentProps, {\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogDescription.displayName = \"DialogDescription\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const DialogPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DialogPortalContext.displayName = \"DialogPortalContext\";\nexport function useDialogPortalContext() {\n const value = React.useContext(DialogPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Dialog.Portal> is missing.' : _formatErrorMessage(26));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { FloatingPortal } from \"../../floating-ui-react/index.mjs\";\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { DialogPortalContext } from \"./DialogPortalContext.mjs\";\nimport { InternalBackdrop } from \"../../utils/InternalBackdrop.mjs\";\n\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DialogPortal = /*#__PURE__*/React.forwardRef(function DialogPortal(props, forwardedRef) {\n const {\n keepMounted = false,\n ...portalProps\n } = props;\n const store = useDialogRootContext();\n const mounted = store.useState('mounted');\n const modal = store.useState('modal');\n const open = store.useState('open');\n const shouldRender = mounted || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(DialogPortalContext.Provider, {\n value: keepMounted,\n children: /*#__PURE__*/_jsxs(FloatingPortal, {\n ref: forwardedRef,\n ...portalProps,\n children: [mounted && modal === true && /*#__PURE__*/_jsx(InternalBackdrop, {\n ref: store.context.internalBackdropRef,\n inert: inertValue(!open)\n }), props.children]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogPortal.displayName = \"DialogPortal\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useScrollLock } from '@base-ui/utils/useScrollLock';\nimport { useDismiss } from \"../../floating-ui-react/index.mjs\";\nimport { contains, getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { usePopupInteractionProps } from \"../../utils/popups/index.mjs\";\nexport function DialogInteractions({\n store,\n parentContext,\n isDrawer\n}) {\n const open = store.useState('open');\n const disablePointerDismissal = store.useState('disablePointerDismissal');\n const modal = store.useState('modal');\n const popupElement = store.useState('popupElement');\n const floatingRootContext = store.useState('floatingRootContext');\n const [ownNestedOpenDialogs, setOwnNestedOpenDialogs] = React.useState(0);\n const [ownNestedOpenDrawers, setOwnNestedOpenDrawers] = React.useState(0);\n const isTopmost = ownNestedOpenDialogs === 0;\n const dismiss = useDismiss(floatingRootContext, {\n outsidePressEvent() {\n if (store.context.internalBackdropRef.current || store.context.backdropRef.current) {\n return 'intentional';\n }\n // Ensure `aria-hidden` on outside elements is removed immediately\n // on outside press when trapping focus.\n return {\n mouse: modal === 'trap-focus' ? 'sloppy' : 'intentional',\n touch: 'sloppy'\n };\n },\n outsidePress(event) {\n if (!store.context.outsidePressEnabledRef.current) {\n return false;\n }\n\n // For mouse events, only accept left button (button 0)\n // For touch events, a single touch is equivalent to left button\n if ('button' in event && event.button !== 0) {\n return false;\n }\n if ('touches' in event) {\n // Outside press can be handled on `touchend`, where the lifted point is\n // reported in `changedTouches` and `touches` contains any remaining\n // active points. Treat it as a single-finger tap only when exactly one\n // touch ended and no other fingers are still down.\n if (event.type === 'touchend') {\n if (event.changedTouches.length !== 1 || event.touches.length !== 0) {\n return false;\n }\n } else if (event.touches.length !== 1) {\n return false;\n }\n }\n const target = getTarget(event);\n if (isTopmost && !disablePointerDismissal) {\n // Only close if the click occurred on the dialog's owning backdrop.\n // This supports multiple modal dialogs that aren't nested in the React tree:\n // https://github.com/mui/base-ui/issues/1320\n if (modal) {\n const internalBackdrop = store.context.internalBackdropRef.current;\n const backdrop = store.context.backdropRef.current;\n return internalBackdrop || backdrop ? internalBackdrop === target || backdrop === target || contains(target, popupElement) && !target?.hasAttribute('data-base-ui-portal') : true;\n }\n return true;\n }\n return false;\n },\n escapeKey: isTopmost\n });\n useScrollLock(open && modal === true, popupElement);\n\n // Listen for nested open/close events on this store to maintain the counts.\n // A close notification is an open notification with zeroed counts.\n store.useContextCallback('onNestedDialogOpen', (dialogCount, drawerCount) => {\n setOwnNestedOpenDialogs(dialogCount);\n setOwnNestedOpenDrawers(drawerCount);\n });\n\n // Notify parent of our open/close state using parent callbacks, if any\n useIsoLayoutEffect(() => {\n if (parentContext?.onNestedDialogOpen) {\n if (open) {\n parentContext.onNestedDialogOpen(ownNestedOpenDialogs + 1, ownNestedOpenDrawers + (isDrawer ? 1 : 0));\n } else {\n parentContext.onNestedDialogOpen(0, 0);\n }\n }\n return () => {\n if (parentContext?.onNestedDialogOpen && open) {\n parentContext.onNestedDialogOpen(0, 0);\n }\n };\n }, [isDrawer, open, ownNestedOpenDialogs, ownNestedOpenDrawers, parentContext]);\n usePopupInteractionProps(store, {\n // `enabled` is not passed to `useDismiss`, so its props are always defined,\n // and `trigger` is the same object as `reference`.\n activeTriggerProps: dismiss.reference,\n inactiveTriggerProps: dismiss.trigger,\n // DialogPopup and DrawerPopup spread `FOCUSABLE_POPUP_PROPS` directly, so\n // this only needs to carry the dismiss handlers.\n popupProps: dismiss.floating,\n nestedOpenDialogCount: ownNestedOpenDialogs,\n nestedOpenDrawerCount: ownNestedOpenDrawers\n });\n return null;\n}","import * as React from 'react';\nimport { ReactStore } from '@base-ui/utils/store';\nimport { NullStore } from \"../../utils/NullStore.mjs\";\nimport { createPopupFloatingRootContext, createInitialPopupStoreState, popupStoreSelectors, PopupTriggerMap, setPopupOpenState } from \"../../utils/popups/index.mjs\";\nconst selectors = {\n ...popupStoreSelectors,\n modal: state => state.modal,\n nested: state => state.nested,\n nestedOpenDialogCount: state => state.nestedOpenDialogCount,\n nestedOpenDrawerCount: state => state.nestedOpenDrawerCount,\n disablePointerDismissal: state => state.disablePointerDismissal,\n openMethod: state => state.openMethod,\n descriptionElementId: state => state.descriptionElementId,\n titleElementId: state => state.titleElementId,\n viewportElement: state => state.viewportElement,\n role: state => state.role\n};\n\n/**\n * The subset of `DialogStore` that detached handle-backed triggers rely on. Both the real\n * `DialogStore` and the inert fallback store satisfy it, so a trigger can read from whichever\n * store the handle currently exposes.\n */\n\nexport class DialogStore extends ReactStore {\n constructor(initialState, floatingId, nested) {\n const triggerElements = new PopupTriggerMap();\n const state = createInitialState(initialState, triggerElements, floatingId, nested);\n super(state, createInitialContext(triggerElements), selectors);\n }\n setOpen = (nextOpen, eventDetails) => {\n eventDetails.preventUnmountOnClose = () => {\n this.set('preventUnmountingOnClose', true);\n };\n if (!nextOpen && eventDetails.trigger == null && this.state.activeTriggerId != null) {\n // When closing the dialog, pass the old trigger to the onOpenChange event\n // so it's not reset too early (potentially causing focus issues in controlled scenarios).\n eventDetails.trigger = this.state.activeTriggerElement ?? undefined;\n }\n this.context.onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);\n const updatedState = {\n open: nextOpen\n };\n setPopupOpenState(updatedState, nextOpen, eventDetails.trigger);\n this.update(updatedState);\n };\n}\n\n/**\n * Creates the inert fallback store used by detached handle-backed triggers while no\n * `Dialog.Root` is attached. It preserves a dialog-specific trigger registry in context so\n * detached triggers can register before migrating to the live root store.\n */\nexport function createNullDialogStore() {\n const triggerElements = new PopupTriggerMap();\n return new NullStore(Object.freeze(createInitialState(undefined, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors);\n}\nfunction createInitialState(initialState, triggerElements, floatingId, nested = false) {\n const state = {\n ...createInitialPopupStoreState(),\n modal: true,\n disablePointerDismissal: false,\n viewportElement: null,\n descriptionElementId: undefined,\n titleElementId: undefined,\n openMethod: null,\n nested: false,\n nestedOpenDialogCount: 0,\n nestedOpenDrawerCount: 0,\n role: 'dialog',\n ...initialState\n };\n state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);\n return state;\n}\nfunction createInitialContext(triggerElements) {\n return {\n popupRef: /*#__PURE__*/React.createRef(),\n backdropRef: /*#__PURE__*/React.createRef(),\n internalBackdropRef: /*#__PURE__*/React.createRef(),\n outsidePressEnabledRef: {\n current: true\n },\n triggerElements,\n onOpenChange: undefined,\n onOpenChangeComplete: undefined\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { DialogInteractions } from \"./useDialogRoot.mjs\";\nimport { DialogRootContext, useDialogRootContext } from \"./DialogRootContext.mjs\";\nimport { DialogStore } from \"../store/DialogStore.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useImplicitActiveTrigger, useOpenStateTransitions, PopupHandleAttachment, usePopupRootStore, usePopupRootSync } from \"../../utils/popups/index.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function useRenderDialogRoot(mode, props) {\n const {\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onOpenChangeComplete,\n disablePointerDismissal: disablePointerDismissalProp = false,\n modal: modalProp = true,\n actionsRef,\n handle,\n triggerId: triggerIdProp,\n defaultTriggerId: defaultTriggerIdProp = null\n } = props;\n const isDrawer = mode === 'drawer';\n const isAlertDialog = mode === 'alert-dialog';\n const modal = isAlertDialog ? true : modalProp;\n const disablePointerDismissal = isAlertDialog || disablePointerDismissalProp;\n const role = isAlertDialog ? 'alertdialog' : 'dialog';\n const parentStore = useDialogRootContext(true);\n const nested = parentStore != null;\n const rootState = {\n modal,\n disablePointerDismissal,\n nested,\n role\n };\n\n // The store is owned by this Root instance and created exactly once. It is not tied to the handle:\n // the handle attaches to it, so swapping the handle re-attaches rather than recreating state.\n // Default values are only initial values; controlled values and root state are synced after creation.\n // Dialogs pass the popup element to Floating UI as the floating element (`treatPopupAsFloatingElement`).\n const store = usePopupRootStore((floatingId, floatingNested) => new DialogStore({\n open: defaultOpen,\n openProp,\n activeTriggerId: defaultTriggerIdProp,\n triggerIdProp,\n ...rootState\n }, floatingId, floatingNested), true);\n store.useControlledProp('openProp', openProp);\n store.useControlledProp('triggerIdProp', triggerIdProp);\n store.useSyncedValues(rootState);\n store.useContextCallback('onOpenChange', onOpenChange);\n store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);\n const open = store.useState('open');\n const mounted = store.useState('mounted');\n const payload = store.useState('payload');\n usePopupRootSync(store, open);\n useImplicitActiveTrigger(store);\n const {\n forceUnmount\n } = useOpenStateTransitions(open, store);\n React.useImperativeHandle(actionsRef, () => ({\n unmount: forceUnmount,\n close: () => store.setOpen(false, createChangeEventDetails(REASONS.imperativeAction))\n }), [forceUnmount, store]);\n const shouldRenderInteractions = open || mounted;\n return /*#__PURE__*/_jsxs(DialogRootContext.Provider, {\n value: store,\n children: [handle && /*#__PURE__*/_jsx(PopupHandleAttachment, {\n handle: handle,\n store: store\n }), shouldRenderInteractions && /*#__PURE__*/_jsx(DialogInteractions, {\n store: store,\n parentContext: parentStore?.context,\n isDrawer: isDrawer\n }), typeof children === 'function' ? children({\n payload\n }) : children]\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\n/**\n * A heading that labels the dialog.\n * Renders an `<h2>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const id = useBaseUiId(idProp);\n store.useSyncedValueWithCleanup('titleElementId', id);\n return useRenderElement('h2', componentProps, {\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogTitle.displayName = \"DialogTitle\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useButton } from \"../../internals/use-button/useButton.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { CLICK_TRIGGER_IDENTIFIER } from \"../../internals/constants.mjs\";\nimport { usePopupHandleStore, useTriggerDataForwarding } from \"../../utils/popups/index.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useClick } from \"../../floating-ui-react/index.mjs\";\nimport { useOpenMethodTriggerProps } from \"../../utils/useOpenInteractionType.mjs\";\n\n/**\n * A button that opens the dialog.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogTrigger = /*#__PURE__*/React.forwardRef(function DialogTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled = false,\n nativeButton = true,\n id: idProp,\n payload,\n handle,\n ...elementProps\n } = componentProps;\n const dialogRootStore = useDialogRootContext(true);\n const handleStore = usePopupHandleStore(handle);\n const store = handleStore ?? dialogRootStore;\n if (!store) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Dialog.Trigger> must be used within <Dialog.Root> or provided with a handle.' : _formatErrorMessage(79));\n }\n const thisTriggerId = useBaseUiId(idProp);\n const floatingContext = store.useState('floatingRootContext');\n const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);\n const popupId = store.useState('triggerPopupId', thisTriggerId);\n const triggerElementRef = React.useRef(null);\n const {\n registerTrigger,\n isMountedByThisTrigger\n } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {\n payload\n });\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const click = useClick(floatingContext);\n const interactionTypeProps = useOpenMethodTriggerProps(() => store.select('open'), interactionType => {\n store.set('openMethod', interactionType);\n });\n const state = {\n disabled,\n open: isOpenedByThisTrigger\n };\n const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);\n return useRenderElement('button', componentProps, {\n state,\n ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],\n props: [click.reference, rootTriggerProps, interactionTypeProps, {\n [CLICK_TRIGGER_IDENTIFIER]: '',\n id: thisTriggerId,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': isOpenedByThisTrigger,\n 'aria-controls': popupId\n }, elementProps, getButtonProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogTrigger.displayName = \"DialogTrigger\";","import { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.mjs\";\n/**\n * Shared by `Dialog.Popup` and `Dialog.Viewport`, whose states have the same shape.\n * `nested` is not mapped: unmapped `true` booleans already render as `data-nested`.\n */\nexport const dialogStateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping,\n nestedDialogOpen(value) {\n return value ? {\n 'data-nested-dialog-open': ''\n } : null;\n }\n};","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useDialogPortalContext } from \"../portal/DialogPortalContext.mjs\";\nimport { dialogStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogViewport = /*#__PURE__*/React.forwardRef(function DialogViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = componentProps;\n const keepMounted = useDialogPortalContext();\n const store = useDialogRootContext();\n const open = store.useState('open');\n const nested = store.useState('nested');\n const transitionStatus = store.useState('transitionStatus');\n const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');\n const mounted = store.useState('mounted');\n const setViewportElement = store.useStateSetter('viewportElement');\n const nestedDialogOpen = nestedOpenDialogCount > 0;\n const state = {\n open,\n nested,\n transitionStatus,\n nestedDialogOpen\n };\n const shouldRender = keepMounted || mounted;\n return useRenderElement('div', componentProps, {\n enabled: shouldRender,\n state,\n ref: [forwardedRef, setViewportElement],\n stateAttributesMapping: dialogStateAttributesMapping,\n props: [{\n role: 'presentation',\n hidden: !mounted,\n style: {\n pointerEvents: !open ? 'none' : undefined\n },\n children\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogViewport.displayName = \"DialogViewport\";","import { createNullDialogStore } from \"./DialogStore.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { BasePopupHandle } from \"../../utils/popups/popupHandle.mjs\";\n\n/**\n * Controls a Dialog imperatively and associates detached `Dialog.Trigger` components with a\n * `Dialog.Root`. Create one with `Dialog.createHandle()` and pass it to the `handle` prop of the\n * root and of any triggers rendered outside of it.\n *\n * The imperative methods take effect only while a root using this handle is mounted; calls made\n * before a root attaches (or after it unmounts) are ignored.\n */\nexport class DialogHandle extends BasePopupHandle {\n constructor() {\n super(createNullDialogStore(), 'Dialog', false);\n }\n\n /**\n * Opens the dialog, optionally associating it with a trigger.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param triggerId ID of the trigger to associate with the dialog. The trigger must be a matching\n * `Dialog.Trigger` with this handle passed as a prop. Pass `null` to open without associating any trigger.\n */\n open(triggerId) {\n this.openByTrigger(triggerId);\n }\n\n /**\n * Opens the dialog with the given payload, without associating it with any trigger.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param payload Payload to set when opening the dialog. It is exposed to the root's render-prop children.\n */\n openWithPayload(payload) {\n const attachedStore = this.attachedStore;\n if (attachedStore === null) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Base UI: DialogHandle.openWithPayload() was called while no root using this handle is mounted. ' + 'The call and its payload were ignored; mount a root with this handle before opening it imperatively.');\n }\n return;\n }\n attachedStore.set('payload', payload);\n attachedStore.setOpen(true, createChangeEventDetails(REASONS.imperativeAction));\n }\n\n /**\n * Closes the dialog.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n */\n close() {\n this.closePopup();\n }\n\n /**\n * Whether the dialog is currently open. Returns `false` while no root is attached to the handle.\n */\n get isOpen() {\n return this.attachedStore?.select('open') ?? false;\n }\n}\n\n/**\n * Creates a new handle to connect a Dialog.Root with detached Dialog.Trigger components.\n */\nexport function createDialogHandle() {\n return new DialogHandle();\n}"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12],"mappings":"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"}
1
+ {"version":3,"file":"DialogHandle-BmtK2pRn.js","names":["_formatErrorMessage","REASONS.closePress","_formatErrorMessage","REASONS.imperativeAction","_formatErrorMessage","REASONS.imperativeAction"],"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/dialog/root/DialogRootContext.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/dialog/close/DialogClose.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/dialog/description/DialogDescription.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/dialog/portal/DialogPortalContext.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/dialog/portal/DialogPortal.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/dialog/root/useDialogRoot.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/dialog/store/DialogStore.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/dialog/root/useRenderDialogRoot.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/dialog/title/DialogTitle.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/dialog/trigger/DialogTrigger.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/dialog/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/dialog/viewport/DialogViewport.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/dialog/store/DialogHandle.mjs"],"sourcesContent":["'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const DialogRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DialogRootContext.displayName = \"DialogRootContext\";\nexport function useDialogRootContext(optional) {\n const store = React.useContext(DialogRootContext);\n if (!optional && store === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: DialogRootContext is missing. Dialog parts must be placed within <Dialog.Root>.' : _formatErrorMessage(27));\n }\n return store;\n}","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\n\n/**\n * A button that closes the dialog.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogClose = /*#__PURE__*/React.forwardRef(function DialogClose(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled = false,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const open = store.useState('open');\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const state = {\n disabled\n };\n function handleClick(event) {\n if (open) {\n store.setOpen(false, createChangeEventDetails(REASONS.closePress, event.nativeEvent));\n }\n }\n return useRenderElement('button', componentProps, {\n state,\n ref: [forwardedRef, buttonRef],\n props: [{\n onClick: handleClick\n }, elementProps, getButtonProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogClose.displayName = \"DialogClose\";","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\n/**\n * A paragraph with additional information about the dialog.\n * Renders a `<p>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogDescription = /*#__PURE__*/React.forwardRef(function DialogDescription(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const id = useBaseUiId(idProp);\n store.useSyncedValueWithCleanup('descriptionElementId', id);\n return useRenderElement('p', componentProps, {\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogDescription.displayName = \"DialogDescription\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const DialogPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") DialogPortalContext.displayName = \"DialogPortalContext\";\nexport function useDialogPortalContext() {\n const value = React.useContext(DialogPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Dialog.Portal> is missing.' : _formatErrorMessage(26));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { FloatingPortal } from \"../../floating-ui-react/index.mjs\";\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { DialogPortalContext } from \"./DialogPortalContext.mjs\";\nimport { InternalBackdrop } from \"../../utils/InternalBackdrop.mjs\";\n\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const DialogPortal = /*#__PURE__*/React.forwardRef(function DialogPortal(props, forwardedRef) {\n const {\n keepMounted = false,\n ...portalProps\n } = props;\n const store = useDialogRootContext();\n const mounted = store.useState('mounted');\n const modal = store.useState('modal');\n const open = store.useState('open');\n const shouldRender = mounted || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(DialogPortalContext.Provider, {\n value: keepMounted,\n children: /*#__PURE__*/_jsxs(FloatingPortal, {\n ref: forwardedRef,\n ...portalProps,\n children: [mounted && modal === true && /*#__PURE__*/_jsx(InternalBackdrop, {\n ref: store.context.internalBackdropRef,\n inert: inertValue(!open)\n }), props.children]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogPortal.displayName = \"DialogPortal\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useScrollLock } from '@base-ui/utils/useScrollLock';\nimport { useDismiss } from \"../../floating-ui-react/index.mjs\";\nimport { contains, getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { usePopupInteractionProps } from \"../../utils/popups/index.mjs\";\nexport function DialogInteractions({\n store,\n parentContext,\n isDrawer\n}) {\n const open = store.useState('open');\n const disablePointerDismissal = store.useState('disablePointerDismissal');\n const modal = store.useState('modal');\n const popupElement = store.useState('popupElement');\n const floatingRootContext = store.useState('floatingRootContext');\n const [ownNestedOpenDialogs, setOwnNestedOpenDialogs] = React.useState(0);\n const [ownNestedOpenDrawers, setOwnNestedOpenDrawers] = React.useState(0);\n const isTopmost = ownNestedOpenDialogs === 0;\n const dismiss = useDismiss(floatingRootContext, {\n outsidePressEvent() {\n if (store.context.internalBackdropRef.current || store.context.backdropRef.current) {\n return 'intentional';\n }\n // Ensure `aria-hidden` on outside elements is removed immediately\n // on outside press when trapping focus.\n return {\n mouse: modal === 'trap-focus' ? 'sloppy' : 'intentional',\n touch: 'sloppy'\n };\n },\n outsidePress(event) {\n if (!store.context.outsidePressEnabledRef.current) {\n return false;\n }\n\n // For mouse events, only accept left button (button 0)\n // For touch events, a single touch is equivalent to left button\n if ('button' in event && event.button !== 0) {\n return false;\n }\n if ('touches' in event) {\n // Outside press can be handled on `touchend`, where the lifted point is\n // reported in `changedTouches` and `touches` contains any remaining\n // active points. Treat it as a single-finger tap only when exactly one\n // touch ended and no other fingers are still down.\n if (event.type === 'touchend') {\n if (event.changedTouches.length !== 1 || event.touches.length !== 0) {\n return false;\n }\n } else if (event.touches.length !== 1) {\n return false;\n }\n }\n const target = getTarget(event);\n if (isTopmost && !disablePointerDismissal) {\n // Only close if the click occurred on the dialog's owning backdrop.\n // This supports multiple modal dialogs that aren't nested in the React tree:\n // https://github.com/mui/base-ui/issues/1320\n if (modal) {\n const internalBackdrop = store.context.internalBackdropRef.current;\n const backdrop = store.context.backdropRef.current;\n return internalBackdrop || backdrop ? internalBackdrop === target || backdrop === target || contains(target, popupElement) && !target?.hasAttribute('data-base-ui-portal') : true;\n }\n return true;\n }\n return false;\n },\n escapeKey: isTopmost\n });\n useScrollLock(open && modal === true, popupElement);\n\n // Listen for nested open/close events on this store to maintain the counts.\n // A close notification is an open notification with zeroed counts.\n store.useContextCallback('onNestedDialogOpen', (dialogCount, drawerCount) => {\n setOwnNestedOpenDialogs(dialogCount);\n setOwnNestedOpenDrawers(drawerCount);\n });\n\n // Notify parent of our open/close state using parent callbacks, if any\n useIsoLayoutEffect(() => {\n if (parentContext?.onNestedDialogOpen) {\n if (open) {\n parentContext.onNestedDialogOpen(ownNestedOpenDialogs + 1, ownNestedOpenDrawers + (isDrawer ? 1 : 0));\n } else {\n parentContext.onNestedDialogOpen(0, 0);\n }\n }\n return () => {\n if (parentContext?.onNestedDialogOpen && open) {\n parentContext.onNestedDialogOpen(0, 0);\n }\n };\n }, [isDrawer, open, ownNestedOpenDialogs, ownNestedOpenDrawers, parentContext]);\n usePopupInteractionProps(store, {\n // `enabled` is not passed to `useDismiss`, so its props are always defined,\n // and `trigger` is the same object as `reference`.\n activeTriggerProps: dismiss.reference,\n inactiveTriggerProps: dismiss.trigger,\n // DialogPopup and DrawerPopup spread `FOCUSABLE_POPUP_PROPS` directly, so\n // this only needs to carry the dismiss handlers.\n popupProps: dismiss.floating,\n nestedOpenDialogCount: ownNestedOpenDialogs,\n nestedOpenDrawerCount: ownNestedOpenDrawers\n });\n return null;\n}","import * as React from 'react';\nimport { ReactStore } from '@base-ui/utils/store';\nimport { NullStore } from \"../../utils/NullStore.mjs\";\nimport { createPopupFloatingRootContext, createInitialPopupStoreState, popupStoreSelectors, PopupTriggerMap, setPopupOpenState } from \"../../utils/popups/index.mjs\";\nconst selectors = {\n ...popupStoreSelectors,\n modal: state => state.modal,\n nested: state => state.nested,\n nestedOpenDialogCount: state => state.nestedOpenDialogCount,\n nestedOpenDrawerCount: state => state.nestedOpenDrawerCount,\n disablePointerDismissal: state => state.disablePointerDismissal,\n openMethod: state => state.openMethod,\n descriptionElementId: state => state.descriptionElementId,\n titleElementId: state => state.titleElementId,\n viewportElement: state => state.viewportElement,\n role: state => state.role\n};\n\n/**\n * The subset of `DialogStore` that detached handle-backed triggers rely on. Both the real\n * `DialogStore` and the inert fallback store satisfy it, so a trigger can read from whichever\n * store the handle currently exposes.\n */\n\nexport class DialogStore extends ReactStore {\n constructor(initialState, floatingId, nested) {\n const triggerElements = new PopupTriggerMap();\n const state = createInitialState(initialState, triggerElements, floatingId, nested);\n super(state, createInitialContext(triggerElements), selectors);\n }\n setOpen = (nextOpen, eventDetails) => {\n eventDetails.preventUnmountOnClose = () => {\n this.set('preventUnmountingOnClose', true);\n };\n if (!nextOpen && eventDetails.trigger == null && this.state.activeTriggerId != null) {\n // When closing the dialog, pass the old trigger to the onOpenChange event\n // so it's not reset too early (potentially causing focus issues in controlled scenarios).\n eventDetails.trigger = this.state.activeTriggerElement ?? undefined;\n }\n this.context.onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n this.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);\n const updatedState = {\n open: nextOpen\n };\n setPopupOpenState(updatedState, nextOpen, eventDetails.trigger);\n this.update(updatedState);\n };\n}\n\n/**\n * Creates the inert fallback store used by detached handle-backed triggers while no\n * `Dialog.Root` is attached. It preserves a dialog-specific trigger registry in context so\n * detached triggers can register before migrating to the live root store.\n */\nexport function createNullDialogStore() {\n const triggerElements = new PopupTriggerMap();\n return new NullStore(Object.freeze(createInitialState(undefined, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors);\n}\nfunction createInitialState(initialState, triggerElements, floatingId, nested = false) {\n const state = {\n ...createInitialPopupStoreState(),\n modal: true,\n disablePointerDismissal: false,\n viewportElement: null,\n descriptionElementId: undefined,\n titleElementId: undefined,\n openMethod: null,\n nested: false,\n nestedOpenDialogCount: 0,\n nestedOpenDrawerCount: 0,\n role: 'dialog',\n ...initialState\n };\n state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);\n return state;\n}\nfunction createInitialContext(triggerElements) {\n return {\n popupRef: /*#__PURE__*/React.createRef(),\n backdropRef: /*#__PURE__*/React.createRef(),\n internalBackdropRef: /*#__PURE__*/React.createRef(),\n outsidePressEnabledRef: {\n current: true\n },\n triggerElements,\n onOpenChange: undefined,\n onOpenChangeComplete: undefined\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { DialogInteractions } from \"./useDialogRoot.mjs\";\nimport { DialogRootContext, useDialogRootContext } from \"./DialogRootContext.mjs\";\nimport { DialogStore } from \"../store/DialogStore.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useImplicitActiveTrigger, useOpenStateTransitions, PopupHandleAttachment, usePopupRootStore, usePopupRootSync } from \"../../utils/popups/index.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function useRenderDialogRoot(mode, props) {\n const {\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n onOpenChangeComplete,\n disablePointerDismissal: disablePointerDismissalProp = false,\n modal: modalProp = true,\n actionsRef,\n handle,\n triggerId: triggerIdProp,\n defaultTriggerId: defaultTriggerIdProp = null\n } = props;\n const isDrawer = mode === 'drawer';\n const isAlertDialog = mode === 'alert-dialog';\n const modal = isAlertDialog ? true : modalProp;\n const disablePointerDismissal = isAlertDialog || disablePointerDismissalProp;\n const role = isAlertDialog ? 'alertdialog' : 'dialog';\n const parentStore = useDialogRootContext(true);\n const nested = parentStore != null;\n const rootState = {\n modal,\n disablePointerDismissal,\n nested,\n role\n };\n\n // The store is owned by this Root instance and created exactly once. It is not tied to the handle:\n // the handle attaches to it, so swapping the handle re-attaches rather than recreating state.\n // Default values are only initial values; controlled values and root state are synced after creation.\n // Dialogs pass the popup element to Floating UI as the floating element (`treatPopupAsFloatingElement`).\n const store = usePopupRootStore((floatingId, floatingNested) => new DialogStore({\n open: defaultOpen,\n openProp,\n activeTriggerId: defaultTriggerIdProp,\n triggerIdProp,\n ...rootState\n }, floatingId, floatingNested), true);\n store.useControlledProp('openProp', openProp);\n store.useControlledProp('triggerIdProp', triggerIdProp);\n store.useSyncedValues(rootState);\n store.useContextCallback('onOpenChange', onOpenChange);\n store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);\n const open = store.useState('open');\n const mounted = store.useState('mounted');\n const payload = store.useState('payload');\n usePopupRootSync(store, open);\n useImplicitActiveTrigger(store);\n const {\n forceUnmount\n } = useOpenStateTransitions(open, store);\n React.useImperativeHandle(actionsRef, () => ({\n unmount: forceUnmount,\n close: () => store.setOpen(false, createChangeEventDetails(REASONS.imperativeAction))\n }), [forceUnmount, store]);\n const shouldRenderInteractions = open || mounted;\n return /*#__PURE__*/_jsxs(DialogRootContext.Provider, {\n value: store,\n children: [handle && /*#__PURE__*/_jsx(PopupHandleAttachment, {\n handle: handle,\n store: store\n }), shouldRenderInteractions && /*#__PURE__*/_jsx(DialogInteractions, {\n store: store,\n parentContext: parentStore?.context,\n isDrawer: isDrawer\n }), typeof children === 'function' ? children({\n payload\n }) : children]\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\n/**\n * A heading that labels the dialog.\n * Renders an `<h2>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogTitle = /*#__PURE__*/React.forwardRef(function DialogTitle(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const store = useDialogRootContext();\n const id = useBaseUiId(idProp);\n store.useSyncedValueWithCleanup('titleElementId', id);\n return useRenderElement('h2', componentProps, {\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogTitle.displayName = \"DialogTitle\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useButton } from \"../../internals/use-button/useButton.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { CLICK_TRIGGER_IDENTIFIER } from \"../../internals/constants.mjs\";\nimport { usePopupHandleStore, useTriggerDataForwarding } from \"../../utils/popups/index.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useClick } from \"../../floating-ui-react/index.mjs\";\nimport { useOpenMethodTriggerProps } from \"../../utils/useOpenInteractionType.mjs\";\n\n/**\n * A button that opens the dialog.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogTrigger = /*#__PURE__*/React.forwardRef(function DialogTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n disabled = false,\n nativeButton = true,\n id: idProp,\n payload,\n handle,\n ...elementProps\n } = componentProps;\n const dialogRootStore = useDialogRootContext(true);\n const handleStore = usePopupHandleStore(handle);\n const store = handleStore ?? dialogRootStore;\n if (!store) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Dialog.Trigger> must be used within <Dialog.Root> or provided with a handle.' : _formatErrorMessage(79));\n }\n const thisTriggerId = useBaseUiId(idProp);\n const floatingContext = store.useState('floatingRootContext');\n const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);\n const popupId = store.useState('triggerPopupId', thisTriggerId);\n const triggerElementRef = React.useRef(null);\n const {\n registerTrigger,\n isMountedByThisTrigger\n } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {\n payload\n });\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const click = useClick(floatingContext);\n const interactionTypeProps = useOpenMethodTriggerProps(() => store.select('open'), interactionType => {\n store.set('openMethod', interactionType);\n });\n const state = {\n disabled,\n open: isOpenedByThisTrigger\n };\n const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);\n return useRenderElement('button', componentProps, {\n state,\n ref: [buttonRef, forwardedRef, registerTrigger, triggerElementRef],\n props: [click.reference, rootTriggerProps, interactionTypeProps, {\n [CLICK_TRIGGER_IDENTIFIER]: '',\n id: thisTriggerId,\n 'aria-haspopup': 'dialog',\n 'aria-expanded': isOpenedByThisTrigger,\n 'aria-controls': popupId\n }, elementProps, getButtonProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogTrigger.displayName = \"DialogTrigger\";","import { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.mjs\";\n/**\n * Shared by `Dialog.Popup` and `Dialog.Viewport`, whose states have the same shape.\n * `nested` is not mapped: unmapped `true` booleans already render as `data-nested`.\n */\nexport const dialogStateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping,\n nestedDialogOpen(value) {\n return value ? {\n 'data-nested-dialog-open': ''\n } : null;\n }\n};","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useDialogRootContext } from \"../root/DialogRootContext.mjs\";\nimport { useDialogPortalContext } from \"../portal/DialogPortalContext.mjs\";\nimport { dialogStateAttributesMapping } from \"../utils/stateAttributesMapping.mjs\";\n\n/**\n * A positioning container for the dialog popup that can be made scrollable.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Dialog](https://base-ui.com/react/components/dialog)\n */\nexport const DialogViewport = /*#__PURE__*/React.forwardRef(function DialogViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = componentProps;\n const keepMounted = useDialogPortalContext();\n const store = useDialogRootContext();\n const open = store.useState('open');\n const nested = store.useState('nested');\n const transitionStatus = store.useState('transitionStatus');\n const nestedOpenDialogCount = store.useState('nestedOpenDialogCount');\n const mounted = store.useState('mounted');\n const setViewportElement = store.useStateSetter('viewportElement');\n const nestedDialogOpen = nestedOpenDialogCount > 0;\n const state = {\n open,\n nested,\n transitionStatus,\n nestedDialogOpen\n };\n const shouldRender = keepMounted || mounted;\n return useRenderElement('div', componentProps, {\n enabled: shouldRender,\n state,\n ref: [forwardedRef, setViewportElement],\n stateAttributesMapping: dialogStateAttributesMapping,\n props: [{\n role: 'presentation',\n hidden: !mounted,\n style: {\n pointerEvents: !open ? 'none' : undefined\n },\n children\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") DialogViewport.displayName = \"DialogViewport\";","import { createNullDialogStore } from \"./DialogStore.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { BasePopupHandle } from \"../../utils/popups/popupHandle.mjs\";\n\n/**\n * Controls a Dialog imperatively and associates detached `Dialog.Trigger` components with a\n * `Dialog.Root`. Create one with `Dialog.createHandle()` and pass it to the `handle` prop of the\n * root and of any triggers rendered outside of it.\n *\n * The imperative methods take effect only while a root using this handle is mounted; calls made\n * before a root attaches (or after it unmounts) are ignored.\n */\nexport class DialogHandle extends BasePopupHandle {\n constructor() {\n super(createNullDialogStore(), 'Dialog', false);\n }\n\n /**\n * Opens the dialog, optionally associating it with a trigger.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param triggerId ID of the trigger to associate with the dialog. The trigger must be a matching\n * `Dialog.Trigger` with this handle passed as a prop. Pass `null` to open without associating any trigger.\n */\n open(triggerId) {\n this.openByTrigger(triggerId);\n }\n\n /**\n * Opens the dialog with the given payload, without associating it with any trigger.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param payload Payload to set when opening the dialog. It is exposed to the root's render-prop children.\n */\n openWithPayload(payload) {\n const attachedStore = this.attachedStore;\n if (attachedStore === null) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Base UI: DialogHandle.openWithPayload() was called while no root using this handle is mounted. ' + 'The call and its payload were ignored; mount a root with this handle before opening it imperatively.');\n }\n return;\n }\n attachedStore.set('payload', payload);\n attachedStore.setOpen(true, createChangeEventDetails(REASONS.imperativeAction));\n }\n\n /**\n * Closes the dialog.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n */\n close() {\n this.closePopup();\n }\n\n /**\n * Whether the dialog is currently open. Returns `false` while no root is attached to the handle.\n */\n get isOpen() {\n return this.attachedStore?.select('open') ?? false;\n }\n}\n\n/**\n * Creates a new handle to connect a Dialog.Root with detached Dialog.Trigger components.\n */\nexport function createDialogHandle() {\n return new DialogHandle();\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{i as e,n as t,q as n,t as r}from"./createLucideIcon-BPpAIXR_.js";import{Sn as i,t as a}from"./config-DTQCUlfZ.js";import{tt as o}from"./shell-header-bar-CjG5qvPg.js";import{c as s,l as c,o as l,s as u,t as d,u as f}from"./admin-users-DvPbw1Vq.js";import{B as p,H as m,g as h,z as g}from"./index-CS23Ozt6.js";import{t as _}from"./badge-CsOfUji0.js";var v=r(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),y=n();function b(){let e=h.useRouteContext({select:e=>e.user});return e?.role===`admin`?(0,y.jsx)(x,{user:e}):(0,y.jsx)(f,{reason:`access-required`})}function x({user:e}){let{data:t}=o(a);return t.admin.enabled?(0,y.jsx)(S,{user:e}):(0,y.jsx)(f,{reason:`console-disabled`})}function S({user:n}){let{t:r}=e(),[a,o,f,h]=m({queries:[d(),d({pageSize:1,role:`admin`}),d({managedBy:`config`,pageSize:1}),d({managedBy:`database`,pageSize:1})]}),b=a.data,x=f.data.pagination.total,S=h.data.pagination.total,w=o.data.pagination.total;return(0,y.jsxs)(u,{current:`dashboard`,description:r(`admin.dashboardDescription`),title:r(`admin.dashboardTitle`),user:n,children:[(0,y.jsxs)(`div`,{className:`flex flex-col divide-y divide-tinyrack-border overflow-hidden rounded-tinyrack-lg border border-tinyrack-border bg-tinyrack-surface shadow-tinyrack-raised lg:flex-row lg:divide-x lg:divide-y-0`,children:[(0,y.jsx)(l,{accent:`bg-tinyrack-primary`,hint:r(`admin.metrics.totalUsersHint`),label:r(`admin.metrics.totalUsers`),value:b.pagination.total}),(0,y.jsx)(l,{accent:`bg-tinyrack-success`,hint:r(`admin.metrics.adminsHint`),label:r(`admin.metrics.admins`),value:w}),(0,y.jsx)(l,{accent:`bg-tinyrack-info`,hint:r(`admin.metrics.databaseUsersHint`),label:r(`admin.metrics.databaseUsers`),value:S})]}),(0,y.jsxs)(`div`,{className:`grid gap-tinyrack-xl xl:grid-cols-3`,children:[(0,y.jsx)(p.Root,{className:`overflow-hidden border-tinyrack-border shadow-tinyrack-raised xl:col-span-2`,variant:`outlined`,children:(0,y.jsxs)(p.Content,{className:`p-0`,children:[(0,y.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-lg border-tinyrack-border border-b-tinyrack-default p-tinyrack-xl sm:flex-row sm:items-center sm:justify-between`,children:[(0,y.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-sm`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,y.jsx)(v,{"aria-hidden":!0,className:`size-tinyrack-lg text-tinyrack-primary`}),(0,y.jsx)(t,{color:`muted`,variant:`label`,children:r(`admin.identityGraph`)})]}),(0,y.jsx)(p.Title,{children:r(`admin.users.title`)}),(0,y.jsx)(p.Description,{className:`text-tinyrack-sm`,children:r(`admin.users.description`)})]}),(0,y.jsx)(g,{intent:`primary`,render:(0,y.jsx)(i,{to:`/admin/users`}),uiSize:`sm`,children:r(`admin.users.open`)})]}),(0,y.jsx)(`div`,{className:`grid divide-y divide-tinyrack-border [gap:0] md:grid-cols-2 md:divide-x md:divide-y-0`,children:b.users.slice(0,4).map(e=>(0,y.jsxs)(i,{className:`group flex flex-col gap-tinyrack-lg bg-tinyrack-surface p-tinyrack-lg transition hover:bg-tinyrack-surface-hover`,to:`/admin/users`,children:[(0,y.jsxs)(`div`,{className:`flex items-start justify-between gap-tinyrack-lg`,children:[(0,y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-tinyrack-xs`,children:[(0,y.jsx)(t,{as:`p`,truncate:!0,variant:`bodySm`,weight:`medium`,children:e.email}),(0,y.jsx)(t,{as:`p`,color:`muted`,truncate:!0,variant:`caption`,children:(0,y.jsx)(`span`,{className:`font-tinyrack-mono`,children:e.sub})})]}),(0,y.jsx)(_,{className:`shrink-0`,uiSize:`md`,variant:e.role===`admin`?`neutral`:void 0,children:s(r,e.role)})]}),(0,y.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-sm`,children:[(0,y.jsx)(_,{uiSize:`md`,children:c(r,e.managed_by)}),(0,y.jsxs)(t,{color:`muted`,variant:`caption`,children:[r(`admin.users.verifiedLabel`),` `,e.email_verified?r(`common.yes`):r(`common.no`)]})]})]},e.sub))})]})}),(0,y.jsx)(p.Root,{className:`overflow-hidden border-tinyrack-border shadow-tinyrack-raised`,variant:`outlined`,children:(0,y.jsxs)(p.Content,{className:`flex flex-col items-start gap-tinyrack-md`,children:[(0,y.jsx)(_,{uiSize:`md`,variant:`neutral`,children:r(`admin.policy.title`)}),(0,y.jsx)(p.Title,{className:`text-tinyrack-xl`,children:r(`admin.policy.heading`)}),(0,y.jsx)(p.Description,{className:`text-tinyrack-sm`,children:r(`admin.policy.description`)}),(0,y.jsxs)(`div`,{className:`flex w-full flex-col gap-tinyrack-md`,children:[(0,y.jsx)(C,{label:r(`admin.metrics.configUsers`),value:x}),(0,y.jsx)(C,{label:r(`admin.metrics.databaseUsers`),value:S}),(0,y.jsx)(C,{label:r(`admin.policy.configReadonly`),value:r(`common.on`)})]})]})})]})]})}function C({label:e,value:n}){return(0,y.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-sm rounded-tinyrack-md border border-tinyrack-border bg-tinyrack-surface-muted px-tinyrack-lg py-tinyrack-md`,children:[(0,y.jsx)(t,{color:`muted`,variant:`bodySm`,children:e}),(0,y.jsx)(_,{uiSize:`md`,variant:`neutral`,children:n})]})}export{b as component};
2
+ //# sourceMappingURL=admin-BPijkLw-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-DbDuu6AI.js","names":["useSuspenseQueries","useSuspenseQuery","Link","TRBadge","TRCard","TRLinkButton","TRText","NetworkIcon","useTranslation","AdminGateScreen","AdminShell","AdminStat","formatAdminRole","formatManagedBy","adminUsersQueryOptions","appConfigQueryOptions","Route","AdminDashboard","user","useRouteContext","select","context","role","AdminDashboardGate","SessionUser","data","config","admin","enabled","AdminDashboardContent","t","usersQuery","adminQuery","configQuery","databaseQuery","queries","pageSize","managedBy","configUsers","pagination","total","databaseUsers","admins","users","slice","map","managedUser","sub","email","undefined","managed_by","email_verified","PolicyRow","label","value","component"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/network.mjs","../../../frontend/src/routes/admin/index.tsx?tsr-split=component"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { x: \"16\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"4q2zg0\" }],\n [\"rect\", { x: \"2\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"8cvhb9\" }],\n [\"rect\", { x: \"9\", y: \"2\", width: \"6\", height: \"6\", rx: \"1\", key: \"1egb70\" }],\n [\"path\", { d: \"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\", key: \"1jsf9p\" }],\n [\"path\", { d: \"M12 12V8\", key: \"2874zd\" }]\n];\nconst Network = createLucideIcon(\"network\", __iconNode);\n\nexport { __iconNode, Network as default };\n//# sourceMappingURL=network.mjs.map\n","import { useSuspenseQueries, useSuspenseQuery } from '@tanstack/react-query';\nimport { createFileRoute, Link, redirect } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRCard } from '@tinyrack/ui/components/card';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { NetworkIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { AdminGateScreen } from '#frontend/features/admin/admin-gate-screen.tsx';\nimport { AdminShell } from '#frontend/features/admin/admin-shell.tsx';\nimport { AdminStat } from '#frontend/features/admin/admin-stat.tsx';\nimport {\n formatAdminRole,\n formatManagedBy,\n} from '#frontend/features/admin/format-admin-user.ts';\nimport { adminUsersQueryOptions } from '#frontend/queries/admin-users.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport type { SessionUser } from '#frontend/queries/session.ts';\nexport const Route = createFileRoute('/admin/')({\n component: AdminDashboard,\n beforeLoad: async ({ context }) => {\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n});\n\nfunction AdminDashboard() {\n const user = Route.useRouteContext({ select: (context) => context.user });\n\n if (user?.role !== 'admin') {\n return <AdminGateScreen reason=\"access-required\" />;\n }\n\n return <AdminDashboardGate user={user} />;\n}\n\nfunction AdminDashboardGate({ user }: { user: SessionUser }) {\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n if (!config.admin.enabled) {\n return <AdminGateScreen reason=\"console-disabled\" />;\n }\n return <AdminDashboardContent user={user} />;\n}\n\nfunction AdminDashboardContent({ user }: { user: SessionUser }) {\n const { t } = useTranslation();\n const [usersQuery, adminQuery, configQuery, databaseQuery] =\n useSuspenseQueries({\n queries: [\n adminUsersQueryOptions(),\n adminUsersQueryOptions({ pageSize: 1, role: 'admin' }),\n adminUsersQueryOptions({ managedBy: 'config', pageSize: 1 }),\n adminUsersQueryOptions({ managedBy: 'database', pageSize: 1 }),\n ],\n });\n const data = usersQuery.data;\n const configUsers = configQuery.data.pagination.total;\n const databaseUsers = databaseQuery.data.pagination.total;\n const admins = adminQuery.data.pagination.total;\n\n return (\n <AdminShell\n current=\"dashboard\"\n description={t('admin.dashboardDescription')}\n title={t('admin.dashboardTitle')}\n user={user}\n >\n <div className=\"flex flex-col divide-y divide-tinyrack-border overflow-hidden rounded-tinyrack-lg border border-tinyrack-border bg-tinyrack-surface shadow-tinyrack-raised lg:flex-row lg:divide-x lg:divide-y-0\">\n <AdminStat\n accent=\"bg-tinyrack-primary\"\n hint={t('admin.metrics.totalUsersHint')}\n label={t('admin.metrics.totalUsers')}\n value={data.pagination.total}\n />\n <AdminStat\n accent=\"bg-tinyrack-success\"\n hint={t('admin.metrics.adminsHint')}\n label={t('admin.metrics.admins')}\n value={admins}\n />\n <AdminStat\n accent=\"bg-tinyrack-info\"\n hint={t('admin.metrics.databaseUsersHint')}\n label={t('admin.metrics.databaseUsers')}\n value={databaseUsers}\n />\n </div>\n\n {/* 2:1 rather than the 1.35:0.75 arbitrary value — the same ratio to the eye. */}\n <div className=\"grid gap-tinyrack-xl xl:grid-cols-3\">\n <TRCard.Root\n className=\"overflow-hidden border-tinyrack-border shadow-tinyrack-raised xl:col-span-2\"\n variant=\"outlined\"\n >\n <TRCard.Content className=\"p-0\">\n <div className=\"flex flex-col gap-tinyrack-lg border-tinyrack-border border-b-tinyrack-default p-tinyrack-xl sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex flex-col gap-tinyrack-sm\">\n <div className=\"flex items-center gap-tinyrack-sm\">\n <NetworkIcon\n aria-hidden\n className=\"size-tinyrack-lg text-tinyrack-primary\"\n />\n <TRText color=\"muted\" variant=\"label\">\n {t('admin.identityGraph')}\n </TRText>\n </div>\n <TRCard.Title>{t('admin.users.title')}</TRCard.Title>\n <TRCard.Description className=\"text-tinyrack-sm\">\n {t('admin.users.description')}\n </TRCard.Description>\n </div>\n <TRLinkButton\n intent=\"primary\"\n render={<Link to=\"/admin/users\" />}\n uiSize=\"sm\"\n >\n {t('admin.users.open')}\n </TRLinkButton>\n </div>\n\n <div className=\"grid divide-y divide-tinyrack-border [gap:0] md:grid-cols-2 md:divide-x md:divide-y-0\">\n {data.users.slice(0, 4).map((managedUser) => (\n <Link\n className=\"group flex flex-col gap-tinyrack-lg bg-tinyrack-surface p-tinyrack-lg transition hover:bg-tinyrack-surface-hover\"\n key={managedUser.sub}\n to=\"/admin/users\"\n >\n <div className=\"flex items-start justify-between gap-tinyrack-lg\">\n <div className=\"flex min-w-0 flex-col gap-tinyrack-xs\">\n <TRText as=\"p\" truncate variant=\"bodySm\" weight=\"medium\">\n {managedUser.email}\n </TRText>\n {/*\n Mono on a bare span: a font utility on `TRText` loses to\n the component's own per-variant `font-family` rule.\n */}\n <TRText as=\"p\" color=\"muted\" truncate variant=\"caption\">\n <span className=\"font-tinyrack-mono\">\n {managedUser.sub}\n </span>\n </TRText>\n </div>\n {/* `shrink-0`: without it the tile squeezes the badge and\n \"User\" wraps to two lines. */}\n <TRBadge\n className=\"shrink-0\"\n uiSize=\"md\"\n variant={\n managedUser.role === 'admin' ? 'neutral' : undefined\n }\n >\n {formatAdminRole(t, managedUser.role)}\n </TRBadge>\n </div>\n <div className=\"flex items-center justify-between gap-tinyrack-sm\">\n <TRBadge uiSize=\"md\">\n {formatManagedBy(t, managedUser.managed_by)}\n </TRBadge>\n <TRText color=\"muted\" variant=\"caption\">\n {t('admin.users.verifiedLabel')}{' '}\n {managedUser.email_verified\n ? t('common.yes')\n : t('common.no')}\n </TRText>\n </div>\n </Link>\n ))}\n </div>\n </TRCard.Content>\n </TRCard.Root>\n\n <TRCard.Root\n className=\"overflow-hidden border-tinyrack-border shadow-tinyrack-raised\"\n variant=\"outlined\"\n >\n <TRCard.Content className=\"flex flex-col items-start gap-tinyrack-md\">\n <TRBadge uiSize=\"md\" variant=\"neutral\">\n {t('admin.policy.title')}\n </TRBadge>\n <TRCard.Title className=\"text-tinyrack-xl\">\n {t('admin.policy.heading')}\n </TRCard.Title>\n <TRCard.Description className=\"text-tinyrack-sm\">\n {t('admin.policy.description')}\n </TRCard.Description>\n <div className=\"flex w-full flex-col gap-tinyrack-md\">\n <PolicyRow\n label={t('admin.metrics.configUsers')}\n value={configUsers}\n />\n <PolicyRow\n label={t('admin.metrics.databaseUsers')}\n value={databaseUsers}\n />\n <PolicyRow\n label={t('admin.policy.configReadonly')}\n value={t('common.on')}\n />\n </div>\n </TRCard.Content>\n </TRCard.Root>\n </div>\n </AdminShell>\n );\n}\n\nfunction PolicyRow({\n label,\n value,\n}: {\n label: string;\n value: number | string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-tinyrack-sm rounded-tinyrack-md border border-tinyrack-border bg-tinyrack-surface-muted px-tinyrack-lg py-tinyrack-md\">\n <TRText color=\"muted\" variant=\"bodySm\">\n {label}\n </TRText>\n <TRBadge uiSize=\"md\" variant=\"neutral\">\n {value}\n </TRBadge>\n </div>\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"admin-BPijkLw-.js","names":["useSuspenseQueries","useSuspenseQuery","Link","TRBadge","TRCard","TRLinkButton","TRText","NetworkIcon","useTranslation","AdminGateScreen","AdminShell","AdminStat","formatAdminRole","formatManagedBy","adminUsersQueryOptions","appConfigQueryOptions","Route","AdminDashboard","user","useRouteContext","select","context","role","AdminDashboardGate","SessionUser","data","config","admin","enabled","AdminDashboardContent","t","usersQuery","adminQuery","configQuery","databaseQuery","queries","pageSize","managedBy","configUsers","pagination","total","databaseUsers","admins","users","slice","map","managedUser","sub","email","undefined","managed_by","email_verified","PolicyRow","label","value","component"],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/network.mjs","../../../frontend/src/routes/admin/index.tsx?tsr-split=component"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { x: \"16\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"4q2zg0\" }],\n [\"rect\", { x: \"2\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"8cvhb9\" }],\n [\"rect\", { x: \"9\", y: \"2\", width: \"6\", height: \"6\", rx: \"1\", key: \"1egb70\" }],\n [\"path\", { d: \"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\", key: \"1jsf9p\" }],\n [\"path\", { d: \"M12 12V8\", key: \"2874zd\" }]\n];\nconst Network = createLucideIcon(\"network\", __iconNode);\n\nexport { __iconNode, Network as default };\n//# sourceMappingURL=network.mjs.map\n","import { useSuspenseQueries, useSuspenseQuery } from '@tanstack/react-query';\nimport { createFileRoute, Link, redirect } from '@tanstack/react-router';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRCard } from '@tinyrack/ui/components/card';\nimport { TRLinkButton } from '@tinyrack/ui/components/link-button';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { NetworkIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { AdminGateScreen } from '#frontend/features/admin/admin-gate-screen.tsx';\nimport { AdminShell } from '#frontend/features/admin/admin-shell.tsx';\nimport { AdminStat } from '#frontend/features/admin/admin-stat.tsx';\nimport {\n formatAdminRole,\n formatManagedBy,\n} from '#frontend/features/admin/format-admin-user.ts';\nimport { adminUsersQueryOptions } from '#frontend/queries/admin-users.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\nimport type { SessionUser } from '#frontend/queries/session.ts';\nexport const Route = createFileRoute('/admin/')({\n component: AdminDashboard,\n beforeLoad: async ({ context }) => {\n if (!context.user) {\n throw redirect({\n to: '/login',\n });\n }\n },\n});\n\nfunction AdminDashboard() {\n const user = Route.useRouteContext({ select: (context) => context.user });\n\n if (user?.role !== 'admin') {\n return <AdminGateScreen reason=\"access-required\" />;\n }\n\n return <AdminDashboardGate user={user} />;\n}\n\nfunction AdminDashboardGate({ user }: { user: SessionUser }) {\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n if (!config.admin.enabled) {\n return <AdminGateScreen reason=\"console-disabled\" />;\n }\n return <AdminDashboardContent user={user} />;\n}\n\nfunction AdminDashboardContent({ user }: { user: SessionUser }) {\n const { t } = useTranslation();\n const [usersQuery, adminQuery, configQuery, databaseQuery] =\n useSuspenseQueries({\n queries: [\n adminUsersQueryOptions(),\n adminUsersQueryOptions({ pageSize: 1, role: 'admin' }),\n adminUsersQueryOptions({ managedBy: 'config', pageSize: 1 }),\n adminUsersQueryOptions({ managedBy: 'database', pageSize: 1 }),\n ],\n });\n const data = usersQuery.data;\n const configUsers = configQuery.data.pagination.total;\n const databaseUsers = databaseQuery.data.pagination.total;\n const admins = adminQuery.data.pagination.total;\n\n return (\n <AdminShell\n current=\"dashboard\"\n description={t('admin.dashboardDescription')}\n title={t('admin.dashboardTitle')}\n user={user}\n >\n <div className=\"flex flex-col divide-y divide-tinyrack-border overflow-hidden rounded-tinyrack-lg border border-tinyrack-border bg-tinyrack-surface shadow-tinyrack-raised lg:flex-row lg:divide-x lg:divide-y-0\">\n <AdminStat\n accent=\"bg-tinyrack-primary\"\n hint={t('admin.metrics.totalUsersHint')}\n label={t('admin.metrics.totalUsers')}\n value={data.pagination.total}\n />\n <AdminStat\n accent=\"bg-tinyrack-success\"\n hint={t('admin.metrics.adminsHint')}\n label={t('admin.metrics.admins')}\n value={admins}\n />\n <AdminStat\n accent=\"bg-tinyrack-info\"\n hint={t('admin.metrics.databaseUsersHint')}\n label={t('admin.metrics.databaseUsers')}\n value={databaseUsers}\n />\n </div>\n\n {/* 2:1 rather than the 1.35:0.75 arbitrary value — the same ratio to the eye. */}\n <div className=\"grid gap-tinyrack-xl xl:grid-cols-3\">\n <TRCard.Root\n className=\"overflow-hidden border-tinyrack-border shadow-tinyrack-raised xl:col-span-2\"\n variant=\"outlined\"\n >\n <TRCard.Content className=\"p-0\">\n <div className=\"flex flex-col gap-tinyrack-lg border-tinyrack-border border-b-tinyrack-default p-tinyrack-xl sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex flex-col gap-tinyrack-sm\">\n <div className=\"flex items-center gap-tinyrack-sm\">\n <NetworkIcon\n aria-hidden\n className=\"size-tinyrack-lg text-tinyrack-primary\"\n />\n <TRText color=\"muted\" variant=\"label\">\n {t('admin.identityGraph')}\n </TRText>\n </div>\n <TRCard.Title>{t('admin.users.title')}</TRCard.Title>\n <TRCard.Description className=\"text-tinyrack-sm\">\n {t('admin.users.description')}\n </TRCard.Description>\n </div>\n <TRLinkButton\n intent=\"primary\"\n render={<Link to=\"/admin/users\" />}\n uiSize=\"sm\"\n >\n {t('admin.users.open')}\n </TRLinkButton>\n </div>\n\n <div className=\"grid divide-y divide-tinyrack-border [gap:0] md:grid-cols-2 md:divide-x md:divide-y-0\">\n {data.users.slice(0, 4).map((managedUser) => (\n <Link\n className=\"group flex flex-col gap-tinyrack-lg bg-tinyrack-surface p-tinyrack-lg transition hover:bg-tinyrack-surface-hover\"\n key={managedUser.sub}\n to=\"/admin/users\"\n >\n <div className=\"flex items-start justify-between gap-tinyrack-lg\">\n <div className=\"flex min-w-0 flex-col gap-tinyrack-xs\">\n <TRText as=\"p\" truncate variant=\"bodySm\" weight=\"medium\">\n {managedUser.email}\n </TRText>\n {/*\n Mono on a bare span: a font utility on `TRText` loses to\n the component's own per-variant `font-family` rule.\n */}\n <TRText as=\"p\" color=\"muted\" truncate variant=\"caption\">\n <span className=\"font-tinyrack-mono\">\n {managedUser.sub}\n </span>\n </TRText>\n </div>\n {/* `shrink-0`: without it the tile squeezes the badge and\n \"User\" wraps to two lines. */}\n <TRBadge\n className=\"shrink-0\"\n uiSize=\"md\"\n variant={\n managedUser.role === 'admin' ? 'neutral' : undefined\n }\n >\n {formatAdminRole(t, managedUser.role)}\n </TRBadge>\n </div>\n <div className=\"flex items-center justify-between gap-tinyrack-sm\">\n <TRBadge uiSize=\"md\">\n {formatManagedBy(t, managedUser.managed_by)}\n </TRBadge>\n <TRText color=\"muted\" variant=\"caption\">\n {t('admin.users.verifiedLabel')}{' '}\n {managedUser.email_verified\n ? t('common.yes')\n : t('common.no')}\n </TRText>\n </div>\n </Link>\n ))}\n </div>\n </TRCard.Content>\n </TRCard.Root>\n\n <TRCard.Root\n className=\"overflow-hidden border-tinyrack-border shadow-tinyrack-raised\"\n variant=\"outlined\"\n >\n <TRCard.Content className=\"flex flex-col items-start gap-tinyrack-md\">\n <TRBadge uiSize=\"md\" variant=\"neutral\">\n {t('admin.policy.title')}\n </TRBadge>\n <TRCard.Title className=\"text-tinyrack-xl\">\n {t('admin.policy.heading')}\n </TRCard.Title>\n <TRCard.Description className=\"text-tinyrack-sm\">\n {t('admin.policy.description')}\n </TRCard.Description>\n <div className=\"flex w-full flex-col gap-tinyrack-md\">\n <PolicyRow\n label={t('admin.metrics.configUsers')}\n value={configUsers}\n />\n <PolicyRow\n label={t('admin.metrics.databaseUsers')}\n value={databaseUsers}\n />\n <PolicyRow\n label={t('admin.policy.configReadonly')}\n value={t('common.on')}\n />\n </div>\n </TRCard.Content>\n </TRCard.Root>\n </div>\n </AdminShell>\n );\n}\n\nfunction PolicyRow({\n label,\n value,\n}: {\n label: string;\n value: number | string;\n}) {\n return (\n <div className=\"flex items-center justify-between gap-tinyrack-sm rounded-tinyrack-md border border-tinyrack-border bg-tinyrack-surface-muted px-tinyrack-lg py-tinyrack-md\">\n <TRText color=\"muted\" variant=\"bodySm\">\n {label}\n </TRText>\n <TRBadge uiSize=\"md\" variant=\"neutral\">\n {value}\n </TRBadge>\n </div>\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{F as e,G as t,J as n,M as r,P as i,W as a,Z as o,_ as s,b as c,c as l,d as u,f as d,i as f,j as p,n as m,o as h,q as g,s as _,t as v,v as y,w as b,x,y as S}from"./createLucideIcon-BPpAIXR_.js";import{Cn as C,On as w,P as T,Qt as E,R as D,S as O,Sn as k,Sr as A,Wt as j,Xt as M,Z as N,Zt as P,_ as F,a as I,an as L,at as R,bn as z,bt as B,ct as V,fn as H,gt as ee,h as U,i as W,it as te,lt as ne,on as re,ot as G,pn as K,pt as q,r as J,rt as ie,st as Y,un as X,ur as ae,zt as oe}from"./config-DTQCUlfZ.js";import{t as se}from"./useMutation-BWZ0G4Td.js";import{A as ce,E as le,M as ue,N as de,O as fe,T as pe,Y as me,a as he,et as ge,f as _e,j as ve,n as ye,o as be,p as xe,s as Se,z as Ce}from"./shell-header-bar-CjG5qvPg.js";import{t as we}from"./chevron-right-CN0jUyV0.js";import{n as Te,t as Ee}from"./logout-B5T52P8u.js";import{t as De}from"./triangle-alert-CqNn0kPs.js";import{L as Oe,S as ke,z as Ae}from"./index-CS23Ozt6.js";import{t as je}from"./badge-CsOfUji0.js";import{t as Me}from"./alert-leqyvHOp.js";import{t as Ne}from"./avatar-BEQjf2x6.js";import{t as Pe}from"./auth-layout-VtpryDof.js";import{a as Fe,c as Ie,d as Le,f as Re,l as ze,o as Be,r as Ve,s as He,t as Ue,u as We}from"./DialogHandle-BmtK2pRn.js";import{n as Ge,t as Ke}from"./valueToPercent-LgbY_prH.js";import{t as qe}from"./promise-OpBtq8tG.js";var Je=v(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),Ye=v(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Xe=v(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Ze=v(`shield-off`,[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]),Qe=v(`shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),$e=v(`users`,[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),Z=g();function et({reason:e}){let{t}=f(),n=e===`access-required`?{icon:Ze,tone:`danger`,title:t(`admin.accessRequired`),description:t(`admin.accessRequiredDescription`)}:{icon:Xe,tone:`info`,title:t(`admin.disabled`),description:t(`admin.disabledDescription`)};return(0,Z.jsx)(Pe,{children:(0,Z.jsx)(Oe,{description:n.description,icon:n.icon,title:n.title,tone:n.tone,children:(0,Z.jsx)(Ae,{className:`w-full`,intent:`primary`,render:(0,Z.jsx)(k,{to:`/profile`}),uiSize:`lg`,children:t(`profile.title`)})})})}var Q=o(n(),1),tt=o(C(),1);function nt({className:e,...t}){return(0,Z.jsx)(`div`,{...t,className:a(`tr-app-shell-actions`,e)})}function rt({className:e,...t}){return(0,Z.jsx)(`div`,{...t,className:a(`tr-app-shell-brand`,e)})}var $=function(e){return e.nestedDrawers=`--nested-drawers`,e.height=`--drawer-height`,e.frontmostHeight=`--drawer-frontmost-height`,e.swipeMovementX=`--drawer-swipe-movement-x`,e.swipeMovementY=`--drawer-swipe-movement-y`,e.snapPointOffset=`--drawer-snap-point-offset`,e.swipeStrength=`--drawer-swipe-strength`,e}({}),it=function(e){return e.swipeProgress=`--drawer-swipe-progress`,e}({}),at=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,forceRender:a=!1,...o}=e,s=Re(),c=s.useState(`open`),u=s.useState(`nested`),d=s.useState(`mounted`);return l(`div`,e,{state:{open:c,transitionStatus:s.useState(`transitionStatus`)},ref:[s.context.backdropRef,t],stateAttributesMapping:F,props:[{role:`presentation`,hidden:!d,style:{pointerEvents:c?void 0:`none`,userSelect:`none`,WebkitUserSelect:`none`,[it.swipeProgress]:`0`,[$.swipeStrength]:`1`}},o],enabled:a||!u})}),ot=Le,st=`data-drawer-content`,ct=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e;return Re(),l(`div`,e,{ref:t,props:[{[st]:``},a]})}),lt=We,ut=Q.createContext(void 0);function dt(){return Q.useContext(ut)}var ft={active(e){return e?{"data-active":``}:{"data-inactive":``}}},pt=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,o=dt(),s=o?.active??!1,u=o?.visualStateStore,d=Q.useRef(null);return c(()=>{let e=d.current;if(!e||!u)return;let t=()=>{let{swipeProgress:t,frontmostHeight:n}=u.getSnapshot();t<=0?e.style.setProperty(it.swipeProgress,`0`):e.style.setProperty(it.swipeProgress,`${t}`),n<=0?e.style.removeProperty($.height):e.style.setProperty($.height,`${n}px`)};t();let n=u.subscribe(t);return()=>{n(),e.style.setProperty(it.swipeProgress,`0`),e.style.removeProperty($.height)}},[u]),l(`div`,e,{ref:[t,d],state:{active:s},props:[{style:{[it.swipeProgress]:`0`}},a],stateAttributesMapping:ft})}),mt={active(e){return e?{"data-active":``}:{"data-inactive":``}}},ht=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e;return l(`div`,e,{ref:t,state:{active:dt()?.active??!1},props:a,stateAttributesMapping:mt})}),gt=function(e){return e[e.open=U.open]=`open`,e[e.closed=U.closed]=`closed`,e[e.startingStyle=U.startingStyle]=`startingStyle`,e[e.endingStyle=U.endingStyle]=`endingStyle`,e.expanded=`data-expanded`,e.nestedDrawerOpen=`data-nested-drawer-open`,e.nestedDrawerSwiping=`data-nested-drawer-swiping`,e.swipeDismiss=`data-swipe-dismiss`,e.swipeDirection=`data-swipe-direction`,e.swiping=`data-swiping`,e}({}),_t=Q.createContext(void 0);function vt(e){let t=Q.useContext(_t);if(e!==!0&&t===void 0)throw Error(y(90));return t}function yt(e,t){let n=e+t;return n>=0?t:-Math.sqrt(-n)-e}function bt(e,t,n){if(!Number.isFinite(t)||t<=0)return null;if(typeof e==`number`)return Number.isFinite(e)?e<=1?Y(e,0,1)*t:e:null;let r=e.trim();if(r.endsWith(`px`)){let e=Number.parseFloat(r);return Number.isFinite(e)?e:null}if(r.endsWith(`rem`)){let e=Number.parseFloat(r);return Number.isFinite(e)?e*n:null}return null}function xt(e,t){let n=-1,r=1/0;for(let i=0;i<e.length;i+=1){let a=Math.abs(e[i]-t);a<r&&(r=a,n=i)}return n}function St(){let e=Re(),{snapPoints:t,activeSnapPoint:n,setActiveSnapPoint:r,popupHeight:i}=vt(),a=e.useState(`viewportElement`),[o,l]=Q.useState(0),[u,d]=Q.useState(16),f=x(()=>{let e=s(a).documentElement;l(a?a.offsetHeight:e.clientHeight);let t=parseFloat(getComputedStyle(e).fontSize);Number.isFinite(t)&&d(t)});c(()=>{if(f(),!a||typeof ResizeObserver!=`function`)return;let e=new ResizeObserver(f);return e.observe(a),()=>{e.disconnect()}},[f,a]);let p=Q.useMemo(()=>{if(!t||t.length===0||o<=0||i<=0)return[];let e=Math.min(i,o),n=t.map(t=>{let n=bt(t,o,u);if(n===null)return null;let r=Y(n,0,e);return{value:t,height:r,offset:Math.max(0,i-r)}}).filter(e=>!!e);if(n.length<=1)return n;let r=[],a=[];for(let e=n.length-1;e>=0;--e){let t=n[e];a.some(e=>Math.abs(e-t.height)<=1)||(a.push(t.height),r.push(t))}return r.reverse(),r},[i,u,t,o]);return{snapPoints:t,activeSnapPoint:n,setActiveSnapPoint:r,popupHeight:i,viewportHeight:o,resolvedSnapPoints:p,activeSnapPointOffset:Q.useMemo(()=>{if(n===null)return;let e=p.find(e=>Object.is(e.value,n));if(e)return e;let t=Math.min(i,o),r=bt(n,o,u);if(r===null)return;let a=Y(r,0,t);return p[xt(p.map(e=>e.height),a)]},[n,i,p,u,o])?.offset??null}}var Ct=Q.createContext(null);function wt(){return Q.useContext(Ct)}var Tt=!1;function Et(){Tt||=(typeof CSS<`u`&&`registerProperty`in CSS&&([$.swipeMovementX,$.swipeMovementY,$.snapPointOffset].forEach(e=>{try{CSS.registerProperty({name:e,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),[{name:it.swipeProgress,initialValue:`0`},{name:$.swipeStrength,initialValue:`1`}].forEach(({name:e,initialValue:t})=>{try{CSS.registerProperty({name:e,syntax:`<number>`,inherits:!1,initialValue:t})}catch{}})),!0)}var Dt={...F,expanded(e){return e?{[gt.expanded]:``}:null},nestedDrawerOpen(e){return e?{[gt.nestedDrawerOpen]:``}:null},nestedDrawerSwiping(e){return e?{[gt.nestedDrawerSwiping]:``}:null},swipeDirection(e){return{[gt.swipeDirection]:e}},swiping(e){return e?{[gt.swiping]:``}:null}},Ot=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,finalFocus:a,initialFocus:o,...s}=e,d=Re(),f=d.context.popupRef,{swipeDirection:p,frontmostHeight:m,hasNestedDrawer:h,nestedSwiping:g,nestedSwipeProgressStore:_,onPopupHeightChange:v,notifyParentFrontmostHeight:y,notifyParentHasNestedDrawer:b}=vt(),S=d.useState(`descriptionElementId`),C=d.useState(`disablePointerDismissal`),w=d.useState(`floatingRootContext`),T=d.useState(`popupProps`),E=d.useState(`modal`),D=d.useState(`mounted`),O=d.useState(`nested`),k=d.useState(`nestedOpenDrawerCount`),A=d.useState(`transitionStatus`),j=d.useState(`open`),M=d.useState(`openMethod`),N=d.useState(`titleElementId`),P=d.useState(`role`),F=w.useState(`floatingId`),I=s.id??F,L=wt();ze();let{snapPoints:R,activeSnapPoint:z,activeSnapPointOffset:B}=St(),V=k>0,H=L?.swiping??!1,ee=L?.swipeStrength??null,[U,W]=Q.useState(0),te=Q.useRef(0),ne=x(()=>{let e=f.current;if(!e)return;let t=e.offsetHeight;if(te.current>0&&m>te.current&&t>te.current)return;if(te.current>0&&h){let e=te.current;W(e),v(e);return}let n=t;n!==te.current&&(te.current=n,W(n),v(n))});c(()=>{if(!D){te.current=0,W(0),v(0);return}let e=f.current;if(!e||(Et(),ne(),typeof ResizeObserver!=`function`))return;let t=new ResizeObserver(ne);return t.observe(e),()=>{t.disconnect()}},[ne,D,V,v,f]),c(()=>{let e=()=>{let e=f.current;if(!e)return;let t=_.getSnapshot();t>0?e.style.setProperty(it.swipeProgress,`${t}`):e.style.setProperty(it.swipeProgress,`0`)};e();let t=_.subscribe(e),n=f.current;return()=>{t(),n&&n.style.setProperty(it.swipeProgress,`0`)}},[_,f]),c(()=>{if(j)return y?.(m),()=>{y?.(0)}},[m,j,y]),c(()=>{if(b)return b(j||A===`ending`),()=>{b(!1)}},[b,j,A]),q({open:j,ref:f,onComplete(){j&&d.context.onOpenChangeComplete?.(!0)}});let re=o===void 0?f:o,G=d.useStateSetter(`popupElement`),K={open:j,nested:O,transitionStatus:A,expanded:z===1,nestedDrawerOpen:V,nestedDrawerSwiping:g,swipeDirection:p,swiping:H},J;U&&!(!h&&A!==`ending`)&&(J=`${U}px`);let ie=R&&R.length>0&&(p===`down`||p===`up`),Y=null;ie&&B!==null&&(Y=p===`up`?-B:B);let X=L?L.getDragStyles():u;if(ie&&p===`down`){let e=B??0,t=Number.parseFloat(String(X[$.swipeMovementY]));X=H&&Number.isFinite(t)?{...X,transform:void 0,[$.swipeMovementY]:`${yt(e,t)}px`}:{...X,transform:void 0}}let ae=l(`div`,e,{state:K,props:[T,{id:I,"aria-labelledby":N,"aria-describedby":S,role:P,...Ce,hidden:!D,onKeyDown(e){be.has(e.key)&&e.stopPropagation()},style:{...X,[it.swipeProgress]:`0`,[$.nestedDrawers]:k,[$.height]:J,[$.snapPointOffset]:typeof Y==`number`?`${Y}px`:`0px`,[$.frontmostHeight]:m?`${m}px`:void 0,[$.swipeStrength]:typeof ee==`number`&&Number.isFinite(ee)&&ee>0?`${ee}`:`1`}},s],ref:[t,f,G],stateAttributesMapping:Dt});return(0,Z.jsx)(ge,{context:w,openInteractionType:M,disabled:!D,closeOnFocusOut:!C,initialFocus:re,returnFocus:a,modal:E!==!1,restoreFocus:`popup`,children:ae})}),kt=Ie;function At(e){let{children:t}=e,[n,r]=Q.useState(()=>new Set),[i]=Q.useState(jt),a=x((e,t)=>{r(n=>{if(n.has(e)===t)return n;let r=new Set(n);return t?r.add(e):r.delete(e),r})}),o=x(e=>{a(e,!1)}),s=n.size>0,c=Q.useMemo(()=>({setDrawerOpen:a,removeDrawer:o,active:s,visualStateStore:i}),[s,o,a,i]);return(0,Z.jsx)(ut.Provider,{value:c,children:t})}function jt(){let e={swipeProgress:0,frontmostHeight:0},t=new Set;return{getSnapshot:()=>e,set(n){let r=e.swipeProgress;n.swipeProgress!==void 0&&(r=Number.isFinite(n.swipeProgress)?n.swipeProgress:0);let i=e.frontmostHeight;n.frontmostHeight!==void 0&&(i=Number.isFinite(n.frontmostHeight)?n.frontmostHeight:0),!(r===e.swipeProgress&&i===e.frontmostHeight)&&(e={swipeProgress:r,frontmostHeight:i},t.forEach(e=>{e()}))},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}var Mt,Nt;function Pt(e){let{children:t,open:n,defaultOpen:r=!1,onOpenChange:i,onOpenChangeComplete:a,disablePointerDismissal:o=!1,modal:s=!0,actionsRef:c,handle:l,triggerId:u,defaultTriggerId:d=null,swipeDirection:f=`down`,snapToSequentialPoints:p=!1,snapPoints:m,snapPoint:h,defaultSnapPoint:g,onSnapPointChange:_}=e,v=vt(!0),y=v?.onNestedSwipeProgressChange,b=v?.onNestedFrontmostHeightChange,S=v?.onNestedSwipingChange,C=v?.onNestedDrawerPresenceChange,[w,E]=Q.useState(0),[D,O]=Q.useState(0),[k,A]=Q.useState(!1),[j,M]=Q.useState(!1),[N]=Q.useState(Ft),P=g===void 0?m?.[0]??null:g,F=h!==void 0,[I,L]=pe({controlled:h,default:P,name:`Drawer`,state:`snapPoint`}),R=Q.useRef(!1),z=Q.useRef(!1),B=x((e,t)=>{let n=t??T(`none`);_?.(e,n),!n.isCanceled&&L(e)}),V=Q.useMemo(()=>F||!m||m.length===0?I:I===null||!m.some(e=>Object.is(e,I))?P:I,[I,F,P,m]),H=x(e=>{E(e),!R.current&&e>0&&O(e)}),ee=x(e=>{if(e>0){R.current=!0,O(e);return}R.current=!1,w>0&&O(w)}),U=x(e=>{A(e)}),W=x(e=>{N.set(e),y?.(e)}),te=x(e=>{M(e),S?.(e)}),ne=x((e,t)=>{i?.(e,t),!t.isCanceled&&!e&&m&&m.length>0&&B(P,T(t.reason,t.event,t.trigger))}),re=Q.useMemo(()=>({swipeDirection:f,swipeAreaActiveRef:z,snapToSequentialPoints:p,snapPoints:m,activeSnapPoint:V,setActiveSnapPoint:B,frontmostHeight:D,popupHeight:w,hasNestedDrawer:k,nestedSwiping:j,nestedSwipeProgressStore:N,onNestedDrawerPresenceChange:U,onPopupHeightChange:H,onNestedFrontmostHeightChange:ee,onNestedSwipingChange:te,onNestedSwipeProgressChange:W,notifyParentFrontmostHeight:b,notifyParentSwipingChange:S,notifyParentSwipeProgressChange:y,notifyParentHasNestedDrawer:C}),[V,D,k,j,N,C,y,S,b,U,ee,W,te,H,w,B,m,p,z,f]),G=He(`drawer`,{open:n,defaultOpen:r,onOpenChange:ne,onOpenChangeComplete:a,disablePointerDismissal:o,modal:s,actionsRef:c,handle:l,triggerId:u,defaultTriggerId:d,children:typeof t==`function`?e=>(0,Z.jsxs)(Q.Fragment,{children:[Mt||=(0,Z.jsx)(It,{}),t(e)]}):(0,Z.jsxs)(Q.Fragment,{children:[Nt||=(0,Z.jsx)(It,{}),t]})});return(0,Z.jsx)(_t.Provider,{value:re,children:G})}function Ft(){let e=0,t=new Set;return{getSnapshot:()=>e,set(n){let r=Number.isFinite(n)?n:0;r!==e&&(e=r,t.forEach(e=>{e()}))},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function It(){let e=dt(),t=Re(!1),n=e?.setDrawerOpen,i=e?.removeDrawer,a=t.useState(`open`),o=t.useState(`nestedOpenDialogCount`),s=t.useState(`popupElement`),l=o===0;return c(()=>{if(i)return()=>{i(t)}},[i,t]),c(()=>{n?.(t,a)},[a,n,t]),Q.useEffect(()=>{if(!a||!l||!re)return;let e=r(s).CloseWatcher;if(!e)return;function n(e){t.select(`open`)&&t.setOpen(!1,T(D,e))}let i=new e,o=K(i,`close`,n);return()=>{o(),i.destroy()}},[t,l,a,s]),null}var Lt=function(e){return e[e.open=U.open]=`open`,e[e.closed=U.closed]=`closed`,e.disabled=`data-disabled`,e.swipeDirection=`data-swipe-direction`,e.swiping=`data-swiping`,e}({}),Rt=.5,zt=1,Bt=.1,Vt=40,Ht={[Lt.open]:``},Ut={[Lt.closed]:``},Wt={[Lt.swiping]:``},Gt={[Lt.disabled]:``},Kt={open(e){return e?Ht:Ut},swiping(e){return e?Wt:null},swipeDirection(e){return{[Lt.swipeDirection]:e}},disabled(e){return e?Gt:null}},qt={up:`down`,down:`up`,left:`right`,right:`left`};function Jt(e){return e===`left`||e===`right`?`pan-y`:`pan-x`}var Yt=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:a=!1,swipeDirection:o,...u}=e,f=Re(),{swipeDirection:p,frontmostHeight:m,swipeAreaActiveRef:h}=vt(),g=dt(),[_,v]=Q.useState(!1),y=Q.useRef(null),b=Q.useRef(null),S=Q.useRef(!1),C=Q.useRef({x:0,y:0}),w=Q.useRef(null),E=Q.useRef(!1),D=Q.useRef(null),O=Q.useRef(null),k=Q.useRef(null),A=Q.useRef(d),j=fe(e.id),M=me(j,f),P=f.useState(`open`),F=x(()=>{C.current.x=0,C.current.y=0}),I=o??qt[p],L=qt[I],z=!a&&(!P||_);function B(){A.current(),f.context.outsidePressEnabledRef.current=!1}let V=x(()=>{A.current();let e=s(y.current);function t(n){n?.type===`click`&&n.detail!==0&&!oe(n)||(A.current=d,e.removeEventListener(`pointerdown`,t,!0),e.removeEventListener(`click`,t,!0),f.context.outsidePressEnabledRef.current=!0)}A.current=t,e.addEventListener(`pointerdown`,t,!0),e.addEventListener(`click`,t,!0)});function H(e){let t=L===`left`||L===`right`?e.offsetWidth:e.offsetHeight;return t<=0?null:t}function ee(){let e=f.context.popupRef.current;return e?H(e):null}function U(e){let t=H(e);if(t==null)return null;let n=L===`left`||L===`right`,r=te(e),i=n?r.x:r.y;return Number.isFinite(i)&&Math.abs(i)>.5?Math.min(t,Math.abs(i)):t}function W(){let e=ee();return e==null?Vt:e*Rt}function ne(){let e=f.context.popupRef.current;if(!e||!f.select(`open`)||!f.select(`mounted`))return;w.current??=U(e);let t=w.current;if(t===null)return;let{x:n,y:r}=C.current,i=ie(I,n,r),a=Math.max(0,i),o=(t-(a>t?t+Math.sqrt(a-t):a))*(L===`left`||L===`up`?-1:1),s=L===`left`||L===`right`,c=s?o:0,l=s?0:o,u=Math.max(0,Math.min(1,a/t)),d=Math.max(0,Math.min(1,1-u));e.style.setProperty($.swipeMovementX,`${c}px`),e.style.setProperty($.swipeMovementY,`${l}px`),e.setAttribute(gt.swiping,``),D.current=e,k.current===null&&(k.current=e.style.transition),e.style.transition=`none`;let p=f.context.backdropRef.current;p&&(p.setAttribute(gt.swiping,``),O.current=p,p.style.setProperty(it.swipeProgress,`${d}`),u>0&&m>0?p.style.setProperty($.height,`${m}px`):p.style.removeProperty($.height)),g?.visualStateStore.set({swipeProgress:u,frontmostHeight:u>0?m:0}),E.current=!0,h.current=!0}let re=x(()=>{let e=D.current;e&&(e.style.removeProperty($.swipeMovementX),e.style.removeProperty($.swipeMovementY),e.removeAttribute(gt.swiping)),e&&k.current!==null&&(e.style.transition=k.current,k.current=null);let t=O.current;t&&(t.removeAttribute(gt.swiping),t.style.setProperty(it.swipeProgress,`0`),t.style.removeProperty($.height)),g?.visualStateStore.set({swipeProgress:0,frontmostHeight:0}),E.current=!1,D.current=null,O.current=null,h.current=!1});function G(e){S.current=!0,f.setOpen(!0,T(N,e,y.current))}function K(e){f.setOpen(!1,T(N,e,y.current))}function q(){b.current=null,S.current=!1,w.current=null,v(!1)}function J(){q(),V(),F(),re()}let Y=R({enabled:z,directions:[I],elementRef:y,trackDrag:!1,movementCssVars:{x:$.swipeMovementX,y:$.swipeMovementY},onSwipeStart(e){B(),b.current=e,S.current=!1,v(!0),F()},onProgress(e,t){if(!t||!b.current||(C.current.x=t.deltaX,C.current.y=t.deltaY,t.direction!==I))return;let n=ie(I,t.deltaX,t.deltaY);!S.current&&n<zt||(!S.current&&!f.select(`open`)&&G(b.current),ne())},onRelease({event:e,direction:t,deltaX:n,deltaY:r,releaseVelocityX:i,releaseVelocityY:o}){let s=ie(I,n,r),c=ie(I,i,o),l=s>=W();return t===I&&(l||c>=Bt)&&!a?f.select(`open`)||G(e):S.current&&f.select(`open`)&&K(e),J(),!1},onCancel:J}),X=Y.getPointerProps(),ae=Y.getTouchProps(),se=Y.reset;return c(()=>{_&&E.current&&ne()}),c(()=>{z||(_&&V(),se(),F(),re(),q())},[re,V,z,F,se,_]),Q.useEffect(()=>()=>{A.current(),f.context.outsidePressEnabledRef.current=!0},[f]),l(`div`,e,{state:{open:P,swiping:Y.swiping,swipeDirection:I,disabled:a},ref:[t,y,M],stateAttributesMapping:Kt,props:[{role:`presentation`,"aria-hidden":!0,style:{pointerEvents:z?void 0:`none`,touchAction:Jt(I)},onPointerDown(e){e.pointerType!==`touch`&&(X.onPointerDown?.(e),e.cancelable&&e.preventDefault())},onPointerMove(e){e.pointerType!==`touch`&&X.onPointerMove?.(e)},onPointerUp(e){e.pointerType!==`touch`&&X.onPointerUp?.(e)},onPointerCancel(e){e.pointerType!==`touch`&&X.onPointerCancel?.(e)}},ae,j?{id:j}:void 0,u]})}),Xt=Be,Zt=Fe,Qt=Q.createContext(void 0);function $t(){return Q.useContext(Qt)}var en=10,tn=.5,nn=.5,rn=300,an=4,on=.2,sn=4,cn=80,ln=360,un=.1,dn=1,fn=6,pn=2,mn=`[${st}]`,hn=Q.forwardRef(function(e,t){let{render:n,className:r,style:a,children:o,...l}=e,u=Re(),d=u.context.popupRef,f=u.context.backdropRef,{swipeDirection:p,notifyParentSwipingChange:m,notifyParentSwipeProgressChange:h,frontmostHeight:g,snapToSequentialPoints:_,swipeAreaActiveRef:v}=vt(),y=dt(),{snapPoints:b,resolvedSnapPoints:C,activeSnapPoint:w,activeSnapPointOffset:D,setActiveSnapPoint:O,popupHeight:k}=St(),A=u.useState(`open`),j=u.useState(`mounted`),M=u.useState(`nested`),F=u.useState(`nestedOpenDrawerCount`),I=u.useState(`viewportElement`),L=u.useState(`popupElement`),z=y?.visualStateStore,B=F>0,U=p===`left`||p===`right`?`horizontal`:`vertical`,W=U===`vertical`,te=W?`horizontal`:`vertical`,[ne,re]=Q.useState(null),q=Q.useRef(void 0),J=Q.useRef(null),X=H(),ae=Q.useRef(!1),oe=Q.useRef(!1),se=Q.useRef(``),ce=Q.useRef(!1),le=Q.useRef(!1),ue=Q.useRef(null),de=$t(),fe=Q.useMemo(()=>{if(!b||b.length<2||C.length<2||p!==`down`&&p!==`up`)return null;let e=C.map(e=>e.offset).sort((e,t)=>e-t),t=e[0];return{minOffset:t,range:e[1]-t}},[C,b,p]),pe=Q.useMemo(()=>!fe||D===null?null:Y((D-fe.minOffset)/fe.range,0,1),[D,fe]),me=Q.useMemo(()=>b&&b.length>0&&(p===`down`||p===`up`)?p===`down`?[`down`,`up`]:[`up`,`down`]:[p],[b,p]),he=x(e=>{d.current?.toggleAttribute(gt.swipeDismiss,e),f.current?.toggleAttribute(gt.swipeDismiss,e)}),ge=x(()=>{he(!1),d.current?.removeAttribute(ee.endingStyle),re(null)}),_e=x(()=>{oe.current&&(oe.current=!1,m?.(!1))}),ve=x((e,t,n)=>{let r=A&&!M&&t,i=r?e:0,a=A&&t?e:0;n&&h&&(h(a),a<=0&&_e()),z?.set({swipeProgress:i,frontmostHeight:i>0?g:0});let o=f.current;if(!o)return;let s=r&&i>0;o.style.setProperty(it.swipeProgress,s?`${i}`:`0`),s&&g>0?o.style.setProperty($.height,`${g}px`):o.style.removeProperty($.height)});function ye(e,t,n,r,i,a,o,s){let c=yn(e,t);if(c<=0)return null;let l=((t===`down`||t===`up`)&&b&&b.length>0?D??0:0)+ie(t,n,r),u=Math.max(0,c-l);if(u<=0)return null;let d=ie(t,o,s),f=Math.abs(d)>0?d:ie(t,i,a);return f<=on?null:un+(Y(u/Y(f,on,sn),cn,ln)-cn)/(ln-cn)*(dn-un)}function be(e){if(oe.current||!e)return;let t=ie(e.direction??p,e.deltaX,e.deltaY);Math.abs(t)<en||(oe.current=!0,m?.(!0))}let xe=R({enabled:j&&!B,directions:me,elementRef:u.context.popupRef,ignoreSelectorWhenTouch:!1,ignoreScrollableAncestors:!0,movementCssVars:{x:$.swipeMovementX,y:$.swipeMovementY},onSwipeStart(e){if(`touches`in e||e.pointerType===`touch`)return;let t=d.current,n=s(t).getSelection?.();if(!n||n.isCollapsed)return;let r=i(n.anchorNode)?n.anchorNode:n.anchorNode?.parentElement,a=i(n.focusNode)?n.focusNode:n.focusNode?.parentElement;!P(t,r)&&!P(t,a)||n.removeAllRanges()},onSwipingChange(e){ae.current=e,gn(u.context.backdropRef.current,e),!e&&!h&&_e()},swipeThreshold({element:e,direction:t}){return bn(e,t)},canStart(e,t){let n=u.context.popupRef.current;if(!n)return!1;let r=n.ownerDocument,i=G(n.getRootNode(),e.x,e.y);if(!i||!P(n,i))return!1;let a=t.nativeEvent;return!((`touches`in a||a.pointerType===`touch`)&&wn(r,n))},onProgress(e,t){be(t);let n=!!(b&&b.length>0);if(ae.current&&p===`down`&&n&&t){let e=u.context.popupRef.current;e&&(e.style.removeProperty(`transform`),e.style.setProperty($.swipeMovementY,`${yt(D??0,t.deltaY)}px`))}let r=e;if(fe&&k>0){let e=D??fe.minOffset;t&&Number.isFinite(t.deltaY)?r=(e=>Y((e-fe.minOffset)/fe.range,0,1))(Y(e+t.deltaY,0,k)):pe!==null&&(r=pe)}ve(r,!0,!0)},onRelease({event:e,deltaX:t,deltaY:n,direction:r,velocityX:i,velocityY:a,releaseVelocityX:o,releaseVelocityY:s}){let c=u.context.popupRef.current;if(!c){ge();return}let l=c;function d(e){_e(),he(!0),l.style.removeProperty(`transition`),l.setAttribute(ee.endingStyle,``),tt.flushSync(()=>{re(ye(l,e,t,n,i,a,o,s))})}if(!b||b.length===0){if(!r){ge();return}let e=ie(r,t,n);if(e<=0)return ge(),!1;if(ie(r,i,a)>=tn)return d(r),!0;let o=e>bn(l,r);return o?d(r):ge(),o}if(p!==`down`&&p!==`up`){ge();return}if(!k)return ge(),!1;if(C.length===0){ge();return}let f=p===`down`?n:-n,m=Math.sign(f),h=p===`down`?s:-s,g=p===`down`?a:-a,v=h;if(m!==0&&Math.abs(f)>=en){let e=Math.sign(v);e!==0&&e!==m&&(v=g)}let y=D??0,x=Y(y+f,0,k),S=Math.abs(v)>=nn?Y(v,-4,an)*rn:0,E=_?x:Y(x+S,0,k),A=T(N,e),j=()=>(q.current=w,O(null,A),d(p),!0);if(_){let e=[...C].sort((e,t)=>e.offset-t.offset),t=e.map(e=>e.offset),n=xt(t,y),r=e[xt(t,E)],i=Math.sign(v),a=m!==0&&i!==0&&i===m&&Math.abs(v)>=nn,o=E;if(a){let t=Y(n+m,0,e.length-1);if(t!==n){let n=e[t];(m>0?E<n.offset:E>n.offset)&&(r=n,o=n.offset)}else if(m>0)return j()}return Math.abs(o-k)<Math.abs(o-r.offset)?j():(O(r.value,A),ge(),!1)}if(v>=tn&&f>0)return j();let M=C[xt(C.map(e=>e.offset),E)];return Math.abs(E-k)<Math.abs(E-M.offset)?j():(O(M.value,A),ge(),!1)},onDismiss(e){z?.set({swipeProgress:0,frontmostHeight:0});let t=u.context.backdropRef.current;t&&(t.style.setProperty(it.swipeProgress,`0`),t.style.removeProperty($.height));let n=T(N,e);if(u.setOpen(!1,n),n.isCanceled){let t=q.current;t!==void 0&&O(t,T(N,e)),q.current=void 0,J.current?.(),ge();return}if(u.select(`open`)){let t=e;X.request(()=>{if(u.select(`open`)){let e=q.current;e!==void 0&&O(e,T(N,t)),q.current=void 0,ge(),J.current?.()}else q.current=void 0});return}q.current=void 0,he(!0)}}),Se=xe.getPointerProps(),Ce=xe.getTouchProps(),{moveNative:we,reset:Te}=xe;J.current=Te,Q.useEffect(()=>{let e=I??L;if(!e)return;let t=e,n=s(t);function r(e,r,i){let a=W?i.clientY-r.lastY:i.clientX-r.lastX;if(e.touches.length===2||wn(n,t)||!A||!j||B||On(r,e,i,W))return;let o=r.scrollTarget;if(!o||o===n.documentElement||o===n.body){e.cancelable&&e.preventDefault(),e.stopPropagation(),we(e,t);return}if(!kn(o,U)){e.cancelable&&e.preventDefault(),e.stopPropagation();return}if(a!==0){let t=Mn(o,U,p,a);r.allowSwipe?e.cancelable&&e.preventDefault():e.cancelable&&t?(r.allowSwipe=!0,e.preventDefault()):r.allowSwipe=!1}r.allowSwipe===!0&&(e.stopPropagation(),we(e,t))}function i(e){if(de?.onTouchMove(e),le.current)return;let t=ue.current,n=e.touches[0];!n||!t||(r(e,t,n),Dn(t,n))}return K(n,`touchmove`,i,{passive:!1,capture:!0})},[j,B,A,L,W,U,p,we,I,de]),c(()=>{!fe||xe.swiping||ve(!A||M?0:pe??0,!0,!1)},[ve,g,M,h,A,pe,fe,xe.swiping,u,z]),c(()=>{if(h)return A||h(0),()=>{h(0)}},[h,A]),c(()=>{A&&(v.current||Te(),ge())},[ge,A,Te,v]),c(()=>{let e=f.current;return()=>{z?.set({swipeProgress:0,frontmostHeight:0}),gn(e,!1);let t=f.current;t!==e&&gn(t,!1),_e()}},[f,_e,z]);let Ee=Q.useMemo(()=>({swiping:xe.swiping,getDragStyles:xe.getDragStyles,swipeStrength:ne??null,setSwipeDismissed:he}),[he,xe.getDragStyles,xe.swiping,ne]);function De(e){le.current=e,ue.current=null}function Oe(){De(!1),se.current=``,ce.current=!1}function ke(e){return se.current=``,e.pointerType!==`touch`}return(0,Z.jsx)(Ve,{ref:t,className:r,style:a,render:n,...S(l,{onPointerDown(e){if(se.current=e.pointerType,ce.current=e.pointerType===`pen`,!A||!j||B)return;let t=G(e.currentTarget.getRootNode(),e.clientX,e.clientY);_n(t)||vn(t)||e.pointerType!==`touch`&&Se.onPointerDown?.(e)},onPointerMove(e){e.pointerType!==`touch`&&Se.onPointerMove?.(e)},onPointerUp(e){ke(e)&&Se.onPointerUp?.(e)},onPointerCancel(e){ke(e)&&Se.onPointerCancel?.(e)},onTouchStart(e){if(se.current===`pen`&&ce.current){ce.current=!1,De(!1);return}if(!A||!j||B){De(!1);return}let t=e.touches[0];if(!t)return;if(En(e)){De(!1);return}let n=e.currentTarget,r=G(n.getRootNode(),t.clientX,t.clientY),a=E(e.nativeEvent),o=i(a)?a:n;if(!P(n,o)){De(!0);return}if(de?.onTouchStart(e),_n(r)){De(!0);return}le.current=!1;let s=V(o,n,U),c=V(o,n,te)!=null,l=null;s&&(l=jn(s,U,p)?null:!1),ue.current={startX:t.clientX,startY:t.clientY,lastX:t.clientX,lastY:t.clientY,scrollTarget:s,hasCrossAxisScrollableContent:c,allowSwipe:l,preserveNativeCrossAxisScroll:!1,drawerAxisAttributed:!1},Ce.onTouchStart?.(e)},onTouchEnd(e){de?.onTouchEnd(e),Oe(),Ce.onTouchEnd?.(e)},onTouchCancel(e){de?.onTouchCancel(),Oe(),Ce.onTouchCancel?.(e)},"data-nested-dialog-open":void 0}),children:(0,Z.jsx)(Ct.Provider,{value:Ee,children:o})})});function gn(e,t){e?.toggleAttribute(gt.swiping,t)}function _n(e){return!!e?.closest(ne)}function vn(e){return!!e?.closest(mn)}function yn(e,t){return t===`left`||t===`right`?e.offsetWidth:e.offsetHeight}function bn(e,t){return Math.max(yn(e,t)*.5,en)}function xn(e,t){return e instanceof t.HTMLInputElement&&e.type===`range`}function Sn(e){return e.tagName===`INPUT`||e.tagName===`TEXTAREA`}function Cn(e,t){let n=i(e.anchorNode)?e.anchorNode:e.anchorNode?.parentElement,r=i(e.focusNode)?e.focusNode:e.focusNode?.parentElement;return e.containsNode(t,!0)||P(t,n)||P(t,r)}function wn(e,t){let n=M(e);if(n&&P(t,n)&&Sn(n)){let{selectionStart:e,selectionEnd:t}=n;if(e!=null&&t!=null&&e<t)return!0}let r=e.getSelection?.();return!r||r.isCollapsed?!1:Cn(r,t)}function Tn(e,t){return e.composedPath().some(e=>xn(e,t))}function En(e){return Tn(e.nativeEvent,r(e.currentTarget))}function Dn(e,t){e.lastX=t.clientX,e.lastY=t.clientY}function On(e,t,n,r){if(e.preserveNativeCrossAxisScroll)return!0;if(e.drawerAxisAttributed||e.allowSwipe===!0||!e.hasCrossAxisScrollableContent)return!1;if(!t.cancelable)return e.preserveNativeCrossAxisScroll=!0,!0;let i=r?n.clientY-e.startY:n.clientX-e.startX,a=r?n.clientX-e.startX:n.clientY-e.startY,o=Math.abs(i),s=Math.abs(a);return s>=fn&&s>o+pn?(e.preserveNativeCrossAxisScroll=!0,!0):o>=fn?(e.drawerAxisAttributed=!0,!1):!0}function kn(e,t){return An(e,t).max>0}function An(e,t){if(t===`vertical`){let t=Math.max(0,e.scrollHeight-e.clientHeight);return{offset:e.scrollTop,max:t}}let n=Math.max(0,e.scrollWidth-e.clientWidth);return{offset:e.scrollLeft,max:n}}function jn(e,t,n){let r=Nn(n,t),{offset:i,max:a}=An(e,t);return r?i<=0:i>=a}function Mn(e,t,n,r){return(Nn(n,t)?r>0:r<0)?jn(e,t,n):!1}function Nn(e,t){return t===`vertical`?e===`down`:e===`right`}var Pn=function(e){return e.keyboardInset=`--drawer-keyboard-inset`,e}({}),Fn=60,In=16,Ln=48,Rn=150,zn=4,Bn=60,Vn=10,Hn=16,Un=new Set([`email`,`number`,`password`,`search`,`tel`,`text`,`url`]),Wn=Symbol(`KeyboardTapBlocked`);function Gn(e){let{children:t}=e,n=Re(),i=n.useState(`open`),a=n.useState(`mounted`),o=n.useState(`modal`),c=n.useState(`nestedOpenDialogCount`),l=n.useState(`viewportElement`),u=c>0,d=Q.useRef(!1),f=Q.useRef(null),p=Q.useRef(null),m=Q.useRef(null),h=Q.useRef(!1),g=H(),_=X(),v=x(()=>{let e=m.current;e&&(e.element.style.overflowAnchor=e.overflowAnchor,e.element.style.paddingBottom=e.paddingBottom,e.element.style.scrollPaddingBottom=e.scrollPaddingBottom,m.current=null)}),y=x((e,t)=>{let n=Math.max(0,Math.ceil(t)),r=m.current;if(r&&!r.element.isConnected&&(v(),r=null),n===0){v();return}if(r&&r.element!==e&&(v(),r=null),!r){let t=b(e);r={element:e,overflowAnchor:e.style.overflowAnchor,paddingBottom:e.style.paddingBottom,scrollPaddingBottom:e.style.scrollPaddingBottom,computedPaddingBottom:Number.parseFloat(t.paddingBottom)||0,computedScrollPaddingBottom:Number.parseFloat(t.scrollPaddingBottom)||0},m.current=r}e.style.overflowAnchor=`none`,e.style.paddingBottom=`${r.computedPaddingBottom+n}px`,e.style.scrollPaddingBottom=`${r.computedScrollPaddingBottom+In}px`}),S=x((e,t)=>{let n=r(e).matchMedia?.(`(prefers-reduced-motion: reduce)`)?.matches?`auto`:`smooth`;e.scrollTo({top:t,behavior:n})}),C=x(()=>{d.current=!1,f.current=null});Q.useEffect(()=>{if(!a||!i){p.current=null,v(),g.cancel();return}if(!l){v();return}let e=s(l),t=r(l),n=t.visualViewport,c=null,d=0,f=0,m=-1,b=e=>{l.style.setProperty(Pn.keyboardInset,`${Math.max(0,Math.ceil(e))}px`)},x=()=>{p.current=null,c=null,b(0),v(),g.cancel(),_.clear()},C=t.scrollX,w=t.scrollY,T=()=>o!==!0||u||!p.current||tr(t)==null?!1:t.scrollX!==C||t.scrollY!==w?(t.scrollTo({left:C,top:w,behavior:`instant`}),!0):!1,D=null,O=()=>{D?.(),D=null},k=(e,t)=>{O();let n=e.getBoundingClientRect();D=$n(e,(t.top+t.bottom-n.top-n.bottom)/2)},A=()=>{O();let e=p.current;if(u||!e||!P(l,e)){b(0),v();return}T();let n=tr(t);if(!n){b(0),v();return}b(Math.max(0,t.innerHeight-n.bottom));let r=er(e,l);if(!r){v();return}let i=r.getBoundingClientRect(),a=Math.min(i.bottom,n.bottom),o=Math.max(0,i.bottom-n.bottom);y(r,o>0?o+Ln:0);let s=Math.max(0,r.scrollHeight-r.clientHeight);if(s<=0)return;let h=Math.max(i.top,n.top)+In,_=a-In;if(_<=h)return;let x=e.getBoundingClientRect(),C=r.scrollTop+(x.top+x.bottom-h-_)/2,w=Math.round(Y(C,0,s));if(!(c===r&&Math.abs(d-w)<=1)){let e=c===r?f+1:1;if(c=r,d=w,f=e,m=-1,e<=Bn){g.request(A);return}}else if(m>=0){let e=r.scrollTop;if(Math.abs(e-w)<=1)return;if(e!==m){m=e;return}}c=r,d=w,f=0,m=r.scrollTop,S(r,w)},j=()=>{g.request(A)},N=()=>{let e=zn,t=()=>{A(),--e,e>0&&_.start(Rn,t)};_.start(Rn,t)},F=e=>{if(u)return!1;let t=qn(e);return!t||!P(l,t)?!1:(p.current!==t&&(c=null),p.current=t,!0)},I=e=>{if(h.current=!1,O(),!F(E(e))){x();return}tr(t)!=null&&N(),j()},L=e=>{if(!h.current){if(F(e.relatedTarget)){let e=p.current,n=tr(t);e&&n&&k(e,n),j();return}x()}},R=()=>{(p.current||F(M(e)))&&j()},z=[];return n&&z.push(K(n,`resize`,R),K(n,`scroll`,R)),z.push(K(e,`focusin`,I,!0),K(e,`focusout`,L,!0),K(t,`scroll`,()=>{T()&&j()}),K(e,`pointerdown`,()=>{g.cancel(),_.clear(),c=null},!0)),F(M(e))&&j(),()=>{z.forEach(e=>e()),O(),x(),l.style.removeProperty(Pn.keyboardInset)}},[S,g,_,o,a,u,i,v,l,y]);let w=x(e=>{let t=e.touches[0];d.current=!1,f.current={x:t.clientX,y:t.clientY}}),T=x(e=>{let t=e.touches[0],n=f.current;!t||!n||d.current||(Math.abs(t.clientX-n.x)>Vn||Math.abs(t.clientY-n.y)>Vn)&&(d.current=!0)}),D=x(e=>{if(!i||!a||u||!l||!f.current||d.current){C();return}let t=e.changedTouches[0]??e.touches[0],n=l.getRootNode(),o=E(e.nativeEvent),c=t?Xn(n,t.clientX,t.clientY):null;if(c===Wn){C();return}let p=t&&(c??Jn(o));if(p&&(!P(l,p.focusTarget)||!P(l,p.clickTarget))){C();return}if(p){let{clickTarget:n,focusTarget:i}=p,a=r(i);if(a.visualViewport&&a.visualViewport.scale!==1){C();return}if(M(s(i))===i&&(!a.visualViewport||tr(a)!=null)){C();return}e.preventDefault(),h.current=!0;try{Qn(i)}finally{h.current=!1}Zn(n,t),C();return}C()}),O=Q.useMemo(()=>({onTouchStart:w,onTouchMove:T,onTouchEnd:D,onTouchCancel:C}),[D,T,w,C]);return(0,Z.jsx)(Qt.Provider,{value:O,children:t})}function Kn(e){if(e.isContentEditable)return!0;let t=r(e);return e instanceof t.HTMLTextAreaElement||e instanceof t.HTMLInputElement&&Un.has(e.type)?!e.matches(`:disabled`):!1}function qn(t){if(!e(t))return null;if(Kn(t))return t.isContentEditable?Yn(t):t;let n=t.closest(`label`)?.control??null;return e(n)&&Kn(n)?n:null}function Jn(t){if(!e(t))return null;let n=qn(t);return n?{focusTarget:n,clickTarget:t}:null}function Yn(e){let t=e;for(;t.parentElement?.isContentEditable;)t=t.parentElement;return t}function Xn(t,n,r){let i=G(t,n,r);if(e(i)){let e=qn(i);if(e)return{focusTarget:e,clickTarget:i}}if(j(i)||i?.closest(`label`)!=null)return Wn;for(let[e,i]of[[0,Hn],[0,-16],[Hn,0],[-16,0]]){let a=qn(G(t,n+e,r+i));if(a)return{focusTarget:a,clickTarget:a}}return null}function Zn(e,t){let n=r(e),i=n.PointerEvent??n.MouseEvent;e.dispatchEvent(new i(`click`,{bubbles:!0,cancelable:!0,clientX:t.clientX,clientY:t.clientY,detail:1,view:n}))}function Qn(e){let t=M(s(e))===e,n=$n(e,-2e3);try{t&&e.blur(),e.focus({preventScroll:!0})}finally{n()}}function $n(e,t){let n=e.style.opacity,r=e.style.transform,i=e.style.transition;return e.style.transition=`none`,e.style.opacity=`0`,e.style.transform=`translateY(${t}px)`,()=>{e.style.opacity=n,e.style.transform=r,e.style.transition=i}}function er(e,t){let n=p(e);return V(n,t,`vertical`)??V(n,t,`vertical`,!0)}function tr(e){let t=e.visualViewport;if(!t||t.scale!==1||e.innerHeight-t.height<=Fn)return null;let n=Math.max(0,t.offsetTop);return{top:n,bottom:Math.min(e.innerHeight,n+t.height)}}var nr=class extends Ue{};function rr(){return new nr}var ir=z(at,`tr-layer-backdrop tr-drawer-backdrop`),ar=z(ot,`tr-drawer-close`),or=z(ct,`tr-drawer-content`),sr=z(lt,`tr-drawer-description`);function cr(){return rr()}var lr=z(pt,`tr-drawer-indent`),ur=z(ht,`tr-drawer-indent-background`),dr=z(Ot,`tr-drawer-popup`),fr=z(kt,`tr-drawer-portal`),pr=z(At,`tr-drawer-provider`);function mr(e){return(0,Z.jsx)(Pt,{...e})}var hr=z(Yt,`tr-drawer-swipe-area`),gr=z(Xt,`tr-drawer-title`);function _r({className:e,...n}){return(0,Z.jsx)(Zt,{...n,className:t(`tr-drawer-trigger`,e)})}var vr={Backdrop:ir,Close:ar,Content:or,Description:sr,Indent:lr,IndentBackground:ur,Popup:dr,Portal:fr,Provider:pr,Root:mr,SwipeArea:hr,Title:gr,Trigger:_r,Viewport:z(hn,`tr-layer-viewport tr-drawer-viewport`),VirtualKeyboardProvider:z(Gn,`tr-drawer-virtual-keyboard-provider`),createHandle:cr},yr=(0,Q.createContext)(null);function br(e){let t=(0,Q.useContext)(yr);if(!t)throw Error(`TRAppShell.${e} must be used inside TRAppShell.Root.`);return t}function xr({appearance:e=`ghost`,className:n,uiSize:r=`md`,...i}){let{drawerActive:a,mobile:o}=br(`Close`);if(o&&!a)return null;let s=(0,Z.jsx)(ue,{...i,appearance:e,className:t(`tr-app-shell-close`,n),uiSize:r});return a?(0,Z.jsx)(vr.Close,{render:s}):s}function Sr({className:e,...t}){return(0,Z.jsx)(`header`,{...t,className:a(`tr-app-shell-header`,e)})}var Cr=Q.createContext(void 0);function wr(){let e=Q.useContext(Cr);if(e===void 0)throw Error(y(53));return e}function Tr(e,t,n){if(!e)return 0;let r=getComputedStyle(e),i=`${t}${n===`x`?`Inline`:`Block`}`,a=parseFloat(r[`${i}Start`]);return n===`x`&&t===`margin`?a*2:a+parseFloat(r[`${i}End`])}var Er=e=>t=>t?{[e]:``}:null,Dr={hasOverflowX:Er(`data-has-overflow-x`),hasOverflowY:Er(`data-has-overflow-y`),overflowXStart:Er(`data-overflow-x-start`),overflowXEnd:Er(`data-overflow-x-end`),overflowYStart:Er(`data-overflow-y-start`),overflowYEnd:Er(`data-overflow-y-end`),cornerHidden:()=>null},Or={x:0,y:0},kr={width:0,height:0},Ar={xStart:!1,xEnd:!1,yStart:!1,yEnd:!1},jr={x:!0,y:!0,corner:!0},Mr=Q.forwardRef(function(e,t){let{render:n,className:r,overflowEdgeThreshold:i,style:a,...o}=e,{xStart:s,xEnd:c,yStart:u,yEnd:d}=Nr(i),f=fe(),p=X(),m=X(),{nonce:h,disableStyleElements:g}=he(),[_,v]=Q.useState(!1),[y,b]=Q.useState(!1),[S,C]=Q.useState(!1),[w,T]=Q.useState(!1),[E,D]=Q.useState(!1),[O,k]=Q.useState(kr),[A,j]=Q.useState(kr),[M,N]=Q.useState(Ar),[F,I]=Q.useState(jr),L=Q.useRef(null),R=Q.useRef(null),z=Q.useRef(null),B=Q.useRef(null),V=Q.useRef(null),H=Q.useRef(null),ee=Q.useRef(null),U=Q.useRef(null),W=Q.useRef(0),te=Q.useRef(0),ne=Q.useRef(0),re=Q.useRef(0),G=Q.useRef(`vertical`),K=Q.useRef(Or),q=Q.useRef(null);function J(e){let t=e?C:b,n=e?p:m;t(!0),n.start(500,()=>{t(!1)})}let ie=x(e=>{let t=e.x-K.current.x,n=e.y-K.current.y;K.current=e,n!==0&&J(!0),t!==0&&J(!1)}),Y=x(()=>{let e=R.current;e&&q.current===null&&(q.current=e.style.scrollSnapType,e.style.scrollSnapType=`none`)}),ae=x(e=>{if(e.button!==0||U.current!==null&&(G.current===`vertical`?V.current:H.current)?.hasPointerCapture(U.current))return;U.current=e.pointerId,W.current=e.clientY,te.current=e.clientX,G.current=e.currentTarget.getAttribute(`data-orientation`);let t=R.current;t&&(ne.current=t.scrollTop,re.current=t.scrollLeft,Y()),(G.current===`vertical`?V.current:H.current)?.setPointerCapture(e.pointerId)}),oe=x(e=>{if(e.pointerId!==U.current)return;U.current=null,(G.current===`vertical`?C:b)(!1),q.current!==null&&(R.current&&(R.current.style.scrollSnapType=q.current),q.current=null);let t=G.current===`vertical`?V.current:H.current;t?.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId)}),se=x(e=>{if(e.pointerId!==U.current)return;if(e.buttons%2==0){oe(e);return}let t=R.current;if(!t)return;let n=G.current===`vertical`,r=n?V.current:H.current,i=n?z.current:B.current;if(!r||!i)return;let a=n?`y`:`x`,o=Tr(i,`padding`,a),s=Tr(r,`margin`,a),c=n?r.offsetHeight:r.offsetWidth,l=(n?i.offsetHeight:i.offsetWidth)-c-o-s,u=n?e.clientY-W.current:e.clientX-te.current,d=l<=0?0:u/l,f=n?t.scrollHeight:t.scrollWidth,p=n?t.clientHeight:t.clientWidth,m=(n?ne.current:re.current)+d*(f-p);n?t.scrollTop=m:t.scrollLeft=m,e.preventDefault(),J(n)});function ce(e){T(e.pointerType===`touch`)}function le(e){if(ce(e),e.pointerType!==`touch`){let t=P(L.current,e.target);v(t)}}let ue=Q.useMemo(()=>({scrolling:y||S,hasOverflowX:!F.x,hasOverflowY:!F.y,overflowXStart:M.xStart,overflowXEnd:M.xEnd,overflowYStart:M.yStart,overflowYEnd:M.yEnd,cornerHidden:F.corner}),[y,S,F.x,F.y,F.corner,M]),de={role:`presentation`,onPointerEnter:le,onPointerMove:le,onPointerDown:ce,onPointerLeave(){v(!1)},style:{position:`relative`,"--scroll-area-corner-height":`${O.height}px`,"--scroll-area-corner-width":`${O.width}px`}},pe=l(`div`,e,{state:ue,ref:[t,L],props:[de,o],stateAttributesMapping:Dr}),me=Q.useMemo(()=>({handlePointerDown:ae,handlePointerMove:se,handlePointerUp:oe,handleScroll:ie,disableViewportSnap:Y,cornerSize:O,setCornerSize:k,thumbSize:A,setThumbSize:j,hasMeasuredScrollbar:E,setHasMeasuredScrollbar:D,touchModality:w,cornerRef:ee,scrollingX:y,scrollingY:S,hovering:_,setHovering:v,viewportRef:R,scrollbarYRef:z,scrollbarXRef:B,thumbYRef:V,thumbXRef:H,rootId:f,hiddenState:F,setHiddenState:I,overflowEdges:M,setOverflowEdges:N,viewportState:ue,overflowEdgeThreshold:{xStart:s,xEnd:c,yStart:u,yEnd:d}}),[ae,se,oe,ie,Y,O,A,E,w,y,S,_,f,F,M,ue,s,c,u,d]);return(0,Z.jsxs)(Cr.Provider,{value:me,children:[!g&&Se.getElement(h),pe]})});function Nr(e){let t=typeof e==`number`?{xStart:e,xEnd:e,yStart:e,yEnd:e}:e;return{xStart:Math.max(0,t?.xStart||0),xEnd:Math.max(0,t?.xEnd||0),yStart:Math.max(0,t?.yStart||0),yEnd:Math.max(0,t?.yEnd||0)}}var Pr=Q.createContext(void 0);function Fr(){let e=Q.useContext(Pr);if(e===void 0)throw Error(y(55));return e}var Ir=[`--scroll-area-overflow-x-start`,`--scroll-area-overflow-x-end`,`--scroll-area-overflow-y-start`,`--scroll-area-overflow-y-end`],Lr=!1;function Rr(){Lr||L||(typeof CSS<`u`&&`registerProperty`in CSS&&Ir.forEach(e=>{try{CSS.registerProperty({name:e,syntax:`<length>`,inherits:!1,initialValue:`0px`})}catch{}}),Lr=!0)}var zr=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{viewportRef:o,scrollbarYRef:s,scrollbarXRef:u,thumbYRef:d,thumbXRef:f,cornerRef:p,cornerSize:m,setCornerSize:h,setThumbSize:g,rootId:_,setHiddenState:v,hiddenState:y,setHasMeasuredScrollbar:b,handleScroll:S,touchModality:C,setHovering:w,setOverflowEdges:T,overflowEdgeThreshold:E,viewportState:D}=wr(),k=O(),A=Q.useRef(!0),j=Q.useRef([NaN,NaN,NaN,NaN]),M=X(),N=X(),P=x(()=>{let e=o.current,t=s.current,n=u.current,r=d.current,i=f.current,a=p.current;if(!e)return;let c=e.scrollHeight,l=e.scrollWidth,_=e.clientHeight,y=e.clientWidth,x=e.scrollTop,S=e.scrollLeft,C=j.current,w=Number.isNaN(C[0]);if(C[0]=_,C[1]=c,C[2]=y,C[3]=l,w&&b(!0),c===0||l===0)return;let D=Br(e),O=D.y,A=D.x,M=y/l,N=_/c,P=Math.max(0,l-y),F=Math.max(0,c-_),I=0,L=0;A||(I=xe(k===`rtl`?-S:S,P),L=P-I);let R=O?0:xe(x,F),z=O?0:F-R,B=A?0:y,V=O?0:_,H=0,ee=0;!A&&!O&&(H=t?.offsetWidth||0,ee=n?.offsetHeight||0);let U=m.width===0&&m.height===0,W=U?H:0,te=U?ee:0,ne=Tr(n,`padding`,`x`),re=Tr(t,`padding`,`y`),G=Tr(i,`margin`,`x`),K=Tr(r,`margin`,`y`),q=B-ne-G,J=V-re-K,ie=n?Math.min(n.offsetWidth-W,q):q,Y=t?Math.min(t.offsetHeight-te,J):J,X=Math.max(16,ie*M),ae=Math.max(16,Y*N);if(g(e=>Vr(e,{width:X,height:ae})),t&&r){let e=Hr(r,`--scroll-area-thumb-height`,x,F,c,ae,t.offsetHeight-ae-re-K);r.style.transform=`translate3d(0,${e}px,0)`}if(n&&i){let e=n.offsetWidth-X-ne-G,t=Hr(i,`--scroll-area-thumb-width`,k===`rtl`?-S:S,P,l,X,e);i.style.transform=`translate3d(${k===`rtl`?-t:t}px,0,0)`}let oe=[I,L,R,z];Ir.forEach((t,n)=>{e.style.setProperty(t,`${oe[n]}px`)}),a&&h(e=>Vr(e,{width:H,height:ee})),v(e=>Vr(e,D));let se={xStart:!A&&I>E.xStart,xEnd:!A&&L>E.xEnd,yStart:!O&&R>E.yStart,yEnd:!O&&z>E.yEnd};T(e=>Vr(e,se))});c(()=>{Rr()},[]),c(()=>{queueMicrotask(P)},[P,y,k,E.xStart,E.xEnd,E.yStart,E.yEnd]),c(()=>{o.current?.matches(`:hover`)&&w(!0)},[o,w]),c(()=>{let e=o.current;if(typeof ResizeObserver>`u`||!e)return;let t=!1,n=new ResizeObserver(()=>{if(!t){t=!0;let n=j.current;if(n[0]===e.clientHeight&&n[1]===e.scrollHeight&&n[2]===e.clientWidth&&n[3]===e.scrollWidth)return}P()});return n.observe(e),N.start(0,()=>{let t=e.getAnimations({subtree:!0});t.length!==0&&Promise.allSettled(t.map(e=>e.finished)).then(P).catch(()=>{})}),()=>{n.disconnect(),N.clear()}},[P,o,N]);function F(){A.current=!1}let I={role:`presentation`,..._&&{"data-id":`${_}-viewport`},tabIndex:y.x&&y.y?-1:0,className:Se.className,style:{overflow:`scroll`},onScroll(){o.current&&(P(),(C||!A.current)&&S({x:o.current.scrollLeft,y:o.current.scrollTop}),M.start(100,()=>{A.current=!0}))},onWheel:F,onPointerMove:F,onPointerEnter:F,onKeyDown:F},L=l(`div`,e,{ref:[t,o],state:D,props:[I,a],stateAttributesMapping:Dr}),R=Q.useMemo(()=>({computeThumbPosition:P}),[P]);return(0,Z.jsx)(Pr.Provider,{value:R,children:L})});function Br(e){let t=e.clientHeight>=e.scrollHeight,n=e.clientWidth>=e.scrollWidth;return{y:t,x:n,corner:t||n}}function Vr(e,t){for(let n in t)if(e[n]!==t[n])return t;return e}function Hr(e,t,n,r,i,a,o){let s=Y(n,0,r),c=n-s,l=Math.max(16,a*i/(i+Math.abs(c)));return e.style.setProperty(t,c?`${l}px`:``),(r?s/r*o:0)+(c>0?a-l:0)}var Ur=Q.createContext(void 0);function Wr(){let e=Q.useContext(Ur);if(e===void 0)throw Error(y(54));return e}var Gr=Q.forwardRef(function(e,t){let{render:n,className:r,orientation:i=`vertical`,keepMounted:a=!1,style:o,...s}=e,{hovering:c,scrollingX:u,scrollingY:d,hiddenState:f,scrollbarYRef:p,scrollbarXRef:m,viewportRef:h,thumbYRef:g,thumbXRef:_,handlePointerDown:v,handlePointerUp:y,handleScroll:b,disableViewportSnap:x,rootId:S,thumbSize:C,hasMeasuredScrollbar:w,viewportState:T}=wr(),D=i===`vertical`,k={...T,hovering:c,scrolling:D?d:u,orientation:i},A=O(),j=!w&&!a,M=D?f.y:f.x,N=a||!M;Q.useEffect(()=>{if(!N)return;let e=h.current,t=D?p.current:m.current;if(!t)return;function n(t){if(!e||t.ctrlKey)return;let n=!D,r=n?`scrollLeft`:`scrollTop`,i=n?t.deltaX:t.deltaY;if(i===0)return;let a=n?e.scrollWidth-e.clientWidth:e.scrollHeight-e.clientHeight,o=n&&A===`rtl`?-a:0,s=n&&A===`rtl`?0:a,c=e[r];c<=o&&i<0||c>=s&&i>0||(t.preventDefault(),e[r]=Math.min(s,Math.max(o,c+i)),b({x:e.scrollLeft,y:e.scrollTop}))}return K(t,`wheel`,n,{passive:!1})},[A,b,D,m,p,N,h]);let F={...S&&{"data-id":`${S}-scrollbar`},onPointerDown(e){if(e.button!==0)return;let t=E(e.nativeEvent),n=D?g.current:_.current;if(n&&P(n,t))return;let r=h.current;if(!r)return;let i=D?p.current:m.current;if(!n||!i)return;let a=D?`y`:`x`,o=Tr(n,`margin`,a),s=Tr(i,`padding`,a),c=D?n.offsetHeight:n.offsetWidth,l=i.getBoundingClientRect(),u=D?e.clientY-l.top-c/2-s+o/2:e.clientX-l.left-c/2-s+o/2,d=D?r.scrollHeight:r.scrollWidth,f=D?r.clientHeight:r.clientWidth,y=(D?i.offsetHeight:i.offsetWidth)-c-s-o;if(y<=0)return;let S=u/y,C=d-f;x(),D?r.scrollTop=S*C:A===`rtl`?r.scrollLeft=-(1-S)*C:r.scrollLeft=S*C,b({x:r.scrollLeft,y:r.scrollTop}),v(e)},onPointerUp:y,onPointerCancel:y,style:{position:`absolute`,touchAction:`none`,WebkitUserSelect:`none`,userSelect:`none`,visibility:j?`hidden`:void 0,...D?{top:0,bottom:`var(--scroll-area-corner-height)`,insetInlineEnd:0,"--scroll-area-thumb-height":`${C.height}px`}:{insetInlineStart:0,insetInlineEnd:`var(--scroll-area-corner-width)`,bottom:0,"--scroll-area-thumb-width":`${C.width}px`}}},I=l(`div`,e,{ref:[t,D?p:m],state:k,props:[F,s],stateAttributesMapping:Dr});return N?(0,Z.jsx)(Ur.Provider,{value:i,children:I}):null}),Kr=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{computeThumbPosition:o}=Fr(),{hasMeasuredScrollbar:s,viewportState:u}=wr(),d=Q.useRef(null),f=Q.useRef(s);return c(()=>{if(typeof ResizeObserver>`u`)return;let e=!1,t=new ResizeObserver(()=>{!e&&(e=!0,!f.current)||o()});return d.current&&t.observe(d.current),()=>{t.disconnect()}},[o]),l(`div`,e,{ref:[t,d],state:u,stateAttributesMapping:Dr,props:[{role:`presentation`,style:{minWidth:`fit-content`}},a]})}),qr=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{thumbYRef:o,thumbXRef:s,handlePointerDown:c,handlePointerMove:u,handlePointerUp:d,scrollingX:f,scrollingY:p,hasMeasuredScrollbar:m}=wr(),h=Wr(),g=h===`vertical`;return l(`div`,e,{ref:[t,g?o:s],state:{scrolling:g?p:f,orientation:h},props:[{onPointerDown:c,onPointerMove:u,onPointerUp:d,onPointerCancel:d,style:{visibility:m?void 0:`hidden`,...g?{height:`var(--scroll-area-thumb-height)`}:{width:`var(--scroll-area-thumb-width)`}}},a]})}),Jr=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{cornerRef:o,cornerSize:s,hiddenState:c}=wr(),u=l(`div`,e,{ref:[t,o],props:[{style:{position:`absolute`,bottom:0,insetInlineEnd:0,width:s.width,height:s.height}},a]});return c.corner?null:u}),Yr=z(Kr,`tr-scroll-area-content`),Xr=z(Jr,`tr-scroll-area-corner`);function Zr({autoHide:e=!1,className:n,variant:r=`surface`,...i}){return(0,Z.jsx)(Mr,{...i,className:t(`tr-scroll-area`,n),"data-auto-hide":e||void 0,"data-variant":r})}var Qr=z(Gr,`tr-scroll-area-scrollbar`),$r=z(qr,`tr-scroll-area-thumb`),ei={Root:Zr,Viewport:z(zr,`tr-scroll-area-viewport`),Scrollbar:Qr,Content:Yr,Thumb:$r,Corner:Xr};function ti({children:e,className:t,contentClassName:n,ref:r,render:i,scroll:o=!1,viewportLabel:s=`Page content`,...c}){let{isPending:l,mainViewportRef:u,onMainScroll:d,pageScroll:f}=br(`Main`),p=(0,Z.jsx)(`div`,{"aria-busy":l||void 0,className:a(`tr-app-shell-main-content`,n),children:e}),m=e;return o&&f===`document`?m=p:o&&(m=(0,Z.jsxs)(ei.Root,{className:`tr-app-shell-main-scroll-area`,variant:`plain`,children:[(0,Z.jsx)(ei.Viewport,{"aria-label":s,className:`tr-app-shell-main-viewport`,onScroll:d,ref:u,role:`region`,children:(0,Z.jsx)(ei.Content,{"aria-busy":l||void 0,className:a(`tr-app-shell-main-content`,n),children:e})}),(0,Z.jsx)(ei.Scrollbar,{orientation:`vertical`,children:(0,Z.jsx)(ei.Thumb,{})})]})),h({defaultTagName:`main`,props:{...c,children:m,className:a(`tr-app-shell-main`,t)},ref:r,render:i})}function ni({className:e,...t}){return(0,Z.jsx)(`aside`,{...t,className:a(`tr-app-shell-outline`,e)})}var ri={sm:`40rem`,md:`48rem`,lg:`64rem`,xl:`80rem`},ii=typeof window>`u`?Q.useEffect:Q.useLayoutEffect,ai=Q.createContext(void 0);function oi(){let e=Q.useContext(ai);if(e===void 0)throw Error(y(51));return e}var si={status(e){return{[`data-${e}`]:``}}},ci=Q.forwardRef(function(e,t){let{format:n,getAriaValueText:r,locale:i,max:a=100,min:o=0,value:s,render:c,className:u,children:d,style:f,...p}=e,[m,h]=Q.useState(),g=`indeterminate`,_=null,v=null,y=``,b=`indeterminate progress`;if(s!=null&&Number.isFinite(s)){let e=Ke(s,o,a);_=Y(Number.isNaN(e)?0:e,0,100),v=Y(s,o,a),g=v===a?`complete`:`progressing`,y=n?Ge(v,i,n):Ge(_/100,i,{style:`percent`}),b=y}let x=Q.useMemo(()=>({status:g}),[g]),S={"aria-labelledby":m,"aria-valuemax":a,"aria-valuemin":o,"aria-valuenow":v??void 0,"aria-valuetext":r?r(y,s):b,role:`progressbar`,children:(0,Z.jsxs)(Q.Fragment,{children:[d,(0,Z.jsx)(`span`,{role:`presentation`,style:B,children:`x`})]})},C=Q.useMemo(()=>({formattedValue:y,percentageValue:_,setLabelId:h,state:x,value:s}),[y,_,h,x,s]),w=l(`div`,e,{state:x,ref:t,props:[S,p],stateAttributesMapping:si});return(0,Z.jsx)(ai.Provider,{value:C,children:w})}),li=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{state:o}=oi();return l(`div`,e,{state:o,ref:t,props:a,stateAttributesMapping:si})}),ui=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,{percentageValue:o,state:s}=oi();return l(`div`,e,{state:s,ref:t,props:[{style:o==null?{}:{insetInlineStart:0,height:`inherit`,width:`${o}%`}},a],stateAttributesMapping:si})}),di=Q.forwardRef(function(e,t){let{className:n,render:r,children:i,style:a,...o}=e,{value:s,formattedValue:c,state:u}=oi(),d=u.status===`indeterminate`;return l(`span`,e,{state:u,ref:t,props:[{"aria-hidden":!0,children:typeof i==`function`?i(d?`indeterminate`:c,s):d?null:c},o],stateAttributesMapping:si})}),fi=Q.forwardRef(function(e,t){let{render:n,className:r,style:i,id:a,...o}=e,{setLabelId:s,state:c}=oi();return l(`span`,e,{state:c,ref:t,props:[{id:_e(a,s),role:`presentation`},o],stateAttributesMapping:si})}),pi=z(ui,`tr-progress-indicator`),mi=z(fi,`tr-progress-label`);function hi({className:e,uiSize:n=`md`,variant:r=`neutral`,...i}){return(0,Z.jsx)(ci,{...i,className:t(`tr-progress`,e),"data-ui-size":n,"data-variant":r})}var gi={Root:hi,Track:z(li,`tr-progress-track`),Indicator:pi,Label:mi,Value:z(di,`tr-progress-value`)};function _i({label:e}){return(0,Z.jsxs)(gi.Root,{className:`tr-app-shell-progress`,uiSize:`md`,value:null,children:[(0,Z.jsx)(gi.Label,{className:`tr-app-shell-visually-hidden`,children:e}),(0,Z.jsx)(gi.Track,{children:(0,Z.jsx)(gi.Indicator,{})})]})}var vi={sm:`(width < ${ri.md})`,lg:`(width < ${ri.lg})`};function yi(e,t){let n=window.matchMedia(e);return n.addEventListener(`change`,t),()=>n.removeEventListener(`change`,t)}function bi(e){let t=e.replace(/^#/,``);try{return decodeURIComponent(t)}catch{return t}}function xi({breakpoint:e=`lg`,children:t,chrome:n=`app`,className:r,currentPath:i,defaultOpen:o,defaultSidebarMode:s=`expanded`,drawerPopupClassName:c,hash:l=``,layout:u=`header-first`,loadingLabel:d=`Loading page`,locationKey:f,mobileDrawerSide:p=`left`,mobileSidebar:m=`drawer`,navigationKind:h=`PUSH`,onOpenChange:g,onSidebarModeChange:_,open:v,pageScroll:y=`container`,pendingPath:b,portalContainer:x,sidebarMode:S,...C}){let w=vi[e],T=(0,Q.useSyncExternalStore)(e=>yi(w,e),()=>window.matchMedia(w).matches,()=>!1),[E,D]=(0,Q.useState)(s),O=T&&m===`rail`?`rail`:S??E,k=T&&m===`drawer`,A=(0,Q.useCallback)(e=>{S===void 0&&D(e),_?.(e)},[S,_]),j=(0,Q.useMemo)(()=>vr.createHandle(),[]),M=(0,Q.useRef)(null),N=(0,Q.useRef)(null),P=(0,Q.useRef)(new Map),F=b!==void 0&&i!==void 0&&b!==i,I=f??i??``,L=y===`document`,R=(0,Q.useRef)(!1),z=(0,Q.useCallback)(e=>{P.current.set(I,e.currentTarget.scrollTop)},[I]),B=(0,Q.useMemo)(()=>({breakpoint:e,chrome:n,defaultOpen:o,drawerHandle:j,drawerPopupClassName:c,drawerActive:k,isPending:F,mainViewportRef:N,mobile:T,mobileDrawerSide:p,mobileSidebar:m,onMainScroll:z,onOpenChange:g,open:v,pageScroll:y,portalContainer:x,setSidebarMode:A,sidebarMode:O,triggerRef:M}),[e,n,o,j,c,k,F,T,p,m,z,g,v,y,x,A,O]);return ii(()=>{if(!L||!(`scrollRestoration`in history))return;let e=history.scrollRestoration;return history.scrollRestoration=`manual`,()=>{history.scrollRestoration=e}},[L]),(0,Q.useEffect)(()=>{if(!L)return;let e=()=>{R.current||P.current.set(I,window.scrollY)};return window.addEventListener(`scroll`,e,{passive:!0}),()=>window.removeEventListener(`scroll`,e)},[L,I]),(0,Q.useEffect)(()=>{let e=N.current;if(!L&&e===null)return;R.current=!0;let t=requestAnimationFrame(()=>{R.current=!1});if(l.length>1){let t=document.getElementById(bi(l));t!==null&&(L||e?.contains(t)===!0)&&t.scrollIntoView({block:`start`})}else{let t=h===`POP`?P.current.get(I)??0:0;L?window.scrollTo(0,t):e!==null&&(e.scrollTop=t)}return()=>cancelAnimationFrame(t)},[L,l,I,h]),(0,Z.jsx)(yr.Provider,{value:B,children:(0,Z.jsxs)(`div`,{...C,className:a(`tr-app-shell`,r),"data-breakpoint":e,"data-chrome":n,"data-layout":u,"data-mobile-sidebar":m,"data-page-scroll":y,"data-sidebar-mode":O,children:[F?(0,Z.jsx)(_i,{label:d}):null,t]})})}function Si({children:e}){return(0,Z.jsxs)(ei.Root,{className:`tr-app-shell-scroll-area`,variant:`plain`,children:[(0,Z.jsx)(ei.Viewport,{className:`tr-app-shell-scroll-viewport`,children:(0,Z.jsx)(ei.Content,{children:e})}),(0,Z.jsx)(ei.Scrollbar,{orientation:`vertical`,children:(0,Z.jsx)(ei.Thumb,{})})]})}function Ci({children:e,className:t,collapsed:n=!1,...r}){let{defaultOpen:i,drawerHandle:o,drawerPopupClassName:s,drawerActive:c,mobileDrawerSide:l,mobile:u,onOpenChange:d,open:f,portalContainer:p,sidebarMode:m,triggerRef:h}=br(`Sidebar`),g={...r[`aria-label`]?{"aria-label":r[`aria-label`]}:{},...r[`aria-labelledby`]?{"aria-labelledby":r[`aria-labelledby`]}:{}},_=(0,Z.jsx)(`aside`,{...r,className:a(`tr-app-shell-sidebar`,t),"data-collapsed":n?`true`:`false`,"data-sidebar-mode":c?`expanded`:m,inert:n&&!c,children:(0,Z.jsx)(Si,{children:e})});return!u||!c?_:(0,Z.jsx)(vr.Root,{defaultOpen:i,handle:o,modal:!0,onOpenChange:d,open:f,swipeDirection:l,children:(0,Z.jsxs)(vr.Portal,{container:p,children:[(0,Z.jsx)(vr.Backdrop,{className:`tr-app-shell-backdrop`}),(0,Z.jsx)(vr.Viewport,{className:a(`tr-app-shell-drawer-viewport`,l===`right`?`tr-app-shell-drawer-viewport-right`:void 0),children:(0,Z.jsx)(vr.Popup,{...g,className:a(`tr-app-shell-drawer-popup`,s),finalFocus:()=>h.current,children:(0,Z.jsx)(vr.Content,{className:`tr-app-shell-drawer-content`,children:_})})})]})})}function wi({className:e,...t}){return(0,Z.jsx)(`span`,{...t,className:a(`tr-app-shell-sidebar-label`,e)})}function Ti({appearance:e=`ghost`,className:n,onClick:r,uiSize:i=`md`,...a}){let{mobile:o,setSidebarMode:s,sidebarMode:c}=br(`SidebarToggle`);return o?null:(0,Z.jsx)(ue,{...a,appearance:e,"aria-expanded":c===`expanded`,className:t(`tr-app-shell-sidebar-toggle`,n),onClick:e=>{r?.(e),e.defaultPrevented||s(c===`expanded`?`rail`:`expanded`)},uiSize:i})}function Ei({appearance:e=`ghost`,className:n,ref:r,uiSize:i=`md`,...a}){let{drawerActive:o,drawerHandle:s,mobile:c,triggerRef:l}=br(`Trigger`),u=(0,Q.useCallback)(e=>{l.current=e,typeof r==`function`?r(e):r&&(r.current=e)},[r,l]);return c&&!o?null:(0,Z.jsx)(vr.Trigger,{handle:s,render:(0,Z.jsx)(ue,{...a,appearance:e,className:t(`tr-app-shell-trigger`,n),ref:u,uiSize:i})})}var Di={Actions:nt,Brand:rt,Close:xr,Header:Sr,Main:ti,Outline:ni,Root:xi,Sidebar:Ci,SidebarLabel:wi,SidebarToggle:Ti,Trigger:Ei};function Oi(e,t){return e(t===`admin`?`admin.users.roleAdmin`:`admin.users.roleUser`)}function ki(e,t){return e(t===`database`?`admin.users.sourceDatabase`:`admin.users.sourceConfig`)}function Ai({user:e,current:t,title:n,description:r,children:i}){let{t:a}=f(),{title:o,iconUrl:s}=ve(),{colorScheme:c,toggleColorScheme:l}=I(),u=w(),d=A(),p=se({...Ee,onSuccess:async()=>{d.setQueryData(ke.queryKey,{user:null}),await qe(),u.navigate({to:`/login`})},onSettled:()=>{d.invalidateQueries({queryKey:ke.queryKey})}});return(0,Z.jsxs)(Di.Root,{breakpoint:`lg`,className:`bg-tinyrack-surface`,children:[(0,Z.jsx)(ce,{}),(0,Z.jsxs)(Di.Sidebar,{className:`flex flex-col gap-tinyrack-xl border-tinyrack-border border-r-tinyrack-default bg-tinyrack-surface p-tinyrack-lg`,children:[(0,Z.jsx)(Di.Close,{"aria-label":a(`admin.nav.close`),children:(0,Z.jsx)(de,{"aria-hidden":!0,className:`size-tinyrack-lg`})}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-md`,children:[s?(0,Z.jsx)(`img`,{alt:``,className:`size-tinyrack-2xl object-contain`,src:s}):(0,Z.jsx)(Ne.Root,{shape:`square`,uiSize:`lg`,children:(0,Z.jsx)(Ne.Fallback,{className:`bg-tinyrack-primary text-tinyrack-on-primary`,children:(0,Z.jsx)(Qe,{"aria-hidden":!0,className:`size-tinyrack-xl`})})}),(0,Z.jsxs)(`div`,{className:`min-w-0`,children:[(0,Z.jsx)(m,{as:`p`,truncate:!0,weight:`medium`,children:o??a(`admin.mobileTitle`)}),(0,Z.jsx)(m,{as:`p`,color:`muted`,variant:`caption`,children:a(`admin.console`)})]})]}),(0,Z.jsxs)(`ul`,{className:`flex w-full flex-col gap-tinyrack-xs p-0`,children:[(0,Z.jsx)(`li`,{children:(0,Z.jsx)(ji,{active:t===`dashboard`,icon:Je,to:`/admin`,children:a(`admin.nav.dashboard`)})}),(0,Z.jsx)(`li`,{children:(0,Z.jsx)(ji,{active:t===`users`,icon:$e,to:`/admin/users`,children:a(`admin.nav.users`)})})]}),(0,Z.jsxs)(`div`,{className:`mt-auto flex flex-col items-start gap-tinyrack-sm border-tinyrack-border border-t-tinyrack-default pt-tinyrack-lg`,children:[(0,Z.jsx)(m,{color:`muted`,variant:`label`,children:a(`admin.signedInAs`)}),(0,Z.jsx)(m,{as:`p`,className:`w-full`,truncate:!0,variant:`bodySm`,children:e.email}),(0,Z.jsx)(je,{uiSize:`md`,variant:`neutral`,children:a(`admin.roleBadge`,{role:Oi(a,e.role)})}),(0,Z.jsxs)(_,{appearance:`ghost`,"data-testid":`admin-logout`,disabled:p.isPending,loading:p.isPending,onClick:()=>p.mutate(),type:`button`,uiSize:`sm`,children:[(0,Z.jsx)(Te,{"aria-hidden":!0,className:`size-tinyrack-lg`}),a(`profile.logout`)]})]})]}),(0,Z.jsxs)(Di.Header,{className:`sticky top-0 z-tinyrack-chrome flex items-center gap-tinyrack-md border-tinyrack-border border-b-tinyrack-default bg-tinyrack-surface px-tinyrack-lg lg:px-tinyrack-2xl`,children:[(0,Z.jsx)(Di.Trigger,{"aria-label":a(`admin.nav.open`),children:(0,Z.jsx)(Ye,{"aria-hidden":!0,className:`size-tinyrack-xl`})}),(0,Z.jsxs)(Di.Brand,{className:`min-w-0`,children:[(0,Z.jsxs)(`nav`,{"aria-label":a(`admin.breadcrumbLabel`),className:`hidden items-center gap-tinyrack-sm lg:flex`,children:[(0,Z.jsx)(m,{color:`muted`,variant:`bodySm`,children:a(`admin.console`)}),(0,Z.jsx)(we,{"aria-hidden":!0,className:`size-tinyrack-lg text-tinyrack-text-placeholder`}),(0,Z.jsx)(m,{variant:`bodySm`,weight:`medium`,children:n})]}),(0,Z.jsxs)(`div`,{className:`min-w-0 lg:hidden`,children:[(0,Z.jsx)(m,{as:`p`,truncate:!0,weight:`medium`,children:a(`admin.mobileTitle`)}),(0,Z.jsx)(m,{as:`p`,color:`muted`,truncate:!0,variant:`caption`,children:e.email})]})]}),(0,Z.jsxs)(Di.Actions,{children:[(0,Z.jsxs)(`div`,{className:`hidden items-center gap-tinyrack-xs rounded-tinyrack-full border border-tinyrack-border bg-tinyrack-surface-muted px-tinyrack-md py-tinyrack-xs sm:flex`,children:[(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`size-tinyrack-sm rounded-tinyrack-full bg-tinyrack-success`}),(0,Z.jsx)(m,{color:`muted`,variant:`caption`,children:a(`admin.livePolicy`)})]}),(0,Z.jsx)(je,{uiSize:`md`,variant:`neutral`,children:a(`admin.environment`)}),(0,Z.jsx)(ye,{}),(0,Z.jsx)(le,{colorScheme:c,onToggle:l})]})]}),(0,Z.jsxs)(Di.Main,{className:`mx-auto flex w-full flex-1 flex-col gap-tinyrack-xl px-tinyrack-lg py-tinyrack-2xl lg:px-tinyrack-2xl`,children:[(0,Z.jsxs)(`header`,{className:`flex flex-col gap-tinyrack-xl xl:flex-row xl:items-end xl:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-tinyrack-md`,children:[(0,Z.jsx)(m,{color:`primary`,variant:`label`,children:a(`admin.eyebrow`)}),(0,Z.jsx)(m,{as:`h1`,variant:`display`,children:n}),(0,Z.jsx)(m,{as:`p`,className:`max-w-tinyrack-overlay-md`,color:`muted`,variant:`body`,children:r})]}),(0,Z.jsx)(Me,{className:`max-w-tinyrack-overlay-md`,icon:De,type:`warning`,children:a(`admin.readonlyNotice`)})]}),i]})]})}function ji({active:e,icon:t,to:n,children:r}){return(0,Z.jsxs)(k,{className:`flex items-center gap-tinyrack-sm rounded-tinyrack-md px-tinyrack-lg py-tinyrack-sm ${e?`bg-tinyrack-surface-selected font-tinyrack-medium text-tinyrack-text`:`text-tinyrack-text-muted hover:bg-tinyrack-surface-hover hover:text-tinyrack-text`}`,to:n,children:[(0,Z.jsx)(t,{"aria-hidden":!0,className:`size-tinyrack-lg`}),(0,Z.jsx)(`span`,{children:r})]})}function Mi({label:e,value:t,hint:n,accent:r}){return(0,Z.jsxs)(`div`,{className:`flex flex-1 flex-col gap-tinyrack-xs p-tinyrack-xl`,children:[r&&(0,Z.jsx)(`div`,{className:`mb-tinyrack-sm h-tinyrack-xs w-tinyrack-3xl rounded-tinyrack-full ${r}`}),(0,Z.jsx)(m,{as:`p`,color:`muted`,variant:`bodySm`,children:e}),(0,Z.jsx)(m,{as:`p`,variant:`headingLg`,children:t}),(0,Z.jsx)(m,{as:`p`,color:`muted`,variant:`caption`,children:n})]})}var Ni={query:``,page:1,pageSize:20,includeDeleted:!1};function Pi(e={}){return{...Ni,...e}}async function Fi({query:e,page:t,pageSize:n,includeDeleted:r,managedBy:i,role:a}){return W(await J.api.admin.users.$get({query:{query:e,page:String(t),page_size:String(n),include_deleted:String(r),managed_by:i,role:a}}))}async function Ii(e){return W(await J.api.admin.users.$post({json:e}))}async function Li({sub:e,...t}){return W(await J.api.admin.users[`:sub`].$patch({param:{sub:e},json:t}))}async function Ri(e){return W(await J.api.admin.users[`:sub`].$delete({param:{sub:e}}))}var zi=(e={})=>{let t=Pi(e);return ae({queryKey:[`admin`,`users`,t],queryFn:async()=>Fi(t)})};export{Li as a,Oi as c,$e as d,Pi as i,ki as l,Ii as n,Mi as o,Ri as r,Ai as s,zi as t,et as u};
2
+ //# sourceMappingURL=admin-users-DvPbw1Vq.js.map