hazo_auth 10.4.1 → 10.4.6

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 (37) hide show
  1. package/README.md +27 -0
  2. package/cli-src/lib/validate_hazo_connect_config.server.ts +93 -0
  3. package/dist/admin-issues/index.client.d.ts.map +1 -1
  4. package/dist/admin-issues/index.server.d.ts.map +1 -1
  5. package/dist/admin-issues/permission_denied_provider.client.d.ts.map +1 -1
  6. package/dist/admin-issues/plugin.server.js +3 -3
  7. package/dist/client.d.ts +2 -2
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/components/layouts/login/hooks/use_login_form.d.ts +3 -1
  10. package/dist/components/layouts/login/hooks/use_login_form.d.ts.map +1 -1
  11. package/dist/components/layouts/login/hooks/use_login_form.js +9 -6
  12. package/dist/components/layouts/login/index.d.ts +6 -1
  13. package/dist/components/layouts/login/index.d.ts.map +1 -1
  14. package/dist/components/layouts/login/index.js +6 -2
  15. package/dist/components/layouts/shared/components/two_column_auth_layout.d.ts.map +1 -1
  16. package/dist/components/layouts/shared/components/two_column_auth_layout.js +1 -1
  17. package/dist/components/ui/button.d.ts +1 -1
  18. package/dist/components/ui/sheet.d.ts +1 -1
  19. package/dist/lib/validate_hazo_connect_config.server.d.ts +9 -0
  20. package/dist/lib/validate_hazo_connect_config.server.d.ts.map +1 -0
  21. package/dist/lib/validate_hazo_connect_config.server.js +79 -0
  22. package/dist/server/routes/assets.d.ts +2 -2
  23. package/dist/server/routes/assets.d.ts.map +1 -1
  24. package/dist/server/routes/assets.js +6 -2
  25. package/dist/server/routes/index.d.ts +1 -0
  26. package/dist/server/routes/index.d.ts.map +1 -1
  27. package/dist/server/routes/index.js +3 -0
  28. package/dist/server-lib.d.ts +4 -3
  29. package/dist/server-lib.d.ts.map +1 -1
  30. package/dist/server-lib.js +1 -0
  31. package/dist/server_pages/login.d.ts +6 -1
  32. package/dist/server_pages/login.d.ts.map +1 -1
  33. package/dist/server_pages/login.js +2 -2
  34. package/dist/server_pages/login_client_wrapper.d.ts +6 -1
  35. package/dist/server_pages/login_client_wrapper.d.ts.map +1 -1
  36. package/dist/server_pages/login_client_wrapper.js +2 -2
  37. package/package.json +9 -9
package/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  A reusable authentication UI component package powered by Next.js, TailwindCSS, and shadcn. It integrates `hazo_config` for configuration management and `hazo_connect` for data access, enabling future components to stay aligned with platform conventions.
4
4
 
5
+ ### What's New in v10.4.5
6
+
7
+ - **Pre-fill login credentials** — `LoginPage`, `LoginClientWrapper`, and `LoginLayout` now accept a `default_values` / `defaultValues` prop (`{ email?: string; password?: string }`) to pre-populate the login form. Useful for demo and test environments (gate with `process.env.DEMO_EMAIL` etc.).
8
+ - **`validate_hazo_connect_config`** exported from `hazo_auth/server-lib` — validates hazo_connect is correctly configured and fails fast with a descriptive banner. Called automatically at startup via `instrumentation-node.ts`.
9
+ - **`TwoColumnAuthLayout` visual refresh** — rounder corners, stronger drop-shadow, form content constrained to `max-w-sm` for better readability on wide screens.
10
+
5
11
  ### What's New in v10.2.0 🧪
6
12
 
7
13
  **Test-friendly hazo_connect injection + autotest/middleware fixes.**
@@ -474,6 +480,27 @@ export default function Page() {
474
480
  }
475
481
  ```
476
482
 
483
+ **Pre-filling Login Credentials (Demo / Test Environments):**
484
+
485
+ ```typescript
486
+ import { LoginPage } from "hazo_auth/pages/login";
487
+
488
+ // Pre-fills the email and password fields on load.
489
+ // Gate this with an env check so it only activates in non-production.
490
+ export default function Page() {
491
+ return (
492
+ <LoginPage
493
+ default_values={{
494
+ email: process.env.DEMO_EMAIL,
495
+ password: process.env.DEMO_PASSWORD,
496
+ }}
497
+ />
498
+ );
499
+ }
500
+ ```
501
+
502
+ The same `default_values` prop is available on `LoginLayout` and `LoginClientWrapper` (where it is spelled `defaultValues`).
503
+
477
504
  **Embedding MySettings in Your Dashboard:**
478
505
 
479
506
  ```typescript
@@ -0,0 +1,93 @@
1
+ // file_description: startup validator for hazo_connect configuration — hard-fails boot with descriptive banner if misconfigured
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
5
+ // section: imports
6
+ import { HazoConfigError } from "hazo_core";
7
+ import { read_config_section } from "./config/config_loader.server.js";
8
+
9
+ // section: validate
10
+ /**
11
+ * Validates hazo_connect configuration at startup.
12
+ * Throws HazoConfigError with a descriptive banner if misconfigured.
13
+ * Call this in your instrumentation register() to hard-fail boot instead of
14
+ * getting a cryptic AccessDenied at sign-in time.
15
+ */
16
+ export function validate_hazo_connect_config(): void {
17
+ const section = read_config_section("hazo_connect");
18
+
19
+ const type = (
20
+ section?.type ||
21
+ process.env.HAZO_CONNECT_TYPE ||
22
+ "sqlite"
23
+ ).toLowerCase();
24
+
25
+ const has_explicit_config = !!(section?.type || process.env.HAZO_CONNECT_TYPE);
26
+
27
+ if (type === "sqlite") {
28
+ const sqlite_path = section?.sqlite_path || process.env.HAZO_CONNECT_SQLITE_PATH;
29
+
30
+ if (!sqlite_path) {
31
+ const is_defaulted = !has_explicit_config;
32
+ console.error("=".repeat(60));
33
+ console.error("FATAL: hazo_connect is not configured");
34
+ console.error("=".repeat(60));
35
+ if (is_defaulted) {
36
+ console.error("No [hazo_connect] section found in hazo_auth_config.ini");
37
+ console.error("and HAZO_CONNECT_TYPE is not set.");
38
+ console.error("Defaulted to sqlite but sqlite_path is also missing.");
39
+ } else {
40
+ console.error("type = sqlite but sqlite_path is not set.");
41
+ }
42
+ console.error("");
43
+ console.error("Fix option 1 — PostgREST (recommended for production):");
44
+ console.error(" In config/hazo_auth_config.ini:");
45
+ console.error(" [hazo_connect]");
46
+ console.error(" type = postgrest");
47
+ console.error(" And set env vars: POSTGREST_URL, POSTGREST_API_KEY");
48
+ console.error("");
49
+ console.error("Fix option 2 — SQLite:");
50
+ console.error(" In config/hazo_auth_config.ini:");
51
+ console.error(" [hazo_connect]");
52
+ console.error(" type = sqlite");
53
+ console.error(" sqlite_path = ./data/hazo_auth.sqlite");
54
+ console.error("=".repeat(60));
55
+
56
+ throw new HazoConfigError({
57
+ code: "HAZO_AUTH_CONFIG",
58
+ pkg: "hazo_auth",
59
+ message:
60
+ "hazo_connect is not configured. Add [hazo_connect] section to config/hazo_auth_config.ini " +
61
+ "(type = postgrest or type = sqlite with sqlite_path). " +
62
+ "Without this, Google sign-in will fail with AccessDenied.",
63
+ });
64
+ }
65
+ }
66
+
67
+ if (type === "postgrest") {
68
+ const postgrest_url =
69
+ section?.postgrest_url ||
70
+ process.env.HAZO_CONNECT_POSTGREST_URL ||
71
+ process.env.POSTGREST_URL;
72
+
73
+ if (!postgrest_url) {
74
+ console.error("=".repeat(60));
75
+ console.error("FATAL: hazo_connect postgrest_url is not set");
76
+ console.error("=".repeat(60));
77
+ console.error("type = postgrest but no URL found.");
78
+ console.error("Set one of:");
79
+ console.error(" postgrest_url = ... in [hazo_connect] section");
80
+ console.error(" HAZO_CONNECT_POSTGREST_URL env var");
81
+ console.error(" POSTGREST_URL env var");
82
+ console.error("=".repeat(60));
83
+
84
+ throw new HazoConfigError({
85
+ code: "HAZO_AUTH_CONFIG",
86
+ pkg: "hazo_auth",
87
+ message:
88
+ "hazo_connect type is postgrest but no URL is configured. " +
89
+ "Set POSTGREST_URL env var or postgrest_url in [hazo_connect].",
90
+ });
91
+ }
92
+ }
93
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../src/admin-issues/index.client.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../../src/admin-issues/index.client.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,qCAAqC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../src/admin-issues/index.server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../src/admin-issues/index.server.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission_denied_provider.client.d.ts","sourceRoot":"","sources":["../../src/admin-issues/permission_denied_provider.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kDAAkD,CAAC;AAO1D,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAInG;AAID,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACtF;AAED,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,6BAA6B,qBAgCzG;AAID,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBjF;AAID,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
1
+ {"version":3,"file":"permission_denied_provider.client.d.ts","sourceRoot":"","sources":["../../src/admin-issues/permission_denied_provider.client.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,+CAA+C,CAAC;AAOvD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAInG;AAID,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACtF;AAED,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,EAAE,6BAA6B,qBAgCzG;AAID,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBjF;AAID,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
@@ -19,8 +19,8 @@ export const authIssueTypeDef = {
19
19
  },
20
20
  async resolveRecipients(issue, ctx) {
21
21
  var _a, _b;
22
- const { get_users_by_scope } = (await import('../lib/services/user_scope_service.js'));
23
- const { get_scope_ancestors } = (await import('../lib/services/scope_service.js'));
22
+ const { get_users_by_scope } = (await import('../lib/services/user_scope_service'));
23
+ const { get_scope_ancestors } = (await import('../lib/services/scope_service'));
24
24
  const adapter = await ctx.getHazoConnect();
25
25
  const TRIAGE_PERMISSION = 'admin_issue_triage';
26
26
  // Helper: get user_ids in a scope that have the triage permission via their assigned role
@@ -101,7 +101,7 @@ export const authIssueTypeDef = {
101
101
  };
102
102
  }
103
103
  // Grant: assign the user to the scope with the selected role
104
- const { assign_user_scope } = (await import('../lib/services/user_scope_service.js'));
104
+ const { assign_user_scope } = (await import('../lib/services/user_scope_service'));
105
105
  const adapter = await ctx.getHazoConnect();
106
106
  const result = await assign_user_scope(adapter, {
107
107
  user_id: issue.subject_user_id,
package/dist/client.d.ts CHANGED
@@ -11,8 +11,8 @@ export { HAZO_AUTH_PERMISSIONS, ALL_ADMIN_PERMISSIONS, GLOBAL_ADMIN_PERMISSION }
11
11
  export * from "./components/layouts/shared/utils/validation.js";
12
12
  export { requestGoogleScopes } from "./lib/auth/request_google_scopes.js";
13
13
  export { PermissionDeniedDialog } from "./components/permission_denied_dialog.client.js";
14
- export type { PermissionDeniedDialogProps, PermissionDeniedDetails } from "./components/permission_denied_dialog.client.js";
14
+ export type { PermissionDeniedDialogProps, PermissionDeniedDetails } from "./components/permission_denied_dialog.client";
15
15
  export { AuthIssueCard, registerAuthIssueCardRenderer } from './admin-issues/plugin.client.js';
16
16
  export { PermissionDeniedProvider, showPermissionDeniedDialog, handlePermissionDenied, fetchWithPermissionCapture, } from './admin-issues/permission_denied_provider.client.js';
17
- export type { PermissionDeniedProviderProps } from './admin-issues/permission_denied_provider.client.js';
17
+ export type { PermissionDeniedProviderProps } from './admin-issues/permission_denied_provider.client';
18
18
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,cAAc,oBAAoB,CAAC;AAInC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAInI,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIpD,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC3G,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AACnH,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAGvI,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAIxG,cAAc,8CAA8C,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAG5H,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAG/F,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,qDAAqD,CAAC;AAC7D,YAAY,EAAE,6BAA6B,EAAE,MAAM,qDAAqD,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAYA,cAAc,oBAAoB,CAAC;AAInC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAInI,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIpD,cAAc,uBAAuB,CAAC;AAItC,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AACjH,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC3G,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,qDAAqD,CAAC;AACnH,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAGvI,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAIxG,cAAc,8CAA8C,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,YAAY,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAGzH,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAG5F,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,kDAAkD,CAAC;AAC1D,YAAY,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC"}
@@ -16,6 +16,7 @@ export type UseLoginFormParams<TClient = unknown> = {
16
16
  redirectRoute?: string;
17
17
  successMessage?: string;
18
18
  urlOnLogon?: string;
19
+ defaultValues?: Partial<LoginFormValues>;
19
20
  };
20
21
  export type UseLoginFormResult = {
21
22
  values: LoginFormValues;
@@ -30,5 +31,6 @@ export type UseLoginFormResult = {
30
31
  handleSubmit: (event: React.FormEvent<HTMLFormElement>) => void;
31
32
  handleCancel: () => void;
32
33
  };
33
- export declare const use_login_form: <TClient>({ dataClient, logger, redirectRoute, successMessage, urlOnLogon, }: UseLoginFormParams<TClient>) => UseLoginFormResult;
34
+ export declare const buildInitialValues: (defaults?: Partial<LoginFormValues>) => LoginFormValues;
35
+ export declare const use_login_form: <TClient>({ dataClient, logger, redirectRoute, successMessage, urlOnLogon, defaultValues, }: UseLoginFormParams<TClient>) => UseLoginFormResult;
34
36
  //# sourceMappingURL=use_login_form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use_login_form.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/login/hooks/use_login_form.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOlF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,OAAO,GAAG,OAAO,IAAI;IAClD,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACjE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAkBF,eAAO,MAAM,cAAc,GAAI,OAAO,EAAG,oEAMtC,kBAAkB,CAAC,OAAO,CAAC,KAAG,kBA2NhC,CAAC"}
1
+ {"version":3,"file":"use_login_form.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/login/hooks/use_login_form.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAOlF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,OAAO,GAAG,OAAO,IAAI;IAClD,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACjE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,uBAAuB,CAAC;IAC5C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,wBAAwB,EAAE,MAAM,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAAI,WAAW,OAAO,CAAC,eAAe,CAAC,KAAG,eAGvE,CAAC;AAYH,eAAO,MAAM,cAAc,GAAI,OAAO,EAAG,mFAOtC,kBAAkB,CAAC,OAAO,CAAC,KAAG,kBA2NhC,CAAC"}
@@ -8,10 +8,13 @@ import { get_client_ip } from "../../shared/utils/ip_address.js";
8
8
  import { trigger_auth_status_refresh } from "../../shared/hooks/use_auth_status.js";
9
9
  import { useHazoAuthConfig } from "../../../../contexts/hazo_auth_provider.js";
10
10
  // section: helpers
11
- const buildInitialValues = () => ({
12
- [LOGIN_FIELD_IDS.EMAIL]: "",
13
- [LOGIN_FIELD_IDS.PASSWORD]: "",
14
- });
11
+ export const buildInitialValues = (defaults) => {
12
+ var _a, _b;
13
+ return ({
14
+ [LOGIN_FIELD_IDS.EMAIL]: (_a = defaults === null || defaults === void 0 ? void 0 : defaults[LOGIN_FIELD_IDS.EMAIL]) !== null && _a !== void 0 ? _a : "",
15
+ [LOGIN_FIELD_IDS.PASSWORD]: (_b = defaults === null || defaults === void 0 ? void 0 : defaults[LOGIN_FIELD_IDS.PASSWORD]) !== null && _b !== void 0 ? _b : "",
16
+ });
17
+ };
15
18
  const get_filename = () => {
16
19
  return "use_login_form.ts";
17
20
  };
@@ -20,10 +23,10 @@ const get_line_number = () => {
20
23
  return 0;
21
24
  };
22
25
  // section: hook
23
- export const use_login_form = ({ dataClient, logger, redirectRoute, successMessage = "Successfully logged in", urlOnLogon, }) => {
26
+ export const use_login_form = ({ dataClient, logger, redirectRoute, successMessage = "Successfully logged in", urlOnLogon, defaultValues, }) => {
24
27
  const router = useRouter();
25
28
  const { apiBasePath } = useHazoAuthConfig();
26
- const [values, setValues] = useState(buildInitialValues);
29
+ const [values, setValues] = useState(() => buildInitialValues(defaultValues));
27
30
  const [errors, setErrors] = useState({});
28
31
  const [passwordVisibility, setPasswordVisibility] = useState({
29
32
  password: false,
@@ -47,6 +47,11 @@ export type LoginLayoutProps<TClient = unknown> = {
47
47
  urlOnLogon?: string;
48
48
  /** OAuth configuration */
49
49
  oauth?: OAuthLayoutConfig;
50
+ /** Pre-fill email and/or password fields (e.g. for demo/test environments). */
51
+ default_values?: {
52
+ email?: string;
53
+ password?: string;
54
+ };
50
55
  /**
51
56
  * Layout mode (default: `"two_column"`).
52
57
  * - `"two_column"` — renders the form inside the package's TwoColumnAuthLayout
@@ -59,5 +64,5 @@ export type LoginLayoutProps<TClient = unknown> = {
59
64
  */
60
65
  layout?: "two_column" | "form_only";
61
66
  };
62
- export default function login_layout<TClient>({ image_src, image_alt, image_background_color, field_overrides, labels, button_colors, data_client, logger, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgot_password_path, forgot_password_label, create_account_path, create_account_label, show_create_account_link, urlOnLogon, oauth, layout, }: LoginLayoutProps<TClient>): import("react").JSX.Element;
67
+ export default function login_layout<TClient>({ image_src, image_alt, image_background_color, field_overrides, labels, button_colors, data_client, logger, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgot_password_path, forgot_password_label, create_account_path, create_account_label, show_create_account_link, urlOnLogon, oauth, layout, default_values, }: LoginLayoutProps<TClient>): import("react").JSX.Element;
63
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/login/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/login/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAYlD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAC;AAW/C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gCAAgC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,8CAA8C;IAC9C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kCAAkC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,OAAO,GAAG,OAAO,IAAI;IAChD,6HAA6H;IAC7H,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACrC,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACjE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;KAClE,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,+EAA+E;IAC/E,cAAc,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACrC,CAAC;AAUF,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAO,EAAE,EAC5C,SAAS,EACT,SAAS,EACT,sBAAkC,EAClC,eAAe,EACf,MAAM,EACN,aAAa,EACb,WAAW,EACX,MAAM,EACN,aAAa,EACb,cAAyC,EACzC,sBAAoD,EACpD,gBAAuB,EACvB,oBAA4B,EAC5B,qBAAqC,EACrC,cAAoB,EACpB,oBAAmD,EACnD,qBAA0C,EAC1C,mBAA2C,EAC3C,oBAAuC,EACvC,wBAA+B,EAC/B,UAAU,EACV,KAAK,EACL,MAAqB,EACrB,cAAc,GACf,EAAE,gBAAgB,CAAC,OAAO,CAAC,+BAqR3B"}
@@ -23,8 +23,8 @@ const ORDERED_FIELDS = [
23
23
  LOGIN_FIELD_IDS.PASSWORD,
24
24
  ];
25
25
  // section: component
26
- export default function login_layout({ image_src, image_alt, image_background_color = "#f1f5f9", field_overrides, labels, button_colors, data_client, logger, redirectRoute, successMessage = "Successfully logged in", alreadyLoggedInMessage = "You are already logged in", showLogoutButton = true, showReturnHomeButton = false, returnHomeButtonLabel = "Return home", returnHomePath = "/", forgot_password_path = "/hazo_auth/forgot_password", forgot_password_label = "Forgot password?", create_account_path = "/hazo_auth/register", create_account_label = "Create account", show_create_account_link = true, urlOnLogon, oauth, layout = "two_column", }) {
27
- var _a;
26
+ export default function login_layout({ image_src, image_alt, image_background_color = "#f1f5f9", field_overrides, labels, button_colors, data_client, logger, redirectRoute, successMessage = "Successfully logged in", alreadyLoggedInMessage = "You are already logged in", showLogoutButton = true, showReturnHomeButton = false, returnHomeButtonLabel = "Return home", returnHomePath = "/", forgot_password_path = "/hazo_auth/forgot_password", forgot_password_label = "Forgot password?", create_account_path = "/hazo_auth/register", create_account_label = "Create account", show_create_account_link = true, urlOnLogon, oauth, layout = "two_column", default_values, }) {
27
+ var _a, _b, _c;
28
28
  // Default OAuth config: both enabled
29
29
  const oauthConfig = oauth || {
30
30
  enable_google: true,
@@ -73,6 +73,10 @@ export default function login_layout({ image_src, image_alt, image_background_co
73
73
  redirectRoute: effectiveRedirectRoute,
74
74
  successMessage,
75
75
  urlOnLogon: urlOnLogon,
76
+ defaultValues: default_values ? {
77
+ [LOGIN_FIELD_IDS.EMAIL]: (_b = default_values.email) !== null && _b !== void 0 ? _b : "",
78
+ [LOGIN_FIELD_IDS.PASSWORD]: (_c = default_values.password) !== null && _c !== void 0 ? _c : "",
79
+ } : undefined,
76
80
  });
77
81
  const renderFields = (formState) => {
78
82
  return ORDERED_FIELDS.map((fieldId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"two_column_auth_layout.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/two_column_auth_layout.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAGF,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,sBAAsB,GACvB,EAAE,wBAAwB,+BAkB1B"}
1
+ {"version":3,"file":"two_column_auth_layout.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/shared/components/two_column_auth_layout.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAGF,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,sBAAsB,GACvB,EAAE,wBAAwB,+BAsB1B"}
@@ -4,5 +4,5 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { VisualPanel } from "./visual_panel.js";
5
5
  // section: component
6
6
  export function TwoColumnAuthLayout({ imageSrc, imageAlt, imageBackgroundColor, formContent, className, visualPanelClassName, formContainerClassName, }) {
7
- return (_jsxs("div", { className: `cls_two_column_auth_layout grid w-full max-w-5xl grid-cols-1 overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm md:grid-cols-2 md:min-h-[520px] ${className !== null && className !== void 0 ? className : ""}`, children: [_jsx(VisualPanel, { imageSrc: imageSrc, imageAlt: imageAlt, backgroundColor: imageBackgroundColor, className: visualPanelClassName }), _jsx("div", { className: `cls_two_column_auth_layout_form_container flex flex-col gap-6 p-8 ${formContainerClassName !== null && formContainerClassName !== void 0 ? formContainerClassName : ""}`, children: formContent })] }));
7
+ return (_jsxs("div", { className: `cls_two_column_auth_layout grid w-full max-w-5xl grid-cols-1 overflow-hidden rounded-2xl border border-slate-200 bg-white shadow-xl ring-1 ring-slate-900/5 md:grid-cols-2 md:min-h-[560px] ${className !== null && className !== void 0 ? className : ""}`, children: [_jsx(VisualPanel, { imageSrc: imageSrc, imageAlt: imageAlt, backgroundColor: imageBackgroundColor, className: visualPanelClassName }), _jsx("div", { className: `cls_two_column_auth_layout_form_container flex flex-col justify-center p-8 sm:p-10 lg:p-12 ${formContainerClassName !== null && formContainerClassName !== void 0 ? formContainerClassName : ""}`, children: _jsx("div", { className: "cls_two_column_auth_layout_form_inner mx-auto flex w-full max-w-sm flex-col gap-6", children: formContent }) })] }));
8
8
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
4
+ variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
5
  size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
6
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -7,7 +7,7 @@ declare const SheetClose: React.ForwardRefExoticComponent<SheetPrimitive.DialogC
7
7
  declare const SheetPortal: React.FC<SheetPrimitive.DialogPortalProps>;
8
8
  declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
9
  declare const SheetContent: React.ForwardRefExoticComponent<Omit<SheetPrimitive.DialogContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & VariantProps<(props?: ({
10
- side?: "top" | "right" | "bottom" | "left" | null | undefined;
10
+ side?: "bottom" | "left" | "right" | "top" | null | undefined;
11
11
  } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLDivElement>>;
12
12
  declare const SheetHeader: {
13
13
  ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
@@ -0,0 +1,9 @@
1
+ import "server-only";
2
+ /**
3
+ * Validates hazo_connect configuration at startup.
4
+ * Throws HazoConfigError with a descriptive banner if misconfigured.
5
+ * Call this in your instrumentation register() to hard-fail boot instead of
6
+ * getting a cryptic AccessDenied at sign-in time.
7
+ */
8
+ export declare function validate_hazo_connect_config(): void;
9
+ //# sourceMappingURL=validate_hazo_connect_config.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate_hazo_connect_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/validate_hazo_connect_config.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAOrB;;;;;GAKG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CA6EnD"}
@@ -0,0 +1,79 @@
1
+ // file_description: startup validator for hazo_connect configuration — hard-fails boot with descriptive banner if misconfigured
2
+ // section: server-only-guard
3
+ import "server-only";
4
+ // section: imports
5
+ import { HazoConfigError } from "hazo_core";
6
+ import { read_config_section } from "./config/config_loader.server.js";
7
+ // section: validate
8
+ /**
9
+ * Validates hazo_connect configuration at startup.
10
+ * Throws HazoConfigError with a descriptive banner if misconfigured.
11
+ * Call this in your instrumentation register() to hard-fail boot instead of
12
+ * getting a cryptic AccessDenied at sign-in time.
13
+ */
14
+ export function validate_hazo_connect_config() {
15
+ const section = read_config_section("hazo_connect");
16
+ const type = ((section === null || section === void 0 ? void 0 : section.type) ||
17
+ process.env.HAZO_CONNECT_TYPE ||
18
+ "sqlite").toLowerCase();
19
+ const has_explicit_config = !!((section === null || section === void 0 ? void 0 : section.type) || process.env.HAZO_CONNECT_TYPE);
20
+ if (type === "sqlite") {
21
+ const sqlite_path = (section === null || section === void 0 ? void 0 : section.sqlite_path) || process.env.HAZO_CONNECT_SQLITE_PATH;
22
+ if (!sqlite_path) {
23
+ const is_defaulted = !has_explicit_config;
24
+ console.error("=".repeat(60));
25
+ console.error("FATAL: hazo_connect is not configured");
26
+ console.error("=".repeat(60));
27
+ if (is_defaulted) {
28
+ console.error("No [hazo_connect] section found in hazo_auth_config.ini");
29
+ console.error("and HAZO_CONNECT_TYPE is not set.");
30
+ console.error("Defaulted to sqlite but sqlite_path is also missing.");
31
+ }
32
+ else {
33
+ console.error("type = sqlite but sqlite_path is not set.");
34
+ }
35
+ console.error("");
36
+ console.error("Fix option 1 — PostgREST (recommended for production):");
37
+ console.error(" In config/hazo_auth_config.ini:");
38
+ console.error(" [hazo_connect]");
39
+ console.error(" type = postgrest");
40
+ console.error(" And set env vars: POSTGREST_URL, POSTGREST_API_KEY");
41
+ console.error("");
42
+ console.error("Fix option 2 — SQLite:");
43
+ console.error(" In config/hazo_auth_config.ini:");
44
+ console.error(" [hazo_connect]");
45
+ console.error(" type = sqlite");
46
+ console.error(" sqlite_path = ./data/hazo_auth.sqlite");
47
+ console.error("=".repeat(60));
48
+ throw new HazoConfigError({
49
+ code: "HAZO_AUTH_CONFIG",
50
+ pkg: "hazo_auth",
51
+ message: "hazo_connect is not configured. Add [hazo_connect] section to config/hazo_auth_config.ini " +
52
+ "(type = postgrest or type = sqlite with sqlite_path). " +
53
+ "Without this, Google sign-in will fail with AccessDenied.",
54
+ });
55
+ }
56
+ }
57
+ if (type === "postgrest") {
58
+ const postgrest_url = (section === null || section === void 0 ? void 0 : section.postgrest_url) ||
59
+ process.env.HAZO_CONNECT_POSTGREST_URL ||
60
+ process.env.POSTGREST_URL;
61
+ if (!postgrest_url) {
62
+ console.error("=".repeat(60));
63
+ console.error("FATAL: hazo_connect postgrest_url is not set");
64
+ console.error("=".repeat(60));
65
+ console.error("type = postgrest but no URL found.");
66
+ console.error("Set one of:");
67
+ console.error(" postgrest_url = ... in [hazo_connect] section");
68
+ console.error(" HAZO_CONNECT_POSTGREST_URL env var");
69
+ console.error(" POSTGREST_URL env var");
70
+ console.error("=".repeat(60));
71
+ throw new HazoConfigError({
72
+ code: "HAZO_AUTH_CONFIG",
73
+ pkg: "hazo_auth",
74
+ message: "hazo_connect type is postgrest but no URL is configured. " +
75
+ "Set POSTGREST_URL env var or postgrest_url in [hazo_connect].",
76
+ });
77
+ }
78
+ }
79
+ }
@@ -1,8 +1,8 @@
1
1
  import "server-only";
2
2
  import { NextRequest, NextResponse } from "next/server";
3
3
  export declare function assetGET(_request: NextRequest, { params }: {
4
- params: {
4
+ params: Promise<{
5
5
  name: string;
6
- };
6
+ }>;
7
7
  }): Promise<NextResponse>;
8
8
  //# sourceMappingURL=assets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/server/routes/assets.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoBxD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,WAAW,EACrB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACvC,OAAO,CAAC,YAAY,CAAC,CAuBvB"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../../src/server/routes/assets.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAsBxD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,WAAW,EACrB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAChD,OAAO,CAAC,YAAY,CAAC,CAuBvB"}
@@ -3,7 +3,11 @@ import "server-only";
3
3
  import { NextResponse } from "next/server";
4
4
  import path from "path";
5
5
  import fs from "fs";
6
- const ASSETS_DIR = path.join(path.dirname(require.resolve("hazo_auth/package.json")), "dist", "assets", "images");
6
+ import { fileURLToPath } from "url";
7
+ // Assets ship alongside this route: <root>/server/routes/assets + <root>/assets/images.
8
+ // The "../../assets/images" offset holds in both src (dev) and dist (published) layouts,
9
+ // so there is no need to self-resolve the package root via require.resolve("hazo_auth/...").
10
+ const ASSETS_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../assets/images");
7
11
  const MIME = {
8
12
  ".jpg": "image/jpeg",
9
13
  ".jpeg": "image/jpeg",
@@ -13,7 +17,7 @@ const MIME = {
13
17
  ".gif": "image/gif",
14
18
  };
15
19
  export async function assetGET(_request, { params }) {
16
- const name = params.name;
20
+ const { name } = await params;
17
21
  // Reject path traversal
18
22
  if (name.includes("..") || name.includes("/") || name.includes("\\")) {
19
23
  return new NextResponse("Not found", { status: 404 });
@@ -40,4 +40,5 @@ export { legalDocsPublishPOST } from './legal_docs_publish.js';
40
40
  export { consentMeGET } from "./consent_me.js";
41
41
  export { stringsDefaultsGET } from "./strings_defaults.js";
42
42
  export { GET as googleTokenGET, DELETE as googleTokenDELETE } from "./google_token.js";
43
+ export { assetGET } from "./assets.js";
43
44
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"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"}
@@ -58,3 +58,6 @@ export { consentMeGET } from "./consent_me.js";
58
58
  export { stringsDefaultsGET } from "./strings_defaults.js";
59
59
  // Google OAuth token routes (status + revoke)
60
60
  export { GET as googleTokenGET, DELETE as googleTokenDELETE } from "./google_token.js";
61
+ // Static asset serving route (default login/auth images). Consumers mount this
62
+ // at /api/hazo_auth/assets/[name] so the packaged default images resolve.
63
+ export { assetGET } from "./assets.js";
@@ -25,16 +25,17 @@ export type { OAuthConfig } from "./lib/oauth_config.server";
25
25
  export { get_branding_config, is_branding_enabled, is_allowed_logo_format, get_max_logo_size_bytes, } from "./lib/branding_config.server.js";
26
26
  export type { FirmBrandingConfig } from "./lib/branding_config.server";
27
27
  export { create_sqlite_hazo_connect } from "./lib/hazo_connect_setup.js";
28
+ export { validate_hazo_connect_config } from "./lib/validate_hazo_connect_config.server.js";
28
29
  export { get_hazo_connect_instance, set_hazo_connect_instance, reset_hazo_connect_instance, } from "./lib/hazo_connect_instance.server.js";
29
30
  export { create_app_logger } from "./lib/app_logger.js";
30
31
  export { sanitize_error_for_user } from "./lib/utils/error_sanitizer.js";
31
32
  export type { ErrorSanitizationOptions } from "./lib/utils/error_sanitizer";
32
33
  export * from "./lib/utils/api_route_helpers.js";
33
34
  export { find_roles_with_permission } from "./lib/services/find_roles_with_permission.js";
34
- export type { RoleWithPermission } from "./lib/services/find_roles_with_permission.js";
35
+ export type { RoleWithPermission } from "./lib/services/find_roles_with_permission";
35
36
  export { authIssueTypeDef, registerAuthIssuePlugin } from "./admin-issues/plugin.server.js";
36
37
  export { wireAdminIssueCapture } from "./admin-issues/wire.server.js";
37
- export type { WireAdminIssueCaptureOptions } from "./admin-issues/wire.server.js";
38
+ export type { WireAdminIssueCaptureOptions } from "./admin-issues/wire.server";
38
39
  export { denyPermission } from "./lib/auth/deny_permission.server.js";
39
- export type { DenyPermissionInput } from "./lib/auth/deny_permission.server.js";
40
+ export type { DenyPermissionInput } from "./lib/auth/deny_permission.server";
40
41
  //# sourceMappingURL=server-lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-lib.d.ts","sourceRoot":"","sources":["../src/server-lib.ts"],"names":[],"mappings":"AAYA,OAAO,aAAa,CAAC;AAGrB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAGrF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,YAAY,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAGvF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAGlF,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"server-lib.d.ts","sourceRoot":"","sources":["../src/server-lib.ts"],"names":[],"mappings":"AAYA,OAAO,aAAa,CAAC;AAGrB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAGrF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,YAAY,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAG/E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -39,6 +39,7 @@ export { get_oauth_config, is_google_oauth_enabled, is_email_password_enabled, }
39
39
  export { get_branding_config, is_branding_enabled, is_allowed_logo_format, get_max_logo_size_bytes, } from "./lib/branding_config.server.js";
40
40
  // section: hazo_connect_exports
41
41
  export { create_sqlite_hazo_connect } from "./lib/hazo_connect_setup.js";
42
+ export { validate_hazo_connect_config } from "./lib/validate_hazo_connect_config.server.js";
42
43
  export { get_hazo_connect_instance, set_hazo_connect_instance, reset_hazo_connect_instance, } from "./lib/hazo_connect_instance.server.js";
43
44
  // section: logger_exports
44
45
  export { create_app_logger } from "./lib/app_logger.js";
@@ -28,6 +28,11 @@ export type LoginPageProps = {
28
28
  * this mode.
29
29
  */
30
30
  layout?: "two_column" | "form_only";
31
+ /** Pre-fill email and/or password fields (e.g. for demo/test environments). */
32
+ default_values?: {
33
+ email?: string;
34
+ password?: string;
35
+ };
31
36
  };
32
37
  /**
33
38
  * Zero-config LoginPage server component
@@ -52,6 +57,6 @@ export type LoginPageProps = {
52
57
  * @param props - Optional visual customization props
53
58
  * @returns Server-rendered login page
54
59
  */
55
- export default function LoginPage({ image_src, image_alt, image_background_color, layout, }?: LoginPageProps): import("react").JSX.Element;
60
+ export default function LoginPage({ image_src, image_alt, image_background_color, layout, default_values, }?: LoginPageProps): import("react").JSX.Element;
56
61
  export { LoginPage };
57
62
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/server_pages/login.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAUrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B;;;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;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CACrC,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,MAAqB,GACtB,GAAE,cAAmB,+BAsErB;AAGD,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/server_pages/login.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAUrB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B;;;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;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACpC,+EAA+E;IAC/E,cAAc,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,MAAqB,EACrB,cAAc,GACf,GAAE,cAAmB,+BAuErB;AAGD,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -33,7 +33,7 @@ import { FloatingHomeLink } from "../components/layouts/shared/components/floati
33
33
  * @param props - Optional visual customization props
34
34
  * @returns Server-rendered login page
35
35
  */
36
- export default function LoginPage({ image_src, image_alt, image_background_color, layout = "two_column", } = {}) {
36
+ export default function LoginPage({ image_src, image_alt, image_background_color, layout = "two_column", default_values, } = {}) {
37
37
  // Load configuration from INI file (with defaults including asset images)
38
38
  const config = get_login_config();
39
39
  // Resolve strings for heading/subheading/ctaText
@@ -54,7 +54,7 @@ export default function LoginPage({ image_src, image_alt, image_background_color
54
54
  heading: login_strings.title,
55
55
  subHeading: login_strings.subtitle,
56
56
  submitButton: login_strings.ctaText,
57
- } }));
57
+ }, defaultValues: default_values }));
58
58
  // form_only mode: skip AuthPageShell so the consumer's own page chrome
59
59
  // (e.g. a split-panel AuthLayout) hosts the form without our standalone
60
60
  // wrapper interfering. Two-column mode keeps the existing AuthPageShell
@@ -14,10 +14,15 @@ export type LoginClientWrapperProps = Omit<LoginConfig, 'imageSrc' | 'imageAlt'
14
14
  layout?: "two_column" | "form_only";
15
15
  /** String overrides for page heading, subheading, and submit button. */
16
16
  labels?: LayoutLabelOverrides;
17
+ /** Pre-fill email and/or password fields (e.g. for demo/test environments). */
18
+ defaultValues?: {
19
+ email?: string;
20
+ password?: string;
21
+ };
17
22
  };
18
23
  /**
19
24
  * Client wrapper for LoginLayout
20
25
  * Initializes hazo_connect data client on client side and passes config from server
21
26
  */
22
- export declare function LoginClientWrapper({ image_src, image_alt, image_background_color, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgotPasswordPath, forgotPasswordLabel, createAccountPath, createAccountLabel, showCreateAccountLink, oauth, layout, labels, }: LoginClientWrapperProps): import("react").JSX.Element;
27
+ export declare function LoginClientWrapper({ image_src, image_alt, image_background_color, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgotPasswordPath, forgotPasswordLabel, createAccountPath, createAccountLabel, showCreateAccountLink, oauth, layout, labels, defaultValues, }: LoginClientWrapperProps): import("react").JSX.Element;
23
28
  //# sourceMappingURL=login_client_wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/login_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAGrG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,OAAO,GAAG,uBAAuB,CAAC,GAAG;IAC9I,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,yEAAyE;IACzE,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAGF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAA4B,EAC5B,KAAK,EACL,MAAqB,EACrB,MAAM,GACP,EAAE,uBAAuB,+BA2CzB"}
1
+ {"version":3,"file":"login_client_wrapper.d.ts","sourceRoot":"","sources":["../../src/server_pages/login_client_wrapper.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAGrG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,UAAU,GAAG,sBAAsB,GAAG,OAAO,GAAG,uBAAuB,CAAC,GAAG;IAC9I,SAAS,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sDAAsD;IACtD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,yEAAyE;IACzE,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IACpC,wEAAwE;IACxE,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,+EAA+E;IAC/E,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD,CAAC;AAGF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,qBAA4B,EAC5B,KAAK,EACL,MAAqB,EACrB,MAAM,EACN,aAAa,GACd,EAAE,uBAAuB,+BA4CzB"}
@@ -11,7 +11,7 @@ import { create_sqlite_hazo_connect } from "../lib/hazo_connect_setup.js";
11
11
  * Client wrapper for LoginLayout
12
12
  * Initializes hazo_connect data client on client side and passes config from server
13
13
  */
14
- export function LoginClientWrapper({ image_src, image_alt, image_background_color, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgotPasswordPath, forgotPasswordLabel, createAccountPath, createAccountLabel, showCreateAccountLink = true, oauth, layout = "two_column", labels, }) {
14
+ export function LoginClientWrapper({ image_src, image_alt, image_background_color, redirectRoute, successMessage, alreadyLoggedInMessage, showLogoutButton, showReturnHomeButton, returnHomeButtonLabel, returnHomePath, forgotPasswordPath, forgotPasswordLabel, createAccountPath, createAccountLabel, showCreateAccountLink = true, oauth, layout = "two_column", labels, defaultValues, }) {
15
15
  const [dataClient, setDataClient] = useState(null);
16
16
  useEffect(() => {
17
17
  // Initialize hazo_connect on client side
@@ -23,5 +23,5 @@ export function LoginClientWrapper({ image_src, image_alt, image_background_colo
23
23
  if (!dataClient) {
24
24
  return (_jsx("div", { className: "cls_login_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(LoginLayout, { image_src: image_src, image_alt: image_alt, image_background_color: image_background_color, data_client: dataClient, redirectRoute: redirectRoute, successMessage: successMessage, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, forgot_password_path: forgotPasswordPath, forgot_password_label: forgotPasswordLabel, create_account_path: createAccountPath, create_account_label: createAccountLabel, show_create_account_link: showCreateAccountLink, oauth: oauth, layout: layout, labels: labels }));
26
+ return (_jsx(LoginLayout, { image_src: image_src, image_alt: image_alt, image_background_color: image_background_color, data_client: dataClient, redirectRoute: redirectRoute, successMessage: successMessage, alreadyLoggedInMessage: alreadyLoggedInMessage, showLogoutButton: showLogoutButton, showReturnHomeButton: showReturnHomeButton, returnHomeButtonLabel: returnHomeButtonLabel, returnHomePath: returnHomePath, forgot_password_path: forgotPasswordPath, forgot_password_label: forgotPasswordLabel, create_account_path: createAccountPath, create_account_label: createAccountLabel, show_create_account_link: showCreateAccountLink, oauth: oauth, layout: layout, labels: labels, default_values: defaultValues }));
27
27
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_auth",
3
- "version": "10.4.1",
3
+ "version": "10.4.6",
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",
@@ -263,13 +263,13 @@
263
263
  "@radix-ui/react-tabs": "^1.1.0",
264
264
  "@radix-ui/react-tooltip": "^1.2.0",
265
265
  "hazo_api": "^2.4.0",
266
- "hazo_config": "^2.2.0",
267
- "hazo_connect": "^3.8.0",
266
+ "hazo_config": "^2.4.1",
267
+ "hazo_connect": "^3.9.0",
268
268
  "hazo_core": "^1.2.0",
269
269
  "hazo_logs": "^2.1.1",
270
270
  "hazo_notify": "^6.1.4",
271
271
  "hazo_secure": "^1.1.0",
272
- "hazo_ui": "^4.4.0",
272
+ "hazo_ui": "^4.6.2",
273
273
  "input-otp": "^1.4.0",
274
274
  "lucide-react": "^0.553.0",
275
275
  "next": "^14.0.0",
@@ -402,13 +402,13 @@
402
402
  "eslint": "^9.39.1",
403
403
  "eslint-config-next": "^16.0.4",
404
404
  "eslint-plugin-storybook": "^10.0.6",
405
- "hazo_api": "^2.5.0",
406
- "hazo_config": "^2.2.0",
407
- "hazo_connect": "^3.8.0",
408
- "hazo_core": "^1.2.0",
405
+ "hazo_api": "^2.5.1",
406
+ "hazo_config": "^2.4.1",
407
+ "hazo_connect": "^3.9.0",
408
+ "hazo_core": "^1.2.1",
409
409
  "hazo_logs": "^2.1.1",
410
410
  "hazo_notify": "^6.1.4",
411
- "hazo_ui": "^4.4.0",
411
+ "hazo_ui": "^4.6.2",
412
412
  "input-otp": "^1.4.0",
413
413
  "jest": "^30.2.0",
414
414
  "jest-environment-jsdom": "^30.0.0",