hazo_auth 6.0.0 → 7.0.1

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 (256) hide show
  1. package/README.md +233 -8
  2. package/SETUP_CHECKLIST.md +240 -0
  3. package/cli-src/cli/validate.ts +4 -0
  4. package/cli-src/lib/auth/nextauth_config.ts +101 -1
  5. package/cli-src/lib/cookies_config.server.ts +1 -0
  6. package/cli-src/lib/email_verification_config.server.ts +0 -34
  7. package/cli-src/lib/forgot_password_config.server.ts +0 -34
  8. package/cli-src/lib/login_config.server.ts +14 -31
  9. package/cli-src/lib/my_settings_config.server.ts +0 -3
  10. package/cli-src/lib/oauth_config.server.ts +58 -0
  11. package/cli-src/lib/otp_config.server.ts +91 -0
  12. package/cli-src/lib/register_config.server.ts +11 -31
  13. package/cli-src/lib/reset_password_config.server.ts +0 -31
  14. package/cli-src/lib/services/email_service.ts +3 -1
  15. package/cli-src/lib/services/email_template_manifest.ts +17 -0
  16. package/cli-src/lib/services/email_templates/otp_signin_code.html +13 -0
  17. package/cli-src/lib/services/email_templates/otp_signin_code.txt +5 -0
  18. package/cli-src/lib/services/index.ts +8 -2
  19. package/cli-src/lib/services/oauth_service.ts +197 -0
  20. package/cli-src/lib/services/otp_service.ts +295 -0
  21. package/cli-src/lib/services/session_token_service.ts +4 -1
  22. package/config/hazo_auth_config.example.ini +76 -41
  23. package/dist/cli/validate.d.ts.map +1 -1
  24. package/dist/cli/validate.js +4 -0
  25. package/dist/client.d.ts +2 -0
  26. package/dist/client.d.ts.map +1 -1
  27. package/dist/client.js +1 -0
  28. package/dist/components/layouts/create_firm/index.d.ts +4 -8
  29. package/dist/components/layouts/create_firm/index.d.ts.map +1 -1
  30. package/dist/components/layouts/create_firm/index.js +3 -3
  31. package/dist/components/layouts/email_verification/index.d.ts +4 -5
  32. package/dist/components/layouts/email_verification/index.d.ts.map +1 -1
  33. package/dist/components/layouts/email_verification/index.js +4 -4
  34. package/dist/components/layouts/forgot_password/index.d.ts +4 -5
  35. package/dist/components/layouts/forgot_password/index.d.ts.map +1 -1
  36. package/dist/components/layouts/forgot_password/index.js +2 -2
  37. package/dist/components/layouts/login/index.d.ts +19 -9
  38. package/dist/components/layouts/login/index.d.ts.map +1 -1
  39. package/dist/components/layouts/login/index.js +12 -6
  40. package/dist/components/layouts/otp/index.d.ts +17 -0
  41. package/dist/components/layouts/otp/index.d.ts.map +1 -0
  42. package/dist/components/layouts/otp/index.js +16 -0
  43. package/dist/components/layouts/register/index.d.ts +11 -7
  44. package/dist/components/layouts/register/index.d.ts.map +1 -1
  45. package/dist/components/layouts/register/index.js +8 -4
  46. package/dist/components/layouts/reset_password/index.d.ts +4 -5
  47. package/dist/components/layouts/reset_password/index.d.ts.map +1 -1
  48. package/dist/components/layouts/reset_password/index.js +5 -5
  49. package/dist/components/layouts/shared/components/already_logged_in_guard.d.ts +3 -5
  50. package/dist/components/layouts/shared/components/already_logged_in_guard.d.ts.map +1 -1
  51. package/dist/components/layouts/shared/components/already_logged_in_guard.js +2 -2
  52. package/dist/components/layouts/shared/components/facebook_sign_in_button.d.ts +25 -0
  53. package/dist/components/layouts/shared/components/facebook_sign_in_button.d.ts.map +1 -0
  54. package/dist/components/layouts/shared/components/facebook_sign_in_button.js +49 -0
  55. package/dist/components/layouts/shared/components/sidebar_layout_wrapper.d.ts.map +1 -1
  56. package/dist/components/layouts/shared/components/sidebar_layout_wrapper.js +8 -3
  57. package/dist/components/layouts/shared/components/two_column_auth_layout.d.ts +3 -6
  58. package/dist/components/layouts/shared/components/two_column_auth_layout.d.ts.map +1 -1
  59. package/dist/components/layouts/shared/components/two_column_auth_layout.js +8 -5
  60. package/dist/components/otp/OTPRequestForm.d.ts +11 -0
  61. package/dist/components/otp/OTPRequestForm.d.ts.map +1 -0
  62. package/dist/components/otp/OTPRequestForm.js +42 -0
  63. package/dist/components/otp/OTPVerifyForm.d.ts +16 -0
  64. package/dist/components/otp/OTPVerifyForm.d.ts.map +1 -0
  65. package/dist/components/otp/OTPVerifyForm.js +75 -0
  66. package/dist/components/otp/index.d.ts +5 -0
  67. package/dist/components/otp/index.d.ts.map +1 -0
  68. package/dist/components/otp/index.js +2 -0
  69. package/dist/components/ui/input-otp.d.ts +35 -0
  70. package/dist/components/ui/input-otp.d.ts.map +1 -0
  71. package/dist/components/ui/input-otp.js +44 -0
  72. package/dist/consent/consent_state.d.ts +18 -0
  73. package/dist/consent/consent_state.d.ts.map +1 -0
  74. package/dist/consent/consent_state.js +29 -0
  75. package/dist/consent/cookie_consent_banner.d.ts +11 -0
  76. package/dist/consent/cookie_consent_banner.d.ts.map +1 -0
  77. package/dist/consent/cookie_consent_banner.js +40 -0
  78. package/dist/consent/gtm_mapping.d.ts +13 -0
  79. package/dist/consent/gtm_mapping.d.ts.map +1 -0
  80. package/dist/consent/gtm_mapping.js +30 -0
  81. package/dist/consent/index.d.ts +7 -0
  82. package/dist/consent/index.d.ts.map +1 -0
  83. package/dist/consent/index.js +7 -0
  84. package/dist/consent/manage_modal.d.ts +2 -0
  85. package/dist/consent/manage_modal.d.ts.map +1 -0
  86. package/dist/consent/manage_modal.js +33 -0
  87. package/dist/consent/read_consent.d.ts +15 -0
  88. package/dist/consent/read_consent.d.ts.map +1 -0
  89. package/dist/consent/read_consent.js +23 -0
  90. package/dist/consent/use_consent.d.ts +7 -0
  91. package/dist/consent/use_consent.d.ts.map +1 -0
  92. package/dist/consent/use_consent.js +55 -0
  93. package/dist/lib/auth/nextauth_config.d.ts +10 -0
  94. package/dist/lib/auth/nextauth_config.d.ts.map +1 -1
  95. package/dist/lib/auth/nextauth_config.js +80 -2
  96. package/dist/lib/cookies_config.server.d.ts +1 -0
  97. package/dist/lib/cookies_config.server.d.ts.map +1 -1
  98. package/dist/lib/cookies_config.server.js +1 -0
  99. package/dist/lib/email_verification_config.server.d.ts +0 -3
  100. package/dist/lib/email_verification_config.server.d.ts.map +1 -1
  101. package/dist/lib/email_verification_config.server.js +0 -15
  102. package/dist/lib/forgot_password_config.server.d.ts +0 -3
  103. package/dist/lib/forgot_password_config.server.d.ts.map +1 -1
  104. package/dist/lib/forgot_password_config.server.js +0 -15
  105. package/dist/lib/login_config.server.d.ts +6 -3
  106. package/dist/lib/login_config.server.d.ts.map +1 -1
  107. package/dist/lib/login_config.server.js +7 -13
  108. package/dist/lib/my_settings_config.server.d.ts +0 -1
  109. package/dist/lib/my_settings_config.server.d.ts.map +1 -1
  110. package/dist/lib/my_settings_config.server.js +0 -2
  111. package/dist/lib/oauth_config.server.d.ts +17 -0
  112. package/dist/lib/oauth_config.server.d.ts.map +1 -1
  113. package/dist/lib/oauth_config.server.js +25 -0
  114. package/dist/lib/otp_config.server.d.ts +49 -0
  115. package/dist/lib/otp_config.server.d.ts.map +1 -0
  116. package/dist/lib/otp_config.server.js +48 -0
  117. package/dist/lib/register_config.server.d.ts +2 -3
  118. package/dist/lib/register_config.server.d.ts.map +1 -1
  119. package/dist/lib/register_config.server.js +4 -13
  120. package/dist/lib/reset_password_config.server.d.ts +0 -3
  121. package/dist/lib/reset_password_config.server.d.ts.map +1 -1
  122. package/dist/lib/reset_password_config.server.js +0 -13
  123. package/dist/lib/services/email_service.d.ts +1 -1
  124. package/dist/lib/services/email_service.d.ts.map +1 -1
  125. package/dist/lib/services/email_service.js +2 -0
  126. package/dist/lib/services/email_template_manifest.d.ts.map +1 -1
  127. package/dist/lib/services/email_template_manifest.js +17 -0
  128. package/dist/lib/services/email_templates/otp_signin_code.html +13 -0
  129. package/dist/lib/services/email_templates/otp_signin_code.txt +5 -0
  130. package/dist/lib/services/index.d.ts +2 -0
  131. package/dist/lib/services/index.d.ts.map +1 -1
  132. package/dist/lib/services/index.js +1 -0
  133. package/dist/lib/services/oauth_service.d.ts +24 -0
  134. package/dist/lib/services/oauth_service.d.ts.map +1 -1
  135. package/dist/lib/services/oauth_service.js +155 -0
  136. package/dist/lib/services/otp_service.d.ts +46 -0
  137. package/dist/lib/services/otp_service.d.ts.map +1 -0
  138. package/dist/lib/services/otp_service.js +238 -0
  139. package/dist/lib/services/session_token_service.d.ts +3 -1
  140. package/dist/lib/services/session_token_service.d.ts.map +1 -1
  141. package/dist/lib/services/session_token_service.js +4 -2
  142. package/dist/page_components/create_firm.d.ts +13 -1
  143. package/dist/page_components/create_firm.d.ts.map +1 -1
  144. package/dist/page_components/create_firm.js +10 -6
  145. package/dist/page_components/forgot_password.d.ts +1 -4
  146. package/dist/page_components/forgot_password.d.ts.map +1 -1
  147. package/dist/page_components/forgot_password.js +2 -6
  148. package/dist/page_components/login.d.ts +1 -4
  149. package/dist/page_components/login.d.ts.map +1 -1
  150. package/dist/page_components/login.js +2 -6
  151. package/dist/page_components/otp.d.ts +4 -0
  152. package/dist/page_components/otp.d.ts.map +1 -0
  153. package/dist/page_components/otp.js +5 -0
  154. package/dist/page_components/register.d.ts +1 -4
  155. package/dist/page_components/register.d.ts.map +1 -1
  156. package/dist/page_components/register.js +2 -6
  157. package/dist/page_components/reset_password.d.ts +1 -4
  158. package/dist/page_components/reset_password.d.ts.map +1 -1
  159. package/dist/page_components/reset_password.js +2 -6
  160. package/dist/page_components/verify_email.d.ts +1 -4
  161. package/dist/page_components/verify_email.d.ts.map +1 -1
  162. package/dist/page_components/verify_email.js +2 -6
  163. package/dist/server/routes/index.d.ts +3 -0
  164. package/dist/server/routes/index.d.ts.map +1 -1
  165. package/dist/server/routes/index.js +4 -0
  166. package/dist/server/routes/me.d.ts.map +1 -1
  167. package/dist/server/routes/me.js +43 -1
  168. package/dist/server/routes/oauth_facebook_callback.d.ts +8 -0
  169. package/dist/server/routes/oauth_facebook_callback.d.ts.map +1 -0
  170. package/dist/server/routes/oauth_facebook_callback.js +157 -0
  171. package/dist/server/routes/oauth_google_callback.js +1 -1
  172. package/dist/server/routes/otp/request.d.ts +3 -0
  173. package/dist/server/routes/otp/request.d.ts.map +1 -0
  174. package/dist/server/routes/otp/request.js +33 -0
  175. package/dist/server/routes/otp/verify.d.ts +3 -0
  176. package/dist/server/routes/otp/verify.d.ts.map +1 -0
  177. package/dist/server/routes/otp/verify.js +58 -0
  178. package/dist/server-lib.d.ts +3 -0
  179. package/dist/server-lib.d.ts.map +1 -1
  180. package/dist/server-lib.js +2 -0
  181. package/dist/server_pages/forgot_password.d.ts +13 -17
  182. package/dist/server_pages/forgot_password.d.ts.map +1 -1
  183. package/dist/server_pages/forgot_password.js +12 -8
  184. package/dist/server_pages/forgot_password_client_wrapper.d.ts +7 -6
  185. package/dist/server_pages/forgot_password_client_wrapper.d.ts.map +1 -1
  186. package/dist/server_pages/forgot_password_client_wrapper.js +2 -2
  187. package/dist/server_pages/login.d.ts +22 -21
  188. package/dist/server_pages/login.d.ts.map +1 -1
  189. package/dist/server_pages/login.js +15 -19
  190. package/dist/server_pages/login_client_wrapper.d.ts +10 -6
  191. package/dist/server_pages/login_client_wrapper.d.ts.map +1 -1
  192. package/dist/server_pages/login_client_wrapper.js +2 -2
  193. package/dist/server_pages/my_settings.d.ts +2 -0
  194. package/dist/server_pages/my_settings.d.ts.map +1 -1
  195. package/dist/server_pages/my_settings.js +8 -2
  196. package/dist/server_pages/otp.d.ts +56 -0
  197. package/dist/server_pages/otp.d.ts.map +1 -0
  198. package/dist/server_pages/otp.js +45 -0
  199. package/dist/server_pages/register.d.ts +19 -16
  200. package/dist/server_pages/register.d.ts.map +1 -1
  201. package/dist/server_pages/register.js +15 -12
  202. package/dist/server_pages/register_client_wrapper.d.ts +10 -6
  203. package/dist/server_pages/register_client_wrapper.d.ts.map +1 -1
  204. package/dist/server_pages/register_client_wrapper.js +2 -2
  205. package/dist/server_pages/reset_password.d.ts +11 -16
  206. package/dist/server_pages/reset_password.d.ts.map +1 -1
  207. package/dist/server_pages/reset_password.js +11 -9
  208. package/dist/server_pages/reset_password_client_wrapper.d.ts +7 -6
  209. package/dist/server_pages/reset_password_client_wrapper.d.ts.map +1 -1
  210. package/dist/server_pages/reset_password_client_wrapper.js +2 -2
  211. package/dist/server_pages/verify_email.d.ts +11 -17
  212. package/dist/server_pages/verify_email.d.ts.map +1 -1
  213. package/dist/server_pages/verify_email.js +11 -8
  214. package/dist/server_pages/verify_email_client_wrapper.d.ts +7 -6
  215. package/dist/server_pages/verify_email_client_wrapper.d.ts.map +1 -1
  216. package/dist/server_pages/verify_email_client_wrapper.js +2 -2
  217. package/dist/strings/default_strings.d.ts +47 -0
  218. package/dist/strings/default_strings.d.ts.map +1 -0
  219. package/dist/strings/default_strings.js +18 -0
  220. package/dist/strings/index.d.ts +4 -0
  221. package/dist/strings/index.d.ts.map +1 -0
  222. package/dist/strings/index.js +3 -0
  223. package/dist/strings/strings_context.d.ts +12 -0
  224. package/dist/strings/strings_context.d.ts.map +1 -0
  225. package/dist/strings/strings_context.js +23 -0
  226. package/dist/strings/strings_provider.d.ts +26 -0
  227. package/dist/strings/strings_provider.d.ts.map +1 -0
  228. package/dist/strings/strings_provider.js +45 -0
  229. package/dist/theme/create_theme.d.ts +7 -0
  230. package/dist/theme/create_theme.d.ts.map +1 -0
  231. package/dist/theme/create_theme.js +97 -0
  232. package/dist/theme/hex_to_hsl.d.ts +16 -0
  233. package/dist/theme/hex_to_hsl.d.ts.map +1 -0
  234. package/dist/theme/hex_to_hsl.js +110 -0
  235. package/dist/theme/index.d.ts +4 -0
  236. package/dist/theme/index.d.ts.map +1 -0
  237. package/dist/theme/index.js +3 -0
  238. package/dist/theme/luminance.d.ts +11 -0
  239. package/dist/theme/luminance.d.ts.map +1 -0
  240. package/dist/theme/luminance.js +45 -0
  241. package/dist/theme/theme_provider.d.ts +14 -0
  242. package/dist/theme/theme_provider.d.ts.map +1 -0
  243. package/dist/theme/theme_provider.js +23 -0
  244. package/dist/theme/theme_types.d.ts +36 -0
  245. package/dist/theme/theme_types.d.ts.map +1 -0
  246. package/dist/theme/theme_types.js +1 -0
  247. package/dist/themes/index.d.ts +3 -0
  248. package/dist/themes/index.d.ts.map +1 -0
  249. package/dist/themes/index.js +2 -0
  250. package/dist/themes/preset_indigo_sunset.d.ts +3 -0
  251. package/dist/themes/preset_indigo_sunset.d.ts.map +1 -0
  252. package/dist/themes/preset_indigo_sunset.js +20 -0
  253. package/dist/themes/preset_neutral.d.ts +3 -0
  254. package/dist/themes/preset_neutral.d.ts.map +1 -0
  255. package/dist/themes/preset_neutral.js +14 -0
  256. package/package.json +36 -2
@@ -1,27 +1,30 @@
1
1
  import "server-only";
2
- import type { StaticImageData } from "next/image";
2
+ import type React from "react";
3
3
  export type RegisterPageProps = {
4
- /**
5
- * Optional image source for the visual panel
6
- * Defaults from hazo_auth_config.ini or package default image
7
- */
8
- image_src?: string | StaticImageData;
9
- /**
10
- * Optional image alt text
11
- * Defaults from hazo_auth_config.ini or "Modern building representing user registration"
12
- */
13
- image_alt?: string;
14
- /**
15
- * Optional image background color
16
- * Defaults from hazo_auth_config.ini or "#e2e8f0"
17
- */
18
- image_background_color?: string;
19
4
  /**
20
5
  * Layout mode (default: `"two_column"`). See `LoginPageProps.layout` for the
21
6
  * full description. `"form_only"` skips both AuthPageShell and
22
7
  * TwoColumnAuthLayout so the consumer's brand chrome can wrap the form.
23
8
  */
24
9
  layout?: "two_column" | "form_only";
10
+ /**
11
+ * Optional theme that controls visual appearance and layout mode.
12
+ * When `theme.layout` is `"split"`, activates the two-column split layout
13
+ * with the brand panel on the left.
14
+ */
15
+ theme?: import("../theme/theme_types").HazoAuthTheme;
16
+ /** Override the page heading. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
17
+ title?: string;
18
+ /** Override the page subtitle. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
19
+ subtitle?: string;
20
+ /** Override the submit button label. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
21
+ ctaText?: string;
22
+ /**
23
+ * Optional legal text rendered below the form.
24
+ * Accepts a string or JSX (e.g. `<a href="/tos">Terms of Service</a>`).
25
+ * Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS.
26
+ */
27
+ legalText?: React.ReactNode;
25
28
  };
26
29
  /**
27
30
  * Zero-config RegisterPage server component
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/server_pages/register.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AASrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAErC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;OAIG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACrC,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAuD5D;AAGD,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/server_pages/register.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAIrB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACpC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,sBAAsB,EAAE,aAAa,CAAC;IACrD,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CA4D5D;AAGD,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -2,12 +2,12 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
2
2
  // file_description: Zero-config RegisterPage server component - drop in and use with no configuration required
3
3
  // section: server-only-guard
4
4
  import "server-only";
5
- // section: imports
6
5
  import { get_register_config } from "../lib/register_config.server.js";
7
6
  import { get_navbar_config } from "../lib/navbar_config.server.js";
8
7
  import { RegisterClientWrapper } from "./register_client_wrapper.js";
9
8
  import { AuthPageShell } from "../components/layouts/shared/components/auth_page_shell.js";
10
9
  import { FloatingHomeLink } from "../components/layouts/shared/components/floating_home_link.js";
10
+ import { DEFAULT_STRINGS, readStrings } from "../strings.js";
11
11
  // section: component
12
12
  /**
13
13
  * Zero-config RegisterPage server component
@@ -35,22 +35,25 @@ import { FloatingHomeLink } from "../components/layouts/shared/components/floati
35
35
  * @returns Server-rendered register page
36
36
  */
37
37
  export default function RegisterPage(props) {
38
- const { image_src, image_alt, image_background_color, layout = "two_column", } = props !== null && props !== void 0 ? props : {};
39
- // Load configuration from INI file (with defaults including asset images)
38
+ var _a, _b, _c;
39
+ const { layout = "two_column", theme, title, subtitle, ctaText, legalText, } = props !== null && props !== void 0 ? props : {};
40
+ // Resolve strings: prop > HazoAuthStringsProvider > DEFAULT_STRINGS
41
+ const strings = readStrings();
42
+ const register_strings = strings.register;
43
+ const resolved_title = (_a = title !== null && title !== void 0 ? title : register_strings.title) !== null && _a !== void 0 ? _a : DEFAULT_STRINGS.register.title;
44
+ const resolved_subtitle = (_b = subtitle !== null && subtitle !== void 0 ? subtitle : register_strings.subtitle) !== null && _b !== void 0 ? _b : DEFAULT_STRINGS.register.subtitle;
45
+ const resolved_cta = (_c = ctaText !== null && ctaText !== void 0 ? ctaText : register_strings.ctaText) !== null && _c !== void 0 ? _c : DEFAULT_STRINGS.register.ctaText;
46
+ const resolved_legal = legalText !== undefined ? legalText : (register_strings.legalText || undefined);
47
+ // Load configuration from INI file (with defaults)
40
48
  const config = get_register_config();
41
- // Use props if provided, otherwise fall back to config (which includes default asset image)
42
- const finalImageSrc = image_src || config.imageSrc;
43
- const finalImageAlt = image_alt || config.imageAlt;
44
- const finalImageBackgroundColor = image_background_color || config.imageBackgroundColor;
45
- const wrapper = (_jsx(RegisterClientWrapper, { image_src: finalImageSrc, image_alt: finalImageAlt, image_background_color: finalImageBackgroundColor, showNameField: config.showNameField, passwordRequirements: config.passwordRequirements, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath, signInPath: config.signInPath, signInLabel: config.signInLabel, oauth: {
49
+ const wrapper = (_jsx(RegisterClientWrapper, { showNameField: config.showNameField, passwordRequirements: config.passwordRequirements, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath, signInPath: config.signInPath, signInLabel: config.signInLabel, oauth: {
46
50
  enable_google: config.oauth.enable_google,
47
51
  enable_email_password: config.oauth.enable_email_password,
48
52
  google_button_text: config.oauth.google_button_text,
49
53
  oauth_divider_text: config.oauth.oauth_divider_text,
50
- }, layout: layout }));
51
- // form_only mode: skip AuthPageShell so the consumer's own page chrome
52
- // hosts the form. See LoginPage for the full rationale, including the
53
- // FloatingHomeLink rendering rule below.
54
+ enable_facebook: config.oauth.enable_facebook,
55
+ facebook_button_text: config.oauth.facebook_button_text,
56
+ }, layout: layout, theme: theme, labels: { heading: resolved_title, subHeading: resolved_subtitle, submitButton: resolved_cta }, legalText: resolved_legal }));
54
57
  if (layout === "form_only") {
55
58
  const navbar = get_navbar_config();
56
59
  return (_jsxs(_Fragment, { children: [navbar.show_home_link && (_jsx(FloatingHomeLink, { path: navbar.home_path, label: navbar.home_label })), wrapper] }));
@@ -1,18 +1,22 @@
1
+ import React from "react";
1
2
  import type { RegisterConfig } from "../lib/register_config.server";
2
3
  import type { OAuthLayoutConfig } from "../components/layouts/register/index";
3
- import type { StaticImageData } from "next/image";
4
- export type RegisterClientWrapperProps = Omit<RegisterConfig, 'imageSrc' | 'imageAlt' | 'imageBackgroundColor' | 'oauth'> & {
5
- image_src?: string | StaticImageData;
6
- image_alt?: string;
7
- image_background_color?: string;
4
+ import type { HazoAuthTheme } from "../theme/theme_types";
5
+ export type RegisterClientWrapperProps = Omit<RegisterConfig, 'oauth'> & {
8
6
  /** OAuth configuration */
9
7
  oauth?: OAuthLayoutConfig;
10
8
  /** Layout mode — see RegisterLayoutProps.layout. Default `"two_column"`. */
11
9
  layout?: "two_column" | "form_only";
10
+ /** Optional theme passed through to RegisterLayout → TwoColumnAuthLayout. */
11
+ theme?: HazoAuthTheme;
12
+ /** Optional label overrides (heading, subHeading, submitButton) */
13
+ labels?: import("../components/layouts/shared/config/layout_customization").LayoutLabelOverrides;
14
+ /** Optional legal text rendered below the form (accepts ReactNode for links/JSX) */
15
+ legalText?: React.ReactNode;
12
16
  };
13
17
  /**
14
18
  * Client wrapper for RegisterLayout
15
19
  * Initializes hazo_connect data client on client side and passes config from server
16
20
  */
17
- export declare function RegisterClientWrapper({ image_src, image_alt, image_background_color, showNameField, passwordRequirements, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, signInPath, signInLabel, oauth, layout, }: RegisterClientWrapperProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function RegisterClientWrapper({ showNameField, passwordRequirements, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, signInPath, signInLabel, oauth, layout, theme, labels, legalText, }: RegisterClientWrapperProps): import("react/jsx-runtime").JSX.Element;
18
22
  //# sourceMappingURL=register_client_wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/register_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,OAAO,CAAC,GAAG;IAC1H,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACrC,CAAC;AAGF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,UAAU,EACV,WAAW,EACX,KAAK,EACL,MAAqB,GACtB,EAAE,0BAA0B,2CAuC5B"}
1
+ {"version":3,"file":"register_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/register_client_wrapper.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG;IACvE,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACpC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,0DAA0D,EAAE,oBAAoB,CAAC;IACjG,oFAAoF;IACpF,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAGF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,UAAU,EACV,WAAW,EACX,KAAK,EACL,MAAqB,EACrB,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE,0BAA0B,2CAuC5B"}
@@ -11,7 +11,7 @@ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup.js";
11
11
  * Client wrapper for RegisterLayout
12
12
  * Initializes hazo_connect data client on client side and passes config from server
13
13
  */
14
- export function RegisterClientWrapper({ image_src, image_alt, image_background_color, showNameField, passwordRequirements, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, signInPath, signInLabel, oauth, layout = "two_column", }) {
14
+ export function RegisterClientWrapper({ showNameField, passwordRequirements, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, signInPath, signInLabel, oauth, layout = "two_column", theme, labels, legalText, }) {
15
15
  const [dataClient, setDataClient] = useState(null);
16
16
  useEffect(() => {
17
17
  // Initialize hazo_connect on client side
@@ -23,5 +23,5 @@ export function RegisterClientWrapper({ image_src, image_alt, image_background_c
23
23
  if (!dataClient) {
24
24
  return (_jsx("div", { className: "cls_register_page_loading flex items-center justify-center min-h-screen", children: _jsx("div", { className: "text-slate-600 animate-pulse", children: "Loading..." }) }));
25
25
  }
26
- return (_jsx(RegisterLayout, { image_src: image_src, image_alt: image_alt, image_background_color: image_background_color, data_client: dataClient, show_name_field: showNameField, password_requirements: passwordRequirements, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, signInPath: signInPath, signInLabel: signInLabel, oauth: oauth, layout: layout }));
26
+ return (_jsx(RegisterLayout, { data_client: dataClient, show_name_field: showNameField, password_requirements: passwordRequirements, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, signInPath: signInPath, signInLabel: signInLabel, oauth: oauth, layout: layout, theme: theme, labels: labels, legalText: legalText }));
27
27
  }
@@ -1,21 +1,17 @@
1
1
  import "server-only";
2
- import type { StaticImageData } from "next/image";
3
2
  export type ResetPasswordPageProps = {
4
3
  /**
5
- * Optional image source for the visual panel
6
- * Defaults from hazo_auth_config.ini or package default image
4
+ * Optional theme that controls visual appearance and layout mode.
5
+ * When `theme.layout` is `"split"`, activates the two-column split layout
6
+ * with the brand panel on the left.
7
7
  */
8
- image_src?: string | StaticImageData;
9
- /**
10
- * Optional image alt text
11
- * Defaults to "Reset password illustration"
12
- */
13
- image_alt?: string;
14
- /**
15
- * Optional image background color
16
- * Defaults to "#f1f5f9"
17
- */
18
- image_background_color?: string;
8
+ theme?: import("../theme/theme_types").HazoAuthTheme;
9
+ /** Override the page heading. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
10
+ title?: string;
11
+ /** Override the page subtitle. Falls back to HazoAuthStringsProvider DEFAULT_STRINGS. */
12
+ subtitle?: string;
13
+ /** Override the submit button label. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
14
+ ctaText?: string;
19
15
  };
20
16
  /**
21
17
  * Zero-config ResetPasswordPage server component
@@ -38,9 +34,8 @@ export type ResetPasswordPageProps = {
38
34
  *
39
35
  * Zero configuration required - works out of the box!
40
36
  *
41
- * @param props - Optional visual customization props
42
37
  * @returns Server-rendered reset password page
43
38
  */
44
- export default function ResetPasswordPage(props: ResetPasswordPageProps): import("react/jsx-runtime").JSX.Element;
39
+ export default function ResetPasswordPage({ theme, title, subtitle, ctaText }?: ResetPasswordPageProps): import("react/jsx-runtime").JSX.Element;
45
40
  export { ResetPasswordPage };
46
41
  //# sourceMappingURL=reset_password.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset_password.d.ts","sourceRoot":"","sources":["../../src/server_pages/reset_password.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAErC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAkCtE;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"reset_password.d.ts","sourceRoot":"","sources":["../../src/server_pages/reset_password.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AASrB,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,sBAAsB,EAAE,aAAa,CAAC;IACrD,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAE,sBAA2B,2CA8BzG;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -6,6 +6,7 @@ import "server-only";
6
6
  import { get_reset_password_config } from "../lib/reset_password_config.server.js";
7
7
  import { ResetPasswordClientWrapper } from "./reset_password_client_wrapper.js";
8
8
  import { AuthPageShell } from "../components/layouts/shared/components/auth_page_shell.js";
9
+ import { DEFAULT_STRINGS, readStrings } from "../strings.js";
9
10
  // section: component
10
11
  /**
11
12
  * Zero-config ResetPasswordPage server component
@@ -28,19 +29,20 @@ import { AuthPageShell } from "../components/layouts/shared/components/auth_page
28
29
  *
29
30
  * Zero configuration required - works out of the box!
30
31
  *
31
- * @param props - Optional visual customization props
32
32
  * @returns Server-rendered reset password page
33
33
  */
34
- export default function ResetPasswordPage(props) {
35
- const { image_src, image_alt, image_background_color, } = props !== null && props !== void 0 ? props : {};
36
- // Load configuration from INI file (with defaults including asset images)
34
+ export default function ResetPasswordPage({ theme, title, subtitle, ctaText } = {}) {
35
+ var _a, _b, _c;
36
+ // Resolve strings: prop > HazoAuthStringsProvider > DEFAULT_STRINGS
37
+ const strings = readStrings();
38
+ const rp_strings = strings.reset_password;
39
+ const resolved_title = (_a = title !== null && title !== void 0 ? title : rp_strings.title) !== null && _a !== void 0 ? _a : DEFAULT_STRINGS.reset_password.title;
40
+ const resolved_subtitle = (_b = subtitle !== null && subtitle !== void 0 ? subtitle : rp_strings.subtitle) !== null && _b !== void 0 ? _b : DEFAULT_STRINGS.reset_password.subtitle;
41
+ const resolved_cta = (_c = ctaText !== null && ctaText !== void 0 ? ctaText : rp_strings.ctaText) !== null && _c !== void 0 ? _c : DEFAULT_STRINGS.reset_password.ctaText;
42
+ // Load configuration from INI file (with defaults)
37
43
  const config = get_reset_password_config();
38
- // Use props if provided, otherwise fall back to config (which includes default asset image)
39
- const finalImageSrc = image_src || config.imageSrc;
40
- const finalImageAlt = image_alt || config.imageAlt;
41
- const finalImageBackgroundColor = image_background_color || config.imageBackgroundColor;
42
44
  // Pass serializable config to client wrapper, wrapped in AuthPageShell for navbar support
43
- return (_jsx(AuthPageShell, { children: _jsx(ResetPasswordClientWrapper, { image_src: finalImageSrc, image_alt: finalImageAlt, image_background_color: finalImageBackgroundColor, passwordRequirements: config.passwordRequirements, errorMessage: config.errorMessage, successMessage: config.successMessage, loginPath: config.loginPath, forgotPasswordPath: config.forgotPasswordPath, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath }) }));
45
+ return (_jsx(AuthPageShell, { children: _jsx(ResetPasswordClientWrapper, { passwordRequirements: config.passwordRequirements, errorMessage: config.errorMessage, successMessage: config.successMessage, loginPath: config.loginPath, forgotPasswordPath: config.forgotPasswordPath, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath, theme: theme, labels: { heading: resolved_title, subHeading: resolved_subtitle, submitButton: resolved_cta } }) }));
44
46
  }
45
47
  // Named export for direct imports
46
48
  export { ResetPasswordPage };
@@ -1,13 +1,14 @@
1
1
  import type { ResetPasswordConfig } from "../lib/reset_password_config.server";
2
- import type { StaticImageData } from "next/image";
3
- export type ResetPasswordClientWrapperProps = Omit<ResetPasswordConfig, 'imageSrc' | 'imageAlt' | 'imageBackgroundColor'> & {
4
- image_src: string | StaticImageData;
5
- image_alt: string;
6
- image_background_color: string;
2
+ import type { HazoAuthTheme } from "../theme/theme_types";
3
+ export type ResetPasswordClientWrapperProps = ResetPasswordConfig & {
4
+ /** Optional theme passed through to ResetPasswordLayout → TwoColumnAuthLayout. */
5
+ theme?: HazoAuthTheme;
6
+ /** Optional label overrides (heading, subHeading, submitButton) */
7
+ labels?: import("../components/layouts/shared/config/layout_customization").LayoutLabelOverrides;
7
8
  };
8
9
  /**
9
10
  * Client wrapper for ResetPasswordLayout
10
11
  * Initializes hazo_connect data client on client side and passes config from server
11
12
  */
12
- export declare function ResetPasswordClientWrapper({ image_src, image_alt, image_background_color, passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, }: ResetPasswordClientWrapperProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ResetPasswordClientWrapper({ passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }: ResetPasswordClientWrapperProps): import("react/jsx-runtime").JSX.Element;
13
14
  //# sourceMappingURL=reset_password_client_wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reset_password_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/reset_password_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,CAAC,GAAG;IAC1H,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAGF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,EAAE,+BAA+B,2CAsCjC"}
1
+ {"version":3,"file":"reset_password_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/reset_password_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,+BAA+B,GAAG,mBAAmB,GAAG;IAClE,kFAAkF;IAClF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,0DAA0D,EAAE,oBAAoB,CAAC;CAClG,CAAC;AAGF;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,KAAK,EACL,MAAM,GACP,EAAE,+BAA+B,2CAqCjC"}
@@ -11,7 +11,7 @@ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup.js";
11
11
  * Client wrapper for ResetPasswordLayout
12
12
  * Initializes hazo_connect data client on client side and passes config from server
13
13
  */
14
- export function ResetPasswordClientWrapper({ image_src, image_alt, image_background_color, passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, }) {
14
+ export function ResetPasswordClientWrapper({ passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }) {
15
15
  const [dataClient, setDataClient] = useState(null);
16
16
  useEffect(() => {
17
17
  // Initialize hazo_connect on client side
@@ -23,5 +23,5 @@ export function ResetPasswordClientWrapper({ image_src, image_alt, image_backgro
23
23
  if (!dataClient) {
24
24
  return (_jsx("div", { className: "cls_reset_password_page_loading flex items-center justify-center min-h-screen", children: _jsx("div", { className: "text-slate-600 animate-pulse", children: "Loading..." }) }));
25
25
  }
26
- return (_jsx(ResetPasswordLayout, { image_src: image_src, image_alt: image_alt, image_background_color: image_background_color, data_client: dataClient, password_requirements: passwordRequirements, errorMessage: errorMessage, successMessage: successMessage, loginPath: loginPath, forgotPasswordPath: forgotPasswordPath, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath }));
26
+ return (_jsx(ResetPasswordLayout, { data_client: dataClient, password_requirements: passwordRequirements, errorMessage: errorMessage, successMessage: successMessage, loginPath: loginPath, forgotPasswordPath: forgotPasswordPath, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, theme: theme, labels: labels }));
27
27
  }
@@ -1,21 +1,5 @@
1
1
  import "server-only";
2
- import type { StaticImageData } from "next/image";
3
2
  export type VerifyEmailPageProps = {
4
- /**
5
- * Optional image source for the visual panel
6
- * Defaults from hazo_auth_config.ini or package default image
7
- */
8
- image_src?: string | StaticImageData;
9
- /**
10
- * Optional image alt text
11
- * Defaults to "Email verification illustration"
12
- */
13
- image_alt?: string;
14
- /**
15
- * Optional image background color
16
- * Defaults to "#f1f5f9"
17
- */
18
- image_background_color?: string;
19
3
  /**
20
4
  * Optional redirect delay in seconds after successful verification
21
5
  * Defaults from DEFAULT_EMAIL_VERIFICATION.redirectDelay
@@ -26,6 +10,16 @@ export type VerifyEmailPageProps = {
26
10
  * Defaults from DEFAULT_EMAIL_VERIFICATION.loginPath
27
11
  */
28
12
  login_path?: string;
13
+ /**
14
+ * Optional theme that controls visual appearance and layout mode.
15
+ * When `theme.layout` is `"split"`, activates the two-column split layout
16
+ * with the brand panel on the left.
17
+ */
18
+ theme?: import("../theme/theme_types").HazoAuthTheme;
19
+ /** Override the page heading. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
20
+ title?: string;
21
+ /** Override the page subtitle. Falls back to HazoAuthStringsProvider → DEFAULT_STRINGS. */
22
+ subtitle?: string;
29
23
  };
30
24
  /**
31
25
  * Zero-config VerifyEmailPage server component
@@ -47,7 +41,7 @@ export type VerifyEmailPageProps = {
47
41
  *
48
42
  * Zero configuration required - works out of the box!
49
43
  *
50
- * @param props - Optional visual and behavior customization props
44
+ * @param props - Optional behavior customization props
51
45
  * @returns Server-rendered email verification page
52
46
  */
53
47
  export default function VerifyEmailPage(props: VerifyEmailPageProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"verify_email.d.ts","sourceRoot":"","sources":["../../src/server_pages/verify_email.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAQrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IAErC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAiClE;AAGD,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"verify_email.d.ts","sourceRoot":"","sources":["../../src/server_pages/verify_email.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAUrB,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,sBAAsB,EAAE,aAAa,CAAC;IACrD,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,oBAAoB,2CAkClE;AAGD,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -7,6 +7,7 @@ import { get_email_verification_config } from "../lib/email_verification_config.
7
7
  import { VerifyEmailClientWrapper } from "./verify_email_client_wrapper.js";
8
8
  import { AuthPageShell } from "../components/layouts/shared/components/auth_page_shell.js";
9
9
  import { DEFAULT_EMAIL_VERIFICATION } from "../lib/config/default_config.js";
10
+ import { DEFAULT_STRINGS, readStrings } from "../strings.js";
10
11
  // section: component
11
12
  /**
12
13
  * Zero-config VerifyEmailPage server component
@@ -28,19 +29,21 @@ import { DEFAULT_EMAIL_VERIFICATION } from "../lib/config/default_config.js";
28
29
  *
29
30
  * Zero configuration required - works out of the box!
30
31
  *
31
- * @param props - Optional visual and behavior customization props
32
+ * @param props - Optional behavior customization props
32
33
  * @returns Server-rendered email verification page
33
34
  */
34
35
  export default function VerifyEmailPage(props) {
35
- const { image_src, image_alt, image_background_color, redirect_delay = DEFAULT_EMAIL_VERIFICATION.redirectDelay, login_path = DEFAULT_EMAIL_VERIFICATION.loginPath, } = props !== null && props !== void 0 ? props : {};
36
- // Load configuration from INI file (with defaults including asset images)
36
+ var _a, _b;
37
+ const { redirect_delay = DEFAULT_EMAIL_VERIFICATION.redirectDelay, login_path = DEFAULT_EMAIL_VERIFICATION.loginPath, theme, title, subtitle, } = props !== null && props !== void 0 ? props : {};
38
+ // Resolve strings: prop > HazoAuthStringsProvider > DEFAULT_STRINGS
39
+ const strings = readStrings();
40
+ const ve_strings = strings.verify_email;
41
+ const resolved_title = (_a = title !== null && title !== void 0 ? title : ve_strings.title) !== null && _a !== void 0 ? _a : DEFAULT_STRINGS.verify_email.title;
42
+ const resolved_subtitle = (_b = subtitle !== null && subtitle !== void 0 ? subtitle : ve_strings.subtitle) !== null && _b !== void 0 ? _b : DEFAULT_STRINGS.verify_email.subtitle;
43
+ // Load configuration from INI file (with defaults)
37
44
  const config = get_email_verification_config();
38
- // Use props if provided, otherwise fall back to config (which includes default asset image)
39
- const finalImageSrc = image_src || config.imageSrc;
40
- const finalImageAlt = image_alt || config.imageAlt;
41
- const finalImageBackgroundColor = image_background_color || config.imageBackgroundColor;
42
45
  // Pass serializable config to client wrapper, wrapped in AuthPageShell for navbar support
43
- return (_jsx(AuthPageShell, { children: _jsx(VerifyEmailClientWrapper, { image_src: finalImageSrc, image_alt: finalImageAlt, image_background_color: finalImageBackgroundColor, redirect_delay: redirect_delay, login_path: login_path, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath }) }));
46
+ return (_jsx(AuthPageShell, { children: _jsx(VerifyEmailClientWrapper, { redirect_delay: redirect_delay, login_path: login_path, alreadyLoggedInMessage: config.alreadyLoggedInMessage, showLogoutButton: config.showLogoutButton, showReturnHomeButton: config.showReturnHomeButton, returnHomeButtonLabel: config.returnHomeButtonLabel, returnHomePath: config.returnHomePath, theme: theme, labels: { heading: resolved_title, subHeading: resolved_subtitle } }) }));
44
47
  }
45
48
  // Named export for direct imports
46
49
  export { VerifyEmailPage };
@@ -1,15 +1,16 @@
1
1
  import type { EmailVerificationConfig } from "../lib/email_verification_config.server";
2
- import type { StaticImageData } from "next/image";
3
- export type VerifyEmailClientWrapperProps = Omit<EmailVerificationConfig, 'imageSrc' | 'imageAlt' | 'imageBackgroundColor'> & {
4
- image_src: string | StaticImageData;
5
- image_alt: string;
6
- image_background_color: string;
2
+ import type { HazoAuthTheme } from "../theme/theme_types";
3
+ export type VerifyEmailClientWrapperProps = EmailVerificationConfig & {
7
4
  redirect_delay: number;
8
5
  login_path: string;
6
+ /** Optional theme passed through to EmailVerificationLayout → TwoColumnAuthLayout. */
7
+ theme?: HazoAuthTheme;
8
+ /** Optional label overrides (heading, subHeading) */
9
+ labels?: import("../components/layouts/shared/config/layout_customization").LayoutLabelOverrides;
9
10
  };
10
11
  /**
11
12
  * Client wrapper for EmailVerificationLayout
12
13
  * Initializes hazo_connect data client on client side and passes config from server
13
14
  */
14
- export declare function VerifyEmailClientWrapper({ image_src, image_alt, image_background_color, redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, }: VerifyEmailClientWrapperProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function VerifyEmailClientWrapper({ redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }: VerifyEmailClientWrapperProps): import("react/jsx-runtime").JSX.Element;
15
16
  //# sourceMappingURL=verify_email_client_wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify_email_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/verify_email_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAGvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,CAAC,GAAG;IAC5H,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,EAAE,6BAA6B,2CAoC/B"}
1
+ {"version":3,"file":"verify_email_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/verify_email_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,MAAM,6BAA6B,GAAG,uBAAuB,GAAG;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,0DAA0D,EAAE,oBAAoB,CAAC;CAClG,CAAC;AAGF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,KAAK,EACL,MAAM,GACP,EAAE,6BAA6B,2CAmC/B"}
@@ -11,7 +11,7 @@ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup.js";
11
11
  * Client wrapper for EmailVerificationLayout
12
12
  * Initializes hazo_connect data client on client side and passes config from server
13
13
  */
14
- export function VerifyEmailClientWrapper({ image_src, image_alt, image_background_color, redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, }) {
14
+ export function VerifyEmailClientWrapper({ redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }) {
15
15
  const [dataClient, setDataClient] = useState(null);
16
16
  useEffect(() => {
17
17
  // Initialize hazo_connect on client side
@@ -23,5 +23,5 @@ export function VerifyEmailClientWrapper({ image_src, image_alt, image_backgroun
23
23
  if (!dataClient) {
24
24
  return (_jsx("div", { className: "cls_verify_email_page_loading flex items-center justify-center min-h-screen", children: _jsx("div", { className: "text-slate-600 animate-pulse", children: "Loading..." }) }));
25
25
  }
26
- return (_jsx(EmailVerificationLayout, { image_src: image_src, image_alt: image_alt, image_background_color: image_background_color, data_client: dataClient, redirect_delay: redirect_delay, login_path: login_path, sign_in_label: "Back to login", already_logged_in_message: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath }));
26
+ return (_jsx(EmailVerificationLayout, { data_client: dataClient, redirect_delay: redirect_delay, login_path: login_path, sign_in_label: "Back to login", already_logged_in_message: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, theme: theme, labels: labels }));
27
27
  }
@@ -0,0 +1,47 @@
1
+ import type { ReactNode } from "react";
2
+ export interface HazoAuthStrings {
3
+ login: {
4
+ title: string;
5
+ subtitle: string;
6
+ ctaText: string;
7
+ legalText: ReactNode;
8
+ errors?: {
9
+ link_blocked_unverified?: string;
10
+ };
11
+ };
12
+ register: {
13
+ title: string;
14
+ subtitle: string;
15
+ ctaText: string;
16
+ legalText: ReactNode;
17
+ };
18
+ forgot_password: {
19
+ title: string;
20
+ subtitle: string;
21
+ ctaText: string;
22
+ };
23
+ reset_password: {
24
+ title: string;
25
+ subtitle: string;
26
+ ctaText: string;
27
+ };
28
+ verify_email: {
29
+ title: string;
30
+ subtitle: string;
31
+ };
32
+ otp: {
33
+ title: string;
34
+ subtitle: string;
35
+ ctaText: string;
36
+ };
37
+ my_settings: {
38
+ title: string;
39
+ };
40
+ create_firm: {
41
+ title: string;
42
+ subtitle: string;
43
+ ctaText: string;
44
+ };
45
+ }
46
+ export declare const DEFAULT_STRINGS: HazoAuthStrings;
47
+ //# sourceMappingURL=default_strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default_strings.d.ts","sourceRoot":"","sources":["../../src/strings/default_strings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,SAAS,CAAC;QACrB,MAAM,CAAC,EAAE;YACP,uBAAuB,CAAC,EAAE,MAAM,CAAC;SAClC,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IACrF,eAAe,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACtE,cAAc,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,WAAW,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,eAAO,MAAM,eAAe,EAAE,eAiB7B,CAAC"}
@@ -0,0 +1,18 @@
1
+ export const DEFAULT_STRINGS = {
2
+ login: {
3
+ title: "Sign in to your account",
4
+ subtitle: "Enter your credentials to access your secure workspace.",
5
+ ctaText: "Login",
6
+ legalText: "",
7
+ errors: {
8
+ link_blocked_unverified: "This email is already registered but not verified. Please verify your email before linking a social account.",
9
+ },
10
+ },
11
+ register: { title: "Create your hazo account", subtitle: "Secure your access with editable fields powered by shadcn components.", ctaText: "Register", legalText: "" },
12
+ forgot_password: { title: "Forgot your password?", subtitle: "Enter your email address and we'll send you a link to reset your password.", ctaText: "Send reset link" },
13
+ reset_password: { title: "Reset your password", subtitle: "Enter your new password below.", ctaText: "Reset password" },
14
+ verify_email: { title: "Email verification", subtitle: "Verifying your email address..." },
15
+ otp: { title: "Sign in with email code", subtitle: "Enter the code we sent to your email", ctaText: "Verify" },
16
+ my_settings: { title: "Account Settings" },
17
+ create_firm: { title: "Create Your Firm", subtitle: "Set up your organisation to get started", ctaText: "Create Firm" },
18
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./default_strings.js";
2
+ export * from "./strings_provider.js";
3
+ export { readStrings } from "./strings_context.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/strings/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./default_strings.js";
2
+ export * from "./strings_provider.js";
3
+ export { readStrings } from "./strings_context.js";
@@ -0,0 +1,12 @@
1
+ import { type HazoAuthStrings } from "./default_strings.js";
2
+ /**
3
+ * Write the resolved strings into the per-request store.
4
+ * Called by HazoAuthStringsProvider during the render of its parent Server Component.
5
+ */
6
+ export declare function setStrings(strings: HazoAuthStrings): void;
7
+ /**
8
+ * Read the current resolved strings from the per-request store.
9
+ * Falls back to DEFAULT_STRINGS if HazoAuthStringsProvider was not mounted.
10
+ */
11
+ export declare function readStrings(): HazoAuthStrings;
12
+ //# sourceMappingURL=strings_context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings_context.d.ts","sourceRoot":"","sources":["../../src/strings/strings_context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAS1E;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,eAAe,CAE7C"}
@@ -0,0 +1,23 @@
1
+ // file_description: per-request strings cache using React cache() for Server Component support
2
+ import { cache } from "react";
3
+ import { DEFAULT_STRINGS } from "./default_strings.js";
4
+ /**
5
+ * Per-request store for resolved strings.
6
+ * React.cache() creates one instance per request in the React tree.
7
+ * Server Components can read this without prop-drilling.
8
+ */
9
+ const getStringsStore = cache(() => ({ strings: DEFAULT_STRINGS }));
10
+ /**
11
+ * Write the resolved strings into the per-request store.
12
+ * Called by HazoAuthStringsProvider during the render of its parent Server Component.
13
+ */
14
+ export function setStrings(strings) {
15
+ getStringsStore().strings = strings;
16
+ }
17
+ /**
18
+ * Read the current resolved strings from the per-request store.
19
+ * Falls back to DEFAULT_STRINGS if HazoAuthStringsProvider was not mounted.
20
+ */
21
+ export function readStrings() {
22
+ return getStringsStore().strings;
23
+ }
@@ -0,0 +1,26 @@
1
+ import type React from "react";
2
+ import type { HazoAuthStrings } from "./default_strings";
3
+ type DeepPartial<T> = T extends object ? {
4
+ [K in keyof T]?: DeepPartial<T[K]>;
5
+ } : T;
6
+ /**
7
+ * Server Component that registers custom string overrides for all descendant
8
+ * hazo_auth page components rendered in the same React request.
9
+ *
10
+ * Usage:
11
+ * ```tsx
12
+ * <HazoAuthStringsProvider
13
+ * strings={{ login: { title: "Welcome back", ctaText: "Log in" } }}
14
+ * >
15
+ * <LoginPage />
16
+ * </HazoAuthStringsProvider>
17
+ * ```
18
+ *
19
+ * Any field not supplied falls back to DEFAULT_STRINGS.
20
+ */
21
+ export declare function HazoAuthStringsProvider({ strings, children, }: {
22
+ strings?: DeepPartial<HazoAuthStrings>;
23
+ children: React.ReactNode;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export {};
26
+ //# sourceMappingURL=strings_provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings_provider.d.ts","sourceRoot":"","sources":["../../src/strings/strings_provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAMzD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAClC;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AA2BN;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAMA"}