@atproto/oauth-provider-ui 0.0.2

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 (208) hide show
  1. package/.linguirc +57 -0
  2. package/CHANGELOG.md +7 -0
  3. package/CONTRIBUTING.md +6 -0
  4. package/LICENSE.txt +7 -0
  5. package/dist/assets/COdVzed-.css +3 -0
  6. package/dist/assets/COdVzed-.js +100 -0
  7. package/dist/assets/COdVzed-.js.map +1 -0
  8. package/dist/assets/Cqnfnbvc.js +6 -0
  9. package/dist/assets/Cqnfnbvc.js.map +1 -0
  10. package/dist/assets/bundle-manifest.json +630 -0
  11. package/dist/assets/error-view-Bu4y7Nd8.js +208 -0
  12. package/dist/assets/error-view-Bu4y7Nd8.js.map +1 -0
  13. package/dist/assets/index-DXlCRM6V.js +36 -0
  14. package/dist/assets/index-DXlCRM6V.js.map +1 -0
  15. package/dist/assets/messages-2GoTm2qL.js +4 -0
  16. package/dist/assets/messages-2GoTm2qL.js.map +1 -0
  17. package/dist/assets/messages-6Cn2Jbhw.js +4 -0
  18. package/dist/assets/messages-6Cn2Jbhw.js.map +1 -0
  19. package/dist/assets/messages-75hFgOK2.js +4 -0
  20. package/dist/assets/messages-75hFgOK2.js.map +1 -0
  21. package/dist/assets/messages-B3OK4k0O.js +4 -0
  22. package/dist/assets/messages-B3OK4k0O.js.map +1 -0
  23. package/dist/assets/messages-BNXlPzKV.js +4 -0
  24. package/dist/assets/messages-BNXlPzKV.js.map +1 -0
  25. package/dist/assets/messages-BUygB8mD.js +4 -0
  26. package/dist/assets/messages-BUygB8mD.js.map +1 -0
  27. package/dist/assets/messages-BVPPcwNr.js +4 -0
  28. package/dist/assets/messages-BVPPcwNr.js.map +1 -0
  29. package/dist/assets/messages-BbbWUQS8.js +4 -0
  30. package/dist/assets/messages-BbbWUQS8.js.map +1 -0
  31. package/dist/assets/messages-BibKCYyW.js +4 -0
  32. package/dist/assets/messages-BibKCYyW.js.map +1 -0
  33. package/dist/assets/messages-BlPrr9_7.js +4 -0
  34. package/dist/assets/messages-BlPrr9_7.js.map +1 -0
  35. package/dist/assets/messages-ByVCw40U.js +4 -0
  36. package/dist/assets/messages-ByVCw40U.js.map +1 -0
  37. package/dist/assets/messages-C5DU1neP.js +4 -0
  38. package/dist/assets/messages-C5DU1neP.js.map +1 -0
  39. package/dist/assets/messages-C6IgUtbX.js +4 -0
  40. package/dist/assets/messages-C6IgUtbX.js.map +1 -0
  41. package/dist/assets/messages-C92Zzt2o.js +4 -0
  42. package/dist/assets/messages-C92Zzt2o.js.map +1 -0
  43. package/dist/assets/messages-CGZqYT14.js +4 -0
  44. package/dist/assets/messages-CGZqYT14.js.map +1 -0
  45. package/dist/assets/messages-CGlsy4wt.js +4 -0
  46. package/dist/assets/messages-CGlsy4wt.js.map +1 -0
  47. package/dist/assets/messages-CPT1nd0u.js +4 -0
  48. package/dist/assets/messages-CPT1nd0u.js.map +1 -0
  49. package/dist/assets/messages-CTTdXyw_.js +4 -0
  50. package/dist/assets/messages-CTTdXyw_.js.map +1 -0
  51. package/dist/assets/messages-ChK_C_Pj.js +4 -0
  52. package/dist/assets/messages-ChK_C_Pj.js.map +1 -0
  53. package/dist/assets/messages-CjJbk7Uf.js +4 -0
  54. package/dist/assets/messages-CjJbk7Uf.js.map +1 -0
  55. package/dist/assets/messages-CoiLjLYO.js +4 -0
  56. package/dist/assets/messages-CoiLjLYO.js.map +1 -0
  57. package/dist/assets/messages-Cwx6B4Ti.js +4 -0
  58. package/dist/assets/messages-Cwx6B4Ti.js.map +1 -0
  59. package/dist/assets/messages-D0uXAp_H.js +4 -0
  60. package/dist/assets/messages-D0uXAp_H.js.map +1 -0
  61. package/dist/assets/messages-DG0_arU0.js +4 -0
  62. package/dist/assets/messages-DG0_arU0.js.map +1 -0
  63. package/dist/assets/messages-DOXFJh9K.js +4 -0
  64. package/dist/assets/messages-DOXFJh9K.js.map +1 -0
  65. package/dist/assets/messages-DPK7nOoC.js +4 -0
  66. package/dist/assets/messages-DPK7nOoC.js.map +1 -0
  67. package/dist/assets/messages-Duccgtu0.js +4 -0
  68. package/dist/assets/messages-Duccgtu0.js.map +1 -0
  69. package/dist/assets/messages-DxTqgsHq.js +4 -0
  70. package/dist/assets/messages-DxTqgsHq.js.map +1 -0
  71. package/dist/assets/messages-E5_lTg7A.js +4 -0
  72. package/dist/assets/messages-E5_lTg7A.js.map +1 -0
  73. package/dist/assets/messages-UhunAjh1.js +4 -0
  74. package/dist/assets/messages-UhunAjh1.js.map +1 -0
  75. package/dist/assets/messages-Xg_3YLGw.js +4 -0
  76. package/dist/assets/messages-Xg_3YLGw.js.map +1 -0
  77. package/dist/assets/messages-iliBQHY2.js +4 -0
  78. package/dist/assets/messages-iliBQHY2.js.map +1 -0
  79. package/dist/assets/messages-lRprpIl-.js +4 -0
  80. package/dist/assets/messages-lRprpIl-.js.map +1 -0
  81. package/dist/assets/messages-pbPHQbz1.js +4 -0
  82. package/dist/assets/messages-pbPHQbz1.js.map +1 -0
  83. package/dist/assets/messages-q-O7ZQGs.js +4 -0
  84. package/dist/assets/messages-q-O7ZQGs.js.map +1 -0
  85. package/dist/lib/index.d.ts +19 -0
  86. package/dist/lib/index.d.ts.map +1 -0
  87. package/dist/lib/index.js +47 -0
  88. package/dist/lib/index.js.map +1 -0
  89. package/dist/tsconfig.backend.tsbuildinfo +1 -0
  90. package/lib/index.ts +72 -0
  91. package/package.json +73 -0
  92. package/rollup.config.js +102 -0
  93. package/src/authorization-page.html +183 -0
  94. package/src/authorization-page.tsx +55 -0
  95. package/src/backend-data.ts +35 -0
  96. package/src/components/forms/button-toggle-visibility.tsx +43 -0
  97. package/src/components/forms/button.tsx +60 -0
  98. package/src/components/forms/fieldset.tsx +55 -0
  99. package/src/components/forms/form-card-async.tsx +103 -0
  100. package/src/components/forms/form-card.tsx +49 -0
  101. package/src/components/forms/input-checkbox.tsx +78 -0
  102. package/src/components/forms/input-container.tsx +107 -0
  103. package/src/components/forms/input-email-address.tsx +65 -0
  104. package/src/components/forms/input-new-password.tsx +62 -0
  105. package/src/components/forms/input-password.tsx +87 -0
  106. package/src/components/forms/input-text.tsx +82 -0
  107. package/src/components/forms/input-token.tsx +94 -0
  108. package/src/components/forms/wizard-card.tsx +116 -0
  109. package/src/components/layouts/layout-title-page.tsx +77 -0
  110. package/src/components/layouts/layout-welcome.tsx +73 -0
  111. package/src/components/utils/account-identifier.tsx +23 -0
  112. package/src/components/utils/account-image.tsx +33 -0
  113. package/src/components/utils/admonition.tsx +52 -0
  114. package/src/components/utils/client-name.tsx +45 -0
  115. package/src/components/utils/error-card.tsx +93 -0
  116. package/src/components/utils/error-message.tsx +88 -0
  117. package/src/components/utils/help-card.tsx +46 -0
  118. package/src/components/utils/icons.tsx +88 -0
  119. package/src/components/utils/link-anchor.tsx +28 -0
  120. package/src/components/utils/link-title.tsx +26 -0
  121. package/src/components/utils/multi-lang-string.tsx +56 -0
  122. package/src/components/utils/password-strength-label.tsx +37 -0
  123. package/src/components/utils/password-strength-meter.tsx +58 -0
  124. package/src/components/utils/url-viewer.tsx +73 -0
  125. package/src/cookies.ts +11 -0
  126. package/src/error-page.html +125 -0
  127. package/src/error-page.tsx +29 -0
  128. package/src/hooks/use-api.ts +182 -0
  129. package/src/hooks/use-async-action.ts +120 -0
  130. package/src/hooks/use-bound-dispatch.ts +5 -0
  131. package/src/hooks/use-browser-color-scheme.ts +31 -0
  132. package/src/hooks/use-csrf-token.ts +5 -0
  133. package/src/hooks/use-random-string.ts +37 -0
  134. package/src/hooks/use-stepper.ts +87 -0
  135. package/src/index.html +13 -0
  136. package/src/lib/api.ts +234 -0
  137. package/src/lib/backend-data.ts +6 -0
  138. package/src/lib/clsx.ts +6 -0
  139. package/src/lib/json-client.ts +97 -0
  140. package/src/lib/password.ts +98 -0
  141. package/src/lib/ref.ts +17 -0
  142. package/src/lib/util.ts +13 -0
  143. package/src/locales/an/messages.po +487 -0
  144. package/src/locales/ast/messages.po +487 -0
  145. package/src/locales/ca/messages.po +487 -0
  146. package/src/locales/da/messages.po +487 -0
  147. package/src/locales/de/messages.po +487 -0
  148. package/src/locales/el/messages.po +487 -0
  149. package/src/locales/en/messages.po +487 -0
  150. package/src/locales/en-GB/messages.po +487 -0
  151. package/src/locales/es/messages.po +487 -0
  152. package/src/locales/eu/messages.po +487 -0
  153. package/src/locales/fi/messages.po +487 -0
  154. package/src/locales/fr/messages.po +487 -0
  155. package/src/locales/ga/messages.po +487 -0
  156. package/src/locales/gl/messages.po +487 -0
  157. package/src/locales/hi/messages.po +487 -0
  158. package/src/locales/hu/messages.po +487 -0
  159. package/src/locales/ia/messages.po +487 -0
  160. package/src/locales/id/messages.po +487 -0
  161. package/src/locales/it/messages.po +487 -0
  162. package/src/locales/ja/messages.po +487 -0
  163. package/src/locales/km/messages.po +487 -0
  164. package/src/locales/ko/messages.po +487 -0
  165. package/src/locales/load.ts +8 -0
  166. package/src/locales/locale-context.ts +19 -0
  167. package/src/locales/locale-provider.tsx +112 -0
  168. package/src/locales/locale-selector.tsx +58 -0
  169. package/src/locales/locales.ts +168 -0
  170. package/src/locales/ne/messages.po +487 -0
  171. package/src/locales/nl/messages.po +487 -0
  172. package/src/locales/pl/messages.po +487 -0
  173. package/src/locales/pt-BR/messages.po +487 -0
  174. package/src/locales/ro/messages.po +487 -0
  175. package/src/locales/ru/messages.po +487 -0
  176. package/src/locales/sv/messages.po +487 -0
  177. package/src/locales/th/messages.po +487 -0
  178. package/src/locales/tr/messages.po +487 -0
  179. package/src/locales/uk/messages.po +487 -0
  180. package/src/locales/vi/messages.po +487 -0
  181. package/src/locales/zh-CN/messages.po +487 -0
  182. package/src/locales/zh-HK/messages.po +487 -0
  183. package/src/locales/zh-TW/messages.po +487 -0
  184. package/src/styles.css +33 -0
  185. package/src/views/authorize/accept/accept-form.tsx +150 -0
  186. package/src/views/authorize/accept/accept-view.tsx +70 -0
  187. package/src/views/authorize/authorize-view.tsx +183 -0
  188. package/src/views/authorize/reset-password/reset-password-confirm-form.tsx +88 -0
  189. package/src/views/authorize/reset-password/reset-password-request-form.tsx +80 -0
  190. package/src/views/authorize/reset-password/reset-password-view.tsx +127 -0
  191. package/src/views/authorize/sign-in/sign-in-form.tsx +242 -0
  192. package/src/views/authorize/sign-in/sign-in-picker.tsx +116 -0
  193. package/src/views/authorize/sign-in/sign-in-view.tsx +145 -0
  194. package/src/views/authorize/sign-up/sign-up-account-form.tsx +142 -0
  195. package/src/views/authorize/sign-up/sign-up-disclaimer.tsx +51 -0
  196. package/src/views/authorize/sign-up/sign-up-handle-form.tsx +287 -0
  197. package/src/views/authorize/sign-up/sign-up-hcaptcha-form.tsx +108 -0
  198. package/src/views/authorize/sign-up/sign-up-view.tsx +158 -0
  199. package/src/views/authorize/welcome/welcome-view.tsx +56 -0
  200. package/src/views/error/error-view.tsx +31 -0
  201. package/tailwind.config.js +31 -0
  202. package/tsconfig.backend.json +8 -0
  203. package/tsconfig.frontend.json +10 -0
  204. package/tsconfig.frontend.tsbuildinfo +1 -0
  205. package/tsconfig.json +8 -0
  206. package/tsconfig.tools.json +8 -0
  207. package/tsconfig.tools.tsbuildinfo +1 -0
  208. package/vite.config.mjs +16 -0
package/.linguirc ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "format": "po",
3
+ "sourceLocale": "en",
4
+ "locales": [
5
+ "en",
6
+ "an",
7
+ "ast",
8
+ "ca",
9
+ "da",
10
+ "de",
11
+ "el",
12
+ "en-GB",
13
+ "es",
14
+ "eu",
15
+ "fi",
16
+ "fr",
17
+ "ga",
18
+ "gl",
19
+ "hi",
20
+ "hu",
21
+ "ia",
22
+ "id",
23
+ "it",
24
+ "ja",
25
+ "km",
26
+ "ko",
27
+ "ne",
28
+ "nl",
29
+ "pl",
30
+ "pt-BR",
31
+ "ro",
32
+ "ru",
33
+ "sv",
34
+ "th",
35
+ "tr",
36
+ "uk",
37
+ "vi",
38
+ "zh-CN",
39
+ "zh-HK",
40
+ "zh-TW"
41
+ ],
42
+ "fallbackLocales": {
43
+ "default": "en"
44
+ },
45
+ "catalogs": [
46
+ {
47
+ "path": "<rootDir>/src/locales/{locale}/messages",
48
+ "include": [
49
+ "<rootDir>/src"
50
+ ],
51
+ "exclude": [
52
+ "**/dist/**",
53
+ "**/node_modules/**"
54
+ ]
55
+ }
56
+ ]
57
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # @atproto/oauth-provider-ui
2
+
3
+ ## 0.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#3640](https://github.com/bluesky-social/atproto/pull/3640) [`cc4122652`](https://github.com/bluesky-social/atproto/commit/cc4122652ed42ba55826c019d0ec57bf25df1ecd) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Split OAuth Provider's ui into its own package
@@ -0,0 +1,6 @@
1
+ In dev, use `pnpm dev:ui` to start a mock ui server. This will serve the ui through Vite at `http://localhost:5173`.
2
+
3
+ Use the following urls to live-preview the various ui pages:
4
+
5
+ http://localhost:5173/authorization-page.html
6
+ http://localhost:5173/error-page.html
package/LICENSE.txt ADDED
@@ -0,0 +1,7 @@
1
+ Dual MIT/Apache-2.0 License
2
+
3
+ Copyright (c) 2022-2025 Bluesky PBC, and Contributors
4
+
5
+ Except as otherwise noted in individual files, this software is licensed under the MIT license (<http://opensource.org/licenses/MIT>), or the Apache License, Version 2.0 (<http://www.apache.org/licenses/LICENSE-2.0>).
6
+
7
+ Downstream projects and end users may chose either license individually, or both together, at their discretion. The motivation for this dual-licensing is the additional software patent assurance provided by Apache 2.0.
@@ -0,0 +1,3 @@
1
+ /*
2
+ ! tailwindcss v3.4.3 | MIT License | https://tailwindcss.com
3
+ */*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:Monaco,mono;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}:root{--color-brand:255 115 179;--color-brand-c:0 0 0;--color-error:218 44 67;--color-error-c:255 255 255;--color-warning:255 201 73;--color-warning-c:0 0 0;--color-success:0 191 165;--color-success-c:255 255 255}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.relative{position:relative}.m-1{margin:.25rem}.m-2{margin:.5rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.-mb-1{margin-bottom:-.25rem}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-16{height:4rem}.h-2{height:.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.min-h-12{min-height:3rem}.min-h-screen{min-height:100vh}.w-1\/4{width:25%}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-full{width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.min-w-min{min-width:-moz-min-content;min-width:min-content}.max-w-full{max-width:100%}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.grow-0{flex-grow:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-manipulation{touch-action:manipulation}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-\[auto\2c 1fr\]{grid-template-columns:auto 1fr}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-stretch{justify-content:stretch}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-x-reverse>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}.overflow-hidden,.truncate{overflow:hidden}.truncate{white-space:nowrap}.text-ellipsis,.truncate{text-overflow:ellipsis}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-bl-none{border-bottom-left-radius:0}.rounded-br-none{border-bottom-right-radius:0}.border{border-width:1px}.border-2{border-width:2px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-brand{--tw-border-opacity:1;border-color:rgb(var(--color-brand)/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-slate-200{--tw-border-opacity:1;border-top-color:rgb(226 232 240/var(--tw-border-opacity))}.bg-brand{--tw-bg-opacity:1;background-color:rgb(var(--color-brand)/var(--tw-bg-opacity))}.bg-error{--tw-bg-opacity:1;background-color:rgb(var(--color-error)/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-success{--tw-bg-opacity:1;background-color:rgb(var(--color-success)/var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-warning{--tw-bg-opacity:1;background-color:rgb(var(--color-warning)/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pt-4{padding-top:1rem}.text-center{text-align:center}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-\[1\.6\]{line-height:1.6}.tracking-wide{letter-spacing:.025em}.text-brand{--tw-text-opacity:1;color:rgb(var(--color-brand)/var(--tw-text-opacity))}.text-brand-c{--tw-text-opacity:1;color:rgb(var(--color-brand-c)/var(--tw-text-opacity))}.text-error{--tw-text-opacity:1;color:rgb(var(--color-error)/var(--tw-text-opacity))}.text-error-c{--tw-text-opacity:1;color:rgb(var(--color-error-c)/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-inherit{color:inherit}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-success{--tw-text-opacity:1;color:rgb(var(--color-success)/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.accent-brand{accent-color:rgb(var(--color-brand)/1)}.accent-slate-100{accent-color:#f1f5f9}.opacity-50{opacity:.5}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-brand:focus{--tw-border-opacity:1;border-color:rgb(var(--color-brand)/var(--tw-border-opacity))}.focus\:bg-slate-200:focus{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}.hover\:focus\:border-gray-400:focus:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\:focus\]\:border-brand:has(:focus){--tw-border-opacity:1;border-color:rgb(var(--color-brand)/var(--tw-border-opacity))}.has-\[\:focus\]\:bg-slate-200:has(:focus){--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity))}@media (min-width:768px){.md\:m-2{margin:.5rem}.md\:m-4{margin:1rem}.md\:my-4{margin-bottom:1rem;margin-top:1rem}.md\:mb-8{margin-bottom:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:h-24{height:6rem}.md\:w-1\/2{width:50%}.md\:w-24{width:6rem}.md\:max-w-3xl{max-width:48rem}.md\:max-w-lg{max-width:32rem}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-stretch{justify-content:stretch}.md\:justify-items-end{justify-items:end}.md\:self-stretch{align-self:stretch}.md\:bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.md\:p-4{padding:1rem}.md\:px-12{padding-left:3rem;padding-right:3rem}.md\:text-right{text-align:right}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:1024px){.lg\:text-5xl{font-size:3rem;line-height:1}}@media (prefers-color-scheme:dark){.dark\:border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.dark\:border-t-slate-700{--tw-border-opacity:1;border-top-color:rgb(51 65 85/var(--tw-border-opacity))}.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.dark\:bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.dark\:bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity))}.dark\:bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.dark\:text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity))}.dark\:text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\:text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity))}.dark\:text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.dark\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.dark\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark\:placeholder-gray-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.dark\:placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.dark\:hover\:border-gray-500:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.dark\:hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}.dark\:focus\:bg-slate-700:focus{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark\:hover\:focus\:border-gray-500:focus:hover{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity))}.dark\:has-\[\:focus\]\:bg-slate-700:has(:focus){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}}@media (min-width:768px){@media (prefers-color-scheme:dark){.md\:dark\:border-r{border-right-width:1px}.md\:dark\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.md\:dark\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}}}
@@ -0,0 +1,100 @@
1
+ import { r as reactExports, j as jsxRuntimeExports, c as clsx, L as LocaleSelector, A as Api, l as l$3, U as UnknownRequestUriError, a, u as useRandomString, E as ErrorCard, b as EyeIcon, d as EyeSlashIcon, e as LockIcon, T as TokenIcon, f as Admonition, g as AtSymbolIcon, S as SecondAuthenticationFactorRequiredError, I as InvalidCredentialsError, h as AccountIcon, C as CaretRightIcon, i as LinkAnchor, k as CheckMarkIcon, X as XMarkIcon, m as LayoutWelcome, n as readBackendData, o as clientExports, p as LocaleProvider, q as ErrorView } from './error-view-Bu4y7Nd8.js';
2
+
3
+ let i$2=reactExports.createContext(null),l$2={didCatch:false,error:null};let u$1 = class u extends reactExports.Component{static getDerivedStateFromError(r){return {didCatch:true,error:r}}resetErrorBoundary(){let{error:r}=this.state;if(null!==r){for(var e,t,o=arguments.length,n=Array(o),s=0;s<o;s++)n[s]=arguments[s];null===(e=(t=this.props).onReset)||void 0===e||e.call(t,{args:n,reason:"imperative-api"}),this.setState(l$2);}}componentDidCatch(r,e){var t,o;null===(t=(o=this.props).onError)||void 0===t||t.call(o,r,e);}componentDidUpdate(r,e){let{didCatch:t}=this.state,{resetKeys:o}=this.props;if(t&&null!==e.error&&function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return r.length!==e.length||r.some((r,t)=>!Object.is(r,e[t]))}(r.resetKeys,o)){var n,s;null===(n=(s=this.props).onReset)||void 0===n||n.call(s,{next:o,prev:r.resetKeys,reason:"keys"}),this.setState(l$2);}}render(){let{children:r,fallbackRender:e,FallbackComponent:o,fallback:n}=this.props,{didCatch:s,error:a}=this.state,l=r;if(s){let r={error:a,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof e)l=e(r);else if(o)l=reactExports.createElement(o,r);else if(void 0!==n)l=n;else throw a}return reactExports.createElement(i$2.Provider,{value:{didCatch:s,error:a,resetErrorBoundary:this.resetErrorBoundary}},l)}constructor(r){super(r),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=l$2;}};function d$3(){let r=reactExports.useContext(i$2);!function(r){if(null==r||"boolean"!=typeof r.didCatch||"function"!=typeof r.resetErrorBoundary)throw Error("ErrorBoundaryContext not found")}(r);let[e,t]=reactExports.useState({error:null,hasError:false}),a=reactExports.useMemo(()=>({resetBoundary:()=>{r.resetErrorBoundary(),t({error:null,hasError:false});},showBoundary:r=>t({error:r,hasError:true})}),[r.resetErrorBoundary]);if(e.hasError)throw e.error;return a}
4
+
5
+ function LayoutTitlePage({children:d,title:s,subtitle:r,className:a,...x}){return jsxRuntimeExports.jsxs("div",{...x,className:clsx(a,"flex flex-col items-center","md:flex md:flex-row md:justify-stretch md:items-center","min-h-screen min-w-screen","bg-white text-slate-900","dark:bg-slate-900 dark:text-slate-100"),children:[s&&jsxRuntimeExports.jsx("title",{children:s}),jsxRuntimeExports.jsxs("div",{className:clsx("px-6 pt-4","w-full","md:max-w-lg","flex flex-row md:flex-col","md:self-stretch","md:w-1/2 md:max-w-fix md:p-4","md:text-right","md:dark:border-r md:dark:border-slate-700","md:bg-slate-100 md:dark:bg-slate-800"),children:[jsxRuntimeExports.jsxs("div",{className:"flex-grow grid content-center md:justify-items-end",children:[s&&jsxRuntimeExports.jsx("h1",{className:"text-xl md:text-2xl lg:text-5xl md:my-4 font-semibold text-brand",children:s},"title"),r&&jsxRuntimeExports.jsx("p",{className:"hidden md:block max-w-xs text-slate-600 dark:text-slate-400",children:r},"subtitle")]}),jsxRuntimeExports.jsx(LocaleSelector,{className:"m-1 md:m-2"},"localeSelector")]}),jsxRuntimeExports.jsx("main",{className:"w-full p-6 md:max-w-3xl md:px-12",children:d})]})}
6
+
7
+ function upsert(e,n,t){let i=e.findIndex(t);return -1===i?[...e,n]:[...e.slice(0,i),n,...e.slice(i+1)]}
8
+
9
+ const parseCookieString=o=>Object.fromEntries(o.split(";").filter(Boolean).map(o=>o.split("=",2).map(o=>decodeURIComponent(o.trim()))));const cookies=parseCookieString(document.cookie);
10
+
11
+ function useCsrfToken(r){return cookies[r]}
12
+
13
+ function u(t,i){let{showBoundary:r}=d$3();return reactExports.useCallback(async(...e)=>{try{return await t(...e)}catch(t){throw t instanceof UnknownRequestUriError&&r(t),t}},i.concat(r))}function useApi({requestUri:c,sessions:n=[],newSessionsRequireConsent:l=true,onRedirected:f}){let d=useCsrfToken(`csrf-${c}`);if(!d)throw Error("CSRF token is missing");let m=reactExports.useMemo(()=>new Api(d),[d]),[p,w]=reactExports.useState(n),{i18n:y,_:b}=l$3(),{locale:h}=y,g=reactExports.useCallback(t=>{w(e=>t===(e.find(t=>t.selected)?.account.sub||null)?e:e.map(e=>({...e,selected:e.account.sub===t})));},[w]),R=reactExports.useCallback(({account:t,consentRequired:e})=>{let i={account:t,selected:true,loginRequired:false,consentRequired:l||e};w(e=>upsert(e,i,e=>e.account.sub===t.sub).map(t=>t!==i&&t.selected?{...t,selected:false}:t));},[w,l]),q=reactExports.useCallback(t=>{window.location.href=String(t),f&&setTimeout(f);},[f]),A=u(async(t,e)=>{R(await m.fetch("/sign-in",{...t,locale:h},{signal:e}));},[m,h,R]),j=u(async(t,e)=>{await m.fetch("/reset-password-request",{...t,locale:h},{signal:e});},[m,h]),k=u(async(t,e)=>{await m.fetch("/reset-password-confirm",t,{signal:e});},[m]),v=u(async(t,e)=>{await m.fetch("/verify-handle-availability",t,{signal:e});},[m]),S=u(async(t,e)=>{R(await m.fetch("/sign-up",{...t,locale:h},{signal:e}));},[m,h,R]);return {sessions:p,selectSub:g,doSignIn:A,doInitiatePasswordReset:j,doConfirmResetPassword:k,doValidateNewHandle:v,doSignUp:S,doAccept:u(async t=>{q(m.buildAcceptUrl(t));},[m,q]),doReject:u(async()=>{q(m.buildRejectUrl());},[m,q])}}
14
+
15
+ function useBoundDispatch(t,o){return reactExports.useCallback(()=>t(o),[t,o])}
16
+
17
+ function Button({color:a="grey",transparent:e=false,loading:n,square:o=false,children:d,className:b,type:i="button",role:c="Button",disabled:g=false,...s}){return jsxRuntimeExports.jsx("button",{role:c,type:i,disabled:g||true===n,...s,className:clsx("rounded-lg truncate cursor-pointer touch-manipulation tracking-wide overflow-hidden",o?"p-2":"py-2 px-6","brand"===a?clsx("accent-slate-100",e?"bg-transparent text-brand":"bg-brand text-brand-c"):"grey"===a?clsx("accent-brand","text-slate-600 dark:text-slate-300","hover:bg-gray-200 dark:hover:bg-gray-700",e?"bg-transparent":"bg-gray-100 dark:bg-gray-800"):void 0,"disabled:opacity-50",b),children:d})}
18
+
19
+ function FormCard({actions:s,cancel:a,append:c,children:i,prepend:l,disabled:n,inert:d=n,...t}){return jsxRuntimeExports.jsxs("form",{...t,inert:d,className:"flex flex-col space-y-4",children:[l&&jsxRuntimeExports.jsx("div",{children:l},"prepend"),jsxRuntimeExports.jsx("div",{className:"space-y-4",children:i},"children"),c&&jsxRuntimeExports.jsx("div",{children:c},"append"),(s||a)&&jsxRuntimeExports.jsxs("div",{className:"flex flex-wrap flex-row-reverse items-center justify-end space-x-reverse space-x-2",children:[s,jsxRuntimeExports.jsx("div",{className:"flex-auto"}),a]},"buttons")]})}
20
+
21
+ function AccountIdentifier({account:r,...n}){return jsxRuntimeExports.jsx("b",{...n,children:r.preferred_username||r.email||r.sub})}
22
+
23
+ function UrlViewer({url:n,proto:t=false,host:s=true,path:u=false,query:o=false,hash:c=false,as:i="span",...p}){let h=reactExports.useMemo(()=>new URL(n),[n]);return jsxRuntimeExports.jsxs(i,{...p,children:[t&&jsxRuntimeExports.jsx(r$2,{value:`${h.protocol}//`,...true===t?null:t}),s&&jsxRuntimeExports.jsx(r$2,{value:h.host,...true===s?{faded:false,bold:true}:s}),u&&jsxRuntimeExports.jsx(r$2,{value:h.pathname,...true===u?null:u}),o&&jsxRuntimeExports.jsx(r$2,{value:h.search,...true===o?null:o}),c&&jsxRuntimeExports.jsx(r$2,{value:h.hash,...true===c?null:c})]})}function r$2({value:a,faded:l=true,bold:r=false}){return jsxRuntimeExports.jsx(r?"b":"span",{className:l?"opacity-50":"",children:a})}
24
+
25
+ function ClientName({clientId:i,clientMetadata:n,clientTrusted:a$1,...s}){return a$1&&n.client_name?jsxRuntimeExports.jsx("span",{...s,children:n.client_name}):i.startsWith("http://")?jsxRuntimeExports.jsx("span",{...s,children:jsxRuntimeExports.jsx(a,{message:"An application on your device",id:"eYNzrj"})}):i.startsWith("https://")?jsxRuntimeExports.jsx(UrlViewer,{...s,url:i,path:true}):jsxRuntimeExports.jsx("span",{...s,children:i})}
26
+
27
+ function AcceptForm({clientId:m,clientMetadata:u,clientTrusted:d,account:p,scopeDetails:f,onAccept:g,onReject:h,onBack:y,...b}){let{i18n:x,_:k}=l$3();return jsxRuntimeExports.jsxs(FormCard,{...b,onSubmit:e=>{e.preventDefault(),g();},cancel:y&&jsxRuntimeExports.jsx(Button,{onClick:y,children:"Back"}),actions:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Button,{type:"submit",color:"brand",children:jsxRuntimeExports.jsx(a,{message:"Authorize",id:"yIVrHZ"})}),jsxRuntimeExports.jsx(Button,{onClick:h,children:jsxRuntimeExports.jsx(a,{message:"Deny access",id:"54JiGG"})})]}),children:[d&&u.logo_uri&&jsxRuntimeExports.jsx("div",{className:"flex items-center justify-center",children:jsxRuntimeExports.jsx("img",{crossOrigin:"anonymous",src:u.logo_uri,alt:u.client_name,className:"w-16 h-16 rounded-full"})},"logo"),jsxRuntimeExports.jsx("p",{children:jsxRuntimeExports.jsx(a,{message:"<0/> is asking for permission to access your account (<1/>).",id:"BVbdlE",components:{0:jsxRuntimeExports.jsx(ClientName,{clientId:m,clientMetadata:u,clientTrusted:d}),1:jsxRuntimeExports.jsx(AccountIdentifier,{account:p})}})}),jsxRuntimeExports.jsx("p",{children:jsxRuntimeExports.jsx(a,{message:"By clicking <0>Authorize</0>, you allow this application to perform the following actions in accordance with their <1>terms of service</1> and <2>privacy policy</2>:",id:"/aj5l4",components:{0:jsxRuntimeExports.jsx("b",{}),1:jsxRuntimeExports.jsx("a",{role:"link",href:u.tos_uri,rel:"nofollow noopener",target:"_blank",className:"text-brand underline"}),2:jsxRuntimeExports.jsx("a",{role:"link",href:u.policy_uri,rel:"nofollow noopener",target:"_blank",className:"text-brand underline"})}})}),f?.length?jsxRuntimeExports.jsx("ul",{className:"list-disc list-inside","aria-label":x._({id:"c7cY3z",message:"Requested permissions"}),children:f.map(({scope:i,description:n})=>jsxRuntimeExports.jsx("li",{children:n||jsxRuntimeExports.jsx(l$1,{scope:i})},i))},"scopes"):null]})}function l$1({scope:i}){switch(i){case "atproto":return jsxRuntimeExports.jsx(a,{message:"Uniquely identify you",id:"BWM1dL"});case "transition:generic":return jsxRuntimeExports.jsx(a,{message:"Access your account data (except chat messages)",id:"myiH7A"});case "transition:chat.bsky":return jsxRuntimeExports.jsx(a,{message:"Access your chat messages",id:"kJrqQq"});default:return i}}
28
+
29
+ function AcceptView({clientId:o,clientMetadata:i,clientTrusted:c,account:n,scopeDetails:m,onAccept:l,onReject:u,onBack:p,title:d,subtitle:f=jsxRuntimeExports.jsx(a,{message:"Grant access to your <0>{0}</0> account",id:"QdVx1C",values:{0:n.preferred_username||n.email||n.sub},components:{0:jsxRuntimeExports.jsx("b",{className:"text-slate-800 dark:text-slate-200"})}}),...x}){let{i18n:g,_:y}=l$3();return jsxRuntimeExports.jsx(LayoutTitlePage,{...x,title:d??g._({id:"yIVrHZ",message:"Authorize"}),subtitle:f,children:jsxRuntimeExports.jsx(AcceptForm,{clientId:o,clientMetadata:i,clientTrusted:c,account:n,scopeDetails:m,onBack:p,onAccept:l,onReject:u})})}
30
+
31
+ const FieldsetContext=reactExports.createContext({disabled:false});FieldsetContext.displayName="FieldsetContext";function Fieldset({label:l,children:d,disabled:a,...r}){let o=useRandomString({prefix:"fieldset-"}),n=reactExports.useMemo(()=>({disabled:a??false,labelId:l?o:void 0}),[a,l,o]);return jsxRuntimeExports.jsxs("fieldset",{...r,"aria-labelledby":o,disabled:a,children:[l&&jsxRuntimeExports.jsx("legend",{id:o,className:"mb-1 text-slate-600 dark:text-slate-400 text-sm font-medium",children:l},"title"),jsxRuntimeExports.jsx("div",{className:"flex flex-col space-y-4",children:jsxRuntimeExports.jsx(FieldsetContext,{value:n,children:d})})]})}
32
+
33
+ function useAsyncAction(c,{ref:u,onLoading:a,onError:l}={}){let[i,s]=reactExports.useState(false),[b,f]=reactExports.useState(),y=reactExports.useCallback(r=>{f(r),l?.(r);},[l]),A=reactExports.useCallback(r=>{s(r),a?.(r);},[a]),E=reactExports.useRef(null),d=reactExports.useRef(null);return reactExports.useEffect(()=>(d.current=()=>{E.current?.abort(),E.current=null,y(void 0),A(false);},()=>{d.current=null;}),[y,A]),reactExports.useImperativeHandle(u,()=>({reset:()=>d.current?.()}),[]),reactExports.useEffect(()=>()=>{E.current?.abort(),E.current=null;},[]),{loading:i,error:b,run:reactExports.useCallback(async()=>{E.current?.abort(),A(true),y(void 0);let r=new AbortController,{signal:n}=r;E.current=r;try{await c(n);}catch(o){var t,e;r===E.current?y(o instanceof Error?o:Error(String(o))):(t=n,e=o,t.aborted&&(t.reason===e||t.reason===e?.cause||e instanceof DOMException&&"AbortError"===e.name)||console.warn("Async action error after abort",o));}finally{r===E.current&&(E.current=null,A(false)),r.abort();}},[c,A,y])}}
34
+
35
+ const errorRenderDefault=({error:t})=>jsxRuntimeExports.jsx(ErrorCard,{error:t});function FormCardAsync({invalid:i,disabled:s,onSubmit:m,submitLabel:c,onCancel:d,cancelLabel:l,errorRender:u=errorRenderDefault,ref:p,onLoading:f,onError:b,children:x,...g}){let{run:h,loading:y,error:A}=useAsyncAction(m,{ref:p,onError:b,onLoading:f}),C=reactExports.useCallback(r=>{r.preventDefault(),!r.currentTarget.reportValidity()||s||i||h();},[s,i,h]);return jsxRuntimeExports.jsx(FormCard,{...g,onSubmit:C,disabled:s||y,prepend:null!=A?u({error:A}):void 0,cancel:d&&jsxRuntimeExports.jsx(Button,{onClick:d,children:l||jsxRuntimeExports.jsx(a,{message:"Cancel",id:"dEgA5A"})}),actions:jsxRuntimeExports.jsx(Button,{color:"brand",type:"submit",loading:y,disabled:s,children:c||jsxRuntimeExports.jsx(a,{message:"Submit",id:"hQRttt"})}),children:x})}
36
+
37
+ var t$1;const MIN_PASSWORD_LENGTH=8;let e=/(\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])/,r$1=/[A-Z]/,n=/[a-z]/,o$1=/[0-9]/,d$2=/[^a-zA-Z0-9]/;var PasswordStrength=((t$1={})[t$1.weak=1]="weak",t$1[t$1.moderate=2]="moderate",t$1[t$1.strong=3]="strong",t$1[t$1.extra=4]="extra",t$1);function getPasswordStrength(t){return t.length<8?1:t.length>=20?4:t.length>=16?f(t,[d$2])||f(t,[r$1,n,o$1],2)?4:3:t.length>=8&&f(t,[e])?3:t.length>=14?f(t,[d$2])||f(t,[r$1,n,o$1],2)?3:2:t.length>=12?f(t,[d$2])||f(t,[r$1,n,o$1],2)?2:1:t.length>=8&&(f(t,[d$2])||f(t,[r$1,n,o$1]))?2:1}function f(t,e,r=e.length){if(r<1||r>e.length)throw TypeError("Invalid regexpsCountToMatch");for(let n of e)if(n.test(t)&&0==--r)return true;return false}
38
+
39
+ function PasswordStrengthLabel({password:t,...n}){let{i18n:o,_:m}=l$3(),g=getPasswordStrength(t);return jsxRuntimeExports.jsx("span",{...n,"aria-label":o._({id:"osAB4a",message:"Password strength"}),children:g===PasswordStrength.extra?jsxRuntimeExports.jsx(a,{message:"Extra",id:"/Ltc/k"}):g===PasswordStrength.strong?jsxRuntimeExports.jsx(a,{message:"Strong",id:"LLx/nr"}):g===PasswordStrength.moderate?jsxRuntimeExports.jsx(a,{message:"Moderate",id:"dvYuhh"}):t?jsxRuntimeExports.jsx(a,{message:"Weak",id:"9ls/Vs"}):jsxRuntimeExports.jsx(a,{message:"Missing",id:"VU3Nrn"})})}
40
+
41
+ function PasswordStrengthMeter({password:i,className:o,...l}){let{i18n:n,_:m}=l$3(),g=i?getPasswordStrength(i):0,d=g===PasswordStrength.extra||g===PasswordStrength.strong?"bg-success":g===PasswordStrength.moderate?"bg-warning":"bg-error";return jsxRuntimeExports.jsx("div",{...l,className:clsx("w-full h-1 flex space-x-2",o),role:"meter","aria-label":n._({id:"xfNKwI",message:"Password strength indicator"}),"aria-valuemin":0,"aria-valuemax":PasswordStrength.extra,"aria-valuenow":g,children:Array.from({length:4},(a,e)=>jsxRuntimeExports.jsx("div",{className:`rounded h-1 w-1/4 ${g>e?d:"bg-gray-300 dark:bg-slate-500"}`},e))})}
42
+
43
+ function updateRef(e,t){"function"==typeof e?e(t):e&&(e.current=t);}function mergeRefs(e){return t=>{for(let f of e)f&&updateRef(f,t);}}
44
+
45
+ function ButtonToggleVisibility({visible:s,toggleVisible:n,onClick:o,...l}){let{i18n:m,_:u}=l$3();return jsxRuntimeExports.jsx(Button,{...l,square:true,onClick:i=>{o?.(i),i.defaultPrevented||n();},"aria-label":s?m._({id:"vLyv1R",message:"Hide"}):m._({id:"huXYDE",message:"Make visible"}),children:s?jsxRuntimeExports.jsx(EyeIcon,{className:"w-5","aria-hidden":true}):jsxRuntimeExports.jsx(EyeSlashIcon,{className:"w-5","aria-hidden":true})})}
46
+
47
+ function InputContainer({icon:d,append:o,bellow:s,className:n,children:l,onFocus:c,onBlur:i,...b}){let[u,f]=reactExports.useState(false);return jsxRuntimeExports.jsxs("div",{...b,onFocus:e=>{c?.(e),e.defaultPrevented||f(true);},onBlur:e=>{i?.(e),e.defaultPrevented||f(false);},className:clsx("min-h-12","max-w-full","overflow-hidden","rounded-lg",n),children:[jsxRuntimeExports.jsxs("div",{className:clsx("px-1","w-full min-h-12","flex items-center justify-stretch","rounded-lg",s?"rounded-br-none rounded-bl-none":void 0,"outline-none","border-solid border-2 border-transparent","focus:border-brand has-[:focus]:border-brand","hover:border-gray-400 hover:focus:border-gray-400","dark:hover:border-gray-500 dark:hover:focus:border-gray-500","bg-gray-100 focus:bg-slate-200 has-[:focus]:bg-slate-200","dark:bg-slate-800 dark:focus:bg-slate-700 dark:has-[:focus]:bg-slate-700","text-slate-600 dark:text-slate-300","accent-brand"),children:[d&&jsxRuntimeExports.jsx("div",{className:clsx("shrink-0 grow-0","mx-1",u?"text-brand":"text-slate-500"),children:d}),l,jsxRuntimeExports.jsx("div",{className:"ml-1 grow-0 shrink-0 flex items-center",children:o})]}),s&&jsxRuntimeExports.jsx("div",{className:clsx("px-3 py-2 space-x-2","flex flex-row items-center gap-1","rounded-br-2 rounded-bl-2","bg-gray-200 dark:bg-slate-700","text-gray-700 dark:text-gray-300","text-sm italic"),children:s})]})}
48
+
49
+ function InputText({icon:i,append:s,bellow:p,className:u,onFocus:c,onBlur:d,ref:b,disabled:f,title:m,"aria-label":x=m,"aria-labelledby":g,placeholder:h=x,...v}){let P=reactExports.useContext(FieldsetContext),w=reactExports.useRef(null),y=reactExports.useRef(false);return jsxRuntimeExports.jsx(InputContainer,{icon:i,append:s,bellow:p,className:clsx("cursor-text",u),tabIndex:-1,onClick:e=>{w.current!==e.target&&(e.preventDefault(),e.stopPropagation(),w.current?.focus());},onMouseDown:e=>{y.current&&e.target!==w.current&&(e.preventDefault(),e.stopPropagation());},children:jsxRuntimeExports.jsx("input",{...v,disabled:f??P.disabled,title:m,placeholder:h,"aria-label":x,"aria-labelledby":g??P.labelId,ref:mergeRefs([b,w]),className:"w-full bg-transparent bg-clip-padding text-base text-inherit outline-none dark:placeholder-gray-500 text-ellipsis",onFocus:e=>{c?.(e),e.defaultPrevented||(y.current=true);},onBlur:e=>{d?.(e),e.defaultPrevented||(y.current=false);}})})}
50
+
51
+ function InputPassword({autoHide:p=true,onBlur:f,onChange:c,append:g,autoComplete:d="current-password",icon:x=jsxRuntimeExports.jsx(LockIcon,{className:"w-5"}),value:b,defaultValue:v=b,ref:w,title:C,dir:h="auto",autoCapitalize:j="none",autoCorrect:y="off",spellCheck:P="false",...k}){let{i18n:N,_:_}=l$3(),z=reactExports.useRef(null),[B,F]=reactExports.useState(false),[I,L]=reactExports.useState("string"==typeof v?v:""),T=reactExports.useCallback(t=>{c?.(t),L(t.target.value);},[c]);return jsxRuntimeExports.jsx(InputText,{...k,title:C??N._({id:"8ZsakT",message:"Password"}),ref:mergeRefs([w,z]),dir:h,autoCapitalize:j,autoCorrect:y,spellCheck:P,icon:x,onBlur:p?t=>{f?.(t),t.defaultPrevented||F(false);}:f,value:I,onChange:T,type:B?"text":"password",autoComplete:d,append:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(ButtonToggleVisibility,{className:"m-1",visible:B,toggleVisible:()=>{F(t=>!t),z.current?.focus();}}),g]})})}
52
+
53
+ function InputNewPassword({password:n="",onPassword:p,onChange:w,autoComplete:g="new-password",minLength:u=MIN_PASSWORD_LENGTH,...x}){let{i18n:c,_:f}=l$3(),[h,_]=reactExports.useState(n),v=reactExports.useCallback(t=>{let{value:s}=t.target;w?.(t),t.defaultPrevented||(_(s),p?.(t.target.validity.valid?s:void 0));},[w,p]);return jsxRuntimeExports.jsx(InputPassword,{...x,placeholder:c._({id:"3tOlz6",message:"Enter a password"}),"aria-label":c._({id:"0StR7t",message:"Enter your new password"}),title:c._({id:"5CqSPX",message:"Password with at least {MIN_PASSWORD_LENGTH} characters",values:{MIN_PASSWORD_LENGTH:MIN_PASSWORD_LENGTH}}),minLength:u,onChange:v,value:h,autoComplete:g,bellow:jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(PasswordStrengthMeter,{password:h}),jsxRuntimeExports.jsx(PasswordStrengthLabel,{className:"grow-1 min-w-max text-xs text-gray-500 dark:text-gray-400",password:h})]})})}
54
+
55
+ function InputToken({example:a="XXXXX-XXXXX",onToken:i,icon:s=jsxRuntimeExports.jsx(TokenIcon,{className:"w-5"}),title:u=a,onChange:c,value:p,defaultValue:X=p,...m}){let{i18n:f,_:g}=l$3(),[x,h]=reactExports.useState("string"==typeof X?X:"");return jsxRuntimeExports.jsx(InputText,{...m,type:"text",autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",spellCheck:"false",minLength:11,maxLength:11,dir:"auto",icon:s,pattern:"^[A-Z2-7]{5}-[A-Z2-7]{5}$",placeholder:f._({id:"0hTJM+",message:"Looks like {example}",values:{example:a}}),title:u,value:x,onChange:e=>{let{value:t,selectionEnd:r,selectionStart:l}=e.currentTarget,n=o(t);e.currentTarget.value=n;let a=r??l;if(null!=a){let r=o(t.slice(0,a));e.currentTarget.selectionStart=e.currentTarget.selectionEnd=r.length;}h(n),c?.(e),e.isDefaultPrevented()||i?.(11===n.length?n:null);}})}function o(e){let t=e.toUpperCase().replaceAll(/[^A-Z2-7]/g,"");return t.length<=5?t:`${t.slice(0,5)}-${t.slice(5,10)}`}
56
+
57
+ function ResetPasswordConfirmForm({onSubmit:c,invalid:p,...f}){let u=useRandomString({prefix:"reset-pwd-email-"}),w=reactExports.useRef(null),[x,h]=reactExports.useState(null),[g,y]=reactExports.useState(void 0);return jsxRuntimeExports.jsxs(FormCardAsync,{...f,onSubmit:e=>{if(x&&g)return c({token:x,password:g},e)},invalid:p||!x||!g,children:[jsxRuntimeExports.jsx(Admonition,{role:"info",children:jsxRuntimeExports.jsx("p",{id:u,className:"text-md",children:jsxRuntimeExports.jsx(a,{message:'You will receive an email with a "reset code". Enter that code here then enter your new password.',id:"imRJNy"})})}),jsxRuntimeExports.jsx(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"Reset code",id:"vJgYMA"}),children:jsxRuntimeExports.jsx(InputToken,{name:"code","aria-labelledby":u,enterKeyHint:"next",required:true,autoFocus:true,onToken:e=>{h(e),e&&w.current?.focus();}})}),jsxRuntimeExports.jsx(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"New password",id:"/nT6AE"}),children:jsxRuntimeExports.jsx(InputNewPassword,{ref:w,name:"password",enterKeyHint:"done",required:true,password:g,onPassword:y})})]})}
58
+
59
+ function InputEmailAddress({onEmail:s,autoCapitalize:l="none",autoComplete:m="email",autoCorrect:n="off",dir:u="auto",icon:p=jsxRuntimeExports.jsx(AtSymbolIcon,{className:"w-5"}),onBlur:f,onChange:c,pattern:d="^[^@]+@[^@]+\\.[^@]+$",spellCheck:g="false",value:x,defaultValue:C=x,title:v,...y}){let{i18n:L,_:h}=l$3(),[j,w]=reactExports.useState("string"==typeof C?C:""),A=reactExports.useCallback(t=>{let e=t.target.value.toLowerCase();w(e),c?.(t),s?.(t.target.validity.valid?e:void 0);},[c,s]);return jsxRuntimeExports.jsx(InputText,{...y,title:v??L._({id:"ATGYL1",message:"Email address"}),type:"email",autoCapitalize:l,autoCorrect:n,dir:u,spellCheck:g,icon:p,pattern:d,autoComplete:m,value:j,onChange:A,onBlur:f})}
60
+
61
+ function ResetPasswordRequestForm({emailDefault:f,onSubmit:p,invalid:x,ref:g,...h}){let{i18n:y,_:b}=l$3(),E=useRandomString({prefix:"reset-pwd-email-"}),[w,j]=reactExports.useState(f),q=reactExports.useRef(null),L=reactExports.useCallback(e=>{if(w)return p({email:w},e)},[w,p]);return jsxRuntimeExports.jsx(FormCardAsync,{...h,ref:mergeRefs([g,q]),invalid:x||!w,onSubmit:L,children:jsxRuntimeExports.jsxs(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"Email address",id:"ATGYL1"}),children:[jsxRuntimeExports.jsx(InputEmailAddress,{name:"email",placeholder:y._({id:"xRPn3U",message:"Enter your email address"}),"aria-labelledby":E,title:y._({id:"ATGYL1",message:"Email address"}),required:true,autoFocus:true,value:w,onEmail:e=>{q.current?.reset(),j(e);}}),jsxRuntimeExports.jsx(Admonition,{role:"info",children:jsxRuntimeExports.jsx("p",{id:E,className:"",children:jsxRuntimeExports.jsx(a,{message:'Enter the email you used to create your account. We\'ll send you a "reset code" so you can set a new password.',id:"cHrOqs"})})})]})})}
62
+
63
+ var l,m=((l=m||{})[l.RequestReset=0]="RequestReset",l[l.ConfirmReset=1]="ConfirmReset",l[l.PasswordUpdated=2]="PasswordUpdated",l);function ResetPasswordView({emailDefault:l,onresetPasswordRequest:m,onResetPasswordConfirm:c,onBack:u,...p}){let{i18n:g,_:b}=l$3(),[f,w]=reactExports.useState(0);if(0===f)return jsxRuntimeExports.jsxs(LayoutTitlePage,{...p,title:p.title||g._({id:"dn8X5t",message:"Forgot Password"}),subtitle:p.subtitle||jsxRuntimeExports.jsx(a,{message:"Let's get your password reset!",id:"Esfg1M"}),children:[jsxRuntimeExports.jsx(ResetPasswordRequestForm,{emailDefault:l,submitLabel:jsxRuntimeExports.jsx(a,{message:"Next",id:"hXzOVo"}),onSubmit:async(e,s)=>{await m(e,s),s.aborted||w(1);},cancelLabel:jsxRuntimeExports.jsx(a,{message:"Back",id:"iH8pgl"}),onCancel:u}),jsxRuntimeExports.jsx("hr",{className:"my-5 border-gray-300 dark:border-gray-700"}),jsxRuntimeExports.jsx("center",{children:jsxRuntimeExports.jsx(Button,{transparent:true,onClick:()=>w(1),children:jsxRuntimeExports.jsx(a,{message:"Already have a code?",id:"FTT4a4"})})})]});if(1===f)return jsxRuntimeExports.jsx(LayoutTitlePage,{...p,title:p.title||g._({id:"KbS2K9",message:"Reset Password"}),subtitle:p.subtitle||jsxRuntimeExports.jsx(a,{message:"Enter the code you received to reset your password.",id:"xg/UcZ"}),children:jsxRuntimeExports.jsx(ResetPasswordConfirmForm,{submitLabel:jsxRuntimeExports.jsx(a,{message:"Next",id:"hXzOVo"}),onSubmit:async(e,s)=>{await c(e,s),s.aborted||w(2);},cancelLabel:jsxRuntimeExports.jsx(a,{message:"Back",id:"iH8pgl"}),onCancel:u})});if(2===f)return jsxRuntimeExports.jsx(LayoutTitlePage,{...p,title:p.title||g._({id:"fSy6T1",message:"Password Updated"}),subtitle:p.subtitle||jsxRuntimeExports.jsx(a,{message:"Your password has been updated!",id:"+qGdcW"}),children:jsxRuntimeExports.jsxs("center",{children:[jsxRuntimeExports.jsx("h2",{className:"text-xl font-bold pb-2",children:jsxRuntimeExports.jsx(a,{message:"Password updated!",id:"DKeVgZ"})}),jsxRuntimeExports.jsx("p",{className:"pb-4",children:jsxRuntimeExports.jsx(a,{message:"You can now sign in with your new password.",id:"67nRLM"})}),jsxRuntimeExports.jsx(Button,{color:"brand",onClick:u,children:jsxRuntimeExports.jsx(a,{message:"Okay",id:"UaXeX3"})})]})});throw Error(`Invalid view: ${f}`)}
64
+
65
+ function InputCheckbox({className:c,children:s,id:m,ref:b,disabled:u,title:d,"aria-label":p=d,"aria-labelledby":f,...x}){let h=useRandomString("input-checkbox-"),k=reactExports.useRef(null),y=reactExports.useRef(null),I=reactExports.useContext(FieldsetContext),N=m??h;return jsxRuntimeExports.jsx(InputContainer,{className:clsx("cursor-pointer",c),icon:jsxRuntimeExports.jsx("input",{...x,disabled:u??I.disabled,title:d,"aria-label":p,"aria-labelledby":s?void 0:f??I.labelId,ref:mergeRefs([b,y]),id:N,className:"accent-brand outline-none",type:"checkbox"}),tabIndex:-1,onClick:({target:e})=>{e!==k.current&&e!==y.current&&y.current?.click();},children:s&&jsxRuntimeExports.jsx("label",{ref:k,htmlFor:N,className:"block w-full leading-[1.6] select-none cursor-pointer",children:s})})}
66
+
67
+ function SignInForm({usernameDefault:y="",usernameReadonly:C=false,rememberDefault:k=false,onSubmit:v,onBack:w,onForgotPassword:_,ref:F,invalid:N,children:H,...L}){let{i18n:O,_:q}=l$3(),[S,j]=reactExports.useState(y),[A,K]=reactExports.useState(""),[T,Z]=reactExports.useState(k),[P,R]=reactExports.useState(null),[U,z]=reactExports.useState(null),[B,W]=reactExports.useState(false),G=reactExports.useRef(null),I=reactExports.useCallback(()=>{R(null),z(null);},[R,z]),M=reactExports.useCallback(()=>{I(),G.current?.reset();},[I,G]),V=reactExports.useCallback(async e=>{try{await v({username:S,password:A,remember:T,...U?{[U.type]:P}:{}},e);}catch(t){if(e.aborted)return;if(t instanceof SecondAuthenticationFactorRequiredError){z(t);return}throw t instanceof InvalidCredentialsError&&I(),t}},[S,A,T,U,P,v]);return jsxRuntimeExports.jsxs(FormCardAsync,{...L,ref:mergeRefs([F,G]),onLoading:W,onCancel:w,cancelLabel:O._({id:"iH8pgl",message:"Back"}),append:H,invalid:N||!S||!A||null!=U&&!P,submitLabel:U?O._({id:"7VpPHA",message:"Confirm"}):O._({id:"5lWFkC",message:"Sign in"}),onSubmit:V,children:[jsxRuntimeExports.jsx(Fieldset,{disabled:B,label:jsxRuntimeExports.jsx(a,{message:"Account",id:"AeXO77"}),children:jsxRuntimeExports.jsx(InputText,{icon:jsxRuntimeExports.jsx(AtSymbolIcon,{className:"w-5"}),name:"username",type:"text",title:O._({id:"nZx9mr",message:"Username or email address"}),autoCapitalize:"none",autoCorrect:"off",autoComplete:"username",spellCheck:"false",dir:"auto",enterKeyHint:"next",required:true,readOnly:C,disabled:C,autoFocus:true,value:S,onChange:e=>{M(),j(e.target.value);}})}),jsxRuntimeExports.jsx(InputPassword,{name:"password",onChange:e=>{M(),K(e.target.value);},append:_&&jsxRuntimeExports.jsx(Button,{className:"text-sm",type:"button",onClick:()=>{_(S?.includes("@")?S:void 0);},"aria-label":O._({id:"slOprG",message:"Reset your password"}),children:jsxRuntimeExports.jsx(a,{message:"Forgot?",id:"F4OP4y"})}),enterKeyHint:U?"next":"done",disabled:B,required:true}),jsxRuntimeExports.jsxs(Admonition,{role:"status",children:[jsxRuntimeExports.jsx("p",{className:"font-bold text-md text-brand pb-1",children:jsxRuntimeExports.jsx(a,{message:"Warning",id:"r6y+jM"})}),jsxRuntimeExports.jsx("p",{className:"text-sm",children:jsxRuntimeExports.jsx(a,{message:"Please verify the domain name of the website before entering your password. Never enter your password on a domain you do not trust.",id:"+Z2ZNt"})})]}),jsxRuntimeExports.jsx(Fieldset,{disabled:B,label:jsxRuntimeExports.jsx(a,{message:"Session",id:"CqO9qC"}),children:jsxRuntimeExports.jsx(InputCheckbox,{name:"remember",title:O._({id:"1TxdLU",message:"Remember this account on this device"}),enterKeyHint:U?"next":"done",checked:T,onChange:e=>Z(e.target.checked),children:jsxRuntimeExports.jsx(a,{message:"Remember this account on this device",id:"1TxdLU"})})},"remember"),U&&jsxRuntimeExports.jsx(Fieldset,{disabled:B,label:jsxRuntimeExports.jsx(a,{message:"2FA Confirmation",id:"4blS0m"}),children:jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(InputToken,{title:O._({id:"ioZOzk",message:"Confirmation code"}),enterKeyHint:"done",required:true,autoFocus:true,value:P??"",onToken:R}),jsxRuntimeExports.jsx("p",{className:"text-slate-600 dark:text-slate-400 text-sm",children:jsxRuntimeExports.jsx(a,{message:"Check your {0} email for a login code and enter it here.",id:"B+Yy3b",values:{0:U.hint}})})]})},"2fa")]})}
68
+
69
+ function AccountImage({src:d,alt:i}){let[n,m]=reactExports.useState(false);return reactExports.useEffect(()=>{m(false);},[d]),d&&!n?jsxRuntimeExports.jsx("img",{"aria-hidden":true,crossOrigin:"anonymous",src:d,alt:i,className:"-ml-1 w-6 h-6 rounded-full",onError:()=>m(true)}):jsxRuntimeExports.jsx("div",{"aria-hidden":true,className:"h-6 w-6 text-white bg-brand rounded-full border-solid border-2 border-brand overflow-hidden",children:jsxRuntimeExports.jsx(AccountIcon,{className:"-mx-1 -mb-1"})})}
70
+
71
+ function SignInPicker({accounts:c,onAccount:d,onOther:p,onBack:u,children:x,...f}){let{i18n:h,_:g}=l$3();return jsxRuntimeExports.jsxs(FormCard,{...f,append:x,actions:null,cancel:u&&jsxRuntimeExports.jsx(Button,{onClick:u,children:jsxRuntimeExports.jsx(a,{message:"Back",id:"iH8pgl"})}),children:[jsxRuntimeExports.jsx("p",{className:"text-slate-600 dark:text-slate-400 text-sm font-medium",children:jsxRuntimeExports.jsx(a,{message:"Sign in as...",id:"FT1MVS"})}),c.map(t=>{let[n,s]=[t.name,t.preferred_username,t.email,t.sub].filter(Boolean);return jsxRuntimeExports.jsx(InputContainer,{tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&d(t);},onClick:()=>d(t),role:"button","aria-label":h._({id:"N9o7n5",message:"Sign in as {0}",values:{0:t.name}}),icon:jsxRuntimeExports.jsx(AccountImage,{src:t.picture,alt:n}),append:jsxRuntimeExports.jsx(CaretRightIcon,{"aria-hidden":true,className:"h-4"}),children:jsxRuntimeExports.jsxs("span",{className:"flex flex-wrap items-center",children:[jsxRuntimeExports.jsx("span",{className:"font-medium truncate mr-2","arial-label":h._({id:"6YtxFj",message:"Name"}),children:n}),s&&jsxRuntimeExports.jsx("span",{className:"text-sm text-neutral-500 dark:text-neutral-400 truncate","arial-label":h._({id:"sJGljQ",message:"Identifier"}),children:s})]})},t.sub)}),p&&jsxRuntimeExports.jsx(InputContainer,{tabIndex:0,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&p();},onClick:p,"aria-label":h._({id:"cR9UpQ",message:"Login to account that is not listed"}),role:"button",append:jsxRuntimeExports.jsx(CaretRightIcon,{"aria-hidden":true,className:"h-4"}),icon:jsxRuntimeExports.jsx(AtSymbolIcon,{"aria-hidden":true,className:"h-4"}),children:jsxRuntimeExports.jsx("span",{className:"truncate text-slate-700 dark:text-slate-400",children:jsxRuntimeExports.jsx(a,{message:"Another account",id:"+TaG50"})})},"other")]})}
72
+
73
+ function SignInView({loginHint:l,sessions:c,selectSub:d,onSignIn:g,onForgotPassword:p,onBack:f,title:b,subtitle:w,...h}){let{i18n:y,_:k}=l$3(),x=reactExports.useMemo(()=>c.find(e=>e.selected),[c]),S=reactExports.useCallback(()=>d(null),[d]),B=reactExports.useMemo(()=>c.map(e=>e.account),[c]),[F,P]=reactExports.useState(0===c.length);return (b??(b=y._({id:"5lWFkC",message:"Sign in"})),reactExports.useEffect(()=>{x&&P(false);},[x]),x)?x.loginRequired?jsxRuntimeExports.jsx(LayoutTitlePage,{...h,title:b,subtitle:w??jsxRuntimeExports.jsx(a,{message:"Confirm your password to continue",id:"HaGV2g"}),children:jsxRuntimeExports.jsx(SignInForm,{onSubmit:g,onForgotPassword:p,onBack:S,usernameDefault:x.account.preferred_username||x.account.sub,usernameReadonly:true,rememberDefault:true})}):null:l?jsxRuntimeExports.jsx(LayoutTitlePage,{...h,title:b,subtitle:w??jsxRuntimeExports.jsx(a,{message:"Enter your password",id:"NgaR6B"}),children:jsxRuntimeExports.jsx(SignInForm,{onSubmit:g,onForgotPassword:p,onBack:f,usernameDefault:l,usernameReadonly:true})}):0===c.length?jsxRuntimeExports.jsx(LayoutTitlePage,{...h,title:b,subtitle:w??jsxRuntimeExports.jsx(a,{message:"Enter your username and password",id:"T0KLp4"}),children:jsxRuntimeExports.jsx(SignInForm,{onSubmit:g,onForgotPassword:p,onBack:f})}):F?jsxRuntimeExports.jsx(LayoutTitlePage,{...h,title:b,subtitle:w??jsxRuntimeExports.jsx(a,{message:"Enter your username and password",id:"T0KLp4"}),children:jsxRuntimeExports.jsx(SignInForm,{onSubmit:g,onForgotPassword:p,onBack:()=>P(false)})}):jsxRuntimeExports.jsx(LayoutTitlePage,{...h,title:b,subtitle:w??jsxRuntimeExports.jsx(a,{message:"Select from an existing account",id:"o3dwub"}),children:jsxRuntimeExports.jsx(SignInPicker,{accounts:B,onAccount:e=>d(e.sub),onOther:()=>P(true),onBack:f})})}
74
+
75
+ let i$1=e=>null!=e&&false!==e,d$1=e=>i$1(e)&&true===e.invalid,r=e=>!i$1(e)||false===e.invalid;function useStepper(a){let f=a.findIndex(i$1),l=a.findLastIndex(i$1),o=a.findIndex(d$1),[x,p]=reactExports.useState(f),s=reactExports.useCallback(e=>-1!==e&&!!a[e]&&(p(e),true),[a.map(i$1).join()]),u=a.findLastIndex((e,n)=>i$1(e)&&n<x),I=a.findIndex((e,n)=>i$1(e)&&n>x),v=reactExports.useCallback(()=>s(f),[s,f]),c=reactExports.useCallback(()=>s(l),[s,l]),m=reactExports.useCallback(()=>s(u),[s,u]),L=reactExports.useCallback(()=>s(I),[s,I]),g=reactExports.useCallback(()=>s(o),[s,o]),h=x+1+a.reduce((e,n,t)=>t>=x||i$1(n)?e:e-1,0),j=a.filter(i$1).length,y=a.every(r),F=-1!==x&&a[x]?a[x]:void 0,S=-1===x;return reactExports.useEffect(()=>{S&&v();},[S]),{current:F,currentPosition:h,count:j,completed:y,atFirst:1===h,atLast:h===j,toFirst:v,toLast:c,toPrev:m,toNext:L,toRequired:g}}
76
+
77
+ function WizardCard({prevLabel:n,nextLabel:o,onBack:l,backLabel:m,onDone:c,doneLabel:d,steps:x,className:p,...u}){let{atFirst:f,atLast:h,count:v,current:g,currentPosition:b,completed:N,toNext:j,toPrev:k,toRequired:z}=useStepper(x),B=reactExports.useCallback(()=>{j()||z();},[j,z]),L={current:true,invalid:!!g&&g.invalid,prevLabel:f&&m||n||jsxRuntimeExports.jsx(a,{message:"Back",id:"iH8pgl"}),prev:f?l:k,nextLabel:h&&d||o||jsxRuntimeExports.jsx(a,{message:"Next",id:"hXzOVo"}),next:h&&N?c:B},P=g?.titleRender?.(L),R=g?.contentRender?.(L);return jsxRuntimeExports.jsxs("div",{className:clsx(p,"flex flex-col"),...u,children:[jsxRuntimeExports.jsx("p",{className:"text-slate-500 dark:text-slate-400",children:jsxRuntimeExports.jsx(a,{message:"Step {currentPosition} of {count}",id:"BEx8rG",values:{currentPosition:b,count:v}})}),P&&jsxRuntimeExports.jsx("h2",{className:"font-medium text-xl mb-4",children:P}),R]})}
78
+
79
+ function HelpCard({links:a$1,className:l,...s}){let n=a$1?.find(e=>"help"===e.rel);return n?jsxRuntimeExports.jsx("p",{...s,className:clsx("text-sm rounded-md bg-slate-100 text-slate-800 dark:bg-slate-800 dark:text-slate-400 p-3",l),children:jsxRuntimeExports.jsx(a,{message:"Having trouble? <0>Contact support</0>",id:"87VTIH",components:{0:jsxRuntimeExports.jsx("a",{role:"link",href:n.href,rel:n.rel,target:"_blank",className:"text-brand"})}})}):null}
80
+
81
+ function SignUpAccountForm({inviteCodeRequired:f=true,credentials:g,onCredentials:v,onNext:b,nextLabel:w,onPrev:h,prevLabel:C,children:H,ref:K,invalid:j,...q}){let{i18n:y,_:I}=l$3(),[k,F]=reactExports.useState(g?.email),[L,_]=reactExports.useState(g?.password),[E,N]=reactExports.useState(g?.inviteCode),P=reactExports.useRef(null),S=()=>P.current?.reset(),T=reactExports.useMemo(()=>k&&L&&(!f||E)?{email:k,password:L,inviteCode:f?E:void 0}:void 0,[k,L,E,f]);return reactExports.useEffect(()=>{v?.(T);},[T,v]),jsxRuntimeExports.jsxs(FormCardAsync,{...q,ref:mergeRefs([K,P]),invalid:j||!T,onCancel:h,cancelLabel:C,onSubmit:b,submitLabel:w,append:H,children:[f&&jsxRuntimeExports.jsx(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"Invite code",id:"6KlkHI"}),children:jsxRuntimeExports.jsx(InputText,{icon:jsxRuntimeExports.jsx(TokenIcon,{className:"w-5"}),autoFocus:true,name:"inviteCode",title:y._({id:"6KlkHI",message:"Invite code"}),placeholder:y._({id:"jxqcgY",message:"example-com-xxxxx-xxxxx"}),required:true,value:E||"",onChange:e=>{N(e.target.value||void 0),S();},enterKeyHint:"next"})}),jsxRuntimeExports.jsx(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"Email",id:"O3oNi5"}),children:jsxRuntimeExports.jsx(InputEmailAddress,{autoFocus:!f,name:"email",enterKeyHint:"next",required:true,defaultValue:k,onEmail:e=>{F(e),S();}})}),jsxRuntimeExports.jsx(Fieldset,{label:jsxRuntimeExports.jsx(a,{message:"Password",id:"8ZsakT"}),children:jsxRuntimeExports.jsx(InputNewPassword,{name:"password",enterKeyHint:"next",required:true,password:L,onPassword:e=>{_(e),S();}})})]})}
82
+
83
+ function SignUpDisclaimer({links:t,className:a$1,...c}){let n=t?.find(e=>"terms-of-service"===e.rel),l=t?.find(e=>"privacy-policy"===e.rel);return jsxRuntimeExports.jsx("p",{className:clsx("text-sm text-slate-500 dark:text-slate-400",a$1),...c,children:jsxRuntimeExports.jsx(a,{message:"By creating an account you agree to the {0} and the {1} of this service.",id:"mBUXx0",values:{0:n?jsxRuntimeExports.jsx(LinkAnchor,{className:"text-brand underline",link:n,children:jsxRuntimeExports.jsx(a,{message:"Terms of Service",id:"xowcRf"})}):jsxRuntimeExports.jsx(a,{message:"Terms of Service",id:"xowcRf"}),1:l?jsxRuntimeExports.jsx(LinkAnchor,{className:"text-brand underline",link:l,children:jsxRuntimeExports.jsx(a,{message:"Privacy Policy",id:"LcET2C"})}):jsxRuntimeExports.jsx(a,{message:"Privacy Policy",id:"LcET2C"})}})})}
84
+
85
+ let x=e=>3+e.length<=30&&e.startsWith(".")&&!e.endsWith(".");function SignUpHandleForm({domains:a$1,onNext:g,nextLabel:h,onPrev:v,prevLabel:y,handle:w,onHandle:L,invalid:N,children:C,ref:k,...z}){let{i18n:_,_:B}=l$3(),H=a$1.filter(x),S=reactExports.useRef(null),[$,j]=reactExports.useState(()=>{let e=H.findIndex(e=>w?.endsWith(e));return -1===e?0:e}),[M,V]=reactExports.useState(()=>w?.split(".")[0]||"");reactExports.useEffect(()=>{j(e=>Math.min(e,H.length-1));},[H.length]);let D=H[$]||H[0]||null,{minLength:F,maxLength:T,validateSegment:W}=function(e){let t=Math.min(18,30-e.length),a=reactExports.useCallback(e=>{let a=e.length>=3&&e.length<=t,n=/^[a-z0-9][a-z0-9-]+[a-z0-9]$/g.test(e);return {validLength:a,validCharset:n,valid:a&&n}},[t,3]);return {minLength:3,maxLength:t,validateSegment:a}}(D),I=W(M),J=D&&I.valid?`${M}${D}`:void 0;reactExports.useEffect(()=>{S.current?.reset(),L?.(J);},[L,J]);let K=reactExports.useRef(null),O=`@${M}${D}`;return jsxRuntimeExports.jsxs(FormCardAsync,{...z,ref:mergeRefs([k,S]),onCancel:v,cancelLabel:y,onSubmit:g,submitLabel:h,invalid:N||!J,append:C,children:[jsxRuntimeExports.jsxs("div",{children:[jsxRuntimeExports.jsx(b,{hasValue:!!M,valid:I.validLength,children:jsxRuntimeExports.jsx(a,{message:"Between {minLength} and {maxLength} characters",id:"4Rgp24",values:{minLength:F,maxLength:T}})}),jsxRuntimeExports.jsx(b,{hasValue:!!M,valid:I.validCharset,children:jsxRuntimeExports.jsx(a,{message:"Only letters, numbers, and hyphens",id:"yDlXDJ"})})]}),jsxRuntimeExports.jsx(InputText,{ref:K,icon:jsxRuntimeExports.jsx(AtSymbolIcon,{className:"w-5"}),name:"handle",type:"text",title:_._({id:"LX2sHe",message:"Type your desired username"}),pattern:"[a-z0-9][a-z0-9\\-]+[a-z0-9]",minLength:F,maxLength:T,autoCapitalize:"none",autoCorrect:"off",autoComplete:"off",dir:"auto",enterKeyHint:"done",autoFocus:true,required:true,value:M,onChange:e=>{let t=e.target.value.toLowerCase(),a=e.target.selectionStart,n=e.target.selectionEnd;e.target.value=t,e.target.setSelectionRange(a,n),V(t);},append:H.length>1&&jsxRuntimeExports.jsx("select",{onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),value:$,"aria-label":_._({id:"HB+TbB",message:"Select domain"}),onChange:e=>{j(Number(e.target.value)),K.current?.focus();},className:clsx("block w-full","text-sm","rounded-lg p-2","bg-white dark:bg-slate-600"),children:H.map((t,a)=>jsxRuntimeExports.jsx("option",{value:a,children:t},t))}),bellow:jsxRuntimeExports.jsx(a,{message:"Your full username will be: {0}",id:"r/b/p8",values:{0:M.length?jsxRuntimeExports.jsx("strong",{className:"text-gray-800 dark:text-gray-200",children:O}):jsxRuntimeExports.jsx("span",{"aria-hidden":true,className:"bg-gray-300 dark:bg-slate-600 rounded-md p-2 w-24"})}})}),jsxRuntimeExports.jsx(Admonition,{role:"status",children:jsxRuntimeExports.jsx("p",{className:"text-md",children:jsxRuntimeExports.jsx(a,{message:"You can change this username to any domain name you control after your account is set up.",id:"B9VwbO"})})})]})}function b({valid:l,hasValue:r,children:i,className:s,...o}){let{i18n:m,_:d}=l$3();return jsxRuntimeExports.jsxs("div",{...o,className:clsx("flex flex-row items-center gap-2",s),children:[r?jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:l?jsxRuntimeExports.jsx(CheckMarkIcon,{className:"inline-block w-4 h-4 text-success",title:m._({id:"nfagfM",message:"Valid"})}):jsxRuntimeExports.jsx(XMarkIcon,{className:"inline-block w-4 h-4 text-error",title:m._({id:"JHB/Ky",message:"Invalid"})})}):jsxRuntimeExports.jsx("div",{"aria-hidden":true,className:"w-4 h-4 flex items-center justify-center",children:jsxRuntimeExports.jsx("div",{className:"bg-gray-300 dark:bg-slate-600 rounded-full w-2 h-2"})}),jsxRuntimeExports.jsx("div",{className:"text-sm",children:i})]})}
86
+
87
+ let t="undefined"==typeof window?null:window.matchMedia("(prefers-color-scheme: dark)");function useBrowserColorScheme(){let[n,o]=reactExports.useState(t?.matches?"dark":"light");return reactExports.useEffect(()=>{if(!t)return;let e=()=>{o(t.matches?"dark":"light");};return t.addEventListener("change",e),()=>{t.removeEventListener("change",e);}},[]),n}
88
+
89
+ let i=reactExports.lazy(()=>import('./index-DXlCRM6V.js'));function SignUpHcaptchaForm({siteKey:e,token:s,onToken:l,prevLabel:p,onPrev:f,nextLabel:u,onNext:h,ref:b,invalid:d,children:x,...k}){let y=reactExports.useRef(null),L=useBrowserColorScheme(),[j,w]=reactExports.useState(s),C=reactExports.useCallback(()=>{y.current?.execute();},[]),S=reactExports.useCallback((r,e)=>{w(r),l(r,e);},[l]),U=reactExports.useCallback(r=>{if(j)return h(r);if(y.current)y.current.execute();else throw Error("Unable to load hCaptcha")},[j,h]);return jsxRuntimeExports.jsx(FormCardAsync,{...k,cancelLabel:p,onCancel:f,submitLabel:u,onSubmit:U,append:x,invalid:d||!j,children:jsxRuntimeExports.jsx(i,{theme:L,sitekey:e,onLoad:C,onVerify:S,ref:mergeRefs([b,y])})})}
90
+
91
+ function SignUpView({customizationData:{availableUserDomains:p=[],hcaptchaSiteKey:f,inviteCodeRequired:x=true,links:g}={},onValidateNewHandle:v,onDone:h,onBack:b,...R}){let{i18n:k,_:L}=l$3(),[y,N]=reactExports.useState(void 0),[w,j]=reactExports.useState(void 0),[C,P]=reactExports.useState(void 0),S=null==f?void 0:C||false,T=reactExports.useCallback(e=>{if(y&&w&&false!==S)return h({...y,handle:w,hcaptchaToken:S},e)},[y,w,S,h]);return jsxRuntimeExports.jsxs(LayoutTitlePage,{...R,title:R.title??k._({id:"IS0nrP",message:"Create Account"}),subtitle:R.subtitle??jsxRuntimeExports.jsx(a,{message:"We're so excited to have you join us!",id:"qjBGxf"}),children:[jsxRuntimeExports.jsx(WizardCard,{doneLabel:jsxRuntimeExports.jsx(a,{message:"Sign up",id:"e+RpCP"}),onBack:b,onDone:T,steps:[{invalid:!w,titleRender:()=>jsxRuntimeExports.jsx(a,{message:"Choose a username",id:"khEQ02"}),contentRender:({prev:n,prevLabel:i,next:t,nextLabel:o,invalid:r})=>jsxRuntimeExports.jsx(SignUpHandleForm,{className:"flex-grow",invalid:r,domains:p,handle:w,onHandle:j,prevLabel:i,onPrev:n,nextLabel:o,onNext:async e=>{if(w&&await v({handle:w},e),!e.aborted)return t(e)},children:jsxRuntimeExports.jsx(SignUpDisclaimer,{links:g})})},{invalid:!y,titleRender:()=>jsxRuntimeExports.jsx(a,{message:"Your account",id:"gdRnT7"}),contentRender:({prev:n,prevLabel:i,next:t,nextLabel:o,invalid:r})=>jsxRuntimeExports.jsx(SignUpAccountForm,{className:"flex-grow",invalid:r,prevLabel:i,onPrev:n,nextLabel:o,onNext:t,inviteCodeRequired:x,credentials:y,onCredentials:N,children:jsxRuntimeExports.jsx(SignUpDisclaimer,{links:g})})},null!=f&&{invalid:false===S,titleRender:()=>jsxRuntimeExports.jsx(a,{message:"Verify you are human",id:"aIar4b"}),contentRender:({prev:n,prevLabel:i,next:t,nextLabel:o,invalid:r})=>jsxRuntimeExports.jsx(SignUpHcaptchaForm,{className:"flex-grow",invalid:r,siteKey:f,token:C,onToken:P,prevLabel:i,onPrev:n,nextLabel:o,onNext:t,children:jsxRuntimeExports.jsx(SignUpDisclaimer,{links:g})})}]}),jsxRuntimeExports.jsx(HelpCard,{className:"mt-4",links:g})]})}
92
+
93
+ function WelcomeView({onSignUp:a$1,onSignIn:s,onCancel:l,...r}){let{i18n:c,_:u}=l$3();return jsxRuntimeExports.jsxs(LayoutWelcome,{...r,title:r.title??c._({id:"OX6vme",message:"Authenticate"}),children:[a$1&&jsxRuntimeExports.jsx(Button,{className:"m-1 w-60 max-w-full min-w-min",color:s?"brand":void 0,onClick:a$1,children:jsxRuntimeExports.jsx(a,{message:"Create a new account",id:"mpt9T+"})}),s&&jsxRuntimeExports.jsx(Button,{className:"m-1 w-60 max-w-full min-w-min",color:a$1?void 0:"brand",onClick:s,children:jsxRuntimeExports.jsx(a,{message:"Sign in",id:"5lWFkC"})}),l&&jsxRuntimeExports.jsx(Button,{className:"m-1 w-60 max-w-full min-w-min",onClick:l,children:jsxRuntimeExports.jsx(a,{message:"Cancel",id:"dEgA5A"})})]})}
94
+
95
+ var d,g=((d=g||{})[d.Welcome=0]="Welcome",d[d.SignUp=1]="SignUp",d[d.SignIn=2]="SignIn",d[d.ResetPassword=3]="ResetPassword",d[d.Accept=4]="Accept",d[d.Done=5]="Done",d);function AuthorizeView({authorizeData:d,customizationData:g,...f}){let{i18n:w,_:v}=l$3(),x=d?.loginHint!=null,[D,h]=reactExports.useState(2*!!x),R=useBoundDispatch(h,5),S=useBoundDispatch(h,2),k=useBoundDispatch(h,3),I=useBoundDispatch(h,1),U=useBoundDispatch(h,4),q=useBoundDispatch(h,0),[H,P]=reactExports.useState(void 0),{sessions:b,selectSub:A,doValidateNewHandle:B,doSignUp:j,doSignIn:z,doInitiatePasswordReset:C,doConfirmResetPassword:T,doAccept:y,doReject:L}=useApi({...d,onRedirected:R}),M=b.find(e=>e.selected&&!e.loginRequired);reactExports.useEffect(()=>{M&&(M.consentRequired?U():y(M.account));},[M,y,U]);let Q=!!g?.availableUserDomains?.length&&!d.loginHint,V=1===D&&!Q||4===D&&!M;if(reactExports.useEffect(()=>{V&&q();},[V,q]),0===D)return jsxRuntimeExports.jsx(WelcomeView,{...f,customizationData:g,onSignIn:S,onSignUp:Q?I:void 0,onCancel:L});if(1===D)return jsxRuntimeExports.jsx(SignUpView,{...f,customizationData:g,onValidateNewHandle:B,onBack:q,onDone:j});if(3===D)return jsxRuntimeExports.jsx(ResetPasswordView,{...f,emailDefault:H,onresetPasswordRequest:C,onResetPasswordConfirm:T,onBack:x?S:q});if(2===D)return jsxRuntimeExports.jsx(SignInView,{...f,loginHint:d.loginHint,sessions:b,selectSub:A,onSignIn:z,onBack:x?L:q,onForgotPassword:e=>{k(),P(e);}});if(4===D)return M?jsxRuntimeExports.jsx(AcceptView,{...f,clientId:d.clientId,clientMetadata:d.clientMetadata,clientTrusted:d.clientTrusted,account:M.account,scopeDetails:d.scopeDetails,onAccept:()=>y(M.account),onReject:L,onBack:x?void 0:()=>{A(null),h(2*!!b.length);}}):null;if(5===D)return jsxRuntimeExports.jsx(LayoutTitlePage,{...f,title:f.title??w._({id:"UCOd1e",message:"Login complete"}),children:jsxRuntimeExports.jsx(a,{message:"You are being redirected...",id:"qq6QQ5"})});throw Error("Unexpected application state")}
96
+
97
+ const availableLocales=readBackendData("__availableLocales");const customizationData=readBackendData("__customizationData");const authorizeData=readBackendData("__authorizeData");if(authorizeData){let a=new URL(window.location.href);"/oauth/authorize"!==a.pathname||a.searchParams.has("request_uri")||(a.search="",a.searchParams.set("client_id",authorizeData.clientId),a.searchParams.set("request_uri",authorizeData.requestUri),window.history.replaceState(history.state,"",a.pathname+a.search));}clientExports.createRoot(document.getElementById("root")).render(jsxRuntimeExports.jsx(reactExports.StrictMode,{children:jsxRuntimeExports.jsx(LocaleProvider,{availableLocales:availableLocales,children:jsxRuntimeExports.jsx(u$1,{fallbackRender:({error:t})=>jsxRuntimeExports.jsx(ErrorView,{error:t,customizationData:customizationData}),children:jsxRuntimeExports.jsx(AuthorizeView,{customizationData:customizationData,authorizeData:authorizeData})})})}));
98
+
99
+ export { authorizeData, availableLocales, customizationData };
100
+ //# sourceMappingURL=COdVzed-.js.map