hazo_auth 5.1.21 → 5.1.23

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 (164) hide show
  1. package/README.md +29 -0
  2. package/cli-src/lib/already_logged_in_config.server.ts +3 -0
  3. package/cli-src/lib/app_logger.ts +4 -1
  4. package/cli-src/lib/app_permissions_config.server.ts +3 -0
  5. package/cli-src/lib/app_user_data_config.server.ts +3 -0
  6. package/cli-src/lib/auth/auth_utils.server.ts +3 -0
  7. package/cli-src/lib/auth/hazo_get_auth.server.ts +3 -0
  8. package/cli-src/lib/auth/hazo_get_tenant_auth.server.ts +3 -0
  9. package/cli-src/lib/auth_utility_config.server.ts +3 -0
  10. package/cli-src/lib/branding_config.server.ts +3 -0
  11. package/cli-src/lib/config/config_loader.server.ts +3 -0
  12. package/cli-src/lib/cookies_config.server.ts +3 -0
  13. package/cli-src/lib/dev_lock_config.server.ts +3 -0
  14. package/cli-src/lib/email_verification_config.server.ts +3 -0
  15. package/cli-src/lib/file_types_config.server.ts +3 -0
  16. package/cli-src/lib/forgot_password_config.server.ts +3 -0
  17. package/cli-src/lib/hazo_connect_instance.server.ts +3 -0
  18. package/cli-src/lib/hazo_connect_setup.server.ts +3 -0
  19. package/cli-src/lib/login_config.server.ts +3 -0
  20. package/cli-src/lib/messages_config.server.ts +3 -0
  21. package/cli-src/lib/my_settings_config.server.ts +3 -0
  22. package/cli-src/lib/navbar_config.server.ts +3 -0
  23. package/cli-src/lib/oauth_config.server.ts +3 -0
  24. package/cli-src/lib/password_requirements_config.server.ts +3 -0
  25. package/cli-src/lib/profile_pic_menu_config.server.ts +3 -0
  26. package/cli-src/lib/profile_picture_config.server.ts +3 -0
  27. package/cli-src/lib/register_config.server.ts +3 -0
  28. package/cli-src/lib/reset_password_config.server.ts +3 -0
  29. package/cli-src/lib/scope_hierarchy_config.server.ts +3 -0
  30. package/cli-src/lib/ui_shell_config.server.ts +3 -0
  31. package/cli-src/lib/ui_sizes_config.server.ts +3 -0
  32. package/cli-src/lib/user_fields_config.server.ts +3 -0
  33. package/cli-src/lib/user_management_config.server.ts +3 -0
  34. package/cli-src/lib/user_profiles_config.server.ts +3 -0
  35. package/cli-src/lib/user_types_config.server.ts +3 -0
  36. package/dist/components/layouts/create_firm/hooks/use_create_firm_form.d.ts +2 -0
  37. package/dist/components/layouts/create_firm/hooks/use_create_firm_form.d.ts.map +1 -1
  38. package/dist/components/layouts/create_firm/hooks/use_create_firm_form.js +45 -0
  39. package/dist/components/layouts/create_firm/index.d.ts.map +1 -1
  40. package/dist/components/layouts/create_firm/index.js +1 -1
  41. package/dist/lib/already_logged_in_config.server.d.ts +1 -0
  42. package/dist/lib/already_logged_in_config.server.d.ts.map +1 -1
  43. package/dist/lib/already_logged_in_config.server.js +2 -0
  44. package/dist/lib/app_logger.d.ts +1 -0
  45. package/dist/lib/app_logger.d.ts.map +1 -1
  46. package/dist/lib/app_logger.js +3 -1
  47. package/dist/lib/app_permissions_config.server.d.ts +1 -0
  48. package/dist/lib/app_permissions_config.server.d.ts.map +1 -1
  49. package/dist/lib/app_permissions_config.server.js +2 -0
  50. package/dist/lib/app_user_data_config.server.d.ts +1 -0
  51. package/dist/lib/app_user_data_config.server.d.ts.map +1 -1
  52. package/dist/lib/app_user_data_config.server.js +2 -0
  53. package/dist/lib/auth/auth_utils.server.d.ts +1 -0
  54. package/dist/lib/auth/auth_utils.server.d.ts.map +1 -1
  55. package/dist/lib/auth/auth_utils.server.js +2 -0
  56. package/dist/lib/auth/hazo_get_auth.server.d.ts +1 -0
  57. package/dist/lib/auth/hazo_get_auth.server.d.ts.map +1 -1
  58. package/dist/lib/auth/hazo_get_auth.server.js +3 -0
  59. package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts +1 -0
  60. package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts.map +1 -1
  61. package/dist/lib/auth/hazo_get_tenant_auth.server.js +3 -0
  62. package/dist/lib/auth_utility_config.server.d.ts +1 -0
  63. package/dist/lib/auth_utility_config.server.d.ts.map +1 -1
  64. package/dist/lib/auth_utility_config.server.js +2 -0
  65. package/dist/lib/branding_config.server.d.ts +1 -0
  66. package/dist/lib/branding_config.server.d.ts.map +1 -1
  67. package/dist/lib/branding_config.server.js +2 -0
  68. package/dist/lib/config/config_loader.server.d.ts +1 -0
  69. package/dist/lib/config/config_loader.server.d.ts.map +1 -1
  70. package/dist/lib/config/config_loader.server.js +2 -0
  71. package/dist/lib/cookies_config.server.d.ts +1 -0
  72. package/dist/lib/cookies_config.server.d.ts.map +1 -1
  73. package/dist/lib/cookies_config.server.js +2 -0
  74. package/dist/lib/dev_lock_config.server.d.ts +1 -0
  75. package/dist/lib/dev_lock_config.server.d.ts.map +1 -1
  76. package/dist/lib/dev_lock_config.server.js +2 -0
  77. package/dist/lib/email_verification_config.server.d.ts +1 -0
  78. package/dist/lib/email_verification_config.server.d.ts.map +1 -1
  79. package/dist/lib/email_verification_config.server.js +2 -0
  80. package/dist/lib/file_types_config.server.d.ts +1 -0
  81. package/dist/lib/file_types_config.server.d.ts.map +1 -1
  82. package/dist/lib/file_types_config.server.js +2 -0
  83. package/dist/lib/forgot_password_config.server.d.ts +1 -0
  84. package/dist/lib/forgot_password_config.server.d.ts.map +1 -1
  85. package/dist/lib/forgot_password_config.server.js +2 -0
  86. package/dist/lib/hazo_connect_instance.server.d.ts +1 -0
  87. package/dist/lib/hazo_connect_instance.server.d.ts.map +1 -1
  88. package/dist/lib/hazo_connect_instance.server.js +3 -0
  89. package/dist/lib/hazo_connect_setup.server.d.ts +1 -0
  90. package/dist/lib/hazo_connect_setup.server.d.ts.map +1 -1
  91. package/dist/lib/hazo_connect_setup.server.js +2 -0
  92. package/dist/lib/login_config.server.d.ts +1 -0
  93. package/dist/lib/login_config.server.d.ts.map +1 -1
  94. package/dist/lib/login_config.server.js +2 -0
  95. package/dist/lib/messages_config.server.d.ts +1 -0
  96. package/dist/lib/messages_config.server.d.ts.map +1 -1
  97. package/dist/lib/messages_config.server.js +2 -0
  98. package/dist/lib/my_settings_config.server.d.ts +1 -0
  99. package/dist/lib/my_settings_config.server.d.ts.map +1 -1
  100. package/dist/lib/my_settings_config.server.js +2 -0
  101. package/dist/lib/navbar_config.server.d.ts +1 -0
  102. package/dist/lib/navbar_config.server.d.ts.map +1 -1
  103. package/dist/lib/navbar_config.server.js +2 -0
  104. package/dist/lib/oauth_config.server.d.ts +1 -0
  105. package/dist/lib/oauth_config.server.d.ts.map +1 -1
  106. package/dist/lib/oauth_config.server.js +2 -0
  107. package/dist/lib/password_requirements_config.server.d.ts +1 -0
  108. package/dist/lib/password_requirements_config.server.d.ts.map +1 -1
  109. package/dist/lib/password_requirements_config.server.js +2 -0
  110. package/dist/lib/profile_pic_menu_config.server.d.ts +1 -0
  111. package/dist/lib/profile_pic_menu_config.server.d.ts.map +1 -1
  112. package/dist/lib/profile_pic_menu_config.server.js +2 -0
  113. package/dist/lib/profile_picture_config.server.d.ts +1 -0
  114. package/dist/lib/profile_picture_config.server.d.ts.map +1 -1
  115. package/dist/lib/profile_picture_config.server.js +2 -0
  116. package/dist/lib/register_config.server.d.ts +1 -0
  117. package/dist/lib/register_config.server.d.ts.map +1 -1
  118. package/dist/lib/register_config.server.js +2 -0
  119. package/dist/lib/reset_password_config.server.d.ts +1 -0
  120. package/dist/lib/reset_password_config.server.d.ts.map +1 -1
  121. package/dist/lib/reset_password_config.server.js +2 -0
  122. package/dist/lib/scope_hierarchy_config.server.d.ts +1 -0
  123. package/dist/lib/scope_hierarchy_config.server.d.ts.map +1 -1
  124. package/dist/lib/scope_hierarchy_config.server.js +2 -0
  125. package/dist/lib/ui_shell_config.server.d.ts +1 -0
  126. package/dist/lib/ui_shell_config.server.d.ts.map +1 -1
  127. package/dist/lib/ui_shell_config.server.js +2 -0
  128. package/dist/lib/ui_sizes_config.server.d.ts +1 -0
  129. package/dist/lib/ui_sizes_config.server.d.ts.map +1 -1
  130. package/dist/lib/ui_sizes_config.server.js +2 -0
  131. package/dist/lib/user_fields_config.server.d.ts +1 -0
  132. package/dist/lib/user_fields_config.server.d.ts.map +1 -1
  133. package/dist/lib/user_fields_config.server.js +2 -0
  134. package/dist/lib/user_management_config.server.d.ts +1 -0
  135. package/dist/lib/user_management_config.server.d.ts.map +1 -1
  136. package/dist/lib/user_management_config.server.js +2 -0
  137. package/dist/lib/user_profiles_config.server.d.ts +1 -0
  138. package/dist/lib/user_profiles_config.server.d.ts.map +1 -1
  139. package/dist/lib/user_profiles_config.server.js +2 -0
  140. package/dist/lib/user_types_config.server.d.ts +1 -0
  141. package/dist/lib/user_types_config.server.d.ts.map +1 -1
  142. package/dist/lib/user_types_config.server.js +2 -0
  143. package/dist/page_components/create_firm.d.ts +1 -0
  144. package/dist/page_components/create_firm.d.ts.map +1 -1
  145. package/dist/page_components/create_firm.js +2 -0
  146. package/dist/server_pages/forgot_password.d.ts +1 -0
  147. package/dist/server_pages/forgot_password.d.ts.map +1 -1
  148. package/dist/server_pages/forgot_password.js +2 -0
  149. package/dist/server_pages/login.d.ts +1 -0
  150. package/dist/server_pages/login.d.ts.map +1 -1
  151. package/dist/server_pages/login.js +2 -0
  152. package/dist/server_pages/my_settings.d.ts +1 -0
  153. package/dist/server_pages/my_settings.d.ts.map +1 -1
  154. package/dist/server_pages/my_settings.js +2 -0
  155. package/dist/server_pages/register.d.ts +1 -0
  156. package/dist/server_pages/register.d.ts.map +1 -1
  157. package/dist/server_pages/register.js +2 -0
  158. package/dist/server_pages/reset_password.d.ts +1 -0
  159. package/dist/server_pages/reset_password.d.ts.map +1 -1
  160. package/dist/server_pages/reset_password.js +2 -0
  161. package/dist/server_pages/verify_email.d.ts +1 -0
  162. package/dist/server_pages/verify_email.d.ts.map +1 -1
  163. package/dist/server_pages/verify_email.js +2 -0
  164. package/package.json +3 -2
package/README.md CHANGED
@@ -2,6 +2,22 @@
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 v5.1.23 🔧
6
+
7
+ **FIX: Server/Client Bundling Issue** - Resolved "Module not found: Can't resolve 'fs'" errors in consuming apps.
8
+
9
+ **Key Changes:**
10
+ - ✅ **Server-Only Guards** - Added `import "server-only"` to all server files preventing accidental client bundling
11
+ - ✅ **hazo_logs v1.0.10** - Upgraded with conditional exports for browser/node environments
12
+ - ✅ **Client Logging Support** - Logs API route now exports POST for client-side log ingestion
13
+
14
+ **Root Cause:** Server files that import `hazo_logs` (which uses winston/fs) were being bundled into client code through the import chain. The `server-only` package now throws an immediate build error if server files are incorrectly imported in client components.
15
+
16
+ **Files Protected:**
17
+ - All `*.server.ts` config loaders
18
+ - Server page components (`server_pages/*.tsx`)
19
+ - `app_logger.ts`
20
+
5
21
  ### What's New in v5.1.5 🐛
6
22
 
7
23
  **CRITICAL BUGFIX**: Fixed incomplete migration from v4.x to v5.x - several files were still referencing the deprecated `hazo_user_roles` table instead of `hazo_user_scopes`. This release completes the scope-based role assignment architecture introduced in v5.0.
@@ -104,6 +120,19 @@ npm run dev
104
120
 
105
121
  That's it! Visit `http://localhost:3000/hazo_auth/login` to see the login page.
106
122
 
123
+ ### Tailwind v4 Setup (Required for Tailwind v4 Users)
124
+
125
+ If you're using Tailwind v4, add this to your `globals.css` AFTER the tailwindcss import:
126
+
127
+ ```css
128
+ @import "tailwindcss";
129
+
130
+ /* Required: Enable Tailwind to scan hazo_auth package classes */
131
+ @source "../node_modules/hazo_auth/dist";
132
+ ```
133
+
134
+ **Important:** Without this directive, Tailwind classes in hazo_auth components (hover states, colors, spacing) will not be compiled, resulting in broken styling.
135
+
107
136
  ### CLI Commands
108
137
 
109
138
  ```bash
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read already logged in configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_boolean } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
- // file_description: client-accessible wrapper for the main app logging service using hazo_logs
1
+ // file_description: server-only wrapper for the main app logging service using hazo_logs
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { createLogger } from "hazo_logs";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read app permissions configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // This allows consuming apps to declare their required permissions with descriptions for debugging
3
6
  // section: imports
4
7
  import { read_config_section } from "./config/config_loader.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read app_user_data schema configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // Enables schema-based editing of app_user_data in User Management
3
6
  // section: imports
4
7
  import {
@@ -1,4 +1,7 @@
1
1
  // file_description: server-side authentication utilities for checking login status in API routes
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { NextRequest, NextResponse } from "next/server";
4
7
  import { get_hazo_connect_instance } from "../hazo_connect_instance.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-side implementation of hazo_get_auth utility for API routes
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { NextRequest } from "next/server";
4
7
  import { get_hazo_connect_instance } from "../hazo_connect_instance.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: tenant-aware authentication function that extracts scope from request headers/cookies
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { NextRequest } from "next/server";
4
7
  import { hazo_get_auth } from "./hazo_get_auth.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read auth utility configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import {
4
7
  get_config_value,
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read firm branding configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import {
4
7
  get_config_value,
@@ -1,4 +1,7 @@
1
1
  // file_description: shared utility for reading configuration from hazo_auth_config.ini using hazo_config
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { HazoConfig } from "hazo_config/dist/lib";
4
7
  import path from "path";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read cookie configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
 
3
6
  import { read_config_section } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read dev lock configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_boolean, get_config_number } from "./config/config_loader.server.js";
4
7
  import { DEFAULT_DEV_LOCK } from "./config/default_config.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read email verification layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
4
7
  import { get_config_value } from "./config/config_loader.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read file type configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_array } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read forgot password layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
4
7
  import { get_config_value } from "./config/config_loader.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: singleton instance of hazo_connect adapter - initialized once and reused across all routes
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // This ensures all routes/components use the same database connection
3
6
  // Uses the new hazo_connect singleton API from hazo_connect/nextjs/setup
4
7
  // Reads configuration from hazo_auth_config.ini using hazo_config
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to create hazo_connect instance (imports server-side code)
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // This file should only be imported in server contexts (API routes, server components)
3
6
  // Reads configuration from hazo_auth_config.ini using hazo_config
4
7
  // section: imports
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read login layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value } from "./config/config_loader.server.js";
4
7
  import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read user-facing messages from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read my settings layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value } from "./config/config_loader.server.js";
4
7
  import { get_user_fields_config } from "./user_fields_config.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read navbar configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_boolean, get_config_number } from "./config/config_loader.server.js";
4
7
  import { DEFAULT_NAVBAR } from "./config/default_config.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read OAuth configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_boolean } from "./config/config_loader.server.js";
4
7
  import { DEFAULT_OAUTH } from "./config/default_config.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read shared password requirements configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_number, get_config_boolean } from "./config/config_loader.server.js";
4
7
  import { DEFAULT_PASSWORD_REQUIREMENTS } from "./config/default_config.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read profile picture menu configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_boolean, get_config_array } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read profile picture configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_boolean, get_config_value, get_config_number, read_config_section } from "./config/config_loader.server.js";
4
7
  import { create_app_logger } from "./app_logger.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read register layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_boolean, get_config_value, read_config_section } from "./config/config_loader.server.js";
4
7
  import { get_password_requirements_config } from "./password_requirements_config.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read reset password layout configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value } from "./config/config_loader.server.js";
4
7
  import { get_already_logged_in_config } from "./already_logged_in_config.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read HRBAC scope hierarchy configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import {
4
7
  get_config_value,
@@ -1,4 +1,7 @@
1
1
  // file_description: load ui shell layout settings from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value } from "./config/config_loader.server.js";
4
7
  import { get_navbar_config, type NavbarConfig } from "./navbar_config.server.js";
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read UI size configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_number } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read shared user fields configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_boolean } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read user management configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import { get_config_value, get_config_array, read_config_section } from "./config/config_loader.server.js";
4
7
 
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read user profiles cache configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import {
4
7
  get_config_number,
@@ -1,4 +1,7 @@
1
1
  // file_description: server-only helper to read user types configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
4
+
2
5
  // section: imports
3
6
  import {
4
7
  get_config_value,
@@ -25,6 +25,8 @@ export type UseCreateFirmFormResult = {
25
25
  isSubmitting: boolean;
26
26
  isSuccess: boolean;
27
27
  isSubmitDisabled: boolean;
28
+ /** True when Chrome autofill preview is shown but value not yet committed */
29
+ hasAutofillPreview: boolean;
28
30
  handleFieldChange: (field: keyof CreateFirmFormValues, value: string) => void;
29
31
  handleSubmit: (e: FormEvent) => Promise<void>;
30
32
  /** Ref to attach to firm_name input for DOM value sync */
@@ -1 +1 @@
1
- {"version":3,"file":"use_create_firm_form.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/create_firm/hooks/use_create_firm_form.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqD,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,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;KAClE,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,oBAAoB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,0DAA0D;IAC1D,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/C,8DAA8D;IAC9D,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnD,oEAAoE;IACpE,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAGF,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAmNzB"}
1
+ {"version":3,"file":"use_create_firm_form.d.ts","sourceRoot":"","sources":["../../../../../src/components/layouts/create_firm/hooks/use_create_firm_form.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqD,SAAS,EAAE,MAAM,OAAO,CAAC;AAGrF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,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;KAClE,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,oBAAoB,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E,YAAY,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,0DAA0D;IAC1D,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/C,8DAA8D;IAC9D,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnD,oEAAoE;IACpE,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAGF,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAqQzB"}
@@ -17,6 +17,8 @@ export function use_create_firm_form(options = {}) {
17
17
  const orgStructureRef = useRef(null);
18
18
  // Counter to force re-evaluation of isSubmitDisabled after sync
19
19
  const [syncCounter, setSyncCounter] = useState(0);
20
+ // Track Chrome autofill preview state (visual overlay without DOM value)
21
+ const [hasAutofillPreview, setHasAutofillPreview] = useState(false);
20
22
  // Sync React state from DOM values (call when autofill detected or on focus)
21
23
  const syncFromDOM = useCallback(() => {
22
24
  let didSync = false;
@@ -46,6 +48,7 @@ export function use_create_firm_form(options = {}) {
46
48
  if (e.animationName === "onAutoFillStart") {
47
49
  // Delay to allow browser to populate the value
48
50
  setTimeout(syncFromDOM, 50);
51
+ setHasAutofillPreview(false); // Autofill committed
49
52
  }
50
53
  };
51
54
  const firmNameInput = firmNameRef.current;
@@ -56,9 +59,45 @@ export function use_create_firm_form(options = {}) {
56
59
  const handleFocus = () => {
57
60
  // Small delay to let browser complete any pending value changes
58
61
  setTimeout(syncFromDOM, 10);
62
+ setHasAutofillPreview(false); // User interacted, preview committed
59
63
  };
60
64
  firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.addEventListener("focus", handleFocus);
61
65
  orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.addEventListener("focus", handleFocus);
66
+ // Handle change event - fires when autofill commits
67
+ const handleChange = () => {
68
+ setTimeout(syncFromDOM, 10);
69
+ setHasAutofillPreview(false);
70
+ };
71
+ firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.addEventListener("change", handleChange);
72
+ orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.addEventListener("change", handleChange);
73
+ // Handle input event with inputType check for autofill
74
+ const handleInput = (e) => {
75
+ const inputEvent = e;
76
+ if (inputEvent.inputType === "insertReplacementText") {
77
+ // Autofill occurred - sync immediately
78
+ setTimeout(syncFromDOM, 10);
79
+ setHasAutofillPreview(false);
80
+ }
81
+ };
82
+ firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.addEventListener("input", handleInput);
83
+ orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.addEventListener("input", handleInput);
84
+ // Check for :-webkit-autofill preview state periodically
85
+ // This detects Chrome's visual preview before user commits
86
+ const checkAutofillPreview = () => {
87
+ var _a, _b, _c;
88
+ const firmNameHasPreview = (_b = (_a = firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.matches) === null || _a === void 0 ? void 0 : _a.call(firmNameInput, ":-webkit-autofill")) !== null && _b !== void 0 ? _b : false;
89
+ const firmNameValueEmpty = !((_c = firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.value) === null || _c === void 0 ? void 0 : _c.trim());
90
+ // Preview is showing if Chrome applies :-webkit-autofill but DOM value is empty
91
+ if (firmNameHasPreview && firmNameValueEmpty) {
92
+ setHasAutofillPreview(true);
93
+ }
94
+ else if (!firmNameHasPreview || !firmNameValueEmpty) {
95
+ setHasAutofillPreview(false);
96
+ }
97
+ };
98
+ // Check periodically for autofill preview state (Chrome applies it asynchronously)
99
+ const previewCheckInterval = setInterval(checkAutofillPreview, 500);
100
+ checkAutofillPreview(); // Initial check
62
101
  // Initial sync after mount (catches pre-populated values)
63
102
  setTimeout(syncFromDOM, 100);
64
103
  return () => {
@@ -66,6 +105,11 @@ export function use_create_firm_form(options = {}) {
66
105
  orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.removeEventListener("animationstart", handleAutofill);
67
106
  firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.removeEventListener("focus", handleFocus);
68
107
  orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.removeEventListener("focus", handleFocus);
108
+ firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.removeEventListener("change", handleChange);
109
+ orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.removeEventListener("change", handleChange);
110
+ firmNameInput === null || firmNameInput === void 0 ? void 0 : firmNameInput.removeEventListener("input", handleInput);
111
+ orgStructureInput === null || orgStructureInput === void 0 ? void 0 : orgStructureInput.removeEventListener("input", handleInput);
112
+ clearInterval(previewCheckInterval);
69
113
  };
70
114
  }, [syncFromDOM]);
71
115
  const handleFieldChange = useCallback((field, value) => {
@@ -168,6 +212,7 @@ export function use_create_firm_form(options = {}) {
168
212
  isSubmitting,
169
213
  isSuccess,
170
214
  isSubmitDisabled,
215
+ hasAutofillPreview,
171
216
  handleFieldChange,
172
217
  handleSubmit,
173
218
  firmNameRef,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/create_firm/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EACL,KAAK,sBAAsB,EAC5B,MAAM,uCAAuC,CAAC;AAQ/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IACpC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6BAA6B;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,2BAA2B;IAC3B,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;KAClE,CAAC;CACH,CAAC;AAGF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,SAAS,EACT,SAA8B,EAC9B,sBAAkC,EAClC,OAA4B,EAC5B,WAAuD,EACvD,eAA6B,EAC7B,qBAA8C,EAC9C,mBAA8C,EAC9C,yBAA6D,EAC7D,qBAAsC,EACtC,mBAAmC,EACnC,eAA4D,EAC5D,cAAoB,EACpB,WAAW,EACX,SAAS,EACT,aAAa,EACb,MAAM,GACP,EAAE,qBAAqB,2CAoJvB;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/layouts/create_firm/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EACL,KAAK,sBAAsB,EAC5B,MAAM,uCAAuC,CAAC;AAQ/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,sCAAsC;IACtC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;IACpC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,sCAAsC;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,8BAA8B;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6BAA6B;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,2BAA2B;IAC3B,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;KAClE,CAAC;CACH,CAAC;AAGF,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,SAAS,EACT,SAA8B,EAC9B,sBAAkC,EAClC,OAA4B,EAC5B,WAAuD,EACvD,eAA6B,EAC7B,qBAA8C,EAC9C,mBAA8C,EAC9C,yBAA6D,EAC7D,qBAAsC,EACtC,mBAAmC,EACnC,eAA4D,EAC5D,cAAoB,EACpB,WAAW,EACX,SAAS,EACT,aAAa,EACb,MAAM,GACP,EAAE,qBAAqB,2CA2JvB;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -39,7 +39,7 @@ export default function CreateFirmLayout({ image_src, image_alt = "Create your f
39
39
  if (form.isSuccess) {
40
40
  return (_jsx(TwoColumnAuthLayout, { imageSrc: image_src, imageAlt: image_alt, imageBackgroundColor: image_background_color, formContent: _jsxs(_Fragment, { children: [_jsx(FormHeader, { heading: heading, subHeading: sub_heading }), _jsxs("div", { className: "cls_create_firm_layout_success flex flex-col items-center justify-center gap-4 p-8 text-center", children: [_jsx(CheckCircle, { className: "cls_create_firm_layout_success_icon h-16 w-16 text-green-600", "aria-hidden": "true" }), _jsx("p", { className: "cls_create_firm_layout_success_message text-lg font-medium text-slate-900", children: success_message }), _jsx("p", { className: "cls_create_firm_layout_redirect_message text-sm text-muted-foreground", children: "Redirecting you to the application..." })] })] }) }));
41
41
  }
42
- return (_jsx(TwoColumnAuthLayout, { imageSrc: image_src, imageAlt: image_alt, imageBackgroundColor: image_background_color, formContent: _jsxs(_Fragment, { children: [_jsx(FormHeader, { heading: heading, subHeading: sub_heading }), _jsxs("div", { className: "cls_create_firm_layout_info mb-6 flex items-start gap-3 rounded-lg border border-blue-200 bg-blue-50 p-4", children: [_jsx(Building2, { className: "mt-0.5 h-5 w-5 flex-shrink-0 text-blue-600" }), _jsxs("div", { className: "text-sm text-blue-800", children: [_jsx("p", { className: "font-medium", children: "Welcome!" }), _jsx("p", { children: "Create your firm to start using the application. You'll become the administrator of your firm and can invite team members later." })] })] }), _jsxs("form", { className: "cls_create_firm_layout_form_fields flex flex-col gap-5", onSubmit: form.handleSubmit, "aria-label": "Create firm form", children: [renderFields(form), form.errors.form && (_jsx("div", { className: "cls_create_firm_layout_form_error rounded-md bg-red-50 p-3 text-sm text-red-600", children: form.errors.form })), _jsx(FormActionButtons, { submitLabel: submit_button_label, buttonPalette: resolvedButtonPalette, isSubmitDisabled: form.isSubmitDisabled, submitAriaLabel: "Create your firm", hideCancel: true })] })] }) }));
42
+ return (_jsx(TwoColumnAuthLayout, { imageSrc: image_src, imageAlt: image_alt, imageBackgroundColor: image_background_color, formContent: _jsxs(_Fragment, { children: [_jsx(FormHeader, { heading: heading, subHeading: sub_heading }), _jsxs("div", { className: "cls_create_firm_layout_info mb-6 flex items-start gap-3 rounded-lg border border-blue-200 bg-blue-50 p-4", children: [_jsx(Building2, { className: "mt-0.5 h-5 w-5 flex-shrink-0 text-blue-600" }), _jsxs("div", { className: "text-sm text-blue-800", children: [_jsx("p", { className: "font-medium", children: "Welcome!" }), _jsx("p", { children: "Create your firm to start using the application. You'll become the administrator of your firm and can invite team members later." })] })] }), _jsxs("form", { className: "cls_create_firm_layout_form_fields flex flex-col gap-5", onSubmit: form.handleSubmit, "aria-label": "Create firm form", children: [renderFields(form), form.errors.form && (_jsx("div", { className: "cls_create_firm_layout_form_error rounded-md bg-red-50 p-3 text-sm text-red-600", children: form.errors.form })), form.hasAutofillPreview && !form.values.firm_name && (_jsx("div", { className: "cls_create_firm_layout_autofill_hint rounded-md bg-amber-50 p-3 text-sm text-amber-700", children: "Click in the firm name field to confirm the autofilled value" })), _jsx(FormActionButtons, { submitLabel: submit_button_label, buttonPalette: resolvedButtonPalette, isSubmitDisabled: form.isSubmitDisabled, submitAriaLabel: "Create your firm", hideCancel: true })] })] }) }));
43
43
  }
44
44
  // section: exports
45
45
  export { CreateFirmLayout };
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  export type AlreadyLoggedInConfig = {
2
3
  message: string;
3
4
  showLogoutButton: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"already_logged_in_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/already_logged_in_config.server.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,qBAAqB,CAyBpE"}
1
+ {"version":3,"file":"already_logged_in_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/already_logged_in_config.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAMrB,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAGF;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,qBAAqB,CAyBpE"}
@@ -1,4 +1,6 @@
1
1
  // file_description: server-only helper to read already logged in configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
2
4
  // section: imports
3
5
  import { get_config_value, get_config_boolean } from "./config/config_loader.server.js";
4
6
  // section: helpers
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  /**
2
3
  * Returns the hazo_auth logger instance
3
4
  * Uses hazo_logs for consistent logging across hazo packages
@@ -1 +1 @@
1
- {"version":3,"file":"app_logger.d.ts","sourceRoot":"","sources":["../../src/lib/app_logger.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,kCAAe,CAAC"}
1
+ {"version":3,"file":"app_logger.d.ts","sourceRoot":"","sources":["../../src/lib/app_logger.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AASrB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,kCAAe,CAAC"}
@@ -1,4 +1,6 @@
1
- // file_description: client-accessible wrapper for the main app logging service using hazo_logs
1
+ // file_description: server-only wrapper for the main app logging service using hazo_logs
2
+ // section: server-only-guard
3
+ import "server-only";
2
4
  // section: imports
3
5
  import { createLogger } from "hazo_logs";
4
6
  // section: logger_instance
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  /**
2
3
  * A single app permission declaration
3
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"app_permissions_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_permissions_config.server.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAIF;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CA0BjE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,EAAE,GACzB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYrB"}
1
+ {"version":3,"file":"app_permissions_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_permissions_config.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAQrB;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC;AAIF;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,CA0BjE;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,EAAE,GACzB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYrB"}
@@ -1,4 +1,6 @@
1
1
  // file_description: server-only helper to read app permissions configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
2
4
  // This allows consuming apps to declare their required permissions with descriptions for debugging
3
5
  // section: imports
4
6
  import { read_config_section } from "./config/config_loader.server.js";
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  /**
2
3
  * JSON Schema property definition (simplified subset)
3
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"app_user_data_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_user_data_config.server.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAC;IACvB,8CAA8C;IAC9C,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,kEAAkE;IAClE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAkEF;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,CAU5D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,IAAI,CAGnE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBxE"}
1
+ {"version":3,"file":"app_user_data_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_user_data_config.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAYrB;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,+DAA+D;IAC/D,aAAa,EAAE,OAAO,CAAC;IACvB,8CAA8C;IAC9C,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,kEAAkE;IAClE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAkEF;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,CAU5D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,IAAI,CAGnE;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAarD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBxE"}
@@ -1,4 +1,6 @@
1
1
  // file_description: server-only helper to read app_user_data schema configuration from hazo_auth_config.ini
2
+ // section: server-only-guard
3
+ import "server-only";
2
4
  // Enables schema-based editing of app_user_data in User Management
3
5
  // section: imports
4
6
  import { get_config_value, get_config_boolean, read_config_section, } from "./config/config_loader.server.js";
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  import { NextRequest, NextResponse } from "next/server";
2
3
  export type AuthUser = {
3
4
  authenticated: true;
@@ -1 +1 @@
1
- {"version":3,"file":"auth_utils.server.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/auth_utils.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOxD,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR;IAAE,aAAa,EAAE,KAAK,CAAA;CAAE,CAAC;AAmB7B;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8CtF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7E;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQ1E;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IACxF,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC,CA6DD"}
1
+ {"version":3,"file":"auth_utils.server.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/auth_utils.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOxD,MAAM,MAAM,QAAQ,GAAG;IACrB,aAAa,EAAE,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC/D,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR;IAAE,aAAa,EAAE,KAAK,CAAA;CAAE,CAAC;AAmB7B;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8CtF;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7E;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQ1E;AAED;;;;;GAKG;AACH,wBAAsB,oCAAoC,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;IACxF,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB,CAAC,CA6DD"}
@@ -1,4 +1,6 @@
1
1
  // file_description: server-side authentication utilities for checking login status in API routes
2
+ // section: server-only-guard
3
+ import "server-only";
2
4
  // section: imports
3
5
  import { NextResponse } from "next/server";
4
6
  import { get_hazo_connect_instance } from "../hazo_connect_instance.server.js";
@@ -1,3 +1,4 @@
1
+ import "server-only";
1
2
  import { NextRequest } from "next/server";
2
3
  import type { HazoAuthResult, HazoAuthOptions } from "./auth_types";
3
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hazo_get_auth.server.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/hazo_get_auth.server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,OAAO,KAAK,EACV,cAAc,EAEd,eAAe,EAGhB,MAAM,cAAc,CAAC;AAuWtB;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CAmNzB"}
1
+ {"version":3,"file":"hazo_get_auth.server.d.ts","sourceRoot":"","sources":["../../../src/lib/auth/hazo_get_auth.server.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,OAAO,KAAK,EACV,cAAc,EAEd,eAAe,EAGhB,MAAM,cAAc,CAAC;AAuWtB;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC,CAmNzB"}
@@ -1,3 +1,6 @@
1
+ // file_description: server-side implementation of hazo_get_auth utility for API routes
2
+ // section: server-only-guard
3
+ import "server-only";
1
4
  import { get_hazo_connect_instance } from "../hazo_connect_instance.server.js";
2
5
  import { createCrudService } from "hazo_connect/server";
3
6
  import { create_app_logger } from "../app_logger.js";