hazo_auth 7.0.1 → 7.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 (210) hide show
  1. package/README.md +73 -330
  2. package/SETUP_CHECKLIST.md +28 -248
  3. package/cli-src/cli/generate.ts +1 -10
  4. package/cli-src/cli/validate.ts +0 -4
  5. package/cli-src/lib/auth/auth_types.ts +12 -21
  6. package/cli-src/lib/auth/hazo_get_tenant_auth.server.ts +24 -25
  7. package/cli-src/lib/auth/index.ts +2 -2
  8. package/cli-src/lib/auth/nextauth_config.ts +27 -67
  9. package/cli-src/lib/auth/with_auth.server.ts +15 -15
  10. package/cli-src/lib/config/default_config.ts +8 -0
  11. package/cli-src/lib/cookies_config.server.ts +1 -1
  12. package/cli-src/lib/email_verification_config.server.ts +34 -0
  13. package/cli-src/lib/forgot_password_config.server.ts +34 -0
  14. package/cli-src/lib/login_config.server.ts +29 -14
  15. package/cli-src/lib/my_settings_config.server.ts +3 -0
  16. package/cli-src/lib/oauth_config.server.ts +31 -57
  17. package/cli-src/lib/register_config.server.ts +35 -11
  18. package/cli-src/lib/reset_password_config.server.ts +31 -0
  19. package/cli-src/lib/services/email_template_manifest.ts +0 -17
  20. package/cli-src/lib/services/index.ts +2 -8
  21. package/cli-src/lib/services/oauth_service.ts +74 -128
  22. package/cli-src/lib/services/otp_service.ts +7 -2
  23. package/cli-src/lib/services/session_token_service.ts +0 -2
  24. package/config/hazo_auth_config.example.ini +41 -76
  25. package/dist/cli/generate.d.ts.map +1 -1
  26. package/dist/cli/generate.js +1 -10
  27. package/dist/cli/validate.d.ts.map +1 -1
  28. package/dist/cli/validate.js +0 -4
  29. package/dist/client.d.ts +0 -2
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +0 -1
  32. package/dist/components/layouts/create_firm/index.d.ts +8 -4
  33. package/dist/components/layouts/create_firm/index.d.ts.map +1 -1
  34. package/dist/components/layouts/create_firm/index.js +3 -3
  35. package/dist/components/layouts/email_verification/index.d.ts +5 -4
  36. package/dist/components/layouts/email_verification/index.d.ts.map +1 -1
  37. package/dist/components/layouts/email_verification/index.js +4 -4
  38. package/dist/components/layouts/forgot_password/index.d.ts +5 -4
  39. package/dist/components/layouts/forgot_password/index.d.ts.map +1 -1
  40. package/dist/components/layouts/forgot_password/index.js +2 -2
  41. package/dist/components/layouts/login/index.d.ts +13 -19
  42. package/dist/components/layouts/login/index.d.ts.map +1 -1
  43. package/dist/components/layouts/login/index.js +8 -11
  44. package/dist/components/layouts/otp/index.d.ts +5 -1
  45. package/dist/components/layouts/otp/index.d.ts.map +1 -1
  46. package/dist/components/layouts/otp/index.js +2 -2
  47. package/dist/components/layouts/register/index.d.ts +11 -11
  48. package/dist/components/layouts/register/index.d.ts.map +1 -1
  49. package/dist/components/layouts/register/index.js +6 -7
  50. package/dist/components/layouts/reset_password/index.d.ts +5 -4
  51. package/dist/components/layouts/reset_password/index.d.ts.map +1 -1
  52. package/dist/components/layouts/reset_password/index.js +5 -5
  53. package/dist/components/layouts/shared/components/already_logged_in_guard.d.ts +5 -3
  54. package/dist/components/layouts/shared/components/already_logged_in_guard.d.ts.map +1 -1
  55. package/dist/components/layouts/shared/components/already_logged_in_guard.js +2 -2
  56. package/dist/components/layouts/shared/components/facebook_sign_in_button.d.ts +2 -6
  57. package/dist/components/layouts/shared/components/facebook_sign_in_button.d.ts.map +1 -1
  58. package/dist/components/layouts/shared/components/facebook_sign_in_button.js +11 -13
  59. package/dist/components/layouts/shared/components/sidebar_layout_wrapper.d.ts.map +1 -1
  60. package/dist/components/layouts/shared/components/sidebar_layout_wrapper.js +3 -8
  61. package/dist/components/layouts/shared/components/two_column_auth_layout.d.ts +6 -3
  62. package/dist/components/layouts/shared/components/two_column_auth_layout.d.ts.map +1 -1
  63. package/dist/components/layouts/shared/components/two_column_auth_layout.js +5 -8
  64. package/dist/components/layouts/shared/index.d.ts +2 -0
  65. package/dist/components/layouts/shared/index.d.ts.map +1 -1
  66. package/dist/components/layouts/shared/index.js +1 -0
  67. package/dist/components/layouts/user_management/index.d.ts.map +1 -1
  68. package/dist/components/layouts/user_management/index.js +39 -2
  69. package/dist/index.d.ts +1 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/lib/auth/auth_types.d.ts +12 -13
  72. package/dist/lib/auth/auth_types.d.ts.map +1 -1
  73. package/dist/lib/auth/auth_types.js +0 -8
  74. package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts +7 -8
  75. package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts.map +1 -1
  76. package/dist/lib/auth/hazo_get_tenant_auth.server.js +22 -23
  77. package/dist/lib/auth/index.d.ts +2 -2
  78. package/dist/lib/auth/index.d.ts.map +1 -1
  79. package/dist/lib/auth/nextauth_config.d.ts +0 -10
  80. package/dist/lib/auth/nextauth_config.d.ts.map +1 -1
  81. package/dist/lib/auth/nextauth_config.js +23 -52
  82. package/dist/lib/auth/with_auth.server.d.ts +13 -13
  83. package/dist/lib/auth/with_auth.server.d.ts.map +1 -1
  84. package/dist/lib/auth/with_auth.server.js +2 -2
  85. package/dist/lib/config/default_config.d.ts +16 -0
  86. package/dist/lib/config/default_config.d.ts.map +1 -1
  87. package/dist/lib/config/default_config.js +8 -0
  88. package/dist/lib/cookies_config.server.d.ts +1 -1
  89. package/dist/lib/cookies_config.server.js +1 -1
  90. package/dist/lib/email_verification_config.server.d.ts +3 -0
  91. package/dist/lib/email_verification_config.server.d.ts.map +1 -1
  92. package/dist/lib/email_verification_config.server.js +15 -0
  93. package/dist/lib/forgot_password_config.server.d.ts +3 -0
  94. package/dist/lib/forgot_password_config.server.d.ts.map +1 -1
  95. package/dist/lib/forgot_password_config.server.js +15 -0
  96. package/dist/lib/login_config.server.d.ts +3 -6
  97. package/dist/lib/login_config.server.d.ts.map +1 -1
  98. package/dist/lib/login_config.server.js +11 -7
  99. package/dist/lib/my_settings_config.server.d.ts +1 -0
  100. package/dist/lib/my_settings_config.server.d.ts.map +1 -1
  101. package/dist/lib/my_settings_config.server.js +2 -0
  102. package/dist/lib/oauth_config.server.d.ts +8 -17
  103. package/dist/lib/oauth_config.server.d.ts.map +1 -1
  104. package/dist/lib/oauth_config.server.js +10 -25
  105. package/dist/lib/register_config.server.d.ts +5 -2
  106. package/dist/lib/register_config.server.d.ts.map +1 -1
  107. package/dist/lib/register_config.server.js +15 -4
  108. package/dist/lib/reset_password_config.server.d.ts +3 -0
  109. package/dist/lib/reset_password_config.server.d.ts.map +1 -1
  110. package/dist/lib/reset_password_config.server.js +13 -0
  111. package/dist/lib/services/email_template_manifest.d.ts.map +1 -1
  112. package/dist/lib/services/email_template_manifest.js +0 -17
  113. package/dist/lib/services/index.d.ts +0 -2
  114. package/dist/lib/services/index.d.ts.map +1 -1
  115. package/dist/lib/services/index.js +0 -1
  116. package/dist/lib/services/oauth_service.d.ts +11 -22
  117. package/dist/lib/services/oauth_service.d.ts.map +1 -1
  118. package/dist/lib/services/oauth_service.js +63 -96
  119. package/dist/lib/services/otp_service.d.ts +1 -1
  120. package/dist/lib/services/otp_service.d.ts.map +1 -1
  121. package/dist/lib/services/otp_service.js +6 -1
  122. package/dist/lib/services/session_token_service.d.ts +0 -2
  123. package/dist/lib/services/session_token_service.d.ts.map +1 -1
  124. package/dist/lib/services/session_token_service.js +0 -2
  125. package/dist/page_components/create_firm.d.ts +1 -13
  126. package/dist/page_components/create_firm.d.ts.map +1 -1
  127. package/dist/page_components/create_firm.js +6 -10
  128. package/dist/page_components/forgot_password.d.ts +4 -1
  129. package/dist/page_components/forgot_password.d.ts.map +1 -1
  130. package/dist/page_components/forgot_password.js +6 -2
  131. package/dist/page_components/login.d.ts +4 -1
  132. package/dist/page_components/login.d.ts.map +1 -1
  133. package/dist/page_components/login.js +6 -2
  134. package/dist/page_components/register.d.ts +4 -1
  135. package/dist/page_components/register.d.ts.map +1 -1
  136. package/dist/page_components/register.js +6 -2
  137. package/dist/page_components/reset_password.d.ts +4 -1
  138. package/dist/page_components/reset_password.d.ts.map +1 -1
  139. package/dist/page_components/reset_password.js +6 -2
  140. package/dist/page_components/verify_email.d.ts +4 -1
  141. package/dist/page_components/verify_email.d.ts.map +1 -1
  142. package/dist/page_components/verify_email.js +6 -2
  143. package/dist/server/routes/assets.d.ts +8 -0
  144. package/dist/server/routes/assets.d.ts.map +1 -0
  145. package/dist/server/routes/assets.js +38 -0
  146. package/dist/server/routes/consent_me.d.ts +4 -0
  147. package/dist/server/routes/consent_me.d.ts.map +1 -0
  148. package/dist/server/routes/consent_me.js +15 -0
  149. package/dist/server/routes/index.d.ts +6 -4
  150. package/dist/server/routes/index.d.ts.map +1 -1
  151. package/dist/server/routes/index.js +9 -5
  152. package/dist/server/routes/me.d.ts.map +1 -1
  153. package/dist/server/routes/me.js +1 -43
  154. package/dist/server/routes/oauth_facebook_callback.d.ts +1 -1
  155. package/dist/server/routes/oauth_facebook_callback.d.ts.map +1 -1
  156. package/dist/server/routes/oauth_facebook_callback.js +8 -1
  157. package/dist/server/routes/oauth_google_callback.js +1 -1
  158. package/dist/server/routes/otp/verify.js +2 -2
  159. package/dist/server/routes/strings_defaults.d.ts +4 -0
  160. package/dist/server/routes/strings_defaults.d.ts.map +1 -0
  161. package/dist/server/routes/strings_defaults.js +7 -0
  162. package/dist/server/routes/user_management_users.d.ts +11 -0
  163. package/dist/server/routes/user_management_users.d.ts.map +1 -1
  164. package/dist/server/routes/user_management_users.js +50 -0
  165. package/dist/server-lib.d.ts +0 -3
  166. package/dist/server-lib.d.ts.map +1 -1
  167. package/dist/server-lib.js +0 -2
  168. package/dist/server_pages/forgot_password.d.ts +18 -14
  169. package/dist/server_pages/forgot_password.d.ts.map +1 -1
  170. package/dist/server_pages/forgot_password.js +14 -12
  171. package/dist/server_pages/forgot_password_client_wrapper.d.ts +8 -7
  172. package/dist/server_pages/forgot_password_client_wrapper.d.ts.map +1 -1
  173. package/dist/server_pages/forgot_password_client_wrapper.js +2 -2
  174. package/dist/server_pages/index.d.ts +2 -0
  175. package/dist/server_pages/index.d.ts.map +1 -1
  176. package/dist/server_pages/index.js +1 -0
  177. package/dist/server_pages/login.d.ts +22 -23
  178. package/dist/server_pages/login.d.ts.map +1 -1
  179. package/dist/server_pages/login.js +27 -14
  180. package/dist/server_pages/login_client_wrapper.d.ts +9 -10
  181. package/dist/server_pages/login_client_wrapper.d.ts.map +1 -1
  182. package/dist/server_pages/login_client_wrapper.js +2 -2
  183. package/dist/server_pages/my_settings.d.ts +1 -3
  184. package/dist/server_pages/my_settings.d.ts.map +1 -1
  185. package/dist/server_pages/my_settings.js +2 -9
  186. package/dist/server_pages/register.d.ts +17 -20
  187. package/dist/server_pages/register.d.ts.map +1 -1
  188. package/dist/server_pages/register.js +20 -15
  189. package/dist/server_pages/register_client_wrapper.d.ts +8 -10
  190. package/dist/server_pages/register_client_wrapper.d.ts.map +1 -1
  191. package/dist/server_pages/register_client_wrapper.js +2 -2
  192. package/dist/server_pages/reset_password.d.ts +16 -11
  193. package/dist/server_pages/reset_password.d.ts.map +1 -1
  194. package/dist/server_pages/reset_password.js +14 -10
  195. package/dist/server_pages/reset_password_client_wrapper.d.ts +8 -7
  196. package/dist/server_pages/reset_password_client_wrapper.d.ts.map +1 -1
  197. package/dist/server_pages/reset_password_client_wrapper.js +2 -2
  198. package/dist/server_pages/verify_email.d.ts +18 -12
  199. package/dist/server_pages/verify_email.d.ts.map +1 -1
  200. package/dist/server_pages/verify_email.js +13 -11
  201. package/dist/server_pages/verify_email_client_wrapper.d.ts +8 -7
  202. package/dist/server_pages/verify_email_client_wrapper.d.ts.map +1 -1
  203. package/dist/server_pages/verify_email_client_wrapper.js +2 -2
  204. package/dist/themes/index.d.ts +0 -1
  205. package/dist/themes/index.d.ts.map +1 -1
  206. package/dist/themes/index.js +1 -1
  207. package/package.json +26 -40
  208. package/dist/themes/preset_indigo_sunset.d.ts +0 -3
  209. package/dist/themes/preset_indigo_sunset.d.ts.map +0 -1
  210. package/dist/themes/preset_indigo_sunset.js +0 -20
@@ -1,14 +1,15 @@
1
1
  import type { ResetPasswordConfig } from "../lib/reset_password_config.server";
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;
2
+ import type { LayoutLabelOverrides } from "../components/layouts/shared/config/layout_customization";
3
+ import type { StaticImageData } from "next/image";
4
+ export type ResetPasswordClientWrapperProps = Omit<ResetPasswordConfig, 'imageSrc' | 'imageAlt' | 'imageBackgroundColor'> & {
5
+ image_src: string | StaticImageData;
6
+ image_alt: string;
7
+ image_background_color: string;
8
+ labels?: LayoutLabelOverrides;
8
9
  };
9
10
  /**
10
11
  * Client wrapper for ResetPasswordLayout
11
12
  * Initializes hazo_connect data client on client side and passes config from server
12
13
  */
13
- export declare function ResetPasswordClientWrapper({ passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }: ResetPasswordClientWrapperProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function ResetPasswordClientWrapper({ image_src, image_alt, image_background_color, passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, labels, }: ResetPasswordClientWrapperProps): import("react/jsx-runtime").JSX.Element;
14
15
  //# 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;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"}
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,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAGrG,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;IAC/B,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,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,EACd,MAAM,GACP,EAAE,+BAA+B,2CAuCjC"}
@@ -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({ passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }) {
14
+ export function ResetPasswordClientWrapper({ image_src, image_alt, image_background_color, passwordRequirements, errorMessage, successMessage, loginPath, forgotPasswordPath, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, 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({ passwordRequirements, errorMessage,
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, { 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 }));
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, labels: labels }));
27
27
  }
@@ -1,5 +1,21 @@
1
1
  import "server-only";
2
+ import type { StaticImageData } from "next/image";
2
3
  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;
3
19
  /**
4
20
  * Optional redirect delay in seconds after successful verification
5
21
  * Defaults from DEFAULT_EMAIL_VERIFICATION.redirectDelay
@@ -10,16 +26,6 @@ export type VerifyEmailPageProps = {
10
26
  * Defaults from DEFAULT_EMAIL_VERIFICATION.loginPath
11
27
  */
12
28
  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;
23
29
  };
24
30
  /**
25
31
  * Zero-config VerifyEmailPage server component
@@ -41,9 +47,9 @@ export type VerifyEmailPageProps = {
41
47
  *
42
48
  * Zero configuration required - works out of the box!
43
49
  *
44
- * @param props - Optional behavior customization props
50
+ * @param props - Optional visual and behavior customization props
45
51
  * @returns Server-rendered email verification page
46
52
  */
47
- export default function VerifyEmailPage(props: VerifyEmailPageProps): import("react/jsx-runtime").JSX.Element;
53
+ export default function VerifyEmailPage({ image_src, image_alt, image_background_color, redirect_delay, login_path, }?: VerifyEmailPageProps): import("react/jsx-runtime").JSX.Element;
48
54
  export { VerifyEmailPage };
49
55
  //# sourceMappingURL=verify_email.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"verify_email.d.ts","sourceRoot":"","sources":["../../src/server_pages/verify_email.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AASrB,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,EACtC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,cAAyD,EACzD,UAAiD,GAClD,GAAE,oBAAyB,2CAiC3B;AAGD,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -5,9 +5,9 @@ import "server-only";
5
5
  // section: imports
6
6
  import { get_email_verification_config } from "../lib/email_verification_config.server.js";
7
7
  import { VerifyEmailClientWrapper } from "./verify_email_client_wrapper.js";
8
+ import { readStrings } from "../strings.js";
8
9
  import { AuthPageShell } from "../components/layouts/shared/components/auth_page_shell.js";
9
10
  import { DEFAULT_EMAIL_VERIFICATION } from "../lib/config/default_config.js";
10
- import { DEFAULT_STRINGS, readStrings } from "../strings.js";
11
11
  // section: component
12
12
  /**
13
13
  * Zero-config VerifyEmailPage server component
@@ -29,21 +29,23 @@ import { DEFAULT_STRINGS, readStrings } from "../strings.js";
29
29
  *
30
30
  * Zero configuration required - works out of the box!
31
31
  *
32
- * @param props - Optional behavior customization props
32
+ * @param props - Optional visual and behavior customization props
33
33
  * @returns Server-rendered email verification page
34
34
  */
35
- export default function VerifyEmailPage(props) {
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
35
+ export default function VerifyEmailPage({ image_src, image_alt, image_background_color, redirect_delay = DEFAULT_EMAIL_VERIFICATION.redirectDelay, login_path = DEFAULT_EMAIL_VERIFICATION.loginPath, } = {}) {
36
+ // Load configuration from INI file (with defaults including asset images)
37
+ const config = get_email_verification_config();
39
38
  const strings = readStrings();
40
39
  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)
44
- const config = get_email_verification_config();
40
+ // Use props if provided, otherwise fall back to config (which includes default asset image)
41
+ const finalImageSrc = image_src || config.imageSrc;
42
+ const finalImageAlt = image_alt || config.imageAlt;
43
+ const finalImageBackgroundColor = image_background_color || config.imageBackgroundColor;
45
44
  // Pass serializable config to client wrapper, wrapped in AuthPageShell for navbar support
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 } }) }));
45
+ 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, labels: {
46
+ heading: ve_strings.title,
47
+ subHeading: ve_strings.subtitle,
48
+ } }) }));
47
49
  }
48
50
  // Named export for direct imports
49
51
  export { VerifyEmailPage };
@@ -1,16 +1,17 @@
1
1
  import type { EmailVerificationConfig } from "../lib/email_verification_config.server";
2
- import type { HazoAuthTheme } from "../theme/theme_types";
3
- export type VerifyEmailClientWrapperProps = EmailVerificationConfig & {
2
+ import type { LayoutLabelOverrides } from "../components/layouts/shared/config/layout_customization";
3
+ import type { StaticImageData } from "next/image";
4
+ export type VerifyEmailClientWrapperProps = Omit<EmailVerificationConfig, 'imageSrc' | 'imageAlt' | 'imageBackgroundColor'> & {
5
+ image_src: string | StaticImageData;
6
+ image_alt: string;
7
+ image_background_color: string;
4
8
  redirect_delay: number;
5
9
  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;
10
+ labels?: LayoutLabelOverrides;
10
11
  };
11
12
  /**
12
13
  * Client wrapper for EmailVerificationLayout
13
14
  * Initializes hazo_connect data client on client side and passes config from server
14
15
  */
15
- export declare function VerifyEmailClientWrapper({ redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }: VerifyEmailClientWrapperProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function VerifyEmailClientWrapper({ image_src, image_alt, image_background_color, redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, labels, }: VerifyEmailClientWrapperProps): import("react/jsx-runtime").JSX.Element;
16
17
  //# 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;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"}
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,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAGrG,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;IACnB,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,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,EACd,MAAM,GACP,EAAE,6BAA6B,2CAqC/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({ redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, theme, labels, }) {
14
+ export function VerifyEmailClientWrapper({ image_src, image_alt, image_background_color, redirect_delay, login_path, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, 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({ redirect_delay, login_path, alreadyLo
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, { 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 }));
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, labels: labels }));
27
27
  }
@@ -1,3 +1,2 @@
1
1
  export { preset_neutral } from "./preset_neutral.js";
2
- export { preset_indigo_sunset } from "./preset_indigo_sunset.js";
3
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/themes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,2 +1,2 @@
1
+ // file_description: barrel export for hazo_auth theme presets
1
2
  export { preset_neutral } from "./preset_neutral.js";
2
- export { preset_indigo_sunset } from "./preset_indigo_sunset.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_auth",
3
- "version": "7.0.1",
3
+ "version": "7.0.2",
4
4
  "description": "Zero-config authentication UI components for Next.js with RBAC, OAuth, scope-based multi-tenancy, and invitations",
5
5
  "keywords": [
6
6
  "authentication",
@@ -45,22 +45,6 @@
45
45
  "types": "./dist/server-lib.d.ts",
46
46
  "import": "./dist/server-lib.js"
47
47
  },
48
- "./consent": {
49
- "types": "./dist/consent/index.d.ts",
50
- "import": "./dist/consent/index.js"
51
- },
52
- "./strings": {
53
- "types": "./dist/strings/index.d.ts",
54
- "import": "./dist/strings/index.js"
55
- },
56
- "./theme": {
57
- "types": "./dist/theme/index.d.ts",
58
- "import": "./dist/theme/index.js"
59
- },
60
- "./themes": {
61
- "types": "./dist/themes/index.d.ts",
62
- "import": "./dist/themes/index.js"
63
- },
64
48
  "./components/layouts/login": {
65
49
  "types": "./dist/components/layouts/login/index.d.ts",
66
50
  "import": "./dist/components/layouts/login/index.js"
@@ -97,10 +81,6 @@
97
81
  "types": "./dist/components/layouts/create_firm/index.d.ts",
98
82
  "import": "./dist/components/layouts/create_firm/index.js"
99
83
  },
100
- "./components/layouts/otp": {
101
- "types": "./dist/components/layouts/otp/index.d.ts",
102
- "import": "./dist/components/layouts/otp/index.js"
103
- },
104
84
  "./components/layouts/shared": {
105
85
  "types": "./dist/components/layouts/shared/index.d.ts",
106
86
  "import": "./dist/components/layouts/shared/index.js"
@@ -125,6 +105,22 @@
125
105
  "types": "./dist/server/middleware.d.ts",
126
106
  "import": "./dist/server/middleware.js"
127
107
  },
108
+ "./theme": {
109
+ "types": "./dist/theme/index.d.ts",
110
+ "import": "./dist/theme/index.js"
111
+ },
112
+ "./themes": {
113
+ "types": "./dist/themes/index.d.ts",
114
+ "import": "./dist/themes/index.js"
115
+ },
116
+ "./consent": {
117
+ "types": "./dist/consent/index.d.ts",
118
+ "import": "./dist/consent/index.js"
119
+ },
120
+ "./strings": {
121
+ "types": "./dist/strings/index.d.ts",
122
+ "import": "./dist/strings/index.js"
123
+ },
128
124
  "./pages": {
129
125
  "types": "./dist/server_pages/index.d.ts",
130
126
  "import": "./dist/server_pages/index.js"
@@ -133,10 +129,6 @@
133
129
  "types": "./dist/server_pages/login.d.ts",
134
130
  "import": "./dist/server_pages/login.js"
135
131
  },
136
- "./pages/otp": {
137
- "types": "./dist/server_pages/otp.d.ts",
138
- "import": "./dist/server_pages/otp.js"
139
- },
140
132
  "./pages/register": {
141
133
  "types": "./dist/server_pages/register.d.ts",
142
134
  "import": "./dist/server_pages/register.js"
@@ -157,6 +149,10 @@
157
149
  "types": "./dist/server_pages/my_settings.d.ts",
158
150
  "import": "./dist/server_pages/my_settings.js"
159
151
  },
152
+ "./pages/otp": {
153
+ "types": "./dist/server_pages/otp.d.ts",
154
+ "import": "./dist/server_pages/otp.js"
155
+ },
160
156
  "./page_components": {
161
157
  "types": "./dist/page_components/index.d.ts",
162
158
  "import": "./dist/page_components/index.js"
@@ -165,10 +161,6 @@
165
161
  "types": "./dist/page_components/login.d.ts",
166
162
  "import": "./dist/page_components/login.js"
167
163
  },
168
- "./page_components/otp": {
169
- "types": "./dist/page_components/otp.d.ts",
170
- "import": "./dist/page_components/otp.js"
171
- },
172
164
  "./page_components/register": {
173
165
  "types": "./dist/page_components/register.d.ts",
174
166
  "import": "./dist/page_components/register.js"
@@ -233,8 +225,7 @@
233
225
  "migrate": "tsx scripts/apply_migration.ts",
234
226
  "init-users": "tsx scripts/init_users.ts init_users",
235
227
  "test": "cross-env NODE_ENV=test POSTGREST_URL=http://209.38.26.241:4402 POSTGREST_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYXBpX3VzZXIifQ.zBoUGymrxTUk1DNYIGUCtQU4HFaWEHlbE9_8Y3hUaTw jest --runInBand",
236
- "test:watch": "cross-env NODE_ENV=test POSTGREST_URL=http://209.38.26.241:4402 POSTGREST_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYXBpX3VzZXIifQ.zBoUGymrxTUk1DNYIGUCtQU4HFaWEHlbE9_8Y3hUaTw jest --watch",
237
- "autotest:browser": "tsx scripts/autotest_browser.ts"
228
+ "test:watch": "cross-env NODE_ENV=test POSTGREST_URL=http://209.38.26.241:4402 POSTGREST_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYXBpX3VzZXIifQ.zBoUGymrxTUk1DNYIGUCtQU4HFaWEHlbE9_8Y3hUaTw jest --watch"
238
229
  },
239
230
  "dependencies": {
240
231
  "axios": "^1.13.2",
@@ -279,11 +270,10 @@
279
270
  "@radix-ui/react-tabs": "^1.1.0",
280
271
  "@radix-ui/react-tooltip": "^1.2.0",
281
272
  "hazo_config": "^2.1.0",
282
- "hazo_connect": "^2.6.0",
273
+ "hazo_connect": "^2.4.0",
283
274
  "hazo_logs": "^1.0.13",
284
275
  "hazo_notify": "^3.0.0",
285
- "hazo_ui": "^2.7.0",
286
- "input-otp": "^1.4.0",
276
+ "hazo_ui": "^2.17.0",
287
277
  "lucide-react": "^0.553.0",
288
278
  "next": ">=14.0.0",
289
279
  "next-auth": "^4.24.0",
@@ -308,9 +298,6 @@
308
298
  "hazo_ui": {
309
299
  "optional": true
310
300
  },
311
- "input-otp": {
312
- "optional": true
313
- },
314
301
  "next-themes": {
315
302
  "optional": true
316
303
  },
@@ -407,13 +394,12 @@
407
394
  "eslint-plugin-storybook": "^10.0.6",
408
395
  "@tailwindcss/postcss": "^4.2.4",
409
396
  "hazo_config": "^2.1.0",
410
- "hazo_connect": "^2.6.0",
397
+ "hazo_connect": "^2.4.0",
411
398
  "hazo_logs": "^1.0.13",
412
399
  "hazo_notify": "^3.0.0",
413
- "hazo_ui": "^2.7.0",
400
+ "hazo_ui": "^2.17.0",
414
401
  "jest": "^30.2.0",
415
402
  "jest-environment-jsdom": "^30.0.0",
416
- "input-otp": "^1.4.0",
417
403
  "lucide-react": "^0.553.0",
418
404
  "next": "^16.0.7",
419
405
  "next-auth": "^4.24.13",
@@ -1,3 +0,0 @@
1
- import type { HazoAuthTheme } from "../theme/theme_types";
2
- export declare const preset_indigo_sunset: HazoAuthTheme;
3
- //# sourceMappingURL=preset_indigo_sunset.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset_indigo_sunset.d.ts","sourceRoot":"","sources":["../../src/themes/preset_indigo_sunset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,EAAE,aAmBlC,CAAC"}
@@ -1,20 +0,0 @@
1
- export const preset_indigo_sunset = {
2
- colors: {
3
- primary: "#3730A3",
4
- accent: "#F59E0B",
5
- surface: "#FFFFFF",
6
- surfaceElevated: "#FAFAFA",
7
- border: "#E5E7EB",
8
- textPrimary: "#111827",
9
- textSecondary: "#374151",
10
- textMuted: "#6B7280",
11
- },
12
- fonts: { display: "var(--font-display)", body: "var(--font-body)" },
13
- radius: { md: "0.5rem" },
14
- layout: "split",
15
- brandPanel: {
16
- logoSrc: "/hazo_auth/images/preset_indigo_sunset_logo_placeholder.svg",
17
- tagline: "Welcome.",
18
- backgroundGradient: "linear-gradient(135deg, #3730A3 0%, #F59E0B 100%)",
19
- },
20
- };