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.
- package/README.md +29 -0
- package/cli-src/lib/already_logged_in_config.server.ts +3 -0
- package/cli-src/lib/app_logger.ts +4 -1
- package/cli-src/lib/app_permissions_config.server.ts +3 -0
- package/cli-src/lib/app_user_data_config.server.ts +3 -0
- package/cli-src/lib/auth/auth_utils.server.ts +3 -0
- package/cli-src/lib/auth/hazo_get_auth.server.ts +3 -0
- package/cli-src/lib/auth/hazo_get_tenant_auth.server.ts +3 -0
- package/cli-src/lib/auth_utility_config.server.ts +3 -0
- package/cli-src/lib/branding_config.server.ts +3 -0
- package/cli-src/lib/config/config_loader.server.ts +3 -0
- package/cli-src/lib/cookies_config.server.ts +3 -0
- package/cli-src/lib/dev_lock_config.server.ts +3 -0
- package/cli-src/lib/email_verification_config.server.ts +3 -0
- package/cli-src/lib/file_types_config.server.ts +3 -0
- package/cli-src/lib/forgot_password_config.server.ts +3 -0
- package/cli-src/lib/hazo_connect_instance.server.ts +3 -0
- package/cli-src/lib/hazo_connect_setup.server.ts +3 -0
- package/cli-src/lib/login_config.server.ts +3 -0
- package/cli-src/lib/messages_config.server.ts +3 -0
- package/cli-src/lib/my_settings_config.server.ts +3 -0
- package/cli-src/lib/navbar_config.server.ts +3 -0
- package/cli-src/lib/oauth_config.server.ts +3 -0
- package/cli-src/lib/password_requirements_config.server.ts +3 -0
- package/cli-src/lib/profile_pic_menu_config.server.ts +3 -0
- package/cli-src/lib/profile_picture_config.server.ts +3 -0
- package/cli-src/lib/register_config.server.ts +3 -0
- package/cli-src/lib/reset_password_config.server.ts +3 -0
- package/cli-src/lib/scope_hierarchy_config.server.ts +3 -0
- package/cli-src/lib/ui_shell_config.server.ts +3 -0
- package/cli-src/lib/ui_sizes_config.server.ts +3 -0
- package/cli-src/lib/user_fields_config.server.ts +3 -0
- package/cli-src/lib/user_management_config.server.ts +3 -0
- package/cli-src/lib/user_profiles_config.server.ts +3 -0
- package/cli-src/lib/user_types_config.server.ts +3 -0
- package/dist/components/layouts/create_firm/hooks/use_create_firm_form.d.ts +2 -0
- package/dist/components/layouts/create_firm/hooks/use_create_firm_form.d.ts.map +1 -1
- package/dist/components/layouts/create_firm/hooks/use_create_firm_form.js +45 -0
- package/dist/components/layouts/create_firm/index.d.ts.map +1 -1
- package/dist/components/layouts/create_firm/index.js +1 -1
- package/dist/lib/already_logged_in_config.server.d.ts +1 -0
- package/dist/lib/already_logged_in_config.server.d.ts.map +1 -1
- package/dist/lib/already_logged_in_config.server.js +2 -0
- package/dist/lib/app_logger.d.ts +1 -0
- package/dist/lib/app_logger.d.ts.map +1 -1
- package/dist/lib/app_logger.js +3 -1
- package/dist/lib/app_permissions_config.server.d.ts +1 -0
- package/dist/lib/app_permissions_config.server.d.ts.map +1 -1
- package/dist/lib/app_permissions_config.server.js +2 -0
- package/dist/lib/app_user_data_config.server.d.ts +1 -0
- package/dist/lib/app_user_data_config.server.d.ts.map +1 -1
- package/dist/lib/app_user_data_config.server.js +2 -0
- package/dist/lib/auth/auth_utils.server.d.ts +1 -0
- package/dist/lib/auth/auth_utils.server.d.ts.map +1 -1
- package/dist/lib/auth/auth_utils.server.js +2 -0
- package/dist/lib/auth/hazo_get_auth.server.d.ts +1 -0
- package/dist/lib/auth/hazo_get_auth.server.d.ts.map +1 -1
- package/dist/lib/auth/hazo_get_auth.server.js +3 -0
- package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts +1 -0
- package/dist/lib/auth/hazo_get_tenant_auth.server.d.ts.map +1 -1
- package/dist/lib/auth/hazo_get_tenant_auth.server.js +3 -0
- package/dist/lib/auth_utility_config.server.d.ts +1 -0
- package/dist/lib/auth_utility_config.server.d.ts.map +1 -1
- package/dist/lib/auth_utility_config.server.js +2 -0
- package/dist/lib/branding_config.server.d.ts +1 -0
- package/dist/lib/branding_config.server.d.ts.map +1 -1
- package/dist/lib/branding_config.server.js +2 -0
- package/dist/lib/config/config_loader.server.d.ts +1 -0
- package/dist/lib/config/config_loader.server.d.ts.map +1 -1
- package/dist/lib/config/config_loader.server.js +2 -0
- package/dist/lib/cookies_config.server.d.ts +1 -0
- package/dist/lib/cookies_config.server.d.ts.map +1 -1
- package/dist/lib/cookies_config.server.js +2 -0
- package/dist/lib/dev_lock_config.server.d.ts +1 -0
- package/dist/lib/dev_lock_config.server.d.ts.map +1 -1
- package/dist/lib/dev_lock_config.server.js +2 -0
- package/dist/lib/email_verification_config.server.d.ts +1 -0
- package/dist/lib/email_verification_config.server.d.ts.map +1 -1
- package/dist/lib/email_verification_config.server.js +2 -0
- package/dist/lib/file_types_config.server.d.ts +1 -0
- package/dist/lib/file_types_config.server.d.ts.map +1 -1
- package/dist/lib/file_types_config.server.js +2 -0
- package/dist/lib/forgot_password_config.server.d.ts +1 -0
- package/dist/lib/forgot_password_config.server.d.ts.map +1 -1
- package/dist/lib/forgot_password_config.server.js +2 -0
- package/dist/lib/hazo_connect_instance.server.d.ts +1 -0
- package/dist/lib/hazo_connect_instance.server.d.ts.map +1 -1
- package/dist/lib/hazo_connect_instance.server.js +3 -0
- package/dist/lib/hazo_connect_setup.server.d.ts +1 -0
- package/dist/lib/hazo_connect_setup.server.d.ts.map +1 -1
- package/dist/lib/hazo_connect_setup.server.js +2 -0
- package/dist/lib/login_config.server.d.ts +1 -0
- package/dist/lib/login_config.server.d.ts.map +1 -1
- package/dist/lib/login_config.server.js +2 -0
- package/dist/lib/messages_config.server.d.ts +1 -0
- package/dist/lib/messages_config.server.d.ts.map +1 -1
- package/dist/lib/messages_config.server.js +2 -0
- package/dist/lib/my_settings_config.server.d.ts +1 -0
- package/dist/lib/my_settings_config.server.d.ts.map +1 -1
- package/dist/lib/my_settings_config.server.js +2 -0
- package/dist/lib/navbar_config.server.d.ts +1 -0
- package/dist/lib/navbar_config.server.d.ts.map +1 -1
- package/dist/lib/navbar_config.server.js +2 -0
- package/dist/lib/oauth_config.server.d.ts +1 -0
- package/dist/lib/oauth_config.server.d.ts.map +1 -1
- package/dist/lib/oauth_config.server.js +2 -0
- package/dist/lib/password_requirements_config.server.d.ts +1 -0
- package/dist/lib/password_requirements_config.server.d.ts.map +1 -1
- package/dist/lib/password_requirements_config.server.js +2 -0
- package/dist/lib/profile_pic_menu_config.server.d.ts +1 -0
- package/dist/lib/profile_pic_menu_config.server.d.ts.map +1 -1
- package/dist/lib/profile_pic_menu_config.server.js +2 -0
- package/dist/lib/profile_picture_config.server.d.ts +1 -0
- package/dist/lib/profile_picture_config.server.d.ts.map +1 -1
- package/dist/lib/profile_picture_config.server.js +2 -0
- package/dist/lib/register_config.server.d.ts +1 -0
- package/dist/lib/register_config.server.d.ts.map +1 -1
- package/dist/lib/register_config.server.js +2 -0
- package/dist/lib/reset_password_config.server.d.ts +1 -0
- package/dist/lib/reset_password_config.server.d.ts.map +1 -1
- package/dist/lib/reset_password_config.server.js +2 -0
- package/dist/lib/scope_hierarchy_config.server.d.ts +1 -0
- package/dist/lib/scope_hierarchy_config.server.d.ts.map +1 -1
- package/dist/lib/scope_hierarchy_config.server.js +2 -0
- package/dist/lib/ui_shell_config.server.d.ts +1 -0
- package/dist/lib/ui_shell_config.server.d.ts.map +1 -1
- package/dist/lib/ui_shell_config.server.js +2 -0
- package/dist/lib/ui_sizes_config.server.d.ts +1 -0
- package/dist/lib/ui_sizes_config.server.d.ts.map +1 -1
- package/dist/lib/ui_sizes_config.server.js +2 -0
- package/dist/lib/user_fields_config.server.d.ts +1 -0
- package/dist/lib/user_fields_config.server.d.ts.map +1 -1
- package/dist/lib/user_fields_config.server.js +2 -0
- package/dist/lib/user_management_config.server.d.ts +1 -0
- package/dist/lib/user_management_config.server.d.ts.map +1 -1
- package/dist/lib/user_management_config.server.js +2 -0
- package/dist/lib/user_profiles_config.server.d.ts +1 -0
- package/dist/lib/user_profiles_config.server.d.ts.map +1 -1
- package/dist/lib/user_profiles_config.server.js +2 -0
- package/dist/lib/user_types_config.server.d.ts +1 -0
- package/dist/lib/user_types_config.server.d.ts.map +1 -1
- package/dist/lib/user_types_config.server.js +2 -0
- package/dist/page_components/create_firm.d.ts +1 -0
- package/dist/page_components/create_firm.d.ts.map +1 -1
- package/dist/page_components/create_firm.js +2 -0
- package/dist/server_pages/forgot_password.d.ts +1 -0
- package/dist/server_pages/forgot_password.d.ts.map +1 -1
- package/dist/server_pages/forgot_password.js +2 -0
- package/dist/server_pages/login.d.ts +1 -0
- package/dist/server_pages/login.d.ts.map +1 -1
- package/dist/server_pages/login.js +2 -0
- package/dist/server_pages/my_settings.d.ts +1 -0
- package/dist/server_pages/my_settings.d.ts.map +1 -1
- package/dist/server_pages/my_settings.js +2 -0
- package/dist/server_pages/register.d.ts +1 -0
- package/dist/server_pages/register.d.ts.map +1 -1
- package/dist/server_pages/register.js +2 -0
- package/dist/server_pages/reset_password.d.ts +1 -0
- package/dist/server_pages/reset_password.d.ts.map +1 -1
- package/dist/server_pages/reset_password.js +2 -0
- package/dist/server_pages/verify_email.d.ts +1 -0
- package/dist/server_pages/verify_email.d.ts.map +1 -1
- package/dist/server_pages/verify_email.js +2 -0
- 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:
|
|
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 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 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 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: 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 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
|
|
|
@@ -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,
|
|
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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"already_logged_in_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/already_logged_in_config.server.ts"],"names":[],"mappings":"
|
|
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
|
package/dist/lib/app_logger.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_logger.d.ts","sourceRoot":"","sources":["../../src/lib/app_logger.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/lib/app_logger.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
// file_description:
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_permissions_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_permissions_config.server.ts"],"names":[],"mappings":"
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app_user_data_config.server.d.ts","sourceRoot":"","sources":["../../src/lib/app_user_data_config.server.ts"],"names":[],"mappings":"
|
|
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 +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 +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";
|