hazo_collab_forms 2.0.2 → 2.0.4

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 (102) hide show
  1. package/CHANGE_LOG.md +17 -0
  2. package/README.md +317 -44
  3. package/dist/components/_internal_form_set.d.ts +5 -0
  4. package/dist/components/_internal_form_set.d.ts.map +1 -1
  5. package/dist/components/_internal_form_set.js +6 -2
  6. package/dist/components/_internal_form_set.js.map +1 -1
  7. package/dist/components/clarification/use_clarifications.d.ts +7 -0
  8. package/dist/components/clarification/use_clarifications.d.ts.map +1 -1
  9. package/dist/components/clarification/use_clarifications.js +35 -0
  10. package/dist/components/clarification/use_clarifications.js.map +1 -1
  11. package/dist/components/hazo_collab_form_group.d.ts +8 -0
  12. package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
  13. package/dist/components/hazo_collab_form_group.js +7 -1
  14. package/dist/components/hazo_collab_form_group.js.map +1 -1
  15. package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
  16. package/dist/components/hazo_collab_form_view/context.js +3 -1
  17. package/dist/components/hazo_collab_form_view/context.js.map +1 -1
  18. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts +1 -0
  19. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -1
  20. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +4 -0
  21. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -1
  22. package/dist/components/hazo_collab_form_view/types.d.ts +4 -0
  23. package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
  24. package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
  25. package/dist/components/hazo_collab_form_view/views/edit_view.js +4 -2
  26. package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
  27. package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
  28. package/dist/components/hazo_collab_form_view/views/summary_view.js +2 -0
  29. package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
  30. package/dist/components/hazo_data_form/ghost_form_panel.d.ts +25 -0
  31. package/dist/components/hazo_data_form/ghost_form_panel.d.ts.map +1 -0
  32. package/dist/components/hazo_data_form/ghost_form_panel.js +91 -0
  33. package/dist/components/hazo_data_form/ghost_form_panel.js.map +1 -0
  34. package/dist/components/hazo_data_form/hazo_data_form.d.ts +4 -1
  35. package/dist/components/hazo_data_form/hazo_data_form.d.ts.map +1 -1
  36. package/dist/components/hazo_data_form/hazo_data_form.js +153 -7
  37. package/dist/components/hazo_data_form/hazo_data_form.js.map +1 -1
  38. package/dist/components/hazo_data_form/index.d.ts +2 -0
  39. package/dist/components/hazo_data_form/index.d.ts.map +1 -1
  40. package/dist/components/hazo_data_form/index.js +2 -0
  41. package/dist/components/hazo_data_form/index.js.map +1 -1
  42. package/dist/components/hazo_data_form/pdf_panel.d.ts +24 -0
  43. package/dist/components/hazo_data_form/pdf_panel.d.ts.map +1 -0
  44. package/dist/components/hazo_data_form/pdf_panel.js +29 -0
  45. package/dist/components/hazo_data_form/pdf_panel.js.map +1 -0
  46. package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts.map +1 -1
  47. package/dist/components/hazo_data_form/shared/data_form_field_layout.js +2 -2
  48. package/dist/components/hazo_data_form/shared/data_form_field_layout.js.map +1 -1
  49. package/dist/components/hazo_data_form/types.d.ts +18 -0
  50. package/dist/components/hazo_data_form/types.d.ts.map +1 -1
  51. package/dist/components/hazo_template_generator/types.d.ts.map +1 -1
  52. package/dist/components/hazo_template_generator/types.js +2 -0
  53. package/dist/components/hazo_template_generator/types.js.map +1 -1
  54. package/dist/components/index.d.ts +2 -0
  55. package/dist/components/index.d.ts.map +1 -1
  56. package/dist/components/index.js +1 -0
  57. package/dist/components/index.js.map +1 -1
  58. package/dist/components/shared/role_utils/role_utils.d.ts.map +1 -1
  59. package/dist/components/shared/role_utils/role_utils.js +6 -0
  60. package/dist/components/shared/role_utils/role_utils.js.map +1 -1
  61. package/dist/components/shared/unified_field_controls/constants.d.ts.map +1 -1
  62. package/dist/components/shared/unified_field_controls/constants.js +3 -0
  63. package/dist/components/shared/unified_field_controls/constants.js.map +1 -1
  64. package/dist/components/shared/unified_field_controls/kebab_menu.d.ts.map +1 -1
  65. package/dist/components/shared/unified_field_controls/kebab_menu.js +13 -3
  66. package/dist/components/shared/unified_field_controls/kebab_menu.js.map +1 -1
  67. package/dist/components/shared/unified_field_controls/types.d.ts +5 -0
  68. package/dist/components/shared/unified_field_controls/types.d.ts.map +1 -1
  69. package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts.map +1 -1
  70. package/dist/components/shared/unified_field_controls/unified_field_controls.js +16 -1
  71. package/dist/components/shared/unified_field_controls/unified_field_controls.js.map +1 -1
  72. package/dist/components/shared/unified_field_controls/use_control_resolution.d.ts.map +1 -1
  73. package/dist/components/shared/unified_field_controls/use_control_resolution.js +1 -0
  74. package/dist/components/shared/unified_field_controls/use_control_resolution.js.map +1 -1
  75. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts +3 -0
  76. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts.map +1 -1
  77. package/dist/components/shared/unified_field_controls/use_field_control_props.js +8 -4
  78. package/dist/components/shared/unified_field_controls/use_field_control_props.js.map +1 -1
  79. package/dist/lib/autofill_handler.d.ts +14 -1
  80. package/dist/lib/autofill_handler.d.ts.map +1 -1
  81. package/dist/lib/autofill_handler.js +5 -1
  82. package/dist/lib/autofill_handler.js.map +1 -1
  83. package/dist/lib/create_data_route.d.ts +42 -0
  84. package/dist/lib/create_data_route.d.ts.map +1 -0
  85. package/dist/lib/create_data_route.js +280 -0
  86. package/dist/lib/create_data_route.js.map +1 -0
  87. package/dist/lib/index.d.ts +2 -0
  88. package/dist/lib/index.d.ts.map +1 -1
  89. package/dist/lib/index.js +1 -0
  90. package/dist/lib/index.js.map +1 -1
  91. package/dist/lib/validation_handler.d.ts.map +1 -1
  92. package/dist/lib/validation_handler.js +6 -2
  93. package/dist/lib/validation_handler.js.map +1 -1
  94. package/dist/types/icons_behaviour.d.ts +1 -1
  95. package/dist/types/icons_behaviour.d.ts.map +1 -1
  96. package/dist/types/icons_behaviour.js +2 -0
  97. package/dist/types/icons_behaviour.js.map +1 -1
  98. package/dist/types/index.d.ts +1 -1
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/validation.d.ts +16 -1
  101. package/dist/types/validation.d.ts.map +1 -1
  102. package/package.json +10 -2
package/CHANGE_LOG.md CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.0.3] - 2026-03-05
11
+
12
+ ### Added
13
+
14
+ - **Data Route Factory**: `create_data_route` (from `hazo_collab_forms/lib`)
15
+ - Backend-agnostic CRUD route factory. Replaces boilerplate REST endpoints (~200 lines) with a single function call.
16
+ - Supports GET, POST, PATCH, DELETE with the standard hazo_connect request format.
17
+ - Optional `allowed_tables` whitelist for security.
18
+ - Works with any hazo_connect backend (SQLite, PostgREST, Supabase).
19
+ - Types exported: `DataRouteOptions` (from `hazo_collab_forms/lib`), `HazoConnectAdapterLike` (from `hazo_collab_forms` and `hazo_collab_forms/types`).
20
+ - **hazo_connect_adapter option**: `create_validation_route` and `create_autofill_route` now accept `hazo_connect_adapter` for backend-agnostic prompt lookup (`sqlite_path` deprecated).
21
+ - **hazo_connect peer dependency**: Added as optional peer dependency (`>=2.4.0`).
22
+ - **HazoDataForm sidebar PDF panel**: New `file_panel_display_mode="sidebar"` mode embeds a `PdfPanel` alongside the form, aligned vertically with the active field using a ghost form layout. New props: `pdf_panel_default_size`, `pdf_panel_min_size`, `pdf_viewer_props`, `on_panel_open`, `on_panel_close`, `on_panel_pop_out`, `file_access_provider`, `on_panel_upload`, `on_panel_file_delete`.
23
+ - **PdfPanel component**: Exported standalone (`import { PdfPanel } from 'hazo_collab_forms'`). Dynamically loads `PdfViewer` from optional peer `hazo_pdf`.
24
+ - **Clarification click always enabled**: `on_clarification_click` is now always set (not gated on `get_pending_count > 0`) so the click handler fires even before counts load.
25
+ - **hazo_pdf optional peer dependency**: Declared in `peerDependenciesMeta` as optional (required only when using `file_panel_display_mode="sidebar"`).
26
+
10
27
  ## [2.0.2] - 2026-03-04
11
28
 
12
29
  ### Changed
package/README.md CHANGED
@@ -28,6 +28,7 @@ React form components with integrated chat collaboration, built for Next.js with
28
28
  - **Custom File Validators**: Implement custom validation logic before file upload
29
29
  - **Form Sets**: JSON-based dynamic form generation with full file upload support
30
30
  - **Data Form (Working Paper)**: Structured data form component with style variants, field type definitions, computed fields, formula evaluation, and file management
31
+ - **Sidebar PDF Panel**: Embedded PDF viewer panel that opens alongside form fields in HazoDataForm, with ghost-form alignment, pop-out dialog support, and file upload/delete callbacks
31
32
  - **Financial Fields**: Currency, percentage, masked input, and computed field components with locale-aware formatting
32
33
  - **Style Variant System**: Configurable style tokens and class definitions for form field styling
33
34
  - **Autofill Dropzone**: LLM-powered document extraction with multi-file support, progressive data table population, and overwrite conflict detection
@@ -35,7 +36,7 @@ React form components with integrated chat collaboration, built for Next.js with
35
36
  - **Document Clarifications**: Full lifecycle for document validation issues - flag problems, reference documents, collect structured client responses, and track resolution status (pending, responded, resolved, dismissed)
36
37
  - **Validation Rule Editor**: LLM-powered document validation with visual rule management UI, prompt editor with slash commands and variable references, and automatic clarification generation
37
38
  - **Content Tagging**: LLM-based document classification at upload time via hazo_llm_api integration
38
- - **Server-side Route Handlers**: Pre-built `create_autofill_route` and `create_validation_route` factories for Next.js API routes
39
+ - **Server-side Route Handlers**: Pre-built `create_data_route`, `create_autofill_route`, and `create_validation_route` factories for Next.js API routes
39
40
  - **File Validation Badges**: Visual indicators on uploaded files showing validation state (validating spinner, pass checkmark, error badge with details popover)
40
41
  - **Data OK Workflows**: Checkbox and multi-state validation with auto-hide/auto-lock features
41
42
  - **Hidden States**: Restrict available data OK states per field or form (e.g., hide "Pending" for agents)
@@ -1156,61 +1157,210 @@ function CustomEditor() {
1156
1157
 
1157
1158
  Drop source documents onto a form group to automatically extract and populate field values using an LLM. Supports multiple files processed sequentially with progressive data application.
1158
1159
 
1159
- **Basic Usage:**
1160
+ The dropzone renders as a compact "AI fill from document" bar at the top of any group that has it enabled. Users can drag-and-drop files or click to select. The file is uploaded, sent to your API endpoint for LLM extraction, and the extracted values are applied to the group's fields automatically.
1160
1161
 
1161
- ```typescript
1162
+ #### Setup — Two Steps
1163
+
1164
+ **Step 1: Enable on the group** in your form config (JSON or object):
1165
+
1166
+ Set three properties on any group that should have autofill:
1167
+
1168
+ ```jsonc
1169
+ {
1170
+ "id": "gross_interest_income",
1171
+ "field_type": "group",
1172
+ "label": "Gross Interest Income",
1173
+ "autofill_dropzone": true, // Enable the dropzone UI
1174
+ "prompt_area": "income", // Domain context for LLM (e.g., "income", "deductions")
1175
+ "prompt_key": "income_10_gross_interest", // Specific context for this group
1176
+ "fields": [
1177
+ { "id": "bank_name", "label": "Bank/Financial Institution", "component_type": "HazoCollabFormInputbox" },
1178
+ { "id": "amount", "label": "Amount ($)", "component_type": "HazoCollabFormInputbox", "input_type": "numeric" },
1179
+ { "id": "withheld", "label": "Withheld Amount ($)", "component_type": "HazoCollabFormInputbox", "input_type": "numeric" }
1180
+ ]
1181
+ }
1182
+ ```
1183
+
1184
+ | Group Prop | Type | Required | Description |
1185
+ |------------|------|----------|-------------|
1186
+ | `autofill_dropzone` | boolean | Yes | Show the autofill dropzone at top of group |
1187
+ | `prompt_area` | string | Yes | Domain context sent to LLM (e.g., `"income"`, `"deductions"`) |
1188
+ | `prompt_key` | string | Yes | Group-specific context sent to LLM (e.g., `"income_10_gross_interest"`) |
1189
+
1190
+ > **Note**: If `autofill_dropzone` is `true` but `prompt_area` or `prompt_key` are missing, a console warning is logged and the dropzone will not render.
1191
+
1192
+ **Step 2: Provide props on `HazoCollabFormView`:**
1193
+
1194
+ ```tsx
1162
1195
  <HazoCollabFormView
1163
1196
  mode="edit"
1164
- sections={[{
1165
- groups: [{
1166
- id: 'income_group',
1167
- field_type: 'group',
1168
- label: 'Income Details',
1169
- autofill_dropzone: true, // Enable the dropzone
1170
- autofill_api_endpoint: '/api/autofill',
1171
- autofill_prompt_area: 'tax', // Optional: prompt lookup area
1172
- autofill_prompt_key: 'income', // Optional: prompt lookup key
1173
- fields: [...]
1174
- }]
1175
- }]}
1176
- file_manager={fileManagerConfig} // Required for file upload
1197
+ sections={sections}
1177
1198
  form_data={formData}
1178
1199
  on_change={handleChange}
1200
+ // Required for autofill:
1201
+ autofill_api_endpoint="/api/autofill/extract"
1202
+ file_manager={fileManagerConfig}
1179
1203
  />
1180
1204
  ```
1181
1205
 
1182
- **Multi-file behavior:**
1206
+ | View Prop | Type | Required | Description |
1207
+ |-----------|------|----------|-------------|
1208
+ | `autofill_api_endpoint` | string | Yes | Your API endpoint that handles extraction |
1209
+ | `file_manager` | FileManagerConfig | Yes | File upload callbacks (also used for regular file uploads) |
1210
+
1211
+ **All four conditions must be met** for the dropzone to render on a group:
1212
+ 1. `autofill_dropzone: true` on the group config
1213
+ 2. `prompt_area` set on the group config
1214
+ 3. `prompt_key` set on the group config
1215
+ 4. `autofill_api_endpoint` and `file_manager` provided on `HazoCollabFormView`
1216
+
1217
+ #### Multi-File Behavior
1218
+
1183
1219
  - Multiple files can be dropped or selected at once
1184
- - Files are processed sequentially through the LLM API
1220
+ - Files are processed **sequentially** through the LLM API
1185
1221
  - Array values (data table rows) are **appended** to existing data, not overwritten
1186
- - Scalar values trigger an overwrite confirmation dialog (only on the first conflicting file)
1222
+ - Scalar values trigger an overwrite confirmation dialog (only on the first conflicting file in a batch)
1187
1223
  - Progress indicator shows "Processing file N of M..."
1224
+ - The uploaded source document is automatically attached to the group's files (`__files_{group_id}`)
1188
1225
 
1189
- **AutofillRequest sent to API:**
1226
+ #### API Contract
1227
+
1228
+ Your `autofill_api_endpoint` receives a `POST` request with this body:
1229
+
1230
+ **AutofillRequest:**
1190
1231
 
1191
1232
  | Field | Type | Description |
1192
1233
  |-------|------|-------------|
1193
- | `file_id` | string | Uploaded file ID |
1234
+ | `file_id` | string | Uploaded file ID (from file_manager) |
1194
1235
  | `file_name` | string | Original file name |
1195
- | `mime_type` | string | File MIME type |
1236
+ | `mime_type` | string | File MIME type (e.g., `image/jpeg`, `application/pdf`) |
1196
1237
  | `download_url` | string | URL to download the file |
1197
- | `file_b64` | string? | Base64-encoded file content (avoids re-download) |
1238
+ | `file_b64` | string? | Base64-encoded file content (sent inline to avoid re-download) |
1198
1239
  | `group_id` | string | Group identifier |
1199
1240
  | `prompt_area` | string? | Prompt area for LLM context |
1200
1241
  | `prompt_key` | string? | Prompt key for LLM context |
1201
- | `fields` | AutofillFieldSchema[] | Field schemas for extraction |
1242
+ | `fields` | AutofillFieldSchema[] | Field schemas describing what to extract |
1243
+
1244
+ **AutofillFieldSchema:**
1202
1245
 
1203
- **AutofillResponse from API:**
1246
+ | Field | Type | Description |
1247
+ |-------|------|-------------|
1248
+ | `field_id` | string | Field identifier (used as key in response data) |
1249
+ | `label` | string | Human-readable label |
1250
+ | `component_type` | string | Component type (e.g., `HazoCollabFormInputbox`, `HazoCollabFormDate`) |
1251
+ | `description` | string? | Optional description for LLM context |
1252
+ | `input_type` | string? | Input type hint (`mixed`, `numeric`, `email`, `alpha`) |
1253
+ | `input_options` | Array? | Options for radio/combo fields (`[{ value, label }]`) |
1254
+ | `table_config` | object? | Table configuration for data-table fields |
1255
+
1256
+ **AutofillResponse** (your API must return):
1204
1257
 
1205
1258
  ```typescript
1206
1259
  {
1207
- success: boolean;
1208
- data: Record<string, unknown>; // Keyed by field_id
1209
- error?: string; // Error message if failed
1210
- message?: string; // Info message (e.g., "No matching data found")
1260
+ success: boolean; // Whether extraction succeeded
1261
+ data: Record<string, unknown>; // Extracted values keyed by field_id
1262
+ error?: string; // Error message if success=false
1263
+ message?: string; // Info message (e.g., "No matching data found")
1264
+ }
1265
+ ```
1266
+
1267
+ **Response examples:**
1268
+
1269
+ Scalar fields — values keyed by field_id:
1270
+ ```json
1271
+ {
1272
+ "success": true,
1273
+ "data": {
1274
+ "bank_name": "Commonwealth Bank",
1275
+ "amount": "1500.00",
1276
+ "withheld": "0"
1277
+ }
1278
+ }
1279
+ ```
1280
+
1281
+ Data table fields — return arrays which are appended as rows:
1282
+ ```json
1283
+ {
1284
+ "success": true,
1285
+ "data": {
1286
+ "interest_table": [
1287
+ { "bank": "CBA", "amount": "1200.00", "withheld": "0" },
1288
+ { "bank": "ANZ", "amount": "300.50", "withheld": "15.00" }
1289
+ ]
1290
+ }
1291
+ }
1292
+ ```
1293
+
1294
+ No matching data (file processed successfully but nothing relevant found):
1295
+ ```json
1296
+ {
1297
+ "success": true,
1298
+ "data": {},
1299
+ "message": "No matching data found in this document."
1211
1300
  }
1212
1301
  ```
1213
1302
 
1303
+ #### Pre-Built Server Route (Optional)
1304
+
1305
+ If you use `hazo_llm_api`, a ready-made route handler is provided — see [Server-Side Route Handlers: Autofill Route](#autofill-route) below.
1306
+
1307
+ #### Custom API Endpoint (BYO LLM)
1308
+
1309
+ If you prefer your own LLM integration, implement the endpoint to:
1310
+
1311
+ 1. Receive the `AutofillRequest` body
1312
+ 2. Use `file_b64` (preferred) or fetch from `download_url` to get the file
1313
+ 3. Send the file + field schemas to your LLM with an extraction prompt
1314
+ 4. Parse the LLM response into a `Record<string, unknown>` keyed by `field_id`
1315
+ 5. Return an `AutofillResponse`
1316
+
1317
+ ```typescript
1318
+ // Example: app/api/autofill/extract/route.ts (Next.js App Router)
1319
+ import { NextRequest, NextResponse } from 'next/server';
1320
+
1321
+ export async function POST(request: NextRequest) {
1322
+ const body = await request.json();
1323
+ const { file_b64, mime_type, fields } = body;
1324
+
1325
+ // Build prompt from field schemas
1326
+ const field_descriptions = fields.map(
1327
+ (f: any) => `- "${f.field_id}" (${f.label}): ${f.component_type}`
1328
+ ).join('\n');
1329
+
1330
+ const prompt = `Extract the following fields from this document and return ONLY valid JSON.
1331
+ Fields: \n${field_descriptions}`;
1332
+
1333
+ // Call your LLM (e.g., Claude, OpenAI, etc.)
1334
+ const llm_result = await call_your_llm({ prompt, file_b64, mime_type });
1335
+
1336
+ return NextResponse.json({
1337
+ success: true,
1338
+ data: llm_result, // { bank_name: "CBA", amount: "1200.00", ... }
1339
+ });
1340
+ }
1341
+ ```
1342
+
1343
+ #### Exports
1344
+
1345
+ ```typescript
1346
+ // Client-side component and types
1347
+ import {
1348
+ AutofillDropzone,
1349
+ type AutofillFieldSchema,
1350
+ type AutofillRequest,
1351
+ type AutofillResponse,
1352
+ type AutofillDropzoneProps,
1353
+ type AutofillStatus,
1354
+ type OverwriteConflict,
1355
+ } from 'hazo_collab_forms';
1356
+
1357
+ // Server-side route handler (Node.js only)
1358
+ import {
1359
+ create_autofill_route,
1360
+ type AutofillRouteOptions,
1361
+ } from 'hazo_collab_forms/lib';
1362
+ ```
1363
+
1214
1364
  ### Template Generator (Deprecated)
1215
1365
 
1216
1366
  > **Deprecated**: Use `HazoFieldLibrary` for managing form field definitions. `HazoTemplateGenerator` is still available but will be removed in a future major version.
@@ -1525,6 +1675,58 @@ The final layout for any field is resolved in this order (first match wins):
1525
1675
 
1526
1676
  This renders the address line with label on top and full-width input, while state/postcode use the default inline (label-left) layout.
1527
1677
 
1678
+ ### Sidebar PDF Panel (HazoDataForm)
1679
+
1680
+ When `file_panel_display_mode="sidebar"` is set on `HazoDataForm`, clicking a field's file icon opens an embedded PDF viewer panel alongside the form instead of a modal dialog. A ghost form panel mirrors the form layout to align the PDF panel vertically with the active field.
1681
+
1682
+ **Props:**
1683
+
1684
+ | Prop | Type | Default | Description |
1685
+ |------|------|---------|-------------|
1686
+ | `file_panel_display_mode` | `'dialog' \| 'sidebar'` | `'dialog'` | Display mode for file panels |
1687
+ | `pdf_panel_default_size` | `number` | `50` | Sidebar width as percentage |
1688
+ | `pdf_panel_min_size` | `number` | `25` | Minimum sidebar width as percentage |
1689
+ | `pdf_viewer_props` | `Record<string, unknown>` | – | Pass-through props for the PdfViewer component |
1690
+ | `file_access_provider` | `unknown` | – | hazo_pdf FileAccessProvider for the embedded viewer |
1691
+ | `on_panel_open` | `(field_id: string) => void` | – | Called when the sidebar opens for a field |
1692
+ | `on_panel_close` | `() => void` | – | Called when the sidebar closes |
1693
+ | `on_panel_pop_out` | `(field_id, file_items) => void` | – | Custom pop-out handler (uses built-in PdfViewerDialog if not provided) |
1694
+ | `on_panel_upload` | `(field_id, file, converted_pdf?) => Promise<unknown>` | – | Upload handler receiving the active field_id |
1695
+ | `on_panel_file_delete` | `(field_id, file_id) => void` | – | Delete handler receiving the active field_id |
1696
+
1697
+ **Usage:**
1698
+
1699
+ ```tsx
1700
+ import { HazoDataForm } from 'hazo_collab_forms';
1701
+
1702
+ <HazoDataForm
1703
+ sections={sections}
1704
+ form_data={formData}
1705
+ on_field_change={handleChange}
1706
+ enable_file_upload={true}
1707
+ default_accept_files={true}
1708
+ file_panel_display_mode="sidebar"
1709
+ pdf_panel_default_size={50}
1710
+ file_access_provider={fileAccessProvider}
1711
+ on_panel_upload={async (field_id, file) => {
1712
+ // Upload file and update form_data for the given field_id
1713
+ return { success: true };
1714
+ }}
1715
+ on_panel_file_delete={(field_id, file_id) => {
1716
+ // Remove file from form_data for the given field_id
1717
+ }}
1718
+ />
1719
+ ```
1720
+
1721
+ **How it works:**
1722
+ - The form splits into two columns: the real form on the left and a ghost form on the right
1723
+ - The ghost form mirrors the section/group/field hierarchy with invisible fields
1724
+ - The PDF panel renders at the active field's position with `visibility: visible` and `position: sticky`
1725
+ - For horizontal groups, the panel renders at full width below the flex row
1726
+ - The pop-out button opens a `PdfViewerDialog` (requires `hazo_pdf`)
1727
+
1728
+ **Requires:** `hazo_pdf` as an optional peer dependency (dynamically imported).
1729
+
1528
1730
  ### Reference Data (Comparison Values)
1529
1731
 
1530
1732
  Display reference or comparison values below form fields, such as prior year tax data or baseline values. Reference data supports automatic formatting for currency, booleans, and custom styling.
@@ -1951,7 +2153,7 @@ const privateFiles = get_field_private_attachments(formData, 'sensitive_field');
1951
2153
  |-----------|-------------|-----------------|
1952
2154
  | `HazoCollabFormView` | **Recommended** - Unified multi-mode view (Edit/Summary/Print/Approval) | all components |
1953
2155
  | `HazoCollabFormSet` | ⚠️ *Deprecated* - Use `HazoCollabFormView` with `mode="edit"` | all components |
1954
- | `HazoDataForm` | Structured data form with style variants, computed fields, and file management | all components |
2156
+ | `HazoDataForm` | Structured data form with style variants, computed fields, file management, and sidebar PDF panel | all components |
1955
2157
 
1956
2158
  ### Builder & Library Components
1957
2159
 
@@ -2207,12 +2409,13 @@ const clarifications = await validate_file(file_b64, file_name, mime_type, conte
2207
2409
  ```typescript
2208
2410
  // app/api/validation/route.ts
2209
2411
  import { create_validation_route } from 'hazo_collab_forms/lib';
2412
+ import { getHazoConnect } from '@/lib/hazo_connect_setup';
2210
2413
 
2211
- const handler = create_validation_route({
2212
- sqlite_path: './data/prompts.sqlite',
2213
- });
2414
+ // Preferred: pass hazo_connect adapter (works with SQLite, PostgREST, Supabase)
2415
+ export const POST = create_validation_route({ hazo_connect_adapter: getHazoConnect() });
2214
2416
 
2215
- export const POST = handler;
2417
+ // Legacy: pass SQLite path directly (deprecated)
2418
+ // export const POST = create_validation_route({ sqlite_path: './data/prompts.sqlite' });
2216
2419
  ```
2217
2420
 
2218
2421
  ### Validation Rule Types
@@ -2296,35 +2499,105 @@ const fileManager: FileManagerConfig = {
2296
2499
 
2297
2500
  ## Server-Side Route Handlers
2298
2501
 
2299
- Pre-built route handler factories for common API patterns:
2502
+ Pre-built route handler factories for common API patterns. All handlers support `hazo_connect_adapter` for backend-agnostic database access (SQLite, PostgREST, Supabase).
2503
+
2504
+ ### Data Route (NEW in v2.0.3)
2505
+
2506
+ Backend-agnostic CRUD route factory. Replaces boilerplate REST endpoints (~200 lines) with a single function call.
2507
+
2508
+ ```typescript
2509
+ // app/api/hazo_connect/sqlite/data/route.ts
2510
+ import { create_data_route } from 'hazo_collab_forms/lib';
2511
+ import { getHazoConnect } from '@/lib/hazo_connect_setup';
2512
+
2513
+ export const dynamic = 'force-dynamic';
2514
+ export const { GET, POST, PATCH, DELETE } = create_data_route(getHazoConnect());
2515
+ ```
2516
+
2517
+ **With table whitelist** (for security):
2518
+
2519
+ ```typescript
2520
+ export const { GET, POST, PATCH, DELETE } = create_data_route(getHazoConnect(), {
2521
+ allowed_tables: ['hazo_collab_form_validations', 'hazo_collab_form_elts'],
2522
+ });
2523
+ ```
2524
+
2525
+ **Request format** (matches existing client hooks):
2526
+ - `GET ?table=X&filter[col]=val&orderBy=col&orderDirection=asc` → `{ data, total }`
2527
+ - `POST { table, data }` → `{ data }`
2528
+ - `PATCH { table, criteria, data }` → `{ data, updated }`
2529
+ - `DELETE { table, criteria }` → `{ data, deleted }`
2530
+
2531
+ **Requirements**: `hazo_connect` must be installed (`npm install hazo_connect`).
2300
2532
 
2301
2533
  ### Autofill Route
2302
2534
 
2535
+ Ready-made POST handler for LLM-based document extraction. Wraps `hazo_llm_api` so consumers can set up autofill in ~3 lines.
2536
+
2303
2537
  ```typescript
2304
2538
  // app/api/autofill/route.ts
2305
2539
  import { create_autofill_route } from 'hazo_collab_forms/lib';
2540
+ import { getHazoConnect } from '@/lib/hazo_connect_setup';
2306
2541
 
2307
- const handler = create_autofill_route({
2308
- sqlite_path: './data/prompts.sqlite',
2309
- });
2542
+ // Preferred: pass adapter (works with any hazo_connect backend)
2543
+ export const POST = create_autofill_route({ hazo_connect_adapter: getHazoConnect() });
2310
2544
 
2311
- export const POST = handler;
2545
+ // Legacy: pass SQLite path directly (deprecated)
2546
+ // export const POST = create_autofill_route({ sqlite_path: './data/prompts.sqlite' });
2312
2547
  ```
2313
2548
 
2549
+ **How it works:**
2550
+
2551
+ 1. Receives `AutofillRequest` from the `AutofillDropzone` component
2552
+ 2. Validates that `prompt_area`, `prompt_key`, and `fields` are present
2553
+ 3. Lazily initializes `hazo_llm_api` (dynamic import — only loaded at runtime)
2554
+ 4. Calls `hazo_llm_dynamic_data_extract` with the file + prompt context + field schemas
2555
+ 5. Falls back to a direct LLM call with a generated prompt if dynamic extract fails
2556
+ 6. Parses the LLM response as JSON and returns `AutofillResponse`
2557
+
2558
+ **Options:**
2559
+
2560
+ | Option | Type | Default | Description |
2561
+ |--------|------|---------|-------------|
2562
+ | `hazo_connect_adapter` | HazoConnectAdapterLike | - | Adapter from hazo_connect (preferred) |
2563
+ | `sqlite_path` | string | `'data/prompt_library.sqlite'` | Path to SQLite DB (deprecated) |
2564
+ | `on_error` | function | `console.error` | Error handler `(error, context) => void` |
2565
+
2566
+ **Requirements:**
2567
+ - `hazo_llm_api` must be installed as a dependency (`npm install hazo_llm_api`)
2568
+ - The database should contain prompts keyed by `(area, key)` with a `prompt_text_full` field
2569
+ - The prompt can include `{{field_list}}` which is auto-substituted with formatted field schemas
2570
+ - Supports image files (JPEG, PNG, etc.) and PDF documents
2571
+
2572
+ **Prompt Lookup Fallback Chain:**
2573
+ 1. `hazo_llm_dynamic_data_extract` (prompt DB + multi-step extraction)
2574
+ 2. Direct LLM call with prompt from DB (`get_by_area_key(prompt_area, prompt_key)`)
2575
+ 3. Auto-generated extraction prompt from field schemas (no DB needed)
2576
+
2577
+ This means the autofill route works even without a prompt database — it will generate a reasonable extraction prompt from the field schemas automatically.
2578
+
2314
2579
  ### Validation Route
2315
2580
 
2316
2581
  ```typescript
2317
2582
  // app/api/validation/route.ts
2318
2583
  import { create_validation_route } from 'hazo_collab_forms/lib';
2584
+ import { getHazoConnect } from '@/lib/hazo_connect_setup';
2319
2585
 
2320
- const handler = create_validation_route({
2321
- sqlite_path: './data/prompts.sqlite',
2322
- on_error: (error, context) => console.error(`[Validation] ${context}:`, error),
2323
- });
2586
+ // Preferred: pass adapter
2587
+ export const POST = create_validation_route({ hazo_connect_adapter: getHazoConnect() });
2324
2588
 
2325
- export const POST = handler;
2589
+ // Legacy: pass SQLite path directly (deprecated)
2590
+ // export const POST = create_validation_route({ sqlite_path: './data/prompts.sqlite' });
2326
2591
  ```
2327
2592
 
2593
+ **Options:**
2594
+
2595
+ | Option | Type | Default | Description |
2596
+ |--------|------|---------|-------------|
2597
+ | `hazo_connect_adapter` | HazoConnectAdapterLike | - | Adapter from hazo_connect (preferred) |
2598
+ | `sqlite_path` | string | from INI config or `'data/prompt_library.sqlite'` | Path to SQLite DB (deprecated) |
2599
+ | `on_error` | function | `console.error` | Error handler `(error, context) => void` |
2600
+
2328
2601
  **Note**: Server-side imports use the `hazo_collab_forms/lib` entry point which includes Node.js-only utilities.
2329
2602
 
2330
2603
  ---
@@ -990,6 +990,11 @@ export interface HazoCollabFormSetProps {
990
990
  * This is for hard delete (removing from sections), not soft delete (metadata flag)
991
991
  */
992
992
  on_delete_field?: (field_id: string) => void;
993
+ /**
994
+ * Callback when the re-validate icon is clicked
995
+ * Called with the field_id and its validation_rule_ids
996
+ */
997
+ on_revalidate?: (field_id: string, validation_rule_ids: string[]) => void;
993
998
  /**
994
999
  * Optional shadcn/ui Dialog components
995
1000
  * Pass your app's Dialog, DialogContent, DialogHeader, etc. for Add Field dialog
@@ -1 +1 @@
1
- {"version":3,"file":"_internal_form_set.d.ts","sourceRoot":"","sources":["../../src/components/_internal_form_set.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_internal_form_set.d.ts","sourceRoot":"","sources":["../../src/components/_internal_form_set.tsx"],"names":[],"mappings":"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"}
@@ -190,6 +190,8 @@ export const HazoCollabFormSet = React.forwardRef((props, ref) => {
190
190
  on_add_field, on_add_field_config, on_add_group_config,
191
191
  // Edit/delete field feature
192
192
  on_edit_field_config, on_delete_field,
193
+ // Re-validate
194
+ on_revalidate,
193
195
  // Dialog components
194
196
  dialog_components, combobox_components,
195
197
  // Field library
@@ -1375,7 +1377,7 @@ export const HazoCollabFormSet = React.forwardRef((props, ref) => {
1375
1377
  // Clarification badge
1376
1378
  clarification_count: get_pending_count(field.id) || undefined,
1377
1379
  has_clarification: field_metadata_prop?.[field.id]?.has_clarification,
1378
- on_clarification_click: get_pending_count(field.id) > 0 ? () => set_clarification_dialog_field(field.id) : undefined,
1380
+ on_clarification_click: () => set_clarification_dialog_field(field.id),
1379
1381
  };
1380
1382
  // Component-specific props - use field_data_id for form_data lookup
1381
1383
  const current_value = form_data[field_data_id] ?? (is_additional_entry ? '' : field.value);
@@ -1550,8 +1552,10 @@ export const HazoCollabFormSet = React.forwardRef((props, ref) => {
1550
1552
  active_role: active_role,
1551
1553
  // Edit/delete group structure controls (control_edit_group/control_delete_field)
1552
1554
  on_edit_field: show_edit_group && edit_group_enabled ? () => on_edit_field_config?.(field.id, field) : undefined, on_delete_field: show_delete_field && delete_field_enabled ? () => on_delete_field?.(field.id) : undefined,
1555
+ // Re-validate
1556
+ on_revalidate: field.validation_rules?.length ? () => on_revalidate?.(field.id, field.validation_rules) : undefined, validation_rules: field.validation_rules,
1553
1557
  // Clarification badge
1554
- clarification_count: get_pending_count(field.id) || undefined, has_clarification: field_metadata_prop?.[field.id]?.has_clarification, on_clarification_click: get_pending_count(field.id) > 0 ? () => set_clarification_dialog_field(field.id) : undefined, children: [field.autofill_dropzone && (!field.prompt_area || !field.prompt_key) && (() => {
1558
+ clarification_count: get_pending_count(field.id) || undefined, has_clarification: field_metadata_prop?.[field.id]?.has_clarification, on_clarification_click: () => set_clarification_dialog_field(field.id), children: [field.autofill_dropzone && (!field.prompt_area || !field.prompt_key) && (() => {
1555
1559
  console.warn(`[hazo_collab_forms] Group "${field.id}": autofill_dropzone=true requires prompt_area and prompt_key`);
1556
1560
  return null;
1557
1561
  })(), field.autofill_dropzone && field.prompt_area && field.prompt_key && autofill_api_endpoint && file_manager && (_jsx(AutofillDropzone, { group_id: field.id, fields: (field.fields || []).map((f) => ({