@tinyrack/issuary-server 0.23.0 → 0.25.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 (170) hide show
  1. package/dist/entrypoints/app.d.ts +0 -6
  2. package/dist/entrypoints/app.d.ts.map +1 -1
  3. package/dist/lib/config/branding.d.ts +0 -4
  4. package/dist/lib/config/branding.d.ts.map +1 -1
  5. package/dist/lib/config/branding.js +0 -14
  6. package/dist/lib/config/branding.js.map +1 -1
  7. package/dist/lib/config/resolved.d.ts +0 -2
  8. package/dist/lib/config/resolved.d.ts.map +1 -1
  9. package/dist/routes/api/config/get.d.ts +0 -4
  10. package/dist/routes/api/config/get.d.ts.map +1 -1
  11. package/dist/routes/api/config/get.js +0 -2
  12. package/dist/routes/api/config/get.js.map +1 -1
  13. package/dist/routes/api/config/index.d.ts +0 -4
  14. package/dist/routes/api/config/index.d.ts.map +1 -1
  15. package/dist/routes/api/index.d.ts +0 -4
  16. package/dist/routes/api/index.d.ts.map +1 -1
  17. package/dist/routes/index.d.ts +0 -4
  18. package/dist/routes/index.d.ts.map +1 -1
  19. package/dist/schemas/response.d.ts +0 -2
  20. package/dist/schemas/response.d.ts.map +1 -1
  21. package/dist/schemas/response.js +0 -5
  22. package/dist/schemas/response.js.map +1 -1
  23. package/dist/services/container.d.ts +0 -2
  24. package/dist/services/container.d.ts.map +1 -1
  25. package/package.json +2 -1
  26. package/public/assets/2fa-BlpDkf-r.js +2 -0
  27. package/public/assets/{2fa-CCOTIHDZ.js.map → 2fa-BlpDkf-r.js.map} +1 -1
  28. package/public/assets/{2fa-B5vLgDXQ.js → 2fa-DIpGlpoI.js} +2 -2
  29. package/public/assets/{2fa-B5vLgDXQ.js.map → 2fa-DIpGlpoI.js.map} +1 -1
  30. package/public/assets/2fa-tzTSqiOS.js +2 -0
  31. package/public/assets/{2fa-C5vUVgr_.js.map → 2fa-tzTSqiOS.js.map} +1 -1
  32. package/public/assets/{2fa-BqsM_D-X.js → 2fa-waFAdIa0.js} +2 -2
  33. package/public/assets/{2fa-BqsM_D-X.js.map → 2fa-waFAdIa0.js.map} +1 -1
  34. package/public/assets/DialogHandle-ChG5Sj7T.js +2 -0
  35. package/public/assets/{DialogHandle-BmtK2pRn.js.map → DialogHandle-ChG5Sj7T.js.map} +1 -1
  36. package/public/assets/admin-Ii29X08B.js +2 -0
  37. package/public/assets/admin-Ii29X08B.js.map +1 -0
  38. package/public/assets/{admin-users-DvPbw1Vq.js → admin-users-d7tT-cjc.js} +2 -2
  39. package/public/assets/{admin-users-DvPbw1Vq.js.map → admin-users-d7tT-cjc.js.map} +1 -1
  40. package/public/assets/alert-leqyvHOp.js.map +1 -1
  41. package/public/assets/{auth-choice-row-BCGjuedo.js → auth-choice-row-DUvFyo7b.js} +2 -2
  42. package/public/assets/{auth-choice-row-BCGjuedo.js.map → auth-choice-row-DUvFyo7b.js.map} +1 -1
  43. package/public/assets/{auth-field-DD8kvl--.js → auth-field-BSlAWkbx.js} +2 -2
  44. package/public/assets/{auth-field-DD8kvl--.js.map → auth-field-BSlAWkbx.js.map} +1 -1
  45. package/public/assets/auth-layout-CcJy6dVY.js +2 -0
  46. package/public/assets/auth-layout-CcJy6dVY.js.map +1 -0
  47. package/public/assets/{auth-page-header-CIn2E4zI.js → auth-page-header-ZLhtQ7Et.js} +2 -2
  48. package/public/assets/auth-page-header-ZLhtQ7Et.js.map +1 -0
  49. package/public/assets/authorization-context-banner-DfkjwE93.js +2 -0
  50. package/public/assets/authorization-context-banner-DfkjwE93.js.map +1 -0
  51. package/public/assets/{avatar-BEQjf2x6.js → avatar-D-70MKp8.js} +2 -2
  52. package/public/assets/{avatar-BEQjf2x6.js.map → avatar-D-70MKp8.js.map} +1 -1
  53. package/public/assets/badge-CsOfUji0.js.map +1 -1
  54. package/public/assets/checkbox-C3UmXoKz.js +2 -0
  55. package/public/assets/{checkbox-gdHnSFQ-.js.map → checkbox-C3UmXoKz.js.map} +1 -1
  56. package/public/assets/config-DTQCUlfZ.js.map +1 -1
  57. package/public/assets/{consent-CfRbz2R7.js → consent-BJgO9pEV.js} +2 -2
  58. package/public/assets/{consent-CfRbz2R7.js.map → consent-BJgO9pEV.js.map} +1 -1
  59. package/public/assets/{consent-BqqFDdsr.js → consent-D_yGE8TR.js} +2 -2
  60. package/public/assets/{consent-BqqFDdsr.js.map → consent-D_yGE8TR.js.map} +1 -1
  61. package/public/assets/createLucideIcon-BPpAIXR_.js.map +1 -1
  62. package/public/assets/{email-CKKakxPJ.js → email-DAa8JGoC.js} +2 -2
  63. package/public/assets/{email-CKKakxPJ.js.map → email-DAa8JGoC.js.map} +1 -1
  64. package/public/assets/email-tzTSqiOS.js +2 -0
  65. package/public/assets/{email-C5vUVgr_.js.map → email-tzTSqiOS.js.map} +1 -1
  66. package/public/assets/{error-BMXxpgfR.js → error-Dj4QQ8vW.js} +2 -2
  67. package/public/assets/{error-BMXxpgfR.js.map → error-Dj4QQ8vW.js.map} +1 -1
  68. package/public/assets/field-CEs4ugVJ.js +3 -0
  69. package/public/assets/{field-Cn4H1CUj.js.map → field-CEs4ugVJ.js.map} +1 -1
  70. package/public/assets/{forgot-rO9sByfV.js → forgot-CYMAWPVu.js} +2 -2
  71. package/public/assets/{forgot-rO9sByfV.js.map → forgot-CYMAWPVu.js.map} +1 -1
  72. package/public/assets/forgot-tzTSqiOS.js +2 -0
  73. package/public/assets/{forgot-C5vUVgr_.js.map → forgot-tzTSqiOS.js.map} +1 -1
  74. package/public/assets/{index-CS23Ozt6.js → index-H6CJKjiN.js} +3 -3
  75. package/public/assets/{index-CS23Ozt6.js.map → index-H6CJKjiN.js.map} +1 -1
  76. package/public/assets/{index-DZyHRhbQ.css → index-kD9gQA-w.css} +1 -1
  77. package/public/assets/{initial-avatar-CtuDUz_W.js → initial-avatar-DjSqgENY.js} +2 -2
  78. package/public/assets/{initial-avatar-CtuDUz_W.js.map → initial-avatar-DjSqgENY.js.map} +1 -1
  79. package/public/assets/{input-CzQki7k6.js → input-BHPUSlfp.js} +2 -2
  80. package/public/assets/{input-CzQki7k6.js.map → input-BHPUSlfp.js.map} +1 -1
  81. package/public/assets/link-C-WdTj3F.js.map +1 -1
  82. package/public/assets/{login-nukebli4.js → login-CBinfk4L.js} +2 -2
  83. package/public/assets/{login-nukebli4.js.map → login-CBinfk4L.js.map} +1 -1
  84. package/public/assets/login-tzTSqiOS.js +2 -0
  85. package/public/assets/{login-C5vUVgr_.js.map → login-tzTSqiOS.js.map} +1 -1
  86. package/public/assets/{modal-BDQFucjz.js → modal-CwoBUXp3.js} +2 -2
  87. package/public/assets/{modal-BDQFucjz.js.map → modal-CwoBUXp3.js.map} +1 -1
  88. package/public/assets/{passkey-CynCz1Dt.js → passkey-Jw2CRzJp.js} +2 -2
  89. package/public/assets/{passkey-CynCz1Dt.js.map → passkey-Jw2CRzJp.js.map} +1 -1
  90. package/public/assets/{passkey-BE9JvJOP.js → passkey-V_tav53p.js} +2 -2
  91. package/public/assets/{passkey-BE9JvJOP.js.map → passkey-V_tav53p.js.map} +1 -1
  92. package/public/assets/passkey-tzTSqiOS.js +2 -0
  93. package/public/assets/{passkey-C5vUVgr_.js.map → passkey-tzTSqiOS.js.map} +1 -1
  94. package/public/assets/{password-RkUttbhD.js → password-6QOqTV_s.js} +2 -2
  95. package/public/assets/{password-RkUttbhD.js.map → password-6QOqTV_s.js.map} +1 -1
  96. package/public/assets/{password-strength-BeSOu_Ga.js → password-strength-DtGMHOD-.js} +2 -2
  97. package/public/assets/{password-strength-BeSOu_Ga.js.map → password-strength-DtGMHOD-.js.map} +1 -1
  98. package/public/assets/password-tzTSqiOS.js +2 -0
  99. package/public/assets/{password-C5vUVgr_.js.map → password-tzTSqiOS.js.map} +1 -1
  100. package/public/assets/pin-input-DdhzDNy9.js +2 -0
  101. package/public/assets/{pin-input-Cc-VkrQ3.js.map → pin-input-DdhzDNy9.js.map} +1 -1
  102. package/public/assets/{profile-B5NaJfeS.js → profile-DVjIWt8X.js} +2 -2
  103. package/public/assets/{profile-B5NaJfeS.js.map → profile-DVjIWt8X.js.map} +1 -1
  104. package/public/assets/profile-SHr6F-7b.js +2 -0
  105. package/public/assets/profile-SHr6F-7b.js.map +1 -0
  106. package/public/assets/provider-logos-u1YURWQr.js.map +1 -1
  107. package/public/assets/{recovery-PnUATiUi.js → recovery-CvNl-yt9.js} +2 -2
  108. package/public/assets/{recovery-PnUATiUi.js.map → recovery-CvNl-yt9.js.map} +1 -1
  109. package/public/assets/{register-DQXhru0_.js → register-SFXa5EeL.js} +2 -2
  110. package/public/assets/{register-DQXhru0_.js.map → register-SFXa5EeL.js.map} +1 -1
  111. package/public/assets/register-tzTSqiOS.js +2 -0
  112. package/public/assets/{register-C5vUVgr_.js.map → register-tzTSqiOS.js.map} +1 -1
  113. package/public/assets/{reset-CQgIa3yf.js → reset-l-pLzjwe.js} +2 -2
  114. package/public/assets/{reset-CQgIa3yf.js.map → reset-l-pLzjwe.js.map} +1 -1
  115. package/public/assets/reset-tzTSqiOS.js +2 -0
  116. package/public/assets/{reset-C5vUVgr_.js.map → reset-tzTSqiOS.js.map} +1 -1
  117. package/public/assets/{select-DqZynXSt.js → select-D2H87qXJ.js} +2 -2
  118. package/public/assets/{select-DqZynXSt.js.map → select-D2H87qXJ.js.map} +1 -1
  119. package/public/assets/select-tzTSqiOS.js +2 -0
  120. package/public/assets/{select-C5vUVgr_.js.map → select-tzTSqiOS.js.map} +1 -1
  121. package/public/assets/separator-B0Bvh1he.js.map +1 -1
  122. package/public/assets/shell-header-bar-BPgCjFPv.js +2 -0
  123. package/public/assets/shell-header-bar-BPgCjFPv.js.map +1 -0
  124. package/public/assets/{terms-BHDAgn-H.js → terms-D5rfQhog.js} +2 -2
  125. package/public/assets/{terms-BHDAgn-H.js.map → terms-D5rfQhog.js.map} +1 -1
  126. package/public/assets/{terms-B5NaJfeS.js → terms-DVjIWt8X.js} +2 -2
  127. package/public/assets/{terms-B5NaJfeS.js.map → terms-DVjIWt8X.js.map} +1 -1
  128. package/public/assets/{terms-checkbox-list-6jteUTIZ.js → terms-checkbox-list-BKJcS2pJ.js} +2 -2
  129. package/public/assets/{terms-checkbox-list-6jteUTIZ.js.map → terms-checkbox-list-BKJcS2pJ.js.map} +1 -1
  130. package/public/assets/{totp-ECvOUcFx.js → totp-BbQi-gsF.js} +2 -2
  131. package/public/assets/{totp-ECvOUcFx.js.map → totp-BbQi-gsF.js.map} +1 -1
  132. package/public/assets/{totp-CJtfVNEq.js → totp-wY0Zji8E.js} +2 -2
  133. package/public/assets/{totp-CJtfVNEq.js.map → totp-wY0Zji8E.js.map} +1 -1
  134. package/public/assets/{use-totp-setup-BbS3XcZA.js → use-totp-setup-OH_GTMxA.js} +3 -3
  135. package/public/assets/{use-totp-setup-BbS3XcZA.js.map → use-totp-setup-OH_GTMxA.js.map} +1 -1
  136. package/public/assets/{useAriaLabelledBy-ByuMi3Ry.js → useAriaLabelledBy-9o83pv9X.js} +2 -2
  137. package/public/assets/{useAriaLabelledBy-ByuMi3Ry.js.map → useAriaLabelledBy-9o83pv9X.js.map} +1 -1
  138. package/public/assets/useQuery-CI5Ukuae.js +2 -0
  139. package/public/assets/{useQuery-Ckxjmvtl.js.map → useQuery-CI5Ukuae.js.map} +1 -1
  140. package/public/assets/users-DqCnblEo.js +2 -0
  141. package/public/assets/users-DqCnblEo.js.map +1 -0
  142. package/public/index.html +2 -2
  143. package/public/assets/2fa-C5vUVgr_.js +0 -2
  144. package/public/assets/2fa-CCOTIHDZ.js +0 -2
  145. package/public/assets/DialogHandle-BmtK2pRn.js +0 -2
  146. package/public/assets/admin-BPijkLw-.js +0 -2
  147. package/public/assets/admin-BPijkLw-.js.map +0 -1
  148. package/public/assets/auth-layout-VtpryDof.js +0 -2
  149. package/public/assets/auth-layout-VtpryDof.js.map +0 -1
  150. package/public/assets/auth-page-header-CIn2E4zI.js.map +0 -1
  151. package/public/assets/authorization-context-banner-SOuBHWIb.js +0 -2
  152. package/public/assets/authorization-context-banner-SOuBHWIb.js.map +0 -1
  153. package/public/assets/checkbox-gdHnSFQ-.js +0 -2
  154. package/public/assets/email-C5vUVgr_.js +0 -2
  155. package/public/assets/field-Cn4H1CUj.js +0 -3
  156. package/public/assets/forgot-C5vUVgr_.js +0 -2
  157. package/public/assets/login-C5vUVgr_.js +0 -2
  158. package/public/assets/passkey-C5vUVgr_.js +0 -2
  159. package/public/assets/password-C5vUVgr_.js +0 -2
  160. package/public/assets/pin-input-Cc-VkrQ3.js +0 -2
  161. package/public/assets/profile-BcjsVYOx.js +0 -2
  162. package/public/assets/profile-BcjsVYOx.js.map +0 -1
  163. package/public/assets/register-C5vUVgr_.js +0 -2
  164. package/public/assets/reset-C5vUVgr_.js +0 -2
  165. package/public/assets/select-C5vUVgr_.js +0 -2
  166. package/public/assets/shell-header-bar-CjG5qvPg.js +0 -2
  167. package/public/assets/shell-header-bar-CjG5qvPg.js.map +0 -1
  168. package/public/assets/useQuery-Ckxjmvtl.js +0 -2
  169. package/public/assets/users-CmFxrCQT.js +0 -2
  170. package/public/assets/users-CmFxrCQT.js.map +0 -1
package/public/index.html CHANGED
@@ -18,12 +18,12 @@
18
18
  <!-- Preload critical API data for faster initial render -->
19
19
  <link rel="preload" href="/api/config" as="fetch" crossorigin="anonymous" />
20
20
  <link rel="preload" href="/api/user/session" as="fetch" crossorigin="anonymous" />
21
- <script type="module" crossorigin src="/assets/index-CS23Ozt6.js"></script>
21
+ <script type="module" crossorigin src="/assets/index-H6CJKjiN.js"></script>
22
22
  <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-BPpAIXR_.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/config-DTQCUlfZ.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/mutationOptions-DyYFUbyn.js">
25
25
  <link rel="modulepreload" crossorigin href="/assets/zod-C87S6Tec.js">
26
- <link rel="stylesheet" crossorigin href="/assets/index-DZyHRhbQ.css">
26
+ <link rel="stylesheet" crossorigin href="/assets/index-kD9gQA-w.css">
27
27
  </head>
28
28
  <body>
29
29
  <div id="root"></div>
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=2fa-C5vUVgr_.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=2fa-CCOTIHDZ.js.map
@@ -1,2 +0,0 @@
1
- import{J as e,Z as t,b as n,c as r,h as i,q as a,v as o}from"./createLucideIcon-BPpAIXR_.js";import{H as s,L as c,P as l,Qt as u,Zt as d,_t as f,g as p,hn as m,j as h,ut as g,vt as _,w as v,y}from"./config-DTQCUlfZ.js";import{$ as b,B as x,F as S,G as C,H as w,I as T,J as E,K as D,L as O,O as k,Q as A,R as j,U as M,W as N,Z as P,c as F,k as I,l as L,m as R,q as z}from"./shell-header-bar-CjG5qvPg.js";var B=t(e(),1),V=B.createContext(void 0);function H(e){let t=B.useContext(V);if(!e&&t===void 0)throw Error(o(27));return t}var U=B.forwardRef(function(e,t){let{render:n,className:a,style:o,disabled:s=!1,nativeButton:u=!0,...d}=e,f=H(),p=f.useState(`open`),{getButtonProps:m,buttonRef:h}=i({disabled:s,native:u}),g={disabled:s};function _(e){p&&f.setOpen(!1,l(c,e.nativeEvent))}return r(`button`,e,{state:g,ref:[t,h],props:[{onClick:_},d,m]})}),W=B.forwardRef(function(e,t){let{render:n,className:i,style:a,id:o,...s}=e,c=H(),l=k(o);return c.useSyncedValueWithCleanup(`descriptionElementId`,l),r(`p`,e,{ref:t,props:[{id:l},s]})}),G=B.createContext(void 0);function K(){let e=B.useContext(G);if(e===void 0)throw Error(o(26));return e}var q=a(),J=B.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e,i=H(),a=i.useState(`mounted`),o=i.useState(`modal`),s=i.useState(`open`);return a||n?(0,q.jsx)(G.Provider,{value:n,children:(0,q.jsxs)(h,{ref:t,...r,children:[a&&o===!0&&(0,q.jsx)(L,{ref:i.context.internalBackdropRef,inert:_(!s)}),e.children]})}):null});function ee({store:e,parentContext:t,isDrawer:r}){let i=e.useState(`open`),a=e.useState(`disablePointerDismissal`),o=e.useState(`modal`),s=e.useState(`popupElement`),c=e.useState(`floatingRootContext`),[l,f]=B.useState(0),[p,m]=B.useState(0),h=l===0,g=A(c,{outsidePressEvent(){return e.context.internalBackdropRef.current||e.context.backdropRef.current?`intentional`:{mouse:o===`trap-focus`?`sloppy`:`intentional`,touch:`sloppy`}},outsidePress(t){if(!e.context.outsidePressEnabledRef.current||`button`in t&&t.button!==0)return!1;if(`touches`in t){if(t.type===`touchend`){if(t.changedTouches.length!==1||t.touches.length!==0)return!1}else if(t.touches.length!==1)return!1}let n=u(t);if(h&&!a){if(o){let t=e.context.internalBackdropRef.current,r=e.context.backdropRef.current;return t||r?t===n||r===n||d(n,s)&&!n?.hasAttribute(`data-base-ui-portal`):!0}return!0}return!1},escapeKey:h});return F(i&&o===!0,s),e.useContextCallback(`onNestedDialogOpen`,(e,t)=>{f(e),m(t)}),n(()=>(t?.onNestedDialogOpen&&(i?t.onNestedDialogOpen(l+1,p+ +!!r):t.onNestedDialogOpen(0,0)),()=>{t?.onNestedDialogOpen&&i&&t.onNestedDialogOpen(0,0)}),[r,i,l,p,t]),C(e,{activeTriggerProps:g.reference,inactiveTriggerProps:g.trigger,popupProps:g.floating,nestedOpenDialogCount:l,nestedOpenDrawerCount:p}),null}var Y={...j,modal:e=>e.modal,nested:e=>e.nested,nestedOpenDialogCount:e=>e.nestedOpenDialogCount,nestedOpenDrawerCount:e=>e.nestedOpenDrawerCount,disablePointerDismissal:e=>e.disablePointerDismissal,openMethod:e=>e.openMethod,descriptionElementId:e=>e.descriptionElementId,titleElementId:e=>e.titleElementId,viewportElement:e=>e.viewportElement,role:e=>e.role},te=class extends m{constructor(e,t,n){let r=new v,i=X(e,r,t,n);super(i,Z(r),Y)}setOpen=(e,t)=>{if(t.preventUnmountOnClose=()=>{this.set(`preventUnmountingOnClose`,!0)},!e&&t.trigger==null&&this.state.activeTriggerId!=null&&(t.trigger=this.state.activeTriggerElement??void 0),this.context.onOpenChange?.(e,t),t.isCanceled)return;this.state.floatingRootContext.dispatchOpenChange(e,t);let n={open:e};w(n,e,t.trigger),this.update(n)}};function ne(){let e=new v;return new I(Object.freeze(X(void 0,e)),Object.freeze(Z(e)),Y)}function X(e,t,n,r=!1){let i={...T(),modal:!0,disablePointerDismissal:!1,viewportElement:null,descriptionElementId:void 0,titleElementId:void 0,openMethod:null,nested:!1,nestedOpenDialogCount:0,nestedOpenDrawerCount:0,role:`dialog`,...e};return i.floatingRootContext=O(t,n,r),i}function Z(e){return{popupRef:B.createRef(),backdropRef:B.createRef(),internalBackdropRef:B.createRef(),outsidePressEnabledRef:{current:!0},triggerElements:e,onOpenChange:void 0,onOpenChangeComplete:void 0}}function re(e,t){let{children:n,open:r,defaultOpen:i=!1,onOpenChange:a,onOpenChangeComplete:o,disablePointerDismissal:c=!1,modal:u=!0,actionsRef:d,handle:f,triggerId:p,defaultTriggerId:m=null}=t,h=e===`drawer`,g=e===`alert-dialog`,_=g?!0:u,v=g||c,y=g?`alertdialog`:`dialog`,b=H(!0),S={modal:_,disablePointerDismissal:v,nested:b!=null,role:y},C=D((e,t)=>new te({open:i,openProp:r,activeTriggerId:m,triggerIdProp:p,...S},e,t),!0);C.useControlledProp(`openProp`,r),C.useControlledProp(`triggerIdProp`,p),C.useSyncedValues(S),C.useContextCallback(`onOpenChange`,a),C.useContextCallback(`onOpenChangeComplete`,o);let w=C.useState(`open`),T=C.useState(`mounted`),E=C.useState(`payload`);z(C,w),M(C);let{forceUnmount:O}=N(w,C);B.useImperativeHandle(d,()=>({unmount:O,close:()=>C.setOpen(!1,l(s))}),[O,C]);let k=w||T;return(0,q.jsxs)(V.Provider,{value:C,children:[f&&(0,q.jsx)(x,{handle:f,store:C}),k&&(0,q.jsx)(ee,{store:C,parentContext:b?.context,isDrawer:h}),typeof n==`function`?n({payload:E}):n]})}var ie=B.forwardRef(function(e,t){let{render:n,className:i,style:a,id:o,...s}=e,c=H(),l=k(o);return c.useSyncedValueWithCleanup(`titleElementId`,l),r(`h2`,e,{ref:t,props:[{id:l},s]})}),ae=B.forwardRef(function(e,t){let{render:n,className:a,style:s,disabled:c=!1,nativeButton:l=!0,id:u,payload:d,handle:f,...p}=e,m=H(!0),h=S(f)??m;if(!h)throw Error(o(79));let _=k(u),v=h.useState(`floatingRootContext`),x=h.useState(`isOpenedByTrigger`,_),C=h.useState(`triggerPopupId`,_),w=B.useRef(null),{registerTrigger:T,isMountedByThisTrigger:D}=E(_,w,h,{payload:d}),{getButtonProps:O,buttonRef:A}=i({disabled:c,native:l}),j=b(v),M=R(()=>h.select(`open`),e=>{h.set(`openMethod`,e)}),N={disabled:c,open:x},P=h.useState(`triggerProps`,D);return r(`button`,e,{state:N,ref:[A,t,T,w],props:[j.reference,P,M,{[g]:``,id:_,"aria-haspopup":`dialog`,"aria-expanded":x,"aria-controls":C},p,O],stateAttributesMapping:y})}),Q={...p,...f,nestedDialogOpen(e){return e?{"data-nested-dialog-open":``}:null}},oe=B.forwardRef(function(e,t){let{render:n,className:i,style:a,children:o,...s}=e,c=K(),l=H(),u=l.useState(`open`),d=l.useState(`nested`),f=l.useState(`transitionStatus`),p=l.useState(`nestedOpenDialogCount`),m=l.useState(`mounted`),h=l.useStateSetter(`viewportElement`);return r(`div`,e,{enabled:c||m,state:{open:u,nested:d,transitionStatus:f,nestedDialogOpen:p>0},ref:[t,h],stateAttributesMapping:Q,props:[{role:`presentation`,hidden:!m,style:{pointerEvents:u?void 0:`none`},children:o},s]})}),$=class extends P{constructor(){super(ne(),`Dialog`,!1)}open(e){this.openByTrigger(e)}openWithPayload(e){let t=this.attachedStore;t!==null&&(t.set(`payload`,e),t.setOpen(!0,l(s)))}close(){this.closePopup()}get isOpen(){return this.attachedStore?.select(`open`)??!1}};function se(){return new $}export{ae as a,J as c,U as d,H as f,Q as i,K as l,se as n,ie as o,oe as r,re as s,$ as t,W as u};
2
- //# sourceMappingURL=DialogHandle-BmtK2pRn.js.map
@@ -1,2 +0,0 @@
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 +0,0 @@
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":"mWAgBA,IAAM,EAAU,EAAiB,UAAW,CAN1C,CAAC,OAAQ,CAAE,EAAG,KAAM,EAAG,KAAM,MAAO,IAAK,OAAQ,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EAC9E,CAAC,OAAQ,CAAE,EAAG,IAAK,EAAG,KAAM,MAAO,IAAK,OAAQ,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EAC7E,CAAC,OAAQ,CAAE,EAAG,IAAK,EAAG,IAAK,MAAO,IAAK,OAAQ,IAAK,GAAI,IAAK,IAAK,QAAS,CAAC,EAC5E,CAAC,OAAQ,CAAE,EAAG,4CAA6C,IAAK,QAAS,CAAC,EAC1E,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAEC,CAAU,QCatD,SAASiB,GAAiB,CACxB,IAAMC,EAAOF,EAAMG,gBAAgB,CAAEC,OAASC,GAAYA,EAAQH,IAAK,CAAC,EAMxE,OAJIA,GAAMI,OAAS,SAIZ,EAAA,EAAA,IAAA,CAAC,EAAD,CAA0BJ,MAAK,CAAA,GAH7B,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,OAAO,iBAAiB,CAAA,CAIpD,CAEA,SAASK,EAAmB,CAAEL,QAA+B,CAC3D,GAAM,CAAEO,KAAMC,GAAWzB,EAAiBc,CAAqB,EAI/D,OAHKW,EAAOC,MAAMC,SAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CAA6BV,MAAK,CAAA,GAFhC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,OAAO,kBAAkB,CAAA,CAGrD,CAEA,SAASW,EAAsB,CAAEX,QAA+B,CAC9D,GAAM,CAAEY,KAAMtB,EAAe,EACvB,CAACuB,EAAYC,EAAYC,EAAaC,GAC1ClC,EAAmB,CACjBmC,QAAS,CACPrB,EAAuB,EACvBA,EAAuB,CAAEsB,SAAU,EAAGd,KAAM,OAAQ,CAAC,EACrDR,EAAuB,CAAEuB,UAAW,SAAUD,SAAU,CAAE,CAAC,EAC3DtB,EAAuB,CAAEuB,UAAW,WAAYD,SAAU,CAAE,CAAC,CAAC,CAElE,CAAC,EACGX,EAAOM,EAAWN,KAClBa,EAAcL,EAAYR,KAAKc,WAAWC,MAC1CC,EAAgBP,EAAcT,KAAKc,WAAWC,MAC9CE,EAASV,EAAWP,KAAKc,WAAWC,MAE1C,OACE,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,QAAQ,YACR,YAAaV,EAAE,4BAA4B,EAC3C,MAAOA,EAAE,sBAAsB,EACzBZ,gBAJR,EAME,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,4MAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAO,sBACP,KAAMY,EAAE,8BAA8B,EACtC,MAAOA,EAAE,0BAA0B,EACnC,MAAOL,EAAKc,WAAWC,KAAM,CAAA,GAE/B,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAO,sBACP,KAAMV,EAAE,0BAA0B,EAClC,MAAOA,EAAE,sBAAsB,EAC/B,MAAOY,CAAO,CAAA,GAEhB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAO,mBACP,KAAMZ,EAAE,iCAAiC,EACzC,MAAOA,EAAE,6BAA6B,EACtC,MAAOW,CAAc,CAAA,CAEpB,KAGL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,+CAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAO,KAAR,CACE,UAAU,8EACV,QAAQ,qBAER,EAAA,EAAA,KAAA,CAAC,EAAO,QAAR,CAAgB,UAAU,eAA1B,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uJAAf,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,yCAAf,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6CAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAA,GACA,UAAU,wCAAwC,CAAA,GAEpD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,QAAQ,iBAC3BX,EAAE,qBAAqB,CAClB,CAAA,CACL,KACL,EAAA,EAAA,IAAA,CAAC,EAAO,MAAR,CAAA,SAAeA,EAAE,mBAAmB,CAAgB,CAAA,GACpD,EAAA,EAAA,IAAA,CAAC,EAAO,YAAR,CAAoB,UAAU,4BAC3BA,EAAE,yBAAyB,CACV,CAAA,CACjB,KACL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,OAAO,UACP,QAAQ,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,GAAG,cAAc,CAAA,EAC/B,OAAO,cAENA,EAAE,kBAAkB,CACT,CAAA,CACX,KAEL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,iGACZL,EAAKkB,MAAMC,MAAM,EAAG,CAAC,CAAC,CAACC,IAAKC,IAC3B,EAAA,EAAA,KAAA,CAAC,EAAD,CACE,UAAU,mHAEV,GAAG,wBAHL,EAKE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,4DAAf,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,iDAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,GAAG,IAAI,SAAA,GAAS,QAAQ,SAAS,OAAO,kBAC7CA,EAAYE,KACP,CAAA,GAKR,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,GAAG,IAAI,MAAM,QAAQ,SAAA,GAAS,QAAQ,oBAC5C,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,8BACbF,EAAYC,GACT,CAAA,CACA,CAAA,CACL,KAGL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,UAAU,WACV,OAAO,KACP,QACED,EAAYxB,OAAS,QAAU,UAAY2B,IAAAA,YAG5CrC,EAAgBkB,EAAGgB,EAAYxB,IAAI,CAC7B,CAAA,CACN,KACL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6DAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,OAAO,cACbT,EAAgBiB,EAAGgB,EAAYI,UAAU,CACnC,CAAA,GACT,EAAA,EAAA,KAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,QAAQ,mBAA9B,CACGpB,EAAE,2BAA2B,EAAG,IAChCgB,EAAYK,eACTrB,EAAE,YAAY,EACdA,EAAE,WAAW,CACX,GACL,GACD,GAzCCgB,EAAYC,GAyCb,CACP,CACE,CAAA,CACS,GACL,CAAA,GAEb,EAAA,EAAA,IAAA,CAAC,EAAO,KAAR,CACE,UAAU,gEACV,QAAQ,qBAER,EAAA,EAAA,KAAA,CAAC,EAAO,QAAR,CAAgB,UAAU,qDAA1B,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,OAAO,KAAK,QAAQ,mBAC1BjB,EAAE,oBAAoB,CAChB,CAAA,GACT,EAAA,EAAA,IAAA,CAAC,EAAO,MAAR,CAAc,UAAU,4BACrBA,EAAE,sBAAsB,CACb,CAAA,GACd,EAAA,EAAA,IAAA,CAAC,EAAO,YAAR,CAAoB,UAAU,4BAC3BA,EAAE,0BAA0B,CACX,CAAA,GACpB,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,gDAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAOA,EAAE,2BAA2B,EACpC,MAAOQ,CAAY,CAAA,GAErB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAOR,EAAE,6BAA6B,EACtC,MAAOW,CAAc,CAAA,GAEvB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAOX,EAAE,6BAA6B,EACtC,MAAOA,EAAE,WAAW,CAAE,CAAA,CAErB,GACS,GACL,CAAA,CACV,GACK,GAEhB,CAEA,SAASsB,EAAU,CACjBC,QACAC,SAIC,CACD,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,uKAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,QAAQ,kBAC3BD,CACK,CAAA,GACR,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,OAAO,KAAK,QAAQ,mBAC1BC,CACM,CAAA,CACN,GAET"}
@@ -1,2 +0,0 @@
1
- import{n as e,q as t}from"./createLucideIcon-BPpAIXR_.js";import{A as n,j as r,t as i}from"./shell-header-bar-CjG5qvPg.js";var a=t();function o(){let{title:t,subtitle:n,iconUrl:i,backgroundUrl:o}=r();return(0,a.jsxs)(`div`,{className:`relative isolate z-0 col-span-full flex flex-col items-start justify-between gap-tinyrack-xs overflow-hidden border-tinyrack-border border-b-tinyrack-default bg-tinyrack-surface-muted px-tinyrack-lg py-tinyrack-md text-tinyrack-text md:col-span-4 md:gap-tinyrack-2xl md:border-e-tinyrack-default md:px-tinyrack-2xl md:py-tinyrack-2xl lg:col-span-5 md:[border-block-end-width:0]`,"data-theme":`tinyrack-dark`,children:[o&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 z-0 [background-position:center] [background-size:cover]`,style:{backgroundImage:`url(${o})`}}),(0,a.jsx)(`div`,{"aria-hidden":!0,className:`absolute inset-0 z-0 bg-tinyrack-scrim`})]}),(0,a.jsxs)(`div`,{className:`relative z-tinyrack-content flex min-w-0 flex-row items-center gap-tinyrack-sm md:flex-col md:items-start md:gap-tinyrack-lg`,children:[i&&(0,a.jsx)(`img`,{alt:``,className:`size-tinyrack-2xl object-contain md:size-tinyrack-3xl`,src:i}),t&&(0,a.jsx)(e,{align:`start`,as:`h1`,className:`[--tr-text-font-size:var(--tinyrack-text-lg)] md:[--tr-text-font-size:var(--tinyrack-text-3xl)]`,weight:`heading`,children:t})]}),n&&(0,a.jsx)(e,{align:`start`,as:`p`,className:`relative z-tinyrack-content max-w-tinyrack-measure-xl truncate [--tr-text-font-size:var(--tinyrack-text-xs)] md:overflow-visible md:whitespace-normal md:[--tr-text-font-size:var(--tinyrack-text-lg)]`,color:`muted`,children:n})]})}var s={form:`max-w-tinyrack-measure-xl`,wide:`max-w-tinyrack-overlay-md`};function c({children:e,width:t=`form`}){return(0,a.jsxs)(`div`,{className:`grid min-h-dvh grid-cols-1 bg-tinyrack-surface md:grid-cols-12`,children:[(0,a.jsx)(n,{}),(0,a.jsx)(o,{}),(0,a.jsxs)(`div`,{className:`col-span-full flex min-w-0 flex-col md:col-span-8 lg:col-span-7`,children:[(0,a.jsx)(i,{}),(0,a.jsx)(`main`,{className:`flex flex-1 items-center justify-center px-tinyrack-lg py-tinyrack-xl`,children:(0,a.jsx)(`div`,{className:`auth-enter flex w-full flex-col gap-tinyrack-xl rounded-tinyrack-xl border border-tinyrack-border bg-tinyrack-surface p-tinyrack-xl md:border-0 md:bg-transparent md:p-0 ${s[t]}`,children:e})})]})]})}export{c as t};
2
- //# sourceMappingURL=auth-layout-VtpryDof.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-layout-VtpryDof.js","names":[],"sources":["../../../frontend/src/features/layout/auth-brand-panel.tsx","../../../frontend/src/features/layout/auth-layout.tsx"],"sourcesContent":["import { TRText } from '@tinyrack/ui/components/text';\nimport { useBranding } from '#frontend/features/layout/use-branding.ts';\n\n/**\n * The deployment's identity, rendered once for the whole auth surface.\n *\n * There is a single instance in the DOM at every breakpoint: a full-height\n * inverse panel beside the form from `md:` up, and a compact banner strip\n * above it below that. Rendering it twice and hiding one would give the brand\n * title two heading nodes and the icon two `img` nodes, which both the e2e\n * assertions and assistive technology would read as duplicates.\n *\n * When the deployment has configured a product name, that name is the page's\n * `h1` and screen titles sit under it as `h2`. When it has not, the panel has\n * no heading and the screen title becomes the `h1` — see `AuthPageHeader`.\n *\n * Pinned to the dark theme rather than using the `inverse` tokens.\n * `--tinyrack-text-inverse` flips with the active theme, so in dark mode it\n * resolves to near-black — which is illegible over the always-dark scrim a\n * background image sits under. Scoping `data-theme` here makes every token\n * inside the panel resolve consistently, so the brand surface reads the same\n * in both app themes and the scrim always works.\n */\nexport function AuthBrandPanel() {\n const { title, subtitle, iconUrl, backgroundUrl } = useBranding();\n\n return (\n <div\n className=\"relative isolate z-0 col-span-full flex flex-col items-start justify-between gap-tinyrack-xs overflow-hidden border-tinyrack-border border-b-tinyrack-default bg-tinyrack-surface-muted px-tinyrack-lg py-tinyrack-md text-tinyrack-text md:col-span-4 md:gap-tinyrack-2xl md:border-e-tinyrack-default md:px-tinyrack-2xl md:py-tinyrack-2xl lg:col-span-5 md:[border-block-end-width:0]\"\n data-theme=\"tinyrack-dark\"\n >\n {backgroundUrl && (\n <>\n {/*\n Kept as an inline style rather than an arbitrary Tailwind class: the\n URL is runtime config, so it cannot be part of the CSS build.\n */}\n <div\n aria-hidden\n className=\"absolute inset-0 z-0 [background-position:center] [background-size:cover]\"\n style={{ backgroundImage: `url(${backgroundUrl})` }}\n />\n <div aria-hidden className=\"absolute inset-0 z-0 bg-tinyrack-scrim\" />\n </>\n )}\n\n <div className=\"relative z-tinyrack-content flex min-w-0 flex-row items-center gap-tinyrack-sm md:flex-col md:items-start md:gap-tinyrack-lg\">\n {iconUrl && (\n <img\n alt=\"\"\n className=\"size-tinyrack-2xl object-contain md:size-tinyrack-3xl\"\n src={iconUrl}\n />\n )}\n {/*\n Sized through `--tr-text-font-size`, the override hook TRText exposes,\n rather than a `text-*` utility: the component's own per-variant rule\n is more specific than a utility class, so a utility is ignored. Still\n token-only, and responsive because the mobile banner has far less\n room than the panel.\n */}\n {title && (\n <TRText\n align=\"start\"\n as=\"h1\"\n className=\"[--tr-text-font-size:var(--tinyrack-text-lg)] md:[--tr-text-font-size:var(--tinyrack-text-3xl)]\"\n weight=\"heading\"\n >\n {title}\n </TRText>\n )}\n </div>\n\n {/*\n Shown at every width — this is the deployment's own copy, so hiding it\n on phones would drop configured content. One line in the mobile banner,\n the full string beside the form. Sized through the component's override\n hook for the same reason as the title above.\n */}\n {subtitle && (\n <TRText\n align=\"start\"\n as=\"p\"\n className=\"relative z-tinyrack-content max-w-tinyrack-measure-xl truncate [--tr-text-font-size:var(--tinyrack-text-xs)] md:overflow-visible md:whitespace-normal md:[--tr-text-font-size:var(--tinyrack-text-lg)]\"\n color=\"muted\"\n >\n {subtitle}\n </TRText>\n )}\n </div>\n );\n}\n","import { Toaster } from '#frontend/components/ui/toaster.tsx';\nimport { AuthBrandPanel } from '#frontend/features/layout/auth-brand-panel.tsx';\nimport { ShellHeaderBar } from '#frontend/features/layout/shell-header-bar.tsx';\n\ntype AuthLayoutProps = {\n children: React.ReactNode;\n /**\n * `form` (default) fits a single column of fields. `wide` is for screens\n * that present a list to review before deciding — consent scopes, terms,\n * account selection, recovery codes.\n */\n width?: 'form' | 'wide';\n};\n\nconst widthClasses: Record<NonNullable<AuthLayoutProps['width']>, string> = {\n form: 'max-w-tinyrack-measure-xl',\n wide: 'max-w-tinyrack-overlay-md',\n};\n\n/**\n * The shell every auth screen sits in.\n *\n * Split canvas: the deployment's identity on the left, the task on the right.\n * The form is not in a card on desktop — hierarchy comes from the contrast\n * between the inverse brand panel and the canvas, so a card would only add a\n * box inside a box. Below `md:` the panel collapses to a banner and the form\n * does get a surface, because on a phone it would otherwise float unanchored.\n */\nexport function AuthLayout({ children, width = 'form' }: AuthLayoutProps) {\n return (\n <div className=\"grid min-h-dvh grid-cols-1 bg-tinyrack-surface md:grid-cols-12\">\n <Toaster />\n <AuthBrandPanel />\n <div className=\"col-span-full flex min-w-0 flex-col md:col-span-8 lg:col-span-7\">\n {/* No `brand`: AuthBrandPanel already owns the deployment's title. */}\n <ShellHeaderBar />\n <main className=\"flex flex-1 items-center justify-center px-tinyrack-lg py-tinyrack-xl\">\n {/*\n The stack owns vertical rhythm so screens compose as a flat list of\n blocks — header, alerts, form, footer — instead of each one\n hand-rolling `mb-4`/`mt-6` margins that drift apart over time.\n */}\n <div\n className={`auth-enter flex w-full flex-col gap-tinyrack-xl rounded-tinyrack-xl border border-tinyrack-border bg-tinyrack-surface p-tinyrack-xl md:border-0 md:bg-transparent md:p-0 ${widthClasses[width]}`}\n >\n {children}\n </div>\n </main>\n </div>\n </div>\n );\n}\n"],"mappings":"qIAuBA,SAAgB,GAAiB,CAC/B,GAAM,CAAE,QAAO,WAAU,UAAS,iBAAkB,EAAY,EAEhE,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,UAAU,4XACV,aAAW,yBAFb,CAIG,IACC,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,EAKE,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,cAAA,GACA,UAAU,4EACV,MAAO,CAAE,gBAAiB,OAAO,EAAc,EAAG,CACnD,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,cAAA,GAAY,UAAU,wCAA0C,CAAA,CACrE,CAAA,CAAA,GAGJ,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,wIAAf,CACG,IACC,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,IAAI,GACJ,UAAU,wDACV,IAAK,CACN,CAAA,EASF,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,QACN,GAAG,KACH,UAAU,kGACV,OAAO,mBAEN,CACK,CAAA,CAEP,IAQJ,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,MAAM,QACN,GAAG,IACH,UAAU,yMACV,MAAM,iBAEL,CACK,CAAA,CAEP,GAET,CC7EA,IAAM,EAAsE,CAC1E,KAAM,4BACN,KAAM,2BACR,EAWA,SAAgB,EAAW,CAAE,WAAU,QAAQ,QAA2B,CACxE,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,0EAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAU,CAAA,GACV,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,CAAA,GACjB,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,2EAAf,EAEE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAiB,CAAA,GACjB,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,kFAMd,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,UAAW,4KAA4K,EAAa,KAEnM,UACE,CAAA,CACD,CAAA,CACH,GACF,GAET"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth-page-header-CIn2E4zI.js","names":[],"sources":["../../../frontend/src/components/auth/auth-page-header.tsx"],"sourcesContent":["import { TRText } from '@tinyrack/ui/components/text';\nimport { useBranding } from '#frontend/features/layout/use-branding.ts';\n\ntype AuthPageHeaderProps = {\n title: string;\n subtitle?: string;\n /** Small label above the title — wizard progress, flow context. */\n eyebrow?: React.ReactNode;\n /** Centre for terminal states (success, error) where there is no form to scan. */\n align?: 'start' | 'center';\n};\n\n/**\n * Titles the current screen.\n *\n * Heading level follows the brand panel: when the deployment has configured a\n * product name that name is the page's `h1`, so this is an `h2` beneath it.\n * With no branding there is no other heading, so this becomes the `h1` rather\n * than leaving the page starting at level 2.\n *\n * Left-aligned by default. Centred auth copy reads as a consumer sign-up;\n * aligning it with the fields below reads as a console and gives the eye one\n * vertical line to follow into the form.\n *\n * Carries no margin — spacing is the caller's, so it composes into a stack.\n */\nexport function AuthPageHeader({\n title,\n subtitle,\n eyebrow,\n align = 'start',\n}: AuthPageHeaderProps) {\n const { title: brandTitle } = useBranding();\n const headingTag = brandTitle ? 'h2' : 'h1';\n\n return (\n <div\n className={`flex flex-col gap-tinyrack-xs ${align === 'center' ? 'items-center text-center' : 'items-start text-start'}`}\n >\n {eyebrow}\n <TRText align={align} as={headingTag} variant=\"headingLg\">\n {title}\n </TRText>\n {subtitle && (\n <TRText align={align} as=\"p\" color=\"muted\" variant=\"body\">\n {subtitle}\n </TRText>\n )}\n </div>\n );\n}\n"],"mappings":"uHA0BA,SAAgB,EAAe,CAC7B,QACA,WACA,UACA,QAAQ,SACc,CACtB,GAAM,CAAE,MAAO,GAAe,EAAY,EAG1C,OACE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,UAAW,iCAAiC,IAAU,SAAW,2BAA6B,oCADhG,CAGG,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAe,QAAO,GAPP,EAAa,KAAO,KAOG,QAAQ,qBAC3C,CACK,CAAA,EACP,IACC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAe,QAAO,GAAG,IAAI,MAAM,QAAQ,QAAQ,gBAChD,CACK,CAAA,CAEP,GAET"}
@@ -1,2 +0,0 @@
1
- import{i as e,n as t,q as n,t as r}from"./createLucideIcon-BPpAIXR_.js";import{tt as i}from"./shell-header-bar-CjG5qvPg.js";import{t as a}from"./shield-check-D_p8H0ni.js";import{B as o,D as s,P as c}from"./index-CS23Ozt6.js";import{t as l}from"./badge-CsOfUji0.js";var u=r(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),d=n();function f({search:e,className:t=``}){return c(e)?(0,d.jsx)(p,{className:t,search:e}):null}function p({search:n,className:r}){let{t:c}=e(),{data:f}=i(s(n));return(0,d.jsx)(o.Root,{"aria-label":c(`authorizationContext.label`),className:r,"data-testid":`authorization-context`,padding:`lg`,render:(0,d.jsx)(`section`,{}),variant:`outlined`,children:(0,d.jsxs)(o.Content,{className:`flex flex-col gap-tinyrack-sm`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,d.jsx)(a,{"aria-hidden":!0,className:`size-tinyrack-lg shrink-0 text-tinyrack-info`}),(0,d.jsx)(t,{variant:`body`,weight:`medium`,children:c(`authorizationContext.title`,{app:f.client.name})})]}),(0,d.jsxs)(`div`,{className:`flex min-w-0 items-center gap-tinyrack-xs`,children:[(0,d.jsx)(u,{"aria-hidden":!0,className:`size-tinyrack-lg shrink-0 text-tinyrack-text-muted`}),(0,d.jsx)(t,{color:`muted`,truncate:!0,variant:`caption`,children:c(`authorizationContext.redirect`,{origin:f.redirect_origin})})]}),(0,d.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-xs`,children:[(0,d.jsx)(t,{color:`muted`,variant:`caption`,weight:`medium`,children:c(`authorizationContext.permissions`)}),f.scopes.length>0?(0,d.jsx)(`ul`,{className:`flex flex-wrap gap-tinyrack-xs`,children:f.scopes.map(e=>(0,d.jsx)(`li`,{children:(0,d.jsx)(l,{uiSize:`md`,variant:`neutral`,children:c(`consent.scope.${e.name}`,{defaultValue:e.description})})},e.name))}):(0,d.jsx)(t,{color:`muted`,variant:`caption`,children:c(`authorizationContext.noScopes`)})]})]})})}export{f as t};
2
- //# sourceMappingURL=authorization-context-banner-SOuBHWIb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authorization-context-banner-SOuBHWIb.js","names":[],"sources":["../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/globe.mjs","../../../frontend/src/components/auth/authorization-context-banner.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\", key: \"13o1zl\" }],\n [\"path\", { d: \"M2 12h20\", key: \"9i4pu4\" }]\n];\nconst Globe = createLucideIcon(\"globe\", __iconNode);\n\nexport { __iconNode, Globe as default };\n//# sourceMappingURL=globe.mjs.map\n","import { useSuspenseQuery } from '@tanstack/react-query';\nimport { TRBadge } from '@tinyrack/ui/components/badge';\nimport { TRCard } from '@tinyrack/ui/components/card';\nimport { TRText } from '@tinyrack/ui/components/text';\nimport { GlobeIcon, ShieldCheckIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport {\n type AuthorizationContextSearch,\n hasAuthorizationContext,\n type OAuthSearch,\n} from '#frontend/libs/oauth-search.ts';\nimport { getAuthorizationContextQueryOptions } from '#frontend/queries/authorization-context.ts';\n\ntype AuthorizationContextBannerProps = {\n search: OAuthSearch;\n className?: string;\n};\n\nexport function AuthorizationContextBanner({\n search,\n className = '',\n}: AuthorizationContextBannerProps) {\n if (!hasAuthorizationContext(search)) {\n return null;\n }\n\n return <AuthorizationContextContent className={className} search={search} />;\n}\n\nfunction AuthorizationContextContent({\n search,\n className,\n}: {\n search: AuthorizationContextSearch;\n className: string;\n}) {\n const { t } = useTranslation();\n const { data } = useSuspenseQuery(\n getAuthorizationContextQueryOptions(search),\n );\n\n return (\n <TRCard.Root\n aria-label={t('authorizationContext.label')}\n className={className}\n data-testid=\"authorization-context\"\n padding=\"lg\"\n render={<section />}\n variant=\"outlined\"\n >\n <TRCard.Content className=\"flex flex-col gap-tinyrack-sm\">\n <div className=\"flex items-center gap-tinyrack-sm\">\n <ShieldCheckIcon\n aria-hidden\n className=\"size-tinyrack-lg shrink-0 text-tinyrack-info\"\n />\n <TRText variant=\"body\" weight=\"medium\">\n {t('authorizationContext.title', { app: data.client.name })}\n </TRText>\n </div>\n\n <div className=\"flex min-w-0 items-center gap-tinyrack-xs\">\n <GlobeIcon\n aria-hidden\n className=\"size-tinyrack-lg shrink-0 text-tinyrack-text-muted\"\n />\n <TRText color=\"muted\" truncate variant=\"caption\">\n {t('authorizationContext.redirect', {\n origin: data.redirect_origin,\n })}\n </TRText>\n </div>\n\n <div className=\"flex flex-col gap-tinyrack-xs\">\n <TRText color=\"muted\" variant=\"caption\" weight=\"medium\">\n {t('authorizationContext.permissions')}\n </TRText>\n {data.scopes.length > 0 ? (\n <ul className=\"flex flex-wrap gap-tinyrack-xs\">\n {data.scopes.map((scope) => (\n <li key={scope.name}>\n <TRBadge uiSize=\"md\" variant=\"neutral\">\n {t(`consent.scope.${scope.name}`, {\n defaultValue: scope.description,\n })}\n </TRBadge>\n </li>\n ))}\n </ul>\n ) : (\n <TRText color=\"muted\" variant=\"caption\">\n {t('authorizationContext.noScopes')}\n </TRText>\n )}\n </div>\n </TRCard.Content>\n </TRCard.Root>\n );\n}\n"],"x_google_ignoreList":[0],"mappings":"yQAcA,IAAM,EAAQ,EAAiB,QAAS,CAJtC,CAAC,SAAU,CAAE,GAAI,KAAM,GAAI,KAAM,EAAG,KAAM,IAAK,QAAS,CAAC,EACzD,CAAC,OAAQ,CAAE,EAAG,kDAAmD,IAAK,QAAS,CAAC,EAChF,CAAC,OAAQ,CAAE,EAAG,WAAY,IAAK,QAAS,CAAC,CAEH,CAAU,QCIlD,SAAgB,EAA2B,CACzC,SACA,YAAY,IACsB,CAKlC,OAJK,EAAwB,CAAM,GAI5B,EAAA,EAAA,IAAA,CAAC,EAAD,CAAwC,YAAmB,QAAS,CAAA,EAHlE,IAIX,CAEA,SAAS,EAA4B,CACnC,SACA,aAIC,CACD,GAAM,CAAE,KAAM,EAAe,EACvB,CAAE,QAAS,EACf,EAAoC,CAAM,CAC5C,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAO,KAAR,CACE,aAAY,EAAE,4BAA4B,EAC/B,YACX,cAAY,wBACZ,QAAQ,KACR,QAAQ,EAAA,EAAA,IAAA,CAAC,UAAD,CAAU,CAAA,EAClB,QAAQ,qBAER,EAAA,EAAA,KAAA,CAAC,EAAO,QAAR,CAAgB,UAAU,yCAA1B,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6CAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAA,GACA,UAAU,8CACX,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,QAAQ,OAAO,OAAO,kBAC3B,EAAE,6BAA8B,CAAE,IAAK,EAAK,OAAO,IAAK,CAAC,CACpD,CAAA,CACL,KAEL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,qDAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,cAAA,GACA,UAAU,oDACX,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,SAAA,GAAS,QAAQ,mBACpC,EAAE,gCAAiC,CAClC,OAAQ,EAAK,eACf,CAAC,CACK,CAAA,CACL,KAEL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,yCAAf,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,QAAQ,UAAU,OAAO,kBAC5C,EAAE,kCAAkC,CAC/B,CAAA,EACP,EAAK,OAAO,OAAS,GACpB,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,0CACX,EAAK,OAAO,IAAK,IAChB,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,OAAO,KAAK,QAAQ,mBAC1B,EAAE,iBAAiB,EAAM,OAAQ,CAChC,aAAc,EAAM,WACtB,CAAC,CACM,CAAA,CACP,EANK,EAAM,IAMX,CACL,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,MAAM,QAAQ,QAAQ,mBAC3B,EAAE,+BAA+B,CAC5B,CAAA,CAEP,GACS,GACL,CAAA,CAEjB"}
@@ -1,2 +0,0 @@
1
- import{G as e,J as t,M as n,S as r,Z as i,b as a,c as o,d as s,f as c,g as l,h as u,m as d,q as f,v as p,y as m}from"./createLucideIcon-BPpAIXR_.js";import{P as ee,Y as te,_t as ne,bn as h,bt as re,pt as g,xt as ie}from"./config-DTQCUlfZ.js";import{O as ae,S as oe,T as se,X as ce,b as le,g as ue,h as de,w as _,y as fe}from"./shell-header-bar-CjG5qvPg.js";import{n as pe}from"./FieldItemContext-BeNfhOsU.js";import{t as me}from"./useAriaLabelledBy-ByuMi3Ry.js";var v=i(t(),1);function he(e){if(!e)return null;for(let t of e.elements){let e=t.tagName;if(e===`BUTTON`||e===`INPUT`){let e=t;if(e.type===`submit`)return e}}return null}function y(e){return{checked(t){return e.indeterminate?{}:t?{"data-checked":``}:{"data-unchecked":``}},..._}}var b=v.createContext(void 0);function ge(){return v.useContext(b)}var x=v.createContext(void 0);function S(){let e=v.useContext(x);if(e===void 0)throw Error(p(14));return e}var C=f(),_e=`data-parent`,w=v.forwardRef(function(e,t){let{checked:i,className:f,defaultChecked:p=!1,"aria-labelledby":ne,disabled:h=!1,form:g,id:ce,indeterminate:_=!1,inputRef:b,name:S,onCheckedChange:w,parent:T=!1,readOnly:E=!1,render:ve,required:D=!1,uncheckedValue:O,value:k,nativeButton:A=!1,style:ye,...be}=e,{clearErrors:xe}=ue(),{disabled:Se,name:Ce,setDirty:we,setFilled:j,setFocused:M,setTouched:Te,state:N,validationMode:Ee,validityData:De,validation:Oe}=oe(),ke=pe(),{labelId:Ae,controlId:je,registerControlId:P,getDescriptionProps:F}=fe(),I=ge(),L=I?.allValues===void 0?void 0:I.parent,R=L!==void 0,z=Se||ke.disabled||I?.disabled||h,B=Ce??S,V=k??B,Me=ae(),Ne=ae(),H=ce||je;R&&(T?H=Ne:V===void 0?H||=Ne:H=`${L.id}-${V}`);let U={};R&&(T?U=L.getParentProps():V!==void 0&&(U=L.getChildProps(V)));let{checked:Pe=i,indeterminate:Fe=_,onCheckedChange:Ie,...Le}=U,W=I?.value,G=v.useRef(null),K=r(()=>Symbol()),q=v.useRef(!1),{getButtonProps:Re,buttonRef:ze}=u({disabled:z,native:A}),J=I?.validation??Oe,[Y,Be]=se({controlled:V!==void 0&&W!==void 0&&!T?W.includes(V):Pe,default:p,name:`Checkbox`,state:`checked`}),X=R?!!Pe:Y,Z=R&&Fe||_;a(()=>{P!==c&&(q.current=!0,P(K.current,H))},[H,P,K]),v.useEffect(()=>{let e=K.current;return()=>{!q.current||P===c||(q.current=!1,P(e,void 0))}},[P,K]),le(G,Me,Y,void 0,!I&&!z,S);let Q=v.useRef(null),Ve=J.registerInput,He=I?V:void 0,Ue=v.useCallback(e=>Ve(e,{controlRef:G,value:He}),[Ve,He]),We=d(b,Q,T?void 0:Ue),Ge=me(ne,Ae,Q,!A,H??void 0);a(()=>{Q.current&&(Q.current.indeterminate=Z,Y&&j(!0))},[Y,Z,j]),de(Y,()=>{I||(xe(B),j(Y),we(Y!==De.initialValue),J.change(Y))});let Ke=m({checked:Y,disabled:z,form:g,name:T?void 0:B,id:A?void 0:H??void 0,required:D,ref:We,style:B?ie:re,tabIndex:-1,type:`checkbox`,"aria-hidden":!0,onChange(e){if(e.nativeEvent.defaultPrevented)return;if(E){e.preventDefault();return}let t=e.currentTarget.checked,n=ee(te,e.nativeEvent);if(w?.(t,n),!n.isCanceled&&(Ie?.(t,n),!n.isCanceled&&(Be(t),V!==void 0&&I!==void 0&&!T&&!R))){let e=t?[...I.value,V]:I.value.filter(e=>e!==V);I.setValue(e,n)}},onClick(e){e.stopPropagation()},onFocus(){G.current?.focus()}},k===void 0?s:{value:(I?Y&&k:k)||``},F,e=>J.getValidationProps(z,e));v.useEffect(()=>{if(!L||V===void 0)return;let e=L.disabledStatesRef.current;return e.set(V,z),()=>{e.delete(V)}},[L,z,V]);let $=v.useMemo(()=>({...N,checked:X,disabled:z,readOnly:E,required:D,indeterminate:Z}),[N,X,z,E,D,Z]),qe=y($),Je=o(`span`,e,{state:$,ref:[ze,G,t],props:[{id:A?H??void 0:Me,role:`checkbox`,"aria-checked":Z?`mixed`:X,"aria-readonly":E||void 0,"aria-required":D||void 0,"aria-labelledby":Ge,[_e]:T?``:void 0,onFocus(){z||M(!0)},onBlur(){let e=Q.current;e&&(Te(!0),M(!1),Ee===`onBlur`&&J.commit(I?W:e.checked))},onKeyDown(e){if(e.key!==`Enter`||(e.preventBaseUIHandler(),e.defaultPrevented))return;let t=Q.current?.form??null,r=e.currentTarget,i=e.nativeEvent,a=e.preventDefault,o=i.preventDefault,s=!1;e.preventDefault=()=>{s=!0,a.call(e)},i.preventDefault=()=>{s=!0,o.call(i)},o.call(i),n(r).queueMicrotask(()=>{e.preventDefault=a,i.preventDefault=o,s||he(t)?.click()})},onClick(e){if(E||z)return;e.preventDefault();let t=Q.current;t&&l(t,e)}},be,Le,Re,F,e=>J.getValidationProps(z,e)],stateAttributesMapping:qe});return(0,C.jsxs)(x.Provider,{value:$,children:[Je,!Y&&!I&&B&&!T&&O!==void 0&&(0,C.jsx)(`input`,{type:`hidden`,form:g,name:B,value:O,disabled:z}),(0,C.jsx)(`input`,{...Ke,suppressHydrationWarning:!0})]})}),T=h(v.forwardRef(function(e,t){let{render:n,className:r,style:i,keepMounted:a=!1,...s}=e,c=S(),l=c.checked||c.indeterminate,{mounted:u,transitionStatus:d,setMounted:f}=ce(l),p=v.useRef(null),m={...c,transitionStatus:d};g({open:l,ref:p,onComplete(){l||f(!1)}});let ee={...y(c),...ne},te=a||u,h=o(`span`,e,{ref:[t,p],state:m,stateAttributesMapping:ee,props:s});return te?h:null}),`tr-checkbox-indicator`);function E({checked:t,className:n,ref:r,uiSize:i=`md`,...a}){let o=(0,v.useRef)(null),[s,c]=(0,v.useState)(0);return(0,v.useEffect)(()=>{if(t!==void 0)return;let e=e=>{let t=e.target;if(!(t instanceof HTMLFormElement))return;let n=o.current?.nextElementSibling??null;for(;n instanceof HTMLInputElement;){if(n.type===`checkbox`&&n.form===t){c(e=>e+1);return}n=n.nextElementSibling}};return document.addEventListener(`reset`,e,!0),()=>document.removeEventListener(`reset`,e,!0)},[t]),(0,v.createElement)(w,{...a,checked:t,className:e(`tr-checkbox`,n),"data-ui-size":i,key:s,ref:e=>{o.current=e,typeof r==`function`?r(e):r&&(r.current=e)}})}var ve={Root:E,Indicator:T};export{ve as t};
2
- //# sourceMappingURL=checkbox-gdHnSFQ-.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=email-C5vUVgr_.js.map
@@ -1,3 +0,0 @@
1
- import{G as e,J as t,S as n,Z as r,_ as i,b as a,c as o,d as s,q as c,v as l,x as u,y as d}from"./createLucideIcon-BPpAIXR_.js";import{P as f,Xt as p,Y as m,_t as h,bn as g,pt as _,un as v,xn as y}from"./config-DTQCUlfZ.js";import{C as b,O as x,S,T as C,X as w,_ as T,b as E,d as D,g as O,v as k,w as A,x as j,y as M}from"./shell-header-bar-CjG5qvPg.js";import{n as N,t as P}from"./FieldItemContext-BeNfhOsU.js";var F=c(),I=r(t(),1),L=I.createContext(void 0);function R(e=!1){let t=I.useContext(L);if(!t&&!e)throw Error(l(86));return t}var z=function(e){let t=x(),r=e.controlId===void 0?t:e.controlId,[i,a]=I.useState(r),[o,s]=I.useState(e.labelId),[c,l]=I.useState([]),d=n(()=>new Map),{messageIds:f}=M(),p=u((e,t)=>{let n=d.current;if(t===void 0){n.delete(e);return}n.set(e,t),a(e=>{if(n.size===0)return;let t;for(let r of n.values()){if(e!==void 0&&r===e)return e;t===void 0&&(t=r)}return t})}),m=I.useCallback(e=>{let t=e[`aria-describedby`]?e[`aria-describedby`].split(` `):[];return t.push(...f,...c),{...e,"aria-describedby":Array.from(new Set(t)).join(` `)||void 0}},[f,c]),h=I.useMemo(()=>({controlId:i,registerControlId:p,labelId:o,setLabelId:s,messageIds:c,setMessageIds:l,getDescriptionProps:m}),[i,p,o,s,c,l,m]);return(0,F.jsx)(k.Provider,{value:h,children:e.children})};function B(e,t){return{...e,state:{...e.state,valid:!t&&e.state.valid}}}var V=Object.keys(b);function H(e,t){return e.matches(`:disabled`)?!1:!t||e.form===t?!0:e.form===null&&!e.hasAttribute(`form`)}function U(e,t){let n=null;for(let r of e.keys())if(H(r,t)){if(!r.validity.valid)return r;n??=r}return n}function W(e,t){for(let e of t.keys())e.setCustomValidity(``);e?.setCustomValidity(``)}function ee(e){let{elementRef:t,formRef:r}=O(),{setValidityData:i,validate:a,validityData:o,validationDebounceTime:c,invalid:l,markedDirtyRef:f,state:p,shouldValidateOnChange:m,registeredFieldIdRef:h}=e,{controlId:g,getDescriptionProps:_}=M(),y=v(),x=I.useRef(null),S=n(()=>new Map).current,C=I.useRef(0),w=I.useCallback((e,t)=>(S.set(e,t),()=>{S.delete(e)}),[S]),T=u(()=>{let e=U(S,t.current);return e&&S.get(e)?.controlRef.current||null}),E=u(async(e,n=!1)=>{C.current+=1;let s=C.current;function c(e,t=l){let n=h.current??g;if(n==null)return;let i=r.current.fields.get(n);if(!i)return;let a=B(e,t);r.current.fields.set(n,{...i,validityData:a})}function u(t,n){let r={value:e,state:{...b,valid:!0},error:``,errors:[],initialValue:o.initialValue};W(t,S),c(r,n),i(r)}let d=S.size>0?U(S,t.current):x.current;if(n){if(p.valid!==!1||!d)return;let e=d.validity;if(!e.valueMissing){u(d,!1);return}for(let t of V)if(t!==`valid`&&t!==`valueMissing`&&t!==`customError`&&e[t])return}function _(e){let t=V.reduce((t,n)=>(t[n]=e.validity[n],t),{}),n=!1;for(let e of V)if(e!==`valid`){if(e===`valueMissing`&&t[e])n=!0;else if(t[e])return t}return n&&!f.current&&(t.valid=!0,t.valueMissing=!1),t}y.clear();let v=null,w=[],T=d?_(d):{...b,valid:!0},E,D=m();if(d&&d.validationMessage&&!D)E=d.validationMessage,w=[d.validationMessage];else{let t=Array.from(r.current.fields.values()).reduce((e,t)=>(t.name&&(e[t.name]=t.getValue()),e),{}),n=a(e,t);if(typeof n==`object`&&n&&`then`in n){if(v=await n,s!==C.current)return}else v=n;v===null?D&&(W(d,S),T.customError=!1,d&&d.validationMessage?(E=d.validationMessage,w=[d.validationMessage]):(!d||d.validity.valid)&&!T.valid&&(T.valid=!0)):(T.valid=!1,T.customError=!0,Array.isArray(v)?(w=v,d?.setCustomValidity(v.join(`
2
- `))):v&&(w=[v],d?.setCustomValidity(v)))}let O={value:e,state:T,error:E??(Array.isArray(v)?v[0]:v??``),errors:w,initialValue:o.initialValue};c(O),i(O)}),D=u(e=>{y.clear();let t=m();t&&e!==``&&c?(C.current+=1,y.start(c,()=>{E(e)})):E(e,!t)}),k=I.useCallback((e,t={})=>d(_(t),p.valid===!1&&!p.disabled&&!e?{"aria-invalid":!0}:s),[_,p.disabled,p.valid]);return I.useMemo(()=>({getValidationProps:k,inputRef:x,registeredInputs:S,registerInput:w,getInputControl:T,commit:E,change:D}),[k,S,w,T,E,D])}function te(e){let{commit:t,invalid:n,markedDirtyRef:r,name:i,setRegisteredFieldName:o,registeredFieldIdRef:s,setValidityData:c,validityData:l}=e,{formRef:d}=O(),f=I.useRef(null),p=I.useRef(null),m=I.useRef(!1),h=u(()=>{let e=p.current;if(e)return e.getValue?e.getValue():e.value});function g(e){return e.value===void 0?h():e.value}let _=u(()=>{let e=p.current;if(r.current=!0,!e){t(l.value);return}t(g(e))});function v(){let e=p.current;!e||!e.id||d.current.fields.set(e.id,{getValue:h,name:i??e.name,controlRef:e.controlRef,validityData:B(l,n),validate:_})}function y(e=p.current?.id){e&&d.current.fields.delete(e)}function b(e){if(m.current)return;m.current=!0;let t=g(e);c(e=>e.initialValue===t?e:{...e,initialValue:t})}return a(()=>{let e=p.current;!e||!e.id||(o(i?void 0:e.name),d.current.fields.set(e.id,{getValue:h,name:i??e.name,controlRef:e.controlRef,validityData:B(l,n),validate:_}))},[d,h,n,i,o,_,l]),a(()=>{let e=d.current.fields;return()=>{let t=p.current?.id;t&&e.delete(t)}},[d]),[_,u((e,t)=>{if(!t){f.current===e&&(f.current=null,y(),p.current=null,o(void 0),s.current=void 0);return}let n=p.current?.id;f.current=e,p.current=t,i||o(t.name),s.current=t.id,n&&n!==t.id&&y(n),b(t),v()})]}var G=I.forwardRef(function(e,t){let{errors:n,validationMode:r,submitAttemptedRef:i}=O(),{render:s,className:c,validate:l,validationDebounceTime:d=0,validationMode:f=r,name:p,disabled:m=!1,invalid:h,dirty:g,touched:_,actionsRef:v,style:y,...x}=e,S=R(!0)?.disabled,C=u(l||(()=>null)),w=S||m,[T,E]=I.useState(!1),[D,k]=I.useState(!1),[M,N]=I.useState(!1),[P,L]=I.useState(!1),z=g??D,B=_??T,V=I.useRef(z),H=I.useRef(void 0),[U,W]=I.useState(),G=p??U;a(()=>{g!==void 0&&(V.current=g)},[g]);let K=u(e=>{g===void 0&&(e&&(V.current=!0),k(e))}),ne=u(e=>{_===void 0&&E(e)}),q=u(()=>f===`onChange`||f===`onSubmit`&&i.current),J=G&&Object.hasOwn(n,G)?n[G]:null,re=!!(Array.isArray(J)?J.length:J),Y=h===!0||re,[X,Z]=I.useState({state:b,error:``,errors:[],value:null,initialValue:null}),ie=!Y&&(w?null:X.state.valid),Q=I.useMemo(()=>({disabled:w,touched:B,dirty:z,valid:ie,filled:M,focused:P}),[w,B,z,ie,M,P]),$=ee({setValidityData:Z,validate:C,validityData:X,validationDebounceTime:d,invalid:Y,markedDirtyRef:V,state:Q,shouldValidateOnChange:q,registeredFieldIdRef:H}),[ae,oe]=te({commit:$.commit,invalid:Y,markedDirtyRef:V,name:p,setRegisteredFieldName:W,registeredFieldIdRef:H,setValidityData:Z,validityData:X});I.useImperativeHandle(v,()=>({validate:ae}),[ae]);let se=I.useMemo(()=>({invalid:Y,name:G,validityData:X,setValidityData:Z,disabled:w,setTouched:ne,setDirty:K,setFilled:N,setFocused:L,validationMode:f,shouldValidateOnChange:q,state:Q,registerFieldControl:oe,validation:$}),[Y,G,X,w,ne,K,N,L,f,q,Q,oe,$]),ce=o(`div`,e,{ref:t,state:Q,props:x,stateAttributesMapping:A});return(0,F.jsx)(j.Provider,{value:se,children:ce})}),K=I.forwardRef(function(e,t){return(0,F.jsx)(z,{children:(0,F.jsx)(G,{...e,ref:t})})}),ne=I.forwardRef(function(e,t){let{render:n,className:r,style:i,id:a,nativeLabel:s=!0,...c}=e,l=S(!1),u=N(),{labelId:d}=M(),f={...l.state,disabled:l.disabled||u.disabled},p=I.useRef(null),m=D({id:d??a,native:s});return o(`label`,e,{ref:[t,p],state:f,props:[m,c],stateAttributesMapping:A})}),q={...A,...h},J=I.forwardRef(function(e,t){let{render:n,id:r,className:i,match:s,style:c,...l}=e,u=x(r),{validityData:d,state:f,name:p}=S(!1),{setMessageIds:m}=M(),{errors:h}=O(),g=p&&Object.hasOwn(h,p)?h[p]:null,v=!!(Array.isArray(g)?g.length:g),y=typeof s==`string`,b=!1;b=s===!0?!0:f.disabled?!1:y?!!d.state[s]:v||d.state.valid===!1;let{mounted:C,transitionStatus:T,setMounted:E}=w(b);a(()=>{if(!(!b||!u))return m(e=>e.concat(u)),()=>{m(e=>e.filter(e=>e!==u))}},[b,u,m]);let D=I.useRef(null),[k,A]=I.useState(null),[j,N]=I.useState(null),P=d.error;!y&&v?P=g:d.errors.length>1&&(P=d.errors);let L=P;Array.isArray(P)&&(L=P.length>1?(0,F.jsx)(`ul`,{children:P.map(e=>(0,F.jsx)(`li`,{children:e},e))}):P[0]);let R=Array.isArray(P)?JSON.stringify(P):P;b&&R!==j&&(N(R),A(L)),_({open:b,ref:D,onComplete(){b||E(!1)}});let z={...f,transitionStatus:T},B=o(`div`,e,{ref:[t,D],state:z,props:[{id:u,children:b?L:k},l],stateAttributesMapping:q,enabled:C});return C?B:null}),re=I.forwardRef(function(e,t){let{render:n,id:r,className:i,style:s,...c}=e,l=x(r),u=S(!1),d=N(),{setMessageIds:f}=M(),p={...u.state,disabled:u.disabled||d.disabled};return a(()=>{if(l)return f(e=>e.concat(l)),()=>{f(e=>e.filter(e=>e!==l))}},[l,f]),o(`p`,e,{ref:t,state:p,props:[{id:l},c],stateAttributesMapping:A})}),Y=I.forwardRef(function(e,t){let{render:n,className:r,id:s,name:c,value:l,disabled:d=!1,onValueChange:h,defaultValue:g,autoFocus:_=!1,style:v,...y}=e,{state:b,name:x,disabled:w,setTouched:D,setDirty:k,validityData:j,setFocused:N,setFilled:P,validationMode:F,validation:L}=S(),{clearErrors:R}=O(),z=w||d,B=x??c,V={...b,disabled:z},{labelId:H}=M(),U=T({id:s});a(()=>{let e=l!=null;L.inputRef.current?.value||e&&l!==``?P(!0):e&&l===``&&P(!1)},[L.inputRef,P,l]);let W=I.useRef(null);a(()=>{_&&W.current===p(i(W.current))&&N(!0)},[_,N]);let[ee]=C({controlled:l,default:g,name:`FieldControl`,state:`value`}),te=l!==void 0,G=te?ee:void 0,K=u(()=>L.inputRef.current?.value);return E(L.inputRef,U,G,K,!z,c),o(`input`,e,{ref:[t,W],state:V,props:[{id:U,disabled:z,name:B,ref:L.inputRef,"aria-labelledby":H,autoFocus:_,...te?{value:G}:{defaultValue:g},onChange(e){let t=e.currentTarget.value;h?.(t,f(m,e.nativeEvent)),k(t!==(j.initialValue??``)),P(t!==``),e.nativeEvent.defaultPrevented||(R(B),L.change(t))},onFocus(){N(!0)},onBlur(e){D(!0),N(!1),F===`onBlur`&&L.commit(e.currentTarget.value)},onKeyDown(e){e.currentTarget.tagName===`INPUT`&&e.key===`Enter`&&(D(!0),L.commit(e.currentTarget.value))}},y,e=>L.getValidationProps(z,e)],stateAttributesMapping:A})}),X=function(e){let{children:t}=e,{validityData:n,invalid:r}=S(!1),i=I.useMemo(()=>B(n,r),[n,r]),{transitionStatus:a}=w(i.state.valid===!1),o=I.useMemo(()=>({...i,validity:i.state,transitionStatus:a}),[i,a]);return(0,F.jsx)(I.Fragment,{children:t(o)})},Z=I.forwardRef(function(e,t){let{render:n,className:r,style:i,disabled:a=!1,...s}=e,{state:c,disabled:l}=S(!1),u=l||a,d={...c,disabled:u},f=I.useMemo(()=>({disabled:u}),[u]),p=o(`div`,e,{ref:t,state:d,props:s,stateAttributesMapping:A});return(0,F.jsx)(z,{children:(0,F.jsx)(P.Provider,{value:f,children:p})})});function ie({className:t,uiSize:n=`md`,...r}){return y(),(0,F.jsx)(Y,{...r,className:e(`tr-field-control`,t),"data-ui-size":n})}var Q=g(re,`tr-field-description`),$=g(J,`tr-field-error`),ae=g(Z,`tr-field-item`),oe=g(ne,`tr-label`);function se({className:t,...n}){return(0,F.jsx)(K,{...n,className:e(`tr-field`,t)})}var ce={Root:se,Label:oe,Error:$,Description:Q,Control:ie,Validity:g(X,`tr-field-validity`),Item:ae};export{Y as n,ce as t};
3
- //# sourceMappingURL=field-Cn4H1CUj.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=forgot-C5vUVgr_.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=login-C5vUVgr_.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=passkey-C5vUVgr_.js.map
@@ -1,2 +0,0 @@
1
- import{I as e}from"./index-CS23Ozt6.js";var t=e;export{t as errorComponent};
2
- //# sourceMappingURL=password-C5vUVgr_.js.map
@@ -1,2 +0,0 @@
1
- import{G as e,J as t,Z as n,_ as r,b as i,c as a,i as o,q as s,v as c,x as l}from"./createLucideIcon-BPpAIXR_.js";import{F as u,G as d,P as f,S as ee,U as p,Vt as m,W as h,Zt as te,bn as g,bt as ne,k as _,q as re,xt as v}from"./config-DTQCUlfZ.js";import{S as ie,T as ae,_ as oe,b as se,g as ce,h as le,i as y,u as b,w as x,y as ue}from"./shell-header-bar-CjG5qvPg.js";import{t as S}from"./useAriaLabelledBy-ByuMi3Ry.js";import{t as C}from"./field-Cn4H1CUj.js";import{t as w}from"./separator-B0Bvh1he.js";var T=n(t(),1),E=T.createContext(void 0);function de(){let e=T.useContext(E);if(e===void 0)throw Error(c(98));return e}function D(e,t,n){return{...e,value:t,index:n,filled:t!==``}}var O={value:()=>null,length:()=>null,...x},k={value:()=>null,index:()=>null,...x},A={numeric:{slotPattern:`\\d{1}`,getRootPattern:e=>`\\d{${e}}`,regexp:/[^\d]/g,inputMode:`numeric`},alpha:{slotPattern:`[a-zA-Z]{1}`,getRootPattern:e=>`[a-zA-Z]{${e}}`,regexp:/[^a-zA-Z]/g,inputMode:`text`},alphanumeric:{slotPattern:`[a-zA-Z0-9]{1}`,getRootPattern:e=>`[a-zA-Z0-9]{${e}}`,regexp:/[^a-zA-Z0-9]/g,inputMode:`text`}};function j(e){return e===`none`?null:A[e]}function M(e){return(e??``).replace(/\s/g,``)}function fe(e,t){return t?e.replace(t.regexp,``):e}function N(e,t,n,r){let i=M(e),a=j(n),o=fe(i,a),s=i.length>o.length;if(r){let e=r(o);s||=o.length>e.length,o=fe(e,a),s||=e.length>o.length}let c=t<0?0:t,l=Array.from(o);return[l.slice(0,c).join(``),s||l.length>c]}function P(e,t,n,r){return N(e,t,n,r)[0]}function pe(e,t,n,r,i,a){let o=P(n,r,i,a);return P(`${e.slice(0,t)}${o}${e.slice(t+o.length)}`,r,i,a)}function F(e,t){return t<0||t>=e.length?e:`${e.slice(0,t)}${e.slice(t+1)}`}var I=s(),L=T.forwardRef(function(e,t){let{"aria-describedby":n,"aria-labelledby":o,id:s,autoComplete:c=`one-time-code`,defaultValue:d,value:ee,onValueChange:p,onValueComplete:m,form:h,length:g,autoSubmit:re=!1,mask:y=!1,inputMode:x,validationType:C=`numeric`,normalizeValue:w,disabled:de=!1,readOnly:D=!1,required:k=!1,name:A,onValueInvalid:M,render:fe,className:pe,style:F,...L}=e,{setDirty:z,validityData:B,disabled:V,setFilled:H,invalid:U,name:me,state:he,validation:W,validationMode:ge,setFocused:_e,setTouched:ve}=ie(),{clearErrors:ye}=ce(),{getDescriptionProps:be,labelId:xe}=ue(),G=V||de,K=me??A,[Se,Ce]=ae({controlled:ee,default:d,name:`OTPField`,state:`value`}),we=T.useRef(null),q=T.useRef([]),Te=T.useRef(null),J=T.useRef(null),Ee=T.useMemo(()=>({get current(){return q.current[0]??null}}),[]),Y=oe({id:s}),De=S(o,xe,Ee,!0,Y),Oe=o==null?De:void 0,ke=R(n,be({})[`aria-describedby`]),Ae=j(C),je=Ae?.slotPattern,Me=Ae?.getRootPattern(g),Ne=x??Ae?.inputMode,Pe=Number.isInteger(g)&&g>0,X=P(Se,g,C,w),Z=_(X),Q=X!==``,[Fe,Ie]=T.useState(0),[Le,Re]=T.useState(()=>Math.min(X.length,g-1)),[ze,Be]=T.useState(!1),Ve=ze?Math.min(Le,Math.max(g-1,0)):Math.min(X.length,g-1);i(()=>{H(Q)},[Q,H]),se(Ee,Y,X,void 0,!G,A);let $=l(e=>{let t=Math.min(Math.max(e,0),Math.max(q.current.length-1,0)),n=q.current[t];n?.focus(),n?.select()}),He=l((e,t)=>{Te.current={index:e,value:t}});function Ue(){let e=W.inputRef.current?.form??q.current[0]?.form??null;if(h){let t=r(we.current).getElementById(h);t?.tagName===`FORM`&&(e=t)}e&&typeof e.requestSubmit==`function`&&e.requestSubmit()}function We(e,t){m?.(e,t),re&&Ue()}le(X,()=>{ye(K),z(X!==B.initialValue),W.change(X);let e=Te.current;e!=null&&(Te.current=null,e.value===X&&$(e.index));let t=J.current;t!=null&&(J.current=null,t.value===X&&We(X,t.eventDetails))});let Ge=l((e,t)=>{let n=P(e,g,C,w),r=(t.reason===`input-change`||t.reason===`input-paste`)&&n.length===g&&(Z.current.length!==g||t.reason===`input-paste`)?u(t.reason,t.event):null;return n===Z.current?(r!=null&&We(n,r),null):(p?.(n,t),t.isCanceled?null:(Ce(n),r==null?n.length!==g&&(J.current=null):J.current={value:n,eventDetails:r},n))}),Ke=l((e,t)=>{M?.(e,t)}),qe=l((e,t)=>{if(e>Z.current.length){$(Math.min(Z.current.length,g-1));return}Re(e),Be(!0),_e(!0),t.currentTarget.select()}),Je=l(e=>{te(we.current,e.relatedTarget)||(ve(!0),Be(!1),_e(!1),ge===`onBlur`&&W.commit(Z.current))}),Ye=T.useCallback(e=>{if(Y!=null)return e===0?Y:`${Y}-${e+1}`},[Y]),Xe=T.useMemo(()=>({...he,complete:X.length===g,disabled:G,filled:Q,focused:ze,length:g,readOnly:D,required:k,value:X}),[G,he,Q,ze,g,D,k,X]),Ze=T.useMemo(()=>({autoComplete:c,activeIndex:Ve,disabled:G,form:h,focusInput:$,queueFocusInput:He,getInputId:Ye,handleInputBlur:Je,handleInputFocus:qe,inputMode:Ne,inputAriaLabelledBy:Oe,invalid:U,length:g,mask:y,pattern:je,reportValueInvalid:Ke,readOnly:D,required:k,normalizeValue:w,setValue:Ge,state:Xe,validationType:C,value:X}),[Ve,c,G,$,h,Ye,Je,qe,Ne,Oe,U,g,y,je,He,D,Ke,k,w,Ge,Xe,C,X]),Qe=a(`div`,e,{ref:[t,we],state:Xe,props:[{role:`group`,"aria-describedby":ke,"aria-labelledby":De},L],stateAttributesMapping:O});return(0,I.jsx)(b,{elementsRef:q,onMapChange:e=>{Ie(e.size)},children:(0,I.jsxs)(E.Provider,{value:Ze,children:[Qe,Pe&&(0,I.jsx)(`input`,{...W.getValidationProps(G,{onFocus(){$(0)},onChange(e){if(e.nativeEvent.defaultPrevented||G||D)return;let t=e.currentTarget.value,[n,r]=N(t,g,C,w);r&&Ke(t,u(`input-change`,e.nativeEvent));let i=Ge(n,f(`input-change`,e.nativeEvent));i!=null&&i!==``&&He(i.length-1,i)}}),ref:W.inputRef,type:`text`,id:Y&&K==null?`${Y}-hidden-input`:void 0,form:h,name:K,value:X,autoComplete:c,inputMode:Ne,minLength:g,maxLength:g,pattern:Me,disabled:G,readOnly:D,required:k,"aria-hidden":!0,tabIndex:-1,style:K?v:ne})]})})});function R(...e){let t=e.flatMap(e=>e?.split(/\s+/).filter(Boolean)??[]);return t.length>0?Array.from(new Set(t)).join(` `):void 0}var z=g(T.forwardRef(function(e,t){let{"aria-label":n,"aria-labelledby":r,render:i,className:o,style:s,...c}=e,{activeIndex:l,autoComplete:te,disabled:g,form:ne,focusInput:_,queueFocusInput:v,getInputId:ie,handleInputBlur:ae,handleInputFocus:oe,inputMode:se,inputAriaLabelledBy:ce,invalid:le,length:b,mask:x,pattern:ue,reportValueInvalid:S,readOnly:C,required:w,normalizeValue:E,setValue:O,state:A,validationType:j,value:M}=de(),{ref:fe,index:P}=y({guess:!0}),I=T.useRef(null),L=ee(),R=M[P]??``,z=D(A,R,P),B=n,V=r??ce,H=P===0?void 0:B,U={id:ie(P),value:R,type:x?`password`:`text`,inputMode:se,autoComplete:P===0?te:`off`,autoCorrect:`off`,spellCheck:`false`,enterKeyHint:P===b-1?`done`:`next`,maxLength:P===0?b:void 0,tabIndex:l===P?0:-1,disabled:g,form:ne,pattern:ue,readOnly:C,required:w,"aria-labelledby":H==null?V:void 0,"aria-invalid":!g&&le?!0:void 0,"aria-label":H,onMouseDown(e){e.defaultPrevented||g||(e.preventDefault(),_(P))},onFocus(e){e.defaultPrevented||g||oe(P,e)},onBlur(e){e.defaultPrevented||ae(e)},onChange(e){if(e.defaultPrevented||g||C)return;let t=e.currentTarget.value,[n,r]=N(t,b,j,E);if(r&&S(t,u(p,e.nativeEvent)),n===``){t===``?O(F(M,P),f(h,e.nativeEvent)):R!==``&&(e.currentTarget.value=R,e.currentTarget.select());return}let i=pe(M,P,n,b,j,E),a=O(i,f(p,e.nativeEvent));if(a!=null){let e=Math.min(P+n.length,b-1);v(e,a)}},onKeyDown(e){if(e.defaultPrevented||g)return;let t=Math.max(b-1,0),n=Math.min(M.length,t),r=(e.ctrlKey||e.metaKey)&&!e.altKey,i=L===`rtl`,a=i?`ArrowRight`:`ArrowLeft`,o=i?`ArrowLeft`:`ArrowRight`;if(e.key===a){m(e),_(r?0:Math.max(0,P-1));return}if(e.key===o){m(e),_(r?n:Math.min(t,P+1));return}if(e.key===`Home`||e.key===`ArrowUp`){m(e),_(0);return}if(e.key===`End`||e.key===`ArrowDown`){m(e),_(n);return}if(C)return;function s(t,n){let r=O(t,f(re,e.nativeEvent));r!=null&&v(n,r)}if(e.key===`Backspace`&&r){m(e),s(``,0);return}if(e.key===`Delete`){m(e),s(F(M,P),P);return}let c=e.currentTarget.value,l=e.currentTarget.selectionStart===0&&e.currentTarget.selectionEnd===c.length;if(e.key.length===1&&l&&R===e.key){m(e),P<b-1&&_(P+1);return}if(e.key===`Backspace`){m(e);let t=Math.max(0,P-1);s(F(M,R===``?t:P),t)}},onPaste(e){if(e.defaultPrevented||g||C)return;let t=``;try{t=e.clipboardData?.getData(`text/plain`)??``}catch{return}e.preventDefault();let[n,r]=N(t,b,j,E);if(r&&S(t,u(d,e.nativeEvent)),n===``)return;let i=O(pe(M,P,n,b,j,E),f(d,e.nativeEvent));if(i!=null){let e=Math.min(P+n.length,b-1);v(e,i)}}};return a(`input`,e,{ref:[t,fe,I],state:z,props:[U,c],stateAttributesMapping:k})}),`tr-otp-field-digit`,{tracksFocusModality:!0});function B({appearance:t=`solid`,className:n,uiSize:r=`md`,...i}){return(0,I.jsx)(L,{...i,className:e(`tr-otp-field`,n),"data-appearance":t,"data-ui-size":r})}function V({className:t,orientation:n=`vertical`,...r}){return(0,I.jsx)(w,{...r,className:e(`tr-otp-field-separator`,t),orientation:n})}var H={Root:B,Input:z,Separator:V},U=(0,T.forwardRef)(function({length:e=6,error:t,disabled:n=!1,onComplete:r,onChange:i,value:a,autoFocus:s=!1,className:c=``},l){let{t:u}=o(),d=(0,T.useId)(),f=(0,T.useRef)(null),[ee,p]=(0,T.useState)(a??``);(0,T.useEffect)(()=>{a!==void 0&&p(a)},[a]),(0,T.useImperativeHandle)(l,()=>({focus:()=>{(f.current?.querySelector(`input`))?.focus()},clear:()=>{p(``),(f.current?.querySelector(`input`))?.focus()}}),[]);let m=(0,T.useCallback)(e=>{p(e),i?.(e)},[i]),h=(0,T.useCallback)(e=>{r?.(e)},[r]);return(0,I.jsxs)(C.Root,{className:c,ref:f,children:[(0,I.jsx)(C.Label,{className:`sr-only`,htmlFor:d,children:u(`common.otp.label`)}),(0,I.jsx)(H.Root,{disabled:n,id:d,length:e,onValueChange:m,onValueComplete:h,uiSize:`md`,validationType:`numeric`,value:ee,children:Array.from({length:e},(t,n)=>(0,I.jsx)(H.Input,{"aria-label":n===0?void 0:u(`common.otp.digit`,{label:u(`common.otp.label`),position:n+1,total:e}),autoFocus:s&&n===0},n))}),t&&(0,I.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-danger text-tinyrack-sm`,"data-testid":`pin-input-error`,children:t.message})]})});export{U as t};
2
- //# sourceMappingURL=pin-input-Cc-VkrQ3.js.map
@@ -1,2 +0,0 @@
1
- import{J as e,U as t,Z as n,i as r,n as i,q as a,r as o,s,t as c}from"./createLucideIcon-BPpAIXR_.js";import{On as l,Sr as u,i as d,n as f,r as p,t as m}from"./config-DTQCUlfZ.js";import{t as h}from"./mutationOptions-DyYFUbyn.js";import{t as g}from"./useMutation-BWZ0G4Td.js";import{A as _,D as v,t as y,tt as b}from"./shell-header-bar-CjG5qvPg.js";import{t as x}from"./useQuery-Ckxjmvtl.js";import{a as S,i as C,n as w,r as T,t as E}from"./use-totp-setup-BbS3XcZA.js";import{t as D}from"./auth-field-DD8kvl--.js";import{t as O}from"./fingerprint-pattern-DP62Vk8x.js";import{t as k}from"./key-round-CdvHb8vT.js";import{i as A}from"./provider-logos-u1YURWQr.js";import{n as ee,t as te}from"./logout-B5T52P8u.js";import{t as j}from"./shield-check-D_p8H0ni.js";import{t as M}from"./trash-2-DZdKBLvC.js";import{t as N}from"./triangle-alert-CqNn0kPs.js";import{t as P}from"./zod-C87S6Tec.js";import{B as F,C as ne,R as I,S as L,T as re,w as R,x as ie,z}from"./index-CS23Ozt6.js";import{t as ae}from"./badge-CsOfUji0.js";import{t as oe}from"./auth-page-header-CIn2E4zI.js";import{t as B}from"./alert-leqyvHOp.js";import{t as se}from"./initial-avatar-CtuDUz_W.js";import{t as V}from"./promise-OpBtq8tG.js";import{n as H,t as U}from"./modal-BDQFucjz.js";import{a as W,i as G,n as K,r as q}from"./passkey-J1qnYp9A.js";import{r as J,t as Y}from"./standard-schema-e8gtSzGE.js";import{n as ce,r as le}from"./totp-BNZ904Zm.js";var ue=c(`cloud`,[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]),de=c(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),fe=c(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),pe=c(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),me=c(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),X=n(e(),1),Z=a();function he({isConfigManaged:e,isDeletionEnabled:t,onDeleteClick:n}){let{t:a}=r();return t?(0,Z.jsxs)(F.Root,{className:`border-tinyrack-danger-border bg-tinyrack-danger-surface`,variant:`outlined`,children:[(0,Z.jsxs)(F.Header,{className:`border-tinyrack-danger-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,Z.jsx)(N,{"aria-hidden":!0,className:`size-tinyrack-lg text-tinyrack-danger`}),(0,Z.jsx)(F.Title,{className:`text-tinyrack-danger`,children:a(`profile.dangerZone.title`)})]}),(0,Z.jsx)(F.Description,{children:a(`profile.dangerZone.description`)})]}),(0,Z.jsx)(F.Content,{className:`px-tinyrack-lg py-tinyrack-md`,children:(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(i,{as:`p`,variant:`bodySm`,weight:`medium`,children:a(`profile.deleteAccount.title`)}),(0,Z.jsx)(i,{as:`p`,color:`muted`,variant:`caption`,children:a(e?`profile.deleteAccount.configManaged`:`profile.deleteAccount.description`)})]}),(0,Z.jsxs)(s,{appearance:`outline`,"data-testid":`profile-delete-account`,disabled:e,intent:`danger`,onClick:n,type:`button`,uiSize:`sm`,children:[(0,Z.jsx)(M,{"aria-hidden":!0,className:`size-tinyrack-lg`}),a(`profile.deleteAccount.button`)]})]})})]}):null}function Q({icon:e,active:t,title:n,status:r,note:a,actions:o}){let s;return s=(0,X.isValidElement)(e)?e:(0,Z.jsx)(e,{"aria-hidden":!0,className:`size-tinyrack-lg ${t?`text-tinyrack-success`:`text-tinyrack-text-muted`}`}),(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg p-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-tinyrack-md`,children:[(0,Z.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-tinyrack-md ${t?`bg-tinyrack-success-surface`:`bg-tinyrack-surface-muted`}`,children:s}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(i,{as:`div`,variant:`bodySm`,weight:`medium`,children:n}),(0,Z.jsx)(i,{as:`div`,color:`muted`,variant:`caption`,children:r}),a]})]}),o&&(0,Z.jsx)(`div`,{className:`flex shrink-0 flex-wrap justify-end gap-tinyrack-xs`,children:o})]})}function ge({providers:e,unlinkingProvider:t,getAuthorizeUrl:n,onUnlinkRequest:i}){let{t:a}=r();return e.length===0?null:(0,Z.jsxs)(F.Root,{variant:`outlined`,children:[(0,Z.jsxs)(F.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(F.Title,{children:a(`profile.linkedAccounts.title`)}),(0,Z.jsx)(F.Description,{children:a(`profile.linkedAccounts.description`)})]}),(0,Z.jsx)(F.Content,{className:`divide-y divide-tinyrack-border p-0`,children:e.map(e=>(0,Z.jsx)(Q,{actions:e.linked?(0,Z.jsx)(s,{appearance:`ghost`,intent:`danger`,loading:t===e.id,loadingLabel:a(`profile.linkedAccounts.unlinking`),onClick:()=>i(e),type:`button`,uiSize:`sm`,children:t===e.id?void 0:a(`profile.linkedAccounts.unlink`)}):(0,Z.jsx)(z,{appearance:`outline`,intent:`neutral`,render:(0,Z.jsx)(`a`,{href:n(e.id,`link`,`/profile`)}),uiSize:`sm`,children:a(`profile.linkedAccounts.link`)}),active:e.linked,icon:(0,Z.jsx)(A,{className:`size-tinyrack-lg`,iconUrl:e.icon_url,providerId:e.id}),status:e.linked?a(`profile.linkedAccounts.connected`):a(`profile.linkedAccounts.notConnected`),title:e.display_name},e.id))})]})}function _e({passkeyCount:e,onOpenModal:t}){let{t:n}=r(),i=e>0;return(0,Z.jsx)(Q,{actions:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:()=>t(i?`manage`:`setup`),type:`button`,uiSize:`sm`,children:n(i?`profile.passkey.manage`:`profile.passkey.add`)}),active:i,icon:O,status:i?n(`profile.passkey.status.enabled`,{count:e}):n(`profile.passkey.status.disabled`),title:n(`profile.passkey.title`)})}function ve({hasPassword:e,hasLinkedOAuth:t,isConfigManaged:n,hasSecondFactorOnly:a,onOpenModal:o}){let{t:c}=r();return(0,Z.jsx)(Q,{actions:n?void 0:e?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-change`,intent:`primary`,onClick:()=>o(`change`),type:`button`,uiSize:`sm`,children:c(`profile.password.change`)}),t?(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-remove`,intent:`danger`,onClick:()=>o(`remove`),type:`button`,uiSize:`sm`,children:c(`profile.password.remove`)}):null,!t&&a&&(0,Z.jsxs)(v.Root,{children:[(0,Z.jsx)(v.Trigger,{render:(0,Z.jsx)(s,{appearance:`ghost`,disabled:!0,type:`button`,uiSize:`sm`,children:c(`profile.password.remove`)})}),(0,Z.jsx)(v.Portal,{children:(0,Z.jsx)(v.Positioner,{children:(0,Z.jsx)(v.Popup,{className:`max-w-tinyrack-measure-lg rounded-tinyrack-md border border-tinyrack-border bg-tinyrack-surface p-tinyrack-md text-tinyrack-text text-tinyrack-xs shadow-tinyrack-overlay`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-tinyrack-sm`,children:[(0,Z.jsx)(S,{"aria-hidden":!0,className:`size-tinyrack-lg shrink-0 text-tinyrack-warning`}),(0,Z.jsx)(`div`,{children:c(`profile.password.removeDisabledReason`)})]})})})})]})]}):(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-password-set`,intent:`primary`,onClick:()=>o(`set`),type:`button`,uiSize:`sm`,children:c(`profile.password.set`)}),active:e,icon:k,note:n?(0,Z.jsxs)(i,{as:`div`,className:`flex items-center gap-tinyrack-xs`,color:`muted`,variant:`caption`,children:[(0,Z.jsx)(pe,{"aria-hidden":!0,className:`size-tinyrack-md shrink-0`}),(0,Z.jsx)(`span`,{children:c(`profile.password.configManaged`)})]}):void 0,status:c(e?`profile.password.status.set`:`profile.password.status.notSet`),title:c(`profile.password.title`)})}function ye({totpEnabled:e,recoveryCodesMissing:t,onOpenModal:n}){let{t:i}=r();return(0,Z.jsx)(Q,{actions:e?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-regenerate`,intent:`primary`,onClick:()=>n(`regenerate`),type:`button`,uiSize:`sm`,children:i(`profile.totp.regenerate`)}),(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-disable`,intent:`danger`,onClick:()=>n(`disable`),type:`button`,uiSize:`sm`,children:i(`profile.totp.disable`)})]}):(0,Z.jsx)(s,{appearance:`ghost`,"data-testid":`profile-totp-enable`,intent:`primary`,onClick:()=>n(`setup`),type:`button`,uiSize:`sm`,children:i(`profile.totp.enable`)}),active:e,icon:j,status:i(e?t?`profile.totp.status.recoveryCodesMissing`:`profile.totp.status.enabled`:`profile.totp.status.disabled`),title:i(`profile.totp.title`)})}var be={error:I,warning:N,info:S};function $({variant:e,children:t}){return(0,Z.jsx)(B,{"data-testid":`alert-banner-${e}`,icon:be[e],type:e,children:t})}function xe({isOpen:e,onClose:t,providerName:n,isPending:i,onConfirm:a}){let{t:o}=r(),[c,l]=(0,X.useState)(null),u=()=>{i||(l(null),t())};return(0,Z.jsx)(U,{description:o(`profile.linkedAccounts.unlinkModal.description`,{provider:n}),icon:de,isOpen:e,onClose:u,preventClose:i,title:o(`profile.linkedAccounts.unlinkModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,children:[(0,Z.jsx)($,{variant:`warning`,children:o(`profile.linkedAccounts.unlinkModal.warning`,{provider:n})}),c&&(0,Z.jsx)($,{variant:`error`,children:c}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`unlink-oauth-cancel`,disabled:i,intent:`neutral`,onClick:u,type:`button`,uiSize:`sm`,children:o(`profile.linkedAccounts.unlinkModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`unlink-oauth-unlink`,disabled:i,intent:`danger`,loading:i,loadingLabel:o(`profile.linkedAccounts.unlinking`),onClick:async()=>{l(null);try{await a(),u()}catch{l(o(`profile.linkedAccounts.unlinkError`))}},type:`button`,uiSize:`sm`,children:o(`profile.linkedAccounts.unlink`)})]})]})})}function Se({label:e,value:t}){return(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-tinyrack-lg px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(i,{className:`shrink-0`,color:`muted`,variant:`caption`,children:e}),(0,Z.jsx)(i,{truncate:!0,variant:`bodySm`,weight:`medium`,children:t})]})}function Ce({user:e}){let{t}=r();return(0,Z.jsxs)(F.Root,{variant:`outlined`,children:[(0,Z.jsxs)(F.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(F.Title,{children:t(`profile.account.title`)}),(0,Z.jsx)(F.Description,{children:t(`profile.account.description`)})]}),(0,Z.jsxs)(F.Content,{className:`divide-y divide-tinyrack-border p-0`,children:[(0,Z.jsx)(Se,{label:t(`profile.id.label`),value:e.sub}),(0,Z.jsx)(Se,{label:t(`profile.email.label`),value:e.email})]})]})}function we({children:e,headerActions:t}){return(0,Z.jsxs)(`div`,{className:`flex min-h-dvh flex-col bg-tinyrack-surface`,children:[(0,Z.jsx)(_,{}),(0,Z.jsx)(y,{actions:t,brand:!0}),(0,Z.jsx)(`main`,{className:`flex flex-1 justify-center px-tinyrack-lg py-tinyrack-xl`,children:(0,Z.jsx)(`div`,{className:`auth-enter flex w-full max-w-tinyrack-overlay-md flex-col gap-tinyrack-xl`,children:e})})]})}var Te=h({mutationFn:async e=>d(await p.api.user.password.$post({json:e}))}),Ee=h({mutationFn:async e=>d(await p.api.user.password.$put({json:e}))}),De=h({mutationFn:async e=>d(await p.api.user.password.$delete({json:e}))});function Oe({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),{data:a}=b(m),c=a.auth.password.policy,l=J({resolver:Y((0,X.useMemo)(()=>P.object({currentPassword:P.string().min(1,n(`validation.password.required`)),newPassword:P.string().min(c.min_length,n(`validation.password.min`,{count:c.min_length})).max(c.max_length,n(`validation.password.max`,{count:c.max_length})),confirmPassword:P.string()}).refine(e=>e.newPassword===e.confirmPassword,{message:n(`validation.confirmPassword.mismatch`),path:[`confirmPassword`]}),[c.max_length,c.min_length,n])),defaultValues:{currentPassword:``,newPassword:``,confirmPassword:``}}),d=g({...Ee,onSuccess:()=>{i.invalidateQueries({queryKey:L.queryKey}),f()}}),f=()=>{l.reset(),t()},p=l.handleSubmit(async e=>{try{await d.mutateAsync({current_password:e.currentPassword,new_password:e.newPassword})}catch(e){e instanceof o&&e.code===`INVALID_CURRENT_PASSWORD`?l.setError(`currentPassword`,{message:n(`profile.password.changeModal.invalidCurrent`)}):l.setError(`root`,{message:n(`profile.password.changeModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.changeModal.description`),icon:k,isOpen:e,onClose:f,title:n(`profile.password.changeModal.title`),children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:p,children:[(0,Z.jsx)(D,{error:l.formState.errors.currentPassword,errorTestId:`change-password-error-currentPassword`,id:`current-password`,label:n(`profile.password.changeModal.currentPassword`),placeholder:n(`profile.password.changeModal.currentPasswordPlaceholder`),...l.register(`currentPassword`),type:`password`}),(0,Z.jsx)(D,{error:l.formState.errors.newPassword,errorTestId:`change-password-error-newPassword`,id:`new-password-change`,label:n(`profile.password.changeModal.newPassword`),placeholder:n(`profile.password.changeModal.newPasswordPlaceholder`),...l.register(`newPassword`),type:`password`}),(0,Z.jsx)(D,{error:l.formState.errors.confirmPassword,errorTestId:`change-password-error-confirmPassword`,id:`confirm-password-change`,label:n(`profile.password.changeModal.confirmPassword`),placeholder:n(`profile.password.changeModal.confirmPasswordPlaceholder`),...l.register(`confirmPassword`),type:`password`}),l.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:l.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`change-password-cancel`,disabled:d.isPending,intent:`neutral`,onClick:f,type:`button`,uiSize:`sm`,children:n(`profile.password.changeModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`change-password-submit`,disabled:d.isPending,intent:`primary`,loading:d.isPending,loadingLabel:n(`profile.password.changeModal.submitting`),type:`submit`,uiSize:`sm`,children:d.isPending?void 0:n(`profile.password.changeModal.submit`)})]})]})})}var ke=h({mutationFn:async()=>d(await p.api.user.$delete())});function Ae({isOpen:e,onClose:t,retentionDays:n}){let{t:i}=r(),a=l(),o=u(),c=J({resolver:Y((0,X.useMemo)(()=>P.object({confirmation:P.string().refine(e=>e.toLowerCase()===i(`profile.deleteAccount.modal.confirmPlaceholder`).toLowerCase(),{message:i(`validation.confirmText.mismatch`)})}),[i])),defaultValues:{confirmation:``}}),d=g({...ke,onSuccess:async()=>{o.setQueryData(L.queryKey,{user:null}),await V(),a.navigate({to:`/login`})}}),f=()=>{d.isPending||(c.reset(),t())},p=c.handleSubmit(async()=>{try{await d.mutateAsync()}catch{c.setError(`root`,{message:i(`profile.deleteAccount.error`)})}});return(0,Z.jsx)(U,{icon:M,isOpen:e,onClose:f,preventClose:d.isPending,title:i(`profile.deleteAccount.modal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:p,children:[(0,Z.jsx)($,{variant:`error`,children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-tinyrack-xs`,children:[(0,Z.jsx)(`p`,{children:i(`profile.deleteAccount.modal.description`,{days:n})}),(0,Z.jsx)(`p`,{className:`text-tinyrack-xs opacity-tinyrack-hover`,children:i(`profile.deleteAccount.modal.warning`)})]})}),(0,Z.jsx)(D,{autoComplete:`off`,error:c.formState.errors.confirmation,errorTestId:`delete-account-error`,id:`delete-confirmation`,label:i(`profile.deleteAccount.modal.confirmLabel`),placeholder:i(`profile.deleteAccount.modal.confirmPlaceholder`),...c.register(`confirmation`),type:`text`}),c.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:c.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`delete-account-cancel`,disabled:d.isPending,intent:`neutral`,onClick:f,type:`button`,uiSize:`sm`,children:i(`profile.deleteAccount.modal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`delete-account-submit`,disabled:d.isPending,intent:`danger`,loading:d.isPending,loadingLabel:i(`profile.deleteAccount.modal.confirming`),type:`submit`,uiSize:`sm`,children:d.isPending?void 0:i(`profile.deleteAccount.modal.confirm`)})]})]})})}function je({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),a=J({resolver:Y((0,X.useMemo)(()=>P.object({code:P.string().length(6,n(`validation.totp.length`)).regex(/^\d{6}$/,n(`validation.totp.digits`))}),[n])),defaultValues:{code:``}}),c=g({...ce,onSuccess:()=>{i.invalidateQueries({queryKey:L.queryKey}),l()}}),l=()=>{a.reset(),t()},d=a.handleSubmit(async e=>{try{await c.mutateAsync({code:e.code})}catch(e){if(e instanceof o&&e.code===`CANNOT_REMOVE_LAST_SECOND_FACTOR`){a.setError(`code`,{message:n(`profile.totp.disableModal.cannotRemoveLastSecondFactor`)});return}a.setError(`code`,{message:n(`profile.totp.disableModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.totp.disableModal.description`),icon:j,isOpen:e,onClose:l,title:n(`profile.totp.disableModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:d,children:[(0,Z.jsx)($,{variant:`warning`,children:n(`profile.totp.disableModal.warning`)}),(0,Z.jsx)(D,{autoComplete:`one-time-code`,error:a.formState.errors.code,errorTestId:`disable-totp-error`,id:`disable-totp-code`,inputMode:`numeric`,label:n(`profile.totp.disableModal.codeLabel`),maxLength:6,pattern:`[0-9]*`,placeholder:`000000`,...a.register(`code`),type:`text`}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`disable-totp-cancel`,disabled:c.isPending,intent:`neutral`,onClick:l,type:`button`,uiSize:`sm`,children:n(`profile.totp.disableModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`disable-totp-submit`,disabled:c.isPending,intent:`danger`,loading:c.isPending,loadingLabel:n(`profile.totp.disableModal.disabling`),type:`submit`,uiSize:`sm`,children:c.isPending?void 0:n(`profile.totp.disableModal.disable`)})]})]})})}function Me({isOpen:e,onClose:n,onAddNew:i}){let{t:a}=r(),c=u(),[l,d]=(0,X.useState)(null),[p,m]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null),{data:b,isLoading:S}=x({...q,enabled:e}),C=g({...K,onSuccess:()=>{c.invalidateQueries({queryKey:f.passkeys()}),c.invalidateQueries({queryKey:L.queryKey})},onSettled:()=>{m(null)}}),w=(0,X.useCallback)(()=>{d(null),m(null),_(null),y(null),n()},[n]),T=e=>{_(e.id),y(null)},E=()=>{_(null),y(null)},D=async e=>{m(e.id),_(null);try{await C.mutateAsync({id:e.id})}catch(e){if(e instanceof o&&e.code===`CANNOT_REMOVE_LAST_SECOND_FACTOR`){y(a(`profile.passkey.manageModal.cannotRemoveLastSecondFactor`));return}y(a(`profile.passkey.manageModal.deleteError`))}},k=e=>new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}),A=b?.passkeys||[];return(0,Z.jsxs)(U,{icon:O,isOpen:e,onClose:w,size:`lg`,title:a(`profile.passkey.manageModal.title`),children:[(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-sm`,children:[v&&(0,Z.jsx)($,{variant:`error`,children:v}),S&&(0,Z.jsx)(`div`,{className:`flex justify-center py-tinyrack-xl`,children:(0,Z.jsx)(t,{uiSize:`md`})}),!S&&A.length===0&&(0,Z.jsx)(`div`,{className:`py-tinyrack-xl text-center text-tinyrack-sm text-tinyrack-text-muted`,"data-testid":`passkeys-empty`,children:(0,Z.jsx)(`p`,{children:a(`profile.passkey.manageModal.noPasskeys`)})}),!S&&A.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-col gap-tinyrack-sm`,children:A.map(e=>(0,Z.jsx)(Ne,{formatDate:k,isConfirmingDelete:h===e.id,isDeleting:p===e.id,isEditing:l?.id===e.id,onCancelDelete:E,onCancelEdit:()=>d(null),onConfirmDelete:()=>D(e),onEdit:()=>d(e),onRequestDelete:()=>T(e),passkey:e},e.id))})]}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`manage-passkeys-close`,intent:`neutral`,onClick:w,type:`button`,uiSize:`sm`,children:a(`profile.passkey.manageModal.close`)}),(0,Z.jsx)(s,{"data-testid":`manage-passkeys-add-new`,intent:`primary`,onClick:()=>{w(),i()},type:`button`,uiSize:`sm`,children:a(`profile.passkey.manageModal.addNew`)})]})]})}function Ne({passkey:e,isDeleting:t,isEditing:n,isConfirmingDelete:i,onEdit:a,onCancelEdit:o,onRequestDelete:c,onConfirmDelete:l,onCancelDelete:d,formatDate:p}){let{t:m}=r(),h=u(),_=J({resolver:Y((0,X.useMemo)(()=>P.object({name:P.string().min(1,m(`validation.passkey.name.required`)).max(100,m(`validation.passkey.name.max`))}),[m])),defaultValues:{name:e.name||``}}),v=g({...W,onSuccess:()=>{h.invalidateQueries({queryKey:f.passkeys()}),o()}}),y=_.handleSubmit(async t=>{try{await v.mutateAsync({id:e.id,name:t.name})}catch{_.setError(`name`,{message:m(`profile.passkey.manageModal.renameError`)})}});return n?(0,Z.jsxs)(`form`,{className:`flex flex-col gap-tinyrack-xs rounded-tinyrack-md bg-tinyrack-surface-muted p-tinyrack-sm`,onSubmit:y,children:[(0,Z.jsx)(D,{"data-testid":`passkey-rename-input`,error:_.formState.errors.name,errorTestId:`passkey-rename-error`,hideLabel:!0,label:m(`profile.passkey.manageModal.nameLabel`),placeholder:m(`profile.passkey.manageModal.namePlaceholder`),..._.register(`name`),type:`text`}),(0,Z.jsxs)(`div`,{className:`flex justify-end gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,disabled:v.isPending,onClick:()=>{_.reset(),o()},type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.cancelEdit`)}),(0,Z.jsx)(s,{disabled:v.isPending,intent:`primary`,type:`submit`,uiSize:`sm`,children:v.isPending?m(`profile.passkey.manageModal.saving`):m(`profile.passkey.manageModal.save`)})]})]}):i?(0,Z.jsxs)(`div`,{className:`flex items-center justify-between rounded-tinyrack-md border border-tinyrack-danger-border bg-tinyrack-danger-surface p-tinyrack-sm text-tinyrack-on-danger`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[(0,Z.jsx)(M,{className:`size-tinyrack-lg`}),(0,Z.jsx)(`span`,{className:`text-tinyrack-xs`,children:m(`profile.passkey.manageModal.deleteConfirmInline`)})]}),(0,Z.jsxs)(`div`,{className:`flex gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,onClick:d,type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.cancelEdit`)}),(0,Z.jsx)(s,{intent:`danger`,onClick:l,type:`button`,uiSize:`sm`,children:m(`profile.passkey.manageModal.delete`)})]})]}):(0,Z.jsxs)(`div`,{className:`flex items-center justify-between rounded-tinyrack-md bg-tinyrack-surface-muted p-tinyrack-sm`,"data-testid":`passkey-item`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-sm`,children:[e.device_type===`multiDevice`?(0,Z.jsx)(ue,{className:`size-tinyrack-lg text-tinyrack-primary`}):(0,Z.jsx)(me,{className:`size-tinyrack-lg text-tinyrack-primary`}),(0,Z.jsxs)(`div`,{children:[(0,Z.jsx)(`div`,{className:`font-tinyrack-medium text-tinyrack-xs`,children:e.name||m(`profile.passkey.manageModal.unnamedPasskey`)}),(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-xs text-tinyrack-text-muted text-tinyrack-xs`,children:[(0,Z.jsx)(`span`,{children:m(`profile.passkey.manageModal.createdAt`,{date:p(e.created_at)})}),e.backed_up&&(0,Z.jsx)(ae,{uiSize:`md`,variant:`success`,children:m(`profile.passkey.manageModal.backedUp`)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex gap-tinyrack-xs`,children:[(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":m(`profile.passkey.manageModal.rename`),onClick:a,type:`button`,uiSize:`sm`,children:(0,Z.jsx)(fe,{className:`size-tinyrack-lg`})}),(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":m(`profile.passkey.manageModal.delete`),disabled:t,intent:`danger`,loading:t,onClick:c,type:`button`,uiSize:`sm`,children:t?void 0:(0,Z.jsx)(M,{className:`size-tinyrack-lg`})})]})]})}function Pe({isOpen:e,onClose:t}){let{t:n}=r(),i=l(),a=u(),{data:s}=b(m),[c,d]=(0,X.useState)(`verify`),[f,p]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),v=g({...le,onSuccess:async e=>{p(e),d(`recovery`),await a.invalidateQueries({queryKey:L.queryKey})}}),y=(0,X.useCallback)(()=>{d(`verify`),p(null),_(null),v.reset()},[v]),x=(0,X.useCallback)(()=>{y(),t()},[t,y]),S=(0,X.useCallback)(async e=>{_(null);try{await v.mutateAsync({code:e})}catch(e){if(e instanceof o){if(e.code===`INVALID_TOTP_CODE`)throw e;if(e.code===`UNAUTHORIZED`){a.setQueryData(L.queryKey,{user:null}),await V(),i.navigate({to:`/login`});return}if(e.code===`TOTP_NOT_ENABLED`||e.code===`VALIDATION_ERROR`){await a.invalidateQueries({queryKey:L.queryKey}),x();return}}_(n(`profile.totp.regenerateModal.unexpectedError`))}},[x,v,a,i,n]);return s.auth.password.totp.enabled?(0,Z.jsx)(U,{description:n(c===`verify`?`profile.totp.regenerateModal.description`:`profile.totp.regenerateModal.recoveryDescription`),icon:j,isOpen:e,onClose:x,preventClose:c===`recovery`,size:`sm`,title:n(c===`verify`?`profile.totp.regenerateModal.title`:`profile.totp.regenerateModal.recoveryTitle`),children:c===`verify`?(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg`,children:[h&&(0,Z.jsx)(`div`,{className:`mb-tinyrack-md`,children:(0,Z.jsx)($,{variant:`error`,children:h})}),(0,Z.jsx)(T,{invalidMessage:n(`profile.totp.regenerateModal.error`),isPending:v.isPending,onSubmit:S,pendingText:n(`profile.totp.regenerateModal.submitting`),submitLabel:n(`profile.totp.regenerateModal.submit`)})]}):(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(C,{onConfirm:x,recoveryCodes:f?.recovery_codes??[]})})}):null}function Fe({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),a=J({resolver:Y((0,X.useMemo)(()=>P.object({currentPassword:P.string().min(1,n(`validation.password.required`))}),[n])),defaultValues:{currentPassword:``}}),c=g({...De,onSuccess:()=>{i.invalidateQueries({queryKey:L.queryKey}),l()}}),l=()=>{a.reset(),t()},d=a.handleSubmit(async e=>{try{await c.mutateAsync({current_password:e.currentPassword})}catch(e){if(e instanceof o){if(e.code===`INVALID_CURRENT_PASSWORD`){a.setError(`currentPassword`,{message:n(`profile.password.removeModal.invalidCurrent`)});return}if(e.code===`CANNOT_REMOVE_LAST_AUTH_METHOD`){a.setError(`root`,{message:n(`profile.password.removeModal.noOAuth`)});return}if(e.code===`CANNOT_REMOVE_PASSWORD_WITH_SECOND_FACTOR_ONLY`){a.setError(`root`,{message:n(`profile.password.removeModal.noOAuthWith2FA`)});return}}a.setError(`root`,{message:n(`profile.password.removeModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.removeModal.description`),icon:k,isOpen:e,onClose:l,title:n(`profile.password.removeModal.title`),variant:`destructive`,children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:d,children:[(0,Z.jsx)(D,{error:a.formState.errors.currentPassword,errorTestId:`remove-password-error`,id:`current-password-remove`,label:n(`profile.password.removeModal.currentPassword`),placeholder:n(`profile.password.removeModal.currentPasswordPlaceholder`),...a.register(`currentPassword`),type:`password`}),a.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:a.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`remove-password-cancel`,disabled:c.isPending,intent:`neutral`,onClick:l,type:`button`,uiSize:`sm`,children:n(`profile.password.removeModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`remove-password-submit`,disabled:c.isPending,intent:`danger`,loading:c.isPending,loadingLabel:n(`profile.password.removeModal.submitting`),type:`submit`,uiSize:`sm`,children:c.isPending?void 0:n(`profile.password.removeModal.submit`)})]})]})})}function Ie({isOpen:e,onClose:t}){let{t:n}=r(),i=u(),{data:a}=b(m),o=a.auth.password.policy,c=J({resolver:Y((0,X.useMemo)(()=>P.object({password:P.string().min(o.min_length,n(`validation.password.min`,{count:o.min_length})).max(o.max_length,n(`validation.password.max`,{count:o.max_length})),confirmPassword:P.string()}).refine(e=>e.password===e.confirmPassword,{message:n(`validation.confirmPassword.mismatch`),path:[`confirmPassword`]}),[o.max_length,o.min_length,n])),defaultValues:{password:``,confirmPassword:``}}),l=g({...Te,onSuccess:()=>{i.invalidateQueries({queryKey:L.queryKey}),d()}}),d=()=>{c.reset(),t()},f=c.handleSubmit(async e=>{try{await l.mutateAsync({password:e.password})}catch{c.setError(`root`,{message:n(`profile.password.setModal.error`)})}});return(0,Z.jsx)(U,{description:n(`profile.password.setModal.description`),icon:k,isOpen:e,onClose:d,title:n(`profile.password.setModal.title`),children:(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:f,children:[(0,Z.jsx)(D,{error:c.formState.errors.password,errorTestId:`set-password-error-password`,id:`new-password`,label:n(`profile.password.setModal.newPassword`),placeholder:n(`profile.password.setModal.newPasswordPlaceholder`),...c.register(`password`),type:`password`}),(0,Z.jsx)(D,{error:c.formState.errors.confirmPassword,errorTestId:`set-password-error-confirmPassword`,id:`confirm-password`,label:n(`profile.password.setModal.confirmPassword`),placeholder:n(`profile.password.setModal.confirmPasswordPlaceholder`),...c.register(`confirmPassword`),type:`password`}),c.formState.errors.root&&(0,Z.jsx)($,{variant:`error`,children:c.formState.errors.root.message}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`set-password-cancel`,disabled:l.isPending,intent:`neutral`,onClick:d,type:`button`,uiSize:`sm`,children:n(`profile.password.setModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`set-password-submit`,disabled:l.isPending,intent:`primary`,loading:l.isPending,loadingLabel:n(`profile.password.setModal.submitting`),type:`submit`,uiSize:`sm`,children:l.isPending?void 0:n(`profile.password.setModal.submit`)})]})]})})}function Le({isOpen:e,onClose:n,isRequired:i=!1,canSwitchToTotp:a=!1,onSwitchToTotp:o}){let{t:c}=r(),l=u(),[d,p]=(0,X.useState)(`name`),[m,h]=(0,X.useState)(null),_=J({resolver:Y((0,X.useMemo)(()=>P.object({name:P.string().max(100,c(`validation.passkey.name.max`)).optional().transform(e=>e?.trim()||void 0)}),[c])),defaultValues:{name:``}}),v=g({...G,onSuccess:()=>{l.invalidateQueries({queryKey:f.passkeys()}),l.invalidateQueries({queryKey:L.queryKey}),y()},onError:e=>{p(`name`),e.name===`NotAllowedError`?h(c(`profile.passkey.setupModal.cancelled`)):h(c(`profile.passkey.setupModal.error`))}}),y=(0,X.useCallback)(()=>{_.reset(),p(`name`),h(null),n()},[_,n]),b=_.handleSubmit(async e=>{p(`register`),h(null);try{await v.mutateAsync({name:e.name})}catch{}}),x=v.isPending;return(0,Z.jsxs)(U,{description:i?c(`profile.passkey.setupModal.requiredDescription`):void 0,icon:O,isOpen:e,onClose:y,preventClose:i,size:`sm`,title:c(`profile.passkey.setupModal.title`),children:[d===`name`&&(0,Z.jsxs)(`form`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,onSubmit:b,children:[(0,Z.jsx)(`p`,{className:`text-tinyrack-text-muted text-tinyrack-xs`,children:c(`profile.passkey.setupModal.description`)}),m&&(0,Z.jsx)($,{variant:`error`,children:m}),(0,Z.jsx)(D,{error:_.formState.errors.name,errorTestId:`setup-passkey-error`,hint:c(`profile.passkey.setupModal.nameHint`),id:`passkey-name`,label:c(`profile.passkey.setupModal.nameLabel`),placeholder:c(`profile.passkey.setupModal.namePlaceholder`),..._.register(`name`),type:`text`}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`setup-passkey-cancel`,intent:`neutral`,onClick:y,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.cancel`)}),(0,Z.jsx)(s,{"data-testid":`setup-passkey-continue`,intent:`primary`,type:`submit`,uiSize:`sm`,children:c(`profile.passkey.setupModal.continue`)})]}),a&&o&&(0,Z.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-xs`,children:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:o,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.switchToTotp`)})})]}),d===`register`&&(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-tinyrack-md py-tinyrack-xl`,"data-testid":`setup-passkey-loading`,children:[(0,Z.jsx)(t,{uiSize:`md`}),(0,Z.jsx)(`p`,{className:`text-center text-tinyrack-text-muted text-tinyrack-xs`,children:c(`profile.passkey.setupModal.waitingForDevice`)})]}),(0,Z.jsx)(H,{children:(0,Z.jsx)(s,{appearance:`outline`,"data-testid":`setup-passkey-cancel`,disabled:x,intent:`neutral`,onClick:y,type:`button`,uiSize:`sm`,children:c(`profile.passkey.setupModal.cancel`)})})]})]})}function Re({isOpen:e,onClose:n,isRequired:i=!1,canSwitchToPasskey:a=!1,onSwitchToPasskey:o}){let{t:c}=r(),{step:l,setupData:u,recoveryCodes:d,isSetupPending:f,isVerifyPending:p,isConfirmPending:m,startSetup:h,verify:g,goToVerify:_,goToQr:v,confirmRecoveryCodes:y,reset:b}=E({autoStart:!1,onConfirmSuccess:()=>{b(),n()}}),x=(0,X.useCallback)(()=>{b(),n()},[n,b]),S=(0,X.useCallback)(()=>{!u&&!f&&h()},[u,f,h]);e&&!u&&!f&&l!==`error`&&S();let D=(0,X.useCallback)(async e=>{await g(e)},[g]),O=c(l===`recovery`?`setupTotp.recoveryCodes.title`:`profile.totp.setupModal.title`);return(0,Z.jsxs)(U,{description:i?c(`profile.totp.setupModal.requiredDescription`):void 0,icon:j,isOpen:e,onClose:x,preventClose:i||l===`recovery`,size:`sm`,title:O,children:[f&&(0,Z.jsx)(`div`,{className:`flex justify-center py-tinyrack-xl`,"data-testid":`setup-totp-loading`,children:(0,Z.jsx)(t,{uiSize:`md`})}),l===`error`&&(0,Z.jsxs)(`div`,{className:`mt-tinyrack-lg flex flex-col gap-tinyrack-md`,children:[(0,Z.jsx)($,{variant:`error`,children:c(`profile.totp.setupModal.setupError`)}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(s,{appearance:`outline`,intent:`neutral`,onClick:x,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.cancel`)}),(0,Z.jsx)(s,{intent:`primary`,onClick:h,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.retry`)})]})]}),u&&l===`qr`&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(w,{additionalActions:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(H,{children:(0,Z.jsx)(s,{appearance:`outline`,intent:`neutral`,onClick:x,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.cancel`)})}),a&&o&&(0,Z.jsx)(`p`,{className:`mt-tinyrack-sm text-center text-tinyrack-xs`,children:(0,Z.jsx)(s,{appearance:`ghost`,intent:`primary`,onClick:o,type:`button`,uiSize:`sm`,children:c(`profile.totp.setupModal.switchToPasskey`)})})]}),onNext:_,setupData:u})}),u&&l===`verify`&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(T,{isPending:p,onBack:v,onSubmit:D})}),l===`recovery`&&d.length>0&&(0,Z.jsx)(`div`,{className:`mt-tinyrack-lg`,children:(0,Z.jsx)(C,{isLoading:m,onConfirm:y,recoveryCodes:d})})]})}var ze={access_denied:`oauth.error.accessDenied`,temporarily_unavailable:`oauth.error.temporarilyUnavailable`,server_error:`oauth.error.serverError`};function Be(){let{t:e}=r(),t=l(),n=u(),a=ie.useSearch().oauth_error,o=a?e(ze[a]??`oauth.error.failed`):void 0,[c,d]=(0,X.useState)(null),[f,p]=(0,X.useState)(null),[h,_]=(0,X.useState)(null),[v,y]=(0,X.useState)(null),[x,S]=(0,X.useState)(null),[C,w]=(0,X.useState)(!1),{data:T}=b(L),{data:E}=b(R),{data:D}=b(m),O=g({...te,onSuccess:async()=>{n.setQueryData(L.queryKey,{user:null}),await V(),t.navigate({to:`/login`})},onSettled:()=>{n.invalidateQueries({queryKey:L.queryKey})}}),k=g({...re,onSuccess:()=>{n.invalidateQueries({queryKey:R.queryKey})},onSettled:()=>{d(null)}}),A=async()=>{f&&(d(f.id),await k.mutateAsync(f.id))};if(!T.user)return null;let j=T.user,M=E.available_providers,N=M.some(e=>e.linked),P=j.managed_by===`config`,z=D.auth.password,ae=D.auth.passkey,H=z.totp.enabled,U=ae.enabled,W=D.account_deletion.enabled,G=D.account_deletion.retention,K=(()=>{let e=G.match(/^(\d+)([dmy])$/);if(!e)return 30;let t=parseInt(e[1],10);switch(e[2]){case`d`:return t;case`m`:return t*30;case`y`:return t*365;default:return 30}})(),q=!P&&H,J=!P&&U,Y=M.length>0;return(0,Z.jsxs)(we,{headerActions:(0,Z.jsx)(s,{appearance:`ghost`,"aria-label":e(`profile.logout`),"data-testid":`profile-logout`,disabled:O.isPending,loading:O.isPending,onClick:()=>O.mutate(),type:`button`,uiSize:`sm`,children:O.isPending?void 0:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(ee,{"aria-hidden":!0,className:`size-tinyrack-lg`}),(0,Z.jsx)(`span`,{className:`hidden sm:inline`,children:e(`profile.logout`)})]})}),children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-tinyrack-lg`,children:[(0,Z.jsx)(se,{email:j.email,size:`lg`}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-tinyrack-3xs`,children:[(0,Z.jsx)(oe,{title:e(`profile.title`)}),(0,Z.jsx)(i,{as:`p`,color:`muted`,"data-testid":`profile-user-email`,truncate:!0,variant:`bodySm`,children:j.email})]})]}),o&&(0,Z.jsx)(B,{icon:I,type:`error`,children:o}),j&&(0,Z.jsx)(Ce,{user:j}),(0,Z.jsxs)(F.Root,{variant:`outlined`,children:[(0,Z.jsxs)(F.Header,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,children:[(0,Z.jsx)(F.Title,{children:e(`profile.security.title`)}),(0,Z.jsx)(F.Description,{children:e(`profile.security.description`)})]}),q&&j.totp_recovery_codes_missing&&(0,Z.jsx)(`div`,{className:`border-tinyrack-border border-b-tinyrack-default px-tinyrack-lg py-tinyrack-md`,"data-testid":`profile-totp-recovery-warning`,children:(0,Z.jsx)(B,{icon:I,type:`warning`,children:e(`profile.totp.recoveryCodesMissing`)})}),(0,Z.jsxs)(F.Content,{className:`divide-y divide-tinyrack-border p-0`,children:[(0,Z.jsx)(ve,{hasLinkedOAuth:N,hasPassword:j.has_password,hasSecondFactorOnly:j.has_password&&!N&&(j.totp_registered||j.passkey_count>0),isConfigManaged:P,onOpenModal:_}),q&&(0,Z.jsx)(ye,{onOpenModal:y,recoveryCodesMissing:j.totp_recovery_codes_missing,totpEnabled:j.totp_registered}),J&&(0,Z.jsx)(_e,{onOpenModal:S,passkeyCount:j.passkey_count})]})]}),Y&&(0,Z.jsx)(ge,{getAuthorizeUrl:ne,onUnlinkRequest:e=>p({id:e.id,name:e.display_name}),providers:M,unlinkingProvider:c}),(0,Z.jsx)(he,{isConfigManaged:P,isDeletionEnabled:W,onDeleteClick:()=>w(!0)}),(0,Z.jsx)(Ie,{isOpen:h===`set`,onClose:()=>_(null)}),(0,Z.jsx)(Oe,{isOpen:h===`change`,onClose:()=>_(null)}),(0,Z.jsx)(Fe,{isOpen:h===`remove`,onClose:()=>_(null)}),(0,Z.jsx)(Re,{isOpen:v===`setup`,onClose:()=>y(null)}),(0,Z.jsx)(je,{isOpen:v===`disable`,onClose:()=>y(null)}),(0,Z.jsx)(Pe,{isOpen:v===`regenerate`,onClose:()=>y(null)}),(0,Z.jsx)(Le,{isOpen:x===`setup`,onClose:()=>S(null)}),(0,Z.jsx)(Me,{isOpen:x===`manage`,onAddNew:()=>S(`setup`),onClose:()=>S(null)}),(0,Z.jsx)(xe,{isOpen:f!==null,isPending:k.isPending,onClose:()=>p(null),onConfirm:A,providerName:f?.name??``}),(0,Z.jsx)(Ae,{isOpen:C,onClose:()=>w(!1),retentionDays:K})]})}export{Be as component};
2
- //# sourceMappingURL=profile-BcjsVYOx.js.map